import { Head, Link } from '@inertiajs/react';
import {
    Calendar,
    FileText,
    LayoutGrid,
    List,
    MoreVertical,
    Plus,
    Search,
    Pencil,
    Trash2,
} from 'lucide-react';
import { useState } from 'react';

import { DeleteProjectDialog } from '@/components/projects/delete-project-dialog';
import { EditProjectDialog } from '@/components/projects/edit-project-dialog';
import { Button } from '@/components/ui/button';
import {
    DropdownMenu,
    DropdownMenuContent,
    DropdownMenuItem,
    DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu';

const DUMMY_DRAFTS = [
    {
        id: 101,
        name: 'New Brand Identity',
        slug: 'new-brand-identity',
        description: 'Initial conceptualization for the company rebrand. Gathering inspiration and moodboards.',
        status: 'Draft',
        tasks: 0,
        members: 1,
        date: 'Oct 20, 2024',
        color: 'bg-neutral-500',
    },
    {
        id: 102,
        name: 'Mobile App Wireframes',
        slug: 'mobile-app-wireframes',
        description: 'First draft of the mobile application layout and user flow diagrams.',
        status: 'Draft',
        tasks: 0,
        members: 2,
        date: 'Oct 22, 2024',
        color: 'bg-stone-500',
    },
];

export default function Drafts() {
    const [view, setView] = useState<'grid' | 'list'>('grid');
    const [editingProject, setEditingProject] = useState<any>(null);
    const [deletingProject, setDeletingProject] = useState<any>(null);

    return (
        <>
            <Head title="Draft Projects" />

            <div className="flex h-full flex-1 flex-col gap-6 p-4 md:p-8">
                {/* Header Section */}
                <div className="flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between">
                    <div>
                        <h1 className="bg-linear-to-br from-foreground to-foreground/70 bg-clip-text text-3xl font-extrabold tracking-tight text-foreground">
                            Draft Projects
                        </h1>
                        <p className="mt-1 text-muted-foreground">
                            Review and finalize your project drafts before starting them.
                        </p>
                    </div>
                    <div className="flex flex-wrap items-center gap-3">
                        <div className="group relative min-w-[200px]">
                            <div className="pointer-events-none absolute inset-y-0 left-3 flex items-center">
                                <Search className="h-4 w-4 text-muted-foreground transition-colors group-focus-within:text-orange-500" />
                            </div>
                            <input
                                type="text"
                                placeholder="Search drafts..."
                                className="h-10 w-full rounded-xl border bg-white/50 pr-4 pl-10 text-sm backdrop-blur-sm transition-all focus:border-orange-500 focus:ring-2 focus:ring-orange-500/20 focus:outline-hidden dark:bg-neutral-900/50"
                            />
                        </div>
                        <div className="flex h-10 rounded-lg border bg-neutral-100 p-1 dark:bg-neutral-800">
                            <button
                                onClick={() => setView('grid')}
                                className={`flex items-center gap-2 rounded-md px-2.5 text-sm font-medium transition-all ${view === 'grid' ? 'bg-white text-foreground shadow-sm dark:bg-neutral-700' : 'text-neutral-500'}`}
                            >
                                <LayoutGrid size={16} /> Grid
                            </button>
                            <button
                                onClick={() => setView('list')}
                                className={`flex items-center gap-2 rounded-md px-2.5 text-sm font-medium transition-all ${view === 'list' ? 'bg-white text-foreground shadow-sm dark:bg-neutral-700' : 'text-neutral-500'}`}
                            >
                                <List size={16} /> List
                            </button>
                        </div>
                    </div>
                </div>

                {/* Info Card - Why Drafts? */}
                <div className="rounded-2xl border border-orange-100 bg-orange-50/50 p-6 dark:border-orange-900/20 dark:bg-orange-900/5">
                    <div className="flex gap-4">
                        <div className="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-orange-100 text-orange-600 dark:bg-orange-900/30 dark:text-orange-400">
                            <FileText size={20} />
                        </div>
                        <div>
                            <h3 className="font-bold text-orange-900 dark:text-orange-100">Project Preparation</h3>
                            <p className="text-sm text-orange-800/70 dark:text-orange-400/70 mt-1">
                                Projects in draft status are not visible to entire teams. Use this space to plan your workflow, set milestones, and invite key members before officially launching.
                            </p>
                        </div>
                    </div>
                </div>

                {/* Drafts Grid */}
                <div className="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3">
                    {DUMMY_DRAFTS.map((project) => (
                        <div
                            key={project.id}
                            className="group relative flex flex-col rounded-2xl border bg-white transition-all hover:-translate-y-1 hover:shadow-xl dark:bg-neutral-900"
                        >
                            <div className="p-6">
                                <div className="mb-4 flex items-center justify-between">
                                    <div
                                        className={`flex h-10 w-10 items-center justify-center rounded-xl ${project.color} text-white shadow-lg`}
                                    >
                                        <FileText size={20} />
                                    </div>
                                    <DropdownMenu>
                                        <DropdownMenuTrigger asChild>
                                            <button className="text-muted-foreground hover:text-foreground transition-colors p-1 rounded-md hover:bg-neutral-100 dark:hover:bg-neutral-800">
                                                <MoreVertical size={20} />
                                            </button>
                                        </DropdownMenuTrigger>
                                        <DropdownMenuContent align="end" className="w-40 rounded-xl border-neutral-200 dark:border-neutral-800">
                                            <DropdownMenuItem 
                                                onClick={() => setEditingProject(project)}
                                                className="gap-2 cursor-pointer focus:bg-orange-50 dark:focus:bg-orange-900/20 focus:text-orange-600"
                                            >
                                                <Pencil size={14} /> Edit Draft
                                            </DropdownMenuItem>
                                            <DropdownMenuItem 
                                                onClick={() => setDeletingProject(project)}
                                                className="gap-2 cursor-pointer text-red-600 focus:bg-red-50 dark:focus:bg-red-900/20 focus:text-red-600"
                                            >
                                                <Trash2 size={14} /> Delete Draft
                                            </DropdownMenuItem>
                                        </DropdownMenuContent>
                                    </DropdownMenu>
                                </div>

                                <Link 
                                    href={`/projects/${project.slug}`}
                                    className="block group-hover:text-orange-600 transition-colors"
                                >
                                    <h3 className="mb-2 text-lg font-semibold">
                                        {project.name}
                                    </h3>
                                </Link>
                                <p className="mb-6 line-clamp-2 text-sm text-muted-foreground">
                                    {project.description}
                                </p>

                                <div className="mt-auto space-y-4">
                                    <div className="flex items-center justify-between border-t pt-4">
                                        <div className="flex -space-x-2">
                                            <div className="flex h-8 w-8 items-center justify-center rounded-full border-2 border-white bg-neutral-100 text-[10px] font-bold dark:border-neutral-900 dark:bg-neutral-800">
                                                +{project.members}
                                            </div>
                                        </div>
                                        <div className="flex items-center gap-1.5 text-xs text-muted-foreground">
                                            <Calendar size={14} />
                                            <span>Created {project.date}</span>
                                        </div>
                                    </div>
                                    <Button className="w-full h-10 rounded-xl font-bold bg-linear-to-r from-orange-500 to-amber-500 hover:from-orange-600 hover:to-amber-600 border-none shadow-lg shadow-orange-500/20">
                                        Launch Project
                                    </Button>
                                </div>
                            </div>
                        </div>
                    ))}

                    {/* Add New Draft Placeholder */}
                    <button
                        className="flex min-h-[320px] flex-col items-center justify-center rounded-2xl border-2 border-dashed border-neutral-200 transition-colors hover:border-orange-500 hover:bg-orange-50/50 dark:border-neutral-800 dark:hover:bg-orange-900/10"
                    >
                        <div className="mb-3 flex h-12 w-12 items-center justify-center rounded-full border bg-neutral-50 dark:bg-neutral-900">
                            <Plus className="text-muted-foreground" />
                        </div>
                        <span className="font-medium text-muted-foreground">
                            Create New Draft
                        </span>
                    </button>
                </div>

                <EditProjectDialog
                    project={editingProject}
                    open={!!editingProject}
                    onOpenChange={(open) => !open && setEditingProject(null)}
                />

                <DeleteProjectDialog
                    projectName={deletingProject?.name || ''}
                    open={!!deletingProject}
                    onOpenChange={(open) => !open && setDeletingProject(null)}
                />
            </div>
        </>
    );
}

Drafts.layout = {
    breadcrumbs: [
        {
            title: 'Drafts',
            href: draft(),
        },
    ],
};
