import { Head, Link } from '@inertiajs/react';
import { CalendarClock } from 'lucide-react';
import { EmptyState } from '@/components/empty-state';
import { PageHeader } from '@/components/page-header';
import { StatusBadge } from '@/components/status-badge';
import { Card, CardContent } from '@/components/ui/card';
import {
    Table,
    TableBody,
    TableCell,
    TableHead,
    TableHeader,
    TableRow,
} from '@/components/ui/table';
import { show as matterShow } from '@/routes/matters';

type Row = {
    id: string;
    matter_id: string;
    matter_number: string;
    title: string;
    type: string;
    due_date: string;
    days_left: number;
    owner: string | null;
};

export default function DeadlinesUpcoming({ deadlines }: { deadlines: Row[] }) {
    const leftLabel = (d: Row) => {
        if (d.days_left < 0) {
return `${Math.abs(d.days_left)}d overdue`;
}

        if (d.days_left === 0) {
return 'due today';
}

        return `${d.days_left}d left`;
    };

    return (
        <>
            <Head title="Upcoming deadlines" />
            <div className="flex flex-col gap-6 p-4">
                <PageHeader title="Upcoming deadlines" subtitle="Every open deadline across the firm, soonest first." />

                <Card>
                    <CardContent className="p-0">
                        {deadlines.length === 0 ? (
                            <EmptyState icon={CalendarClock} title="No open deadlines" description="Open deadlines across all matters appear here." />
                        ) : (
                            <Table>
                                <TableHeader>
                                    <TableRow>
                                        <TableHead>Due</TableHead>
                                        <TableHead>Deadline</TableHead>
                                        <TableHead>Matter</TableHead>
                                        <TableHead>Type</TableHead>
                                        <TableHead>Owner</TableHead>
                                    </TableRow>
                                </TableHeader>
                                <TableBody>
                                    {deadlines.map((d) => (
                                        <TableRow key={d.id}>
                                            <TableCell className="whitespace-nowrap font-medium text-foreground">
                                                {d.due_date}
                                                <StatusBadge tone={d.days_left <= 14 ? 'danger' : 'info'} className="ml-2">
                                                    {leftLabel(d)}
                                                </StatusBadge>
                                            </TableCell>
                                            <TableCell>{d.title}</TableCell>
                                            <TableCell>
                                                <Link href={matterShow(d.matter_id)} className="font-mono text-xs text-muted-foreground hover:text-primary">
                                                    {d.matter_number}
                                                </Link>
                                            </TableCell>
                                            <TableCell>{d.type}</TableCell>
                                            <TableCell>{d.owner ?? '—'}</TableCell>
                                        </TableRow>
                                    ))}
                                </TableBody>
                            </Table>
                        )}
                    </CardContent>
                </Card>
            </div>
        </>
    );
}
