import { useTranslation } from '@/hooks/use-translation';
import { useState } from 'react';
import { router, useForm, Head } from '@inertiajs/react';
import { ArrowLeft, Calendar, Users, Globe } from 'lucide-react';
import AppLayout from '@/layouts/app-layout';
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { Textarea } from "@/components/ui/textarea";
import { Checkbox } from "@/components/ui/checkbox";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Alert, AlertDescription } from "@/components/ui/alert";
import { BreadcrumbItem } from '@/types';

const breadcrumbs: BreadcrumbItem[] = [
  {
    title: 'Dashboard',
    href: '/dashboard',
  },
  {
    title: 'Calendars',
    href: '/admin/calendars',
  },
  {
    'title': 'Create Calendar',
    href: '/admin/calendars/create',
  },
];

interface CalendarFormData {
    name: string;
    members_only: boolean;
    public: boolean;
}

export default function CalendarCreate() {
    const { t } = useTranslation();
    const { data, setData, post, processing, errors } = useForm<CalendarFormData>({
        name: '',
        members_only: false,
        public: false,
    });

    const handleSubmit = (e: React.FormEvent) => {
        e.preventDefault();
        post('/admin/calendars');
    };

    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title={t('Create Calendar')} />
            <div className="flex h-full flex-1 flex-col gap-4 overflow-x-auto rounded-xl p-4">
           {/* Header */}
                <div className="flex items-center gap-4">
                    <div>
                        <h1 className="text-2xl font-bold text-gray-900 dark:text-gray-100">{t('Create Calendar')}</h1>
                        <p className="text-gray-600 dark:text-gray-400">{t('Add a new event calendar')}</p>
                    </div>
                </div>

                <form onSubmit={handleSubmit} className="space-y-6">
                    {/* Basic Information */}
                    <Card>
                        <CardHeader>
                            <CardTitle className="flex items-center gap-2">
                                <Calendar className="h-5 w-5" />
                                {t('Calendar Information')}
                            </CardTitle>
                            <CardDescription>
                                {t('Basic details about the calendar')}
                            </CardDescription>
                        </CardHeader>
                        <CardContent className="space-y-4">
                            <div>
                                <Label htmlFor="name">Calendar Name *</Label>
                                <Input
                                    id="name"
                                    type="text"
                                    value={data.name}
                                    onChange={(e) => setData('name', e.target.value)}
                                    className={errors.name ? 'border-red-500' : ''}
                                    placeholder={t('Enter calendar name...')}
                                />
                                {errors.name && <p className="text-sm text-red-600 mt-1">{errors.name}</p>}
                            </div>
                        </CardContent>
                    </Card>

                    {/* Visibility Settings */}
                    <Card>
                        <CardHeader>
                            <CardTitle className="flex items-center gap-2">
                                <Globe className="h-5 w-5" />
                                {t('Visibility Settings')}
                            </CardTitle>
                            <CardDescription>
                                {t('Control who can view events in this calendar')}
                            </CardDescription>
                        </CardHeader>
                        <CardContent className="space-y-4">
                            <div className="flex items-center space-x-2">
                                <Checkbox
                                    id="public"
                                    checked={data.public}
                                    onCheckedChange={(checked) => setData('public', checked as boolean)}
                                />
                                <Label htmlFor="public" className="flex items-center gap-2">
                                    <Globe className="h-4 w-4" />
                                    {t('Public Calendar')}
                                </Label>
                            </div>
                            <p className="text-sm text-gray-600">
                                {t('Public calendars can be viewed by anyone, including non-members')}
                            </p>

                            <div className="flex items-center space-x-2">
                                <Checkbox
                                    id="members_only"
                                    checked={data.members_only}
                                    onCheckedChange={(checked) => setData('members_only', checked as boolean)}
                                />
                                <Label htmlFor="members_only" className="flex items-center gap-2">
                                    <Users className="h-4 w-4" />
                                    {t('Members Only')}
                                </Label>
                            </div>
                            <p className="text-sm text-gray-600">
                                {t('Members only calendars require authentication to view')}
                            </p>

                            {!data.public && !data.members_only && (
                                <Alert>
                                    <AlertDescription>
                                        {t('This calendar will be private and only accessible to administrators.')}
                                    </AlertDescription>
                                </Alert>
                            )}

                            {data.public && data.members_only && (
                                <Alert>
                                    <AlertDescription>
                                        <strong>{t('Note:')}</strong> This calendar will be visible to members only (members_only takes precedence over public).
                                    </AlertDescription>
                                </Alert>
                            )}
                        </CardContent>
                    </Card>

                    {/* Actions */}
                    <div className="flex items-center justify-end space-x-4">
                        <Button
                            type="button"
                            variant="outline"
                            onClick={() => router.get('/admin/calendars')}
                        >
                            {t('Cancel')}
                        </Button>
                        <Button type="submit" disabled={processing}>
                            {processing ? 'Creating...' : 'Create Calendar'}
                        </Button>
                    </div>
                </form>
            </div>
        </AppLayout>
    );
}