import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout';
import { Head, useForm, router } from '@inertiajs/react';
import { formatCurrency } from '@/lib/utils';
import { Plus, Trash2, Search } from 'lucide-react';
import { Button } from '@/Components/ui/button';
import { useState } from 'react';

export default function CatalogueIndex({ items }: any) {
    const { data, setData, get } = useForm({ search: new URLSearchParams(window.location.search).get('search')??'' });
    const [adding, setAdding] = useState(false);
    const { data: form, setData: setForm, post, processing, reset } = useForm({ description:'', sku:'', unit:'', unit_price:'0', notes:'' });
    const submit = (e: React.FormEvent) => { e.preventDefault(); post('/catalogue', { onSuccess: () => { reset(); setAdding(false); } }); };
    const search = (e: React.FormEvent) => { e.preventDefault(); get('/catalogue'); };
    return (
        <AuthenticatedLayout header="Catalogue">
            <Head title="Catalogue" />
            <div className="space-y-4">
                <div className="flex gap-3 items-center">
                    <form onSubmit={search} className="flex gap-2 flex-1"><input value={data.search} onChange={e=>setData('search',e.target.value)} placeholder="Search items..." className="border rounded-md px-3 py-2 text-sm flex-1 focus:outline-none focus:ring-2 focus:ring-primary/30"/><button type="submit" className="p-2 border rounded-md hover:bg-muted"><Search className="w-4 h-4"/></button></form>
                    <Button onClick={()=>setAdding(!adding)}><Plus className="w-4 h-4"/>Add Item</Button>
                </div>
                {adding && (
                    <form onSubmit={submit} className="bg-white rounded-lg border border-border shadow-sm p-4 grid grid-cols-1 md:grid-cols-5 gap-3 items-end">
                        <div className="md:col-span-2"><label className="block text-xs font-medium mb-1">Description *</label><input value={form.description} onChange={e=>setForm('description',e.target.value)} required className="w-full border rounded px-2 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-primary/30"/></div>
                        <div><label className="block text-xs font-medium mb-1">SKU</label><input value={form.sku} onChange={e=>setForm('sku',e.target.value)} className="w-full border rounded px-2 py-1.5 text-sm focus:outline-none"/></div>
                        <div><label className="block text-xs font-medium mb-1">Unit</label><input value={form.unit} onChange={e=>setForm('unit',e.target.value)} className="w-full border rounded px-2 py-1.5 text-sm focus:outline-none"/></div>
                        <div><label className="block text-xs font-medium mb-1">Unit Price</label><input type="number" step="0.01" value={form.unit_price} onChange={e=>setForm('unit_price',e.target.value)} className="w-full border rounded px-2 py-1.5 text-sm focus:outline-none"/></div>
                        <div className="flex gap-2"><Button type="submit" size="sm" disabled={processing}>Save</Button><Button type="button" variant="outline" size="sm" onClick={()=>setAdding(false)}>Cancel</Button></div>
                    </form>
                )}
                <div className="bg-white rounded-lg border border-border shadow-sm overflow-hidden">
                    <table className="w-full text-sm">
                        <thead className="bg-muted/50 border-b"><tr><th className="text-left px-4 py-3 font-medium">Description</th><th className="text-left px-4 py-3 font-medium hidden md:table-cell">SKU</th><th className="text-left px-4 py-3 font-medium hidden lg:table-cell">Unit</th><th className="text-right px-4 py-3 font-medium">Unit Price</th><th className="w-10 px-4 py-3"></th></tr></thead>
                        <tbody className="divide-y">{items.data.map((i:any)=>(
                            <tr key={i.id} className="hover:bg-muted/30">
                                <td className="px-4 py-3">{i.description}</td>
                                <td className="px-4 py-3 text-muted-foreground hidden md:table-cell">{i.sku??'—'}</td>
                                <td className="px-4 py-3 text-muted-foreground hidden lg:table-cell">{i.unit??'—'}</td>
                                <td className="px-4 py-3 text-right font-medium">{formatCurrency(i.unit_price)}</td>
                                <td className="px-4 py-3"><button onClick={()=>{if(confirm('Delete?'))router.delete(`/catalogue/${i.id}`)}} className="text-muted-foreground hover:text-destructive"><Trash2 className="w-4 h-4"/></button></td>
                            </tr>
                        ))}</tbody>
                    </table>
                    {items.data.length===0&&<p className="text-center py-12 text-muted-foreground">No items in catalogue yet.</p>}
                </div>
            </div>
        </AuthenticatedLayout>
    );
}
