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

const emptyForm = { name:'', company_name:'', company_tagline:'', company_address:'', company_phone:'', company_email:'', reg_no:'', sst_no:'', header_color:'#0f172a', logo_url:'', is_default: false, supply_message:'', quote_message:'', payment_terms:'', instructions:'', footer_message:'', show_sku: true };

export default function HeaderTemplates({ templates }: any) {
    const [editing, setEditing] = useState<any>(null);
    const { data, setData, post, put, processing, reset } = useForm<any>(emptyForm);
    const openNew = () => { reset(); setEditing('new'); };
    const openEdit = (t: any) => { setData(t); setEditing(t.id); };
    const submit = (e: React.FormEvent) => {
        e.preventDefault();
        if (editing==='new') post('/settings/header-templates', { onSuccess:()=>{ reset(); setEditing(null); } });
        else put(`/settings/header-templates/${editing}`, { onSuccess:()=>setEditing(null) });
    };
    const fi = (label: string, key: string, type='text') => <div><label className="block text-sm font-medium mb-1">{label}</label><input type={type} value={data[key]??''} onChange={e=>setData(key,e.target.value)} className="w-full border rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/30"/></div>;
    return (
        <AuthenticatedLayout header="Header Templates">
            <Head title="Header Templates" />
            <div className="space-y-4">
                <div className="flex justify-end"><Button onClick={openNew}><Plus className="w-4 h-4"/>Add Header Template</Button></div>
                {editing && (
                    <form onSubmit={submit} className="bg-white rounded-lg border border-border shadow-sm p-6 space-y-4">
                        <h2 className="font-semibold">{editing==='new'?'New Header Template':'Edit Header Template'}</h2>
                        <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
                            {fi('Template Name *','name')}{fi('Company Name','company_name')}{fi('Tagline','company_tagline')}{fi('Address','company_address')}{fi('Phone','company_phone')}{fi('Email','company_email','email')}{fi('Reg No','reg_no')}{fi('SST No','sst_no')}{fi('Logo URL','logo_url')}
                            <div><label className="block text-sm font-medium mb-1">Header Color</label><div className="flex gap-3 items-center"><input type="color" value={data.header_color??'#0f172a'} onChange={e=>setData('header_color',e.target.value)} className="w-12 h-10 rounded cursor-pointer border"/><input type="text" value={data.header_color??''} onChange={e=>setData('header_color',e.target.value)} className="flex-1 border rounded-md px-3 py-2 text-sm"/></div></div>
                        </div>
                        <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
                            <div><label className="block text-sm font-medium mb-1">Supply Message</label><textarea value={data.supply_message??''} onChange={e=>setData('supply_message',e.target.value)} rows={2} className="w-full border rounded-md px-3 py-2 text-sm"/></div>
                            <div><label className="block text-sm font-medium mb-1">Footer Message</label><textarea value={data.footer_message??''} onChange={e=>setData('footer_message',e.target.value)} rows={2} className="w-full border rounded-md px-3 py-2 text-sm"/></div>
                        </div>
                        <div><label className="flex items-center gap-2 text-sm cursor-pointer"><input type="checkbox" checked={!!data.is_default} onChange={e=>setData('is_default',e.target.checked)} className="rounded"/>Set as default header</label></div>
                        <div className="flex gap-3"><Button type="submit" disabled={processing}>Save</Button><Button type="button" variant="outline" onClick={()=>setEditing(null)}>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">Name</th><th className="text-left px-4 py-3 font-medium hidden md:table-cell">Company</th><th className="text-left px-4 py-3 font-medium">Color</th><th className="w-24 px-4 py-3"></th></tr></thead>
                        <tbody className="divide-y">{templates.map((t:any)=><tr key={t.id} className="hover:bg-muted/30"><td className="px-4 py-3 font-medium">{t.name}{t.is_default&&<span className="ml-2 text-xs bg-blue-100 text-blue-700 px-1.5 py-0.5 rounded">Default</span>}</td><td className="px-4 py-3 text-muted-foreground hidden md:table-cell">{t.company_name||'—'}</td><td className="px-4 py-3"><div className="flex items-center gap-2"><div className="w-5 h-5 rounded border" style={{background:t.header_color??'#0f172a'}}/><span className="text-xs text-muted-foreground">{t.header_color}</span></div></td><td className="px-4 py-3"><div className="flex gap-2 justify-end"><button onClick={()=>openEdit(t)}><Edit className="w-4 h-4 text-muted-foreground hover:text-primary"/></button><button onClick={()=>{if(confirm('Delete?'))router.delete(`/settings/header-templates/${t.id}`)}}><Trash2 className="w-4 h-4 text-muted-foreground hover:text-destructive"/></button></div></td></tr>)}</tbody>
                    </table>
                    {templates.length===0&&<p className="text-center py-12 text-muted-foreground">No header templates yet.</p>}
                </div>
            </div>
        </AuthenticatedLayout>
    );
}
