import { Head, useForm } from '@inertiajs/react';
import { FormEventHandler } from 'react';

import { Button } from '@/components/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Checkbox } from '@/components/ui/checkbox';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import AdminLayout from '@/layouts/admin-layout';

export default function AdminCourierCreate() {
    const { data, setData, post, processing, errors } = useForm({
        name: '',
        slug: '',
        api_key: '',
        api_secret: '',
        base_url: '',
        status: true,
    });

    const submit: FormEventHandler = (e) => {
        e.preventDefault();
        post('/admin/couriers');
    };

    const autoSlug = (name: string) => {
        setData((prev) => ({ ...prev, name, slug: name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '') }));
    };

    return (
        <AdminLayout title="New Courier">
            <Head title="New Courier" />
            <form onSubmit={submit} className="max-w-xl space-y-4">
                <Card>
                    <CardHeader><CardTitle className="text-base">Courier Details</CardTitle></CardHeader>
                    <CardContent className="space-y-4">
                        <div className="grid gap-4 sm:grid-cols-2">
                            <div className="space-y-1.5">
                                <Label>Name *</Label>
                                <Input value={data.name} onChange={(e) => autoSlug(e.target.value)} placeholder="e.g. Pathao" className={errors.name ? 'border-red-400' : ''} />
                                {errors.name && <p className="text-xs text-red-500">{errors.name}</p>}
                            </div>
                            <div className="space-y-1.5">
                                <Label>Slug</Label>
                                <Input value={data.slug} onChange={(e) => setData('slug', e.target.value)} className="font-mono text-sm" />
                            </div>
                        </div>
                        <div className="space-y-1.5">
                            <Label>Base URL</Label>
                            <Input value={data.base_url} onChange={(e) => setData('base_url', e.target.value)} placeholder="https://api.courier.com/v1" />
                        </div>
                        <div className="grid gap-4 sm:grid-cols-2">
                            <div className="space-y-1.5">
                                <Label>API Key</Label>
                                <Input type="password" value={data.api_key} onChange={(e) => setData('api_key', e.target.value)} placeholder="••••••••" />
                            </div>
                            <div className="space-y-1.5">
                                <Label>API Secret</Label>
                                <Input type="password" value={data.api_secret} onChange={(e) => setData('api_secret', e.target.value)} placeholder="••••••••" />
                            </div>
                        </div>
                        <div className="flex items-center gap-2">
                            <Checkbox id="status" checked={data.status} onCheckedChange={(v) => setData('status', Boolean(v))} />
                            <Label htmlFor="status">Active</Label>
                        </div>
                    </CardContent>
                </Card>
                <Button type="submit" disabled={processing} className="bg-indigo-600 hover:bg-indigo-700">
                    {processing ? 'Creating…' : 'Create Courier'}
                </Button>
            </form>
        </AdminLayout>
    );
}
