import { Head, router } from '@inertiajs/react';
import { FormEvent, useState } from 'react';
import AppLayout from '@/layouts/app-layout';
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Input } from '@/components/ui/input';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';

interface Result { type: string; id: number; title: string; url: string; meta?: string | null }
interface Props { q: string; type: string; results: Result[] }

export default function GlobalSearch({ q, type, results }: Props) {
    const [term, setTerm] = useState(q);
    const [kind, setKind] = useState(type || 'all');

    const submit = (e: FormEvent) => {
        e.preventDefault();
        router.get('/search', { q: term, type: kind }, { preserveState: true, replace: true });
    };

    return (
        <AppLayout breadcrumbs={[{ title: 'Pencarian Global', href: '/search' }]}>
            <Head title="Pencarian Global" />
            <div className="space-y-6 p-4 md:p-6">
                <Card>
                    <CardHeader><CardTitle>Pencarian Global</CardTitle></CardHeader>
                    <CardContent>
                        <form onSubmit={submit} className="flex flex-col gap-3 md:flex-row">
                            <Input value={term} onChange={(e) => setTerm(e.target.value)} placeholder="Cari customer, produk, order, invoice..." autoFocus />
                            <Select value={kind} onValueChange={setKind}>
                                <SelectTrigger className="md:w-52"><SelectValue placeholder="Semua" /></SelectTrigger>
                                <SelectContent>
                                    <SelectItem value="all">Semua</SelectItem>
                                    <SelectItem value="customers">Customer</SelectItem>
                                    <SelectItem value="products">Produk</SelectItem>
                                    <SelectItem value="orders">Order</SelectItem>
                                    <SelectItem value="invoices">Invoice</SelectItem>
                                    <SelectItem value="payments">Payment</SelectItem>
                                    <SelectItem value="users">User</SelectItem>
                                </SelectContent>
                            </Select>
                            <Button type="submit">Cari</Button>
                        </form>
                    </CardContent>
                </Card>

                {q && <div className="text-sm text-muted-foreground">Hasil pencarian untuk <strong>{q}</strong>: {results.length}</div>}
                <div className="grid gap-3">
                    {results.map((item) => (
                        <Card key={`${item.type}-${item.id}`} className="cursor-pointer transition hover:shadow-md" onClick={() => router.visit(item.url)}>
                            <CardContent className="flex items-center justify-between gap-4 p-4">
                                <div><div className="font-medium">{item.title}</div><div className="text-sm text-muted-foreground">{item.type}{item.meta ? ` • ${item.meta}` : ''}</div></div>
                                <Button variant="outline">Buka</Button>
                            </CardContent>
                        </Card>
                    ))}
                    {q && results.length === 0 && <Card><CardContent className="p-8 text-center text-muted-foreground">Tidak ada data yang cocok.</CardContent></Card>}
                </div>
            </div>
        </AppLayout>
    );
}
