import React, { useEffect, useState } from 'react';
import AppLayout from '@/layouts/app-layout';
import { type BreadcrumbItem } from '@/types';
import { Head, usePage } from '@inertiajs/react';
import { Building, Search } from 'lucide-react';
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';
import { Input } from '@/components/ui/input';
import NewWithModal from './NewWithModal';

const breadcrumbs: BreadcrumbItem[] = [
    { title: 'Organizações', href: '/organizacoes' },
];

export default function Index({ data }: any) {
    const { props } = usePage();
    const flash = (props.flash as any) || {};

    const [showFlash, setShowFlash] = useState(false);
    const [search, setSearch] = useState('');

    useEffect(() => {
        if (flash.message) {
            setShowFlash(true);
            const timer = setTimeout(() => setShowFlash(false), 3000);
            return () => clearTimeout(timer);
        }
    }, [flash.message]);

    const filtered = data.filter((dt: any) =>
        dt.name?.toLowerCase().includes(search.toLowerCase()) ||
        dt.razao_social?.toLowerCase().includes(search.toLowerCase()) ||
        dt.cnpj?.toLowerCase().includes(search.toLowerCase())
    );

    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title="Organizações" />

            {showFlash && (
                <div className="fixed inset-0 flex items-start justify-center pt-4 z-50 pointer-events-none">
                    <div className="bg-green-50 dark:bg-green-950 border border-green-300 dark:border-green-700 text-green-700 dark:text-green-400 text-xs font-medium px-4 py-2.5 rounded-xl shadow-sm">
                        {flash.message}
                    </div>
                </div>
            )}

            <div className="px-6 py-8">

                <div className="mb-6">
                    <h1 className="text-2xl font-extrabold text-foreground tracking-tight leading-tight">
                        Organizações
                    </h1>
                    <p className="text-sm text-muted-foreground mt-1">
                        Gerencie as organizações cadastradas na plataforma.
                    </p>
                </div>

                <div className="flex items-center gap-2.5 mb-4">
                    <Building size={13} className="text-blue-500" />
                    <span className="text-[10px] font-bold text-muted-foreground tracking-widest uppercase">
                        Listagem
                    </span>
                    <div className="flex-1 h-px bg-border" />
                    <NewWithModal />
                </div>

                <div className="bg-card border border-border rounded-2xl shadow-sm overflow-hidden">

                    <div className="px-5 py-3.5 border-b border-border">
                        <div className="relative max-w-sm">
                            <Search className="absolute left-2.5 top-2 h-3.5 w-3.5 text-muted-foreground" />
                            <Input
                                value={search}
                                onChange={(e) => setSearch(e.target.value)}
                                placeholder="Pesquisar organização..."
                                className="pl-8 h-8 text-xs"
                            />
                        </div>
                    </div>

                    <Table>
                        <TableHeader>
                            <TableRow className="hover:bg-transparent">
                                <TableHead className="text-xs font-semibold text-muted-foreground w-14">ID</TableHead>
                                <TableHead className="text-xs font-semibold text-muted-foreground">Nome</TableHead>
                                <TableHead className="text-xs font-semibold text-muted-foreground">CNPJ</TableHead>
                                <TableHead className="text-xs font-semibold text-muted-foreground">Razão Social</TableHead>
                                <TableHead className="text-xs font-semibold text-muted-foreground">E-mail NF-e</TableHead>
                                <TableHead className="text-xs font-semibold text-muted-foreground">Cidade</TableHead>
                                <TableHead className="text-xs font-semibold text-muted-foreground">UF</TableHead>
                                <TableHead className="text-xs font-semibold text-muted-foreground">Criado em</TableHead>
                            </TableRow>
                        </TableHeader>
                        <TableBody className="divide-y divide-border">
                            {filtered.map((dt: any) => (
                                <TableRow
                                    key={dt.id}
                                    className="hover:bg-muted/40 transition-colors cursor-pointer"
                                >
                                    <TableCell className="text-xs text-muted-foreground font-medium">{dt.id}</TableCell>
                                    <TableCell className="text-xs font-semibold text-foreground">{dt.name}</TableCell>
                                    <TableCell className="text-xs text-muted-foreground">{dt.cnpj || '—'}</TableCell>
                                    <TableCell className="text-xs text-muted-foreground">{dt.razao_social || '—'}</TableCell>
                                    <TableCell className="text-xs text-muted-foreground">{dt.email_nfe || '—'}</TableCell>
                                    <TableCell className="text-xs text-muted-foreground">{dt.city || '—'}</TableCell>
                                    <TableCell className="text-xs text-muted-foreground">{dt.state || '—'}</TableCell>
                                    <TableCell className="text-[10px] text-muted-foreground">
                                        {dt.created_at ? new Date(dt.created_at).toLocaleDateString('pt-BR', {
                                            day: '2-digit', month: 'short', year: 'numeric',
                                        }) : '—'}
                                    </TableCell>
                                </TableRow>
                            ))}

                            {filtered.length === 0 && (
                                <TableRow>
                                    <TableCell colSpan={8} className="text-center py-10">
                                        <div className="flex flex-col items-center gap-2 text-muted-foreground">
                                            <Building size={24} strokeWidth={1.2} className="opacity-30" />
                                            <p className="text-xs">Nenhuma organização encontrada.</p>
                                        </div>
                                    </TableCell>
                                </TableRow>
                            )}
                        </TableBody>
                    </Table>
                </div>

            </div>
        </AppLayout>
    );
}