import AuthenticatedLayout from "@/layouts/authenticated-layout";
import { Head, Link, useForm } from "@inertiajs/react";
import { Card, CardHeader, CardTitle, CardDescription, CardContent } from "@/components/ui/card";
import { Label } from "@/components/ui/label";
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";


export default function Create({permissions}) {
    const { data, setData, errors, post, processing } = useForm({
        name: "",
        permissions: []

    });

    function submit(e: React.FormEvent<HTMLFormElement>) {
        e.preventDefault();
        post(route('roles.store'));
    }

    function handleCheckboxChange(permissionName, checked){
        if(checked){
            setData("permissions",[...data.permissions, permissionName])
        }
        else setData("permissions",[...data.permissions.filter(name=>name !== permissionName)])
    }


    return (
        <AuthenticatedLayout header="Create Role">
            <Head title="Create Role" />
            
            <div className="container mx-auto px-4 py-6 max-w-4xl">
                <div className="flex justify-between items-center mb-6">
                    <h1 className="text-2xl font-bold">Create New Role</h1>
                    <Link 
                        href={route('roles.index')}
                        className="px-4 py-2 bg-gray-200 hover:bg-gray-300 rounded-md transition duration-200"
                    >
                        Back to roles
                    </Link>
                </div>

                <Card className="max-w-lg mx-auto">
                    <CardHeader>
                        <CardTitle className="text-xl">Create Role</CardTitle>
                        <CardDescription>
                            Enter Role 
                        </CardDescription>
                    </CardHeader>
                    <CardContent>
                        <form onSubmit={submit}>
                            <div className="grid gap-4 mb-4">
                                <div className="grid gap-2">
                                    <Label htmlFor="name">Name</Label>
                                    <Input
                                        id="name"
                                        placeholder=""
                                        value={data.name}
                                        onChange={e => setData('name', e.target.value)}
                                        required
                                        autoFocus
                                    />
                                    
                                </div>
                              </div>   
                            <div className="grid gap-4 mb-4">
                                <div className="grid gap-2">
                                    <Label htmlFor="permissions">Permissions</Label>

                                {permissions.map((permission)=>
                                <label key="1" className="flex items-center space-x-2">
                                    <input type="checkbox"
                                    value={permission.name}
                                    id={permission.name}
                                    onChange={(e)=>handleCheckboxChange(permission.name,e.target.checked)}
                                    className="form-checkbox h-5 w-5 text-blue-600 rounded focus:ring-2"
                                    />
                                     {permission.name}
                                </label>

                                )}    
                             </div>
                                

                                

                            </div>
                            
                            <Button 
                                type="submit" 
                                className="w-full"
                                disabled={processing}
                            >
                                {processing ? 'Creating...' : 'Create Role'}
                            </Button>
                        </form>
                    </CardContent>
                </Card>
            </div>
        </AuthenticatedLayout>
    );
}