import { Form, Head, Link } from '@inertiajs/react';
import { useState } from 'react';
import RoleController from '@/actions/App/Http/Controllers/Admin/RoleController';
import Heading from '@/components/heading';
import InputError from '@/components/input-error';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { dashboard } from '@/routes';
import { create, index } from '@/routes/admin/roles';
import {
    PermissionGroupsPicker,
    type PermissionGroup,
} from './permission-groups-picker';

export default function RolesCreate({
    permissions,
}: {
    permissions: PermissionGroup[];
}) {
    const [selected, setSelected] = useState<string[]>([]);

    return (
        <>
            <Head title="Nouveau rôle" />

            <div className="flex h-full flex-1 flex-col gap-6 p-4 md:p-6">
                <Heading
                    title="Nouveau rôle"
                    description="Définir un rôle et ses permissions par module"
                />

                <Form
                    {...RoleController.store.form()}
                    className="mx-auto w-full max-w-3xl space-y-6"
                >
                    {({ processing, errors }) => (
                        <>
                            <div className="grid gap-2">
                                <Label htmlFor="name">Nom technique</Label>
                                <Input
                                    id="name"
                                    name="name"
                                    placeholder="ex. manager"
                                    required
                                />
                                <InputError message={errors.name} />
                            </div>

                            <PermissionGroupsPicker
                                groups={permissions}
                                selected={selected}
                                onChange={setSelected}
                            />
                            <InputError message={errors.permissions} />

                            <div className="flex gap-3">
                                <Button disabled={processing}>Créer</Button>
                                <Button variant="outline" asChild>
                                    <Link href={index()}>Annuler</Link>
                                </Button>
                            </div>
                        </>
                    )}
                </Form>
            </div>
        </>
    );
}

RolesCreate.layout = {
    breadcrumbs: [
        { title: 'Tableau de bord', href: dashboard() },
        { title: 'Rôles', href: index() },
        { title: 'Créer', href: create() },
    ],
};
