import { Head, Link, useForm } from '@inertiajs/react';
import { Button } from '@/components/ui/button';
import {
    Card,
    CardContent,
    CardDescription,
    CardHeader,
    CardTitle,
} from '@/components/ui/card';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import InputError from '@/components/input-error';

export default function TicketLookup() {
    const { data, setData, post, processing, errors } = useForm({
        ticket_no: '',
    });

    function handleSubmit(e: React.FormEvent) {
        e.preventDefault();
        post('/ticket-status');
    }

    return (
        <>
            <Head title="Track Your Ticket" />
            <div className="min-h-screen bg-gray-50 dark:bg-gray-950">
                <header className="border-b bg-white dark:bg-gray-900">
                    <div className="mx-auto flex max-w-4xl items-center justify-between px-4 py-4">
                        <Link href="/" className="text-xl font-bold">
                            Support Center
                        </Link>
                        <div className="flex gap-3">
                            <Button variant="outline" size="sm" asChild>
                                <Link href="/submit">Submit Ticket</Link>
                            </Button>
                            <Button variant="ghost" size="sm" asChild>
                                <Link href="/login">Staff Login</Link>
                            </Button>
                        </div>
                    </div>
                </header>

                <main className="mx-auto flex max-w-md flex-col items-center px-4 py-16">
                    <Card className="w-full">
                        <CardHeader className="text-center">
                            <CardTitle className="text-2xl">
                                Track Your Ticket
                            </CardTitle>
                            <CardDescription>
                                Enter your ticket number to view its current
                                status
                            </CardDescription>
                        </CardHeader>
                        <CardContent>
                            <form onSubmit={handleSubmit} className="space-y-4">
                                <div className="space-y-2">
                                    <Label htmlFor="ticket_no">
                                        Ticket Number
                                    </Label>
                                    <Input
                                        id="ticket_no"
                                        value={data.ticket_no}
                                        onChange={(e) =>
                                            setData(
                                                'ticket_no',
                                                e.target.value.toUpperCase(),
                                            )
                                        }
                                        placeholder="e.g. TKT-20260331-0001"
                                        className="font-mono"
                                    />
                                    <InputError message={errors.ticket_no} />
                                </div>
                                <Button
                                    type="submit"
                                    disabled={processing}
                                    className="w-full"
                                >
                                    {processing
                                        ? 'Searching...'
                                        : 'Track Ticket'}
                                </Button>
                            </form>
                        </CardContent>
                    </Card>

                    <p className="mt-6 text-center text-sm text-muted-foreground">
                        Don't have a ticket yet?{' '}
                        <Link href="/submit" className="text-primary underline">
                            Submit one here
                        </Link>
                    </p>
                </main>
            </div>
        </>
    );
}
