import { Head, Link, usePage } from '@inertiajs/react';
import { ArrowLeft } from 'lucide-react';
import { useMemo } from 'react';
import {
    create as temporaryCreate,
    index as temporaryIndex,
    store as temporaryStore,
} from '@/actions/App/Http/Controllers/TemporaryEmployeeController';
import { TemporaryEmployeeForm } from '@/components/employees/temporary-employee-form';
import { Button } from '@/components/ui/button';
import { useLanguage } from '@/contexts/language-context';
import AppLayout from '@/layouts/app-layout';
import { buildTemporaryEmployeeFormLabels } from '@/lib/temporary-employee-form-labels';
import { dashboard } from '@/routes';

export default function TemporaryEmployeesCreate() {
    const { t } = useLanguage();
    const p = t.employeesTemporaryPage;
    const page = usePage();
    const designations = page.props.designations ?? [];
    const breadcrumbs = useMemo(
        () => [
            { title: t.dashboard.breadcrumb, href: dashboard() },
            { title: t.nav.employeeManagement, href: '#' },
            { title: p.breadcrumb, href: temporaryIndex() },
            { title: p.createBreadcrumb, href: temporaryCreate() },
        ],
        [t.dashboard.breadcrumb, t.nav.employeeManagement, p.breadcrumb, p.createBreadcrumb],
    );

    const formLabels = useMemo(() => buildTemporaryEmployeeFormLabels(p), [p]);

    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title={p.createHeadTitle} />
            <div className="flex flex-col gap-6 p-4">
                <Button variant="outline" size="sm" asChild className="w-fit">
                    <Link href={temporaryIndex()} prefetch>
                        <ArrowLeft className="size-4" />
                        {p.backToList}
                    </Link>
                </Button>
                <TemporaryEmployeeForm
                    mode="create"
                    designations={designations}
                    labels={formLabels}
                    submitUrl={temporaryStore.url()}
                    submitMethod="post"
                    submitLabel={p.createSubmit}
                    submittingLabel={p.createSubmitting}
                />
            </div>
        </AppLayout>
    );
}
