import { Head } from '@inertiajs/react';
import { useMemo } from 'react';
import { index as expensesIndex, show as expenseDayShow } from '@/actions/App/Http/Controllers/ExpenseDayController';
import { store as expenseStore } from '@/actions/App/Http/Controllers/ExpenseController';
import { ExpenseForm } from '@/components/expenses/expense-form';
import { useLanguage } from '@/contexts/language-context';
import { formatExpenseDateLongOrDash } from '@/lib/dates';
import AppLayout from '@/layouts/app-layout';
import { dashboard } from '@/routes';

export default function ExpensesCreate({ expenseDay, categories, paymentMethods, statuses }) {
    const { t } = useLanguage();
    const p = t.expensesPage;

    const breadcrumbs = useMemo(
        () => [
            { title: t.dashboard.breadcrumb, href: dashboard() },
            { title: p.breadcrumb, href: expensesIndex() },
            { title: formatExpenseDateLongOrDash(expenseDay.expense_date), href: expenseDayShow.url(expenseDay.id) },
            { title: p.expenseFormTitle, href: '#' },
        ],
        [t.dashboard.breadcrumb, p, expenseDay],
    );

    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title={p.expenseFormTitle} />
            <div className="flex flex-1 flex-col gap-6 p-4">
                <div>
                    <h1 className="text-2xl font-semibold tracking-tight">{p.expenseFormTitle}</h1>
                </div>
                <ExpenseForm
                    expenseDay={expenseDay}
                    categories={categories}
                    paymentMethods={paymentMethods}
                    statuses={statuses}
                    submitUrl={expenseStore.url({ expenseDay: expenseDay.id })}
                    cancelHref={expenseDayShow.url(expenseDay.id)}
                />
            </div>
        </AppLayout>
    );
}
