import { useTranslation } from '@/hooks/use-translation';
import React from 'react';
import { Head, Link, router } from '@inertiajs/react';
import AppLayout from '@/layouts/app-layout';
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
import { Plus, Edit, Trash2, Briefcase, Activity } from 'lucide-react';
import { type BreadcrumbItem, type Board } from '@/types';

interface BoardWithCounts extends Board {
  members_count: number;
  active_members_count: number;
}

interface Props {
  boards: BoardWithCounts[];
}

export default function BoardsIndex({ boards }: Readonly<Props>) {
    const { t } = useTranslation();
  const handleDelete = (board: BoardWithCounts) => {
    if (confirm(`Are you sure you want to delete "${board.name}"?`)) {
      router.delete(`/admin/boards/${board.id}`);
    }
  };

  const breadcrumbs: BreadcrumbItem[] = [
    { title: 'Dashboard', href: '/dashboard' },
    { title: 'Boards', href: '/admin/boards' },
  ];

  return (
    <AppLayout breadcrumbs={breadcrumbs}>
      <Head title={t('Boards')} />

      <div className="flex h-full flex-1 flex-col gap-4 overflow-x-auto rounded-xl p-4">
        <div className="flex items-center justify-between">
          <div>
            <h1 className="text-3xl font-bold tracking-tight">{t('Boards')}</h1>
            <p className="text-muted-foreground mt-2">
              {t('Manage boards and their members')}
            </p>
          </div>
          <Link href="/admin/boards/create">
            <Button>
              <Plus className="me-2 h-4 w-4" />
              {t('Add Board')}
            </Button>
          </Link>
        </div>

        <div className="grid gap-4 md:grid-cols-3">
          <Card>
            <CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
              <CardTitle className="text-sm font-medium">{t('Total Boards')}</CardTitle>
              <Briefcase className="h-4 w-4 text-muted-foreground" />
            </CardHeader>
            <CardContent>
              <div className="text-2xl font-bold">{boards.length}</div>
            </CardContent>
          </Card>
          <Card>
            <CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
              <CardTitle className="text-sm font-medium">{t('Total Members')}</CardTitle>
              <Activity className="h-4 w-4 text-muted-foreground" />
            </CardHeader>
            <CardContent>
              <div className="text-2xl font-bold">
                {boards.reduce((sum, b) => sum + b.members_count, 0)}
              </div>
            </CardContent>
          </Card>
          <Card>
            <CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
              <CardTitle className="text-sm font-medium">{t('Active Memberships')}</CardTitle>
              <Activity className="h-4 w-4 text-muted-foreground" />
            </CardHeader>
            <CardContent>
              <div className="text-2xl font-bold">
                {boards.reduce((sum, b) => sum + b.active_members_count, 0)}
              </div>
            </CardContent>
          </Card>
        </div>

        <div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
          {boards.length > 0 ? (
            boards.map((board) => (
              <Card key={board.id} className="hover:shadow-lg transition-shadow">
                <CardHeader>
                  <CardTitle className="flex items-center justify-between">
                    <span className="truncate">{board.name}</span>
                  </CardTitle>
                  {board.description && (
                    <CardDescription className="line-clamp-2">
                      {board.description}
                    </CardDescription>
                  )}
                </CardHeader>
                <CardContent>
                  <div className="space-y-2">
                    <div className="flex items-center justify-between text-sm">
                      <span className="text-muted-foreground">{t('Total Members:')}</span>
                      <span className="font-medium">{board.members_count}</span>
                    </div>
                    <div className="flex items-center justify-between text-sm">
                      <span className="text-muted-foreground">{t('Active:')}</span>
                      <span className="font-medium">{board.active_members_count}</span>
                    </div>
                    <div className="flex gap-2 mt-4">
                      <Link href={`/admin/boards/${board.id}`} className="flex-1">
                        <Button variant="outline" size="sm" className="w-full">
                          {t('View Details')}
                        </Button>
                      </Link>
                      <Link href={`/admin/boards/${board.id}/edit`}>
                        <Button variant="outline" size="sm">
                          <Edit className="h-4 w-4" />
                        </Button>
                      </Link>
                      <Button
                        variant="outline"
                        size="sm"
                        onClick={() => handleDelete(board)}
                      >
                        <Trash2 className="h-4 w-4 text-red-600 dark:text-red-400" />
                      </Button>
                    </div>
                  </div>
                </CardContent>
              </Card>
            ))
          ) : (
            <div className="col-span-full text-center py-12">
              <Briefcase className="h-12 w-12 mx-auto mb-4 text-muted-foreground opacity-50" />
              <h3 className="text-lg font-medium mb-2">{t('No boards found')}</h3>
              <p className="text-muted-foreground mb-4">
                {t('Get started by creating your first board')}
              </p>
              <Link href="/admin/boards/create">
                <Button>
                  <Plus className="me-2 h-4 w-4" />
                  {t('Create Board')}
                </Button>
              </Link>
            </div>
          )}
        </div>
      </div>
    </AppLayout>
  );
}
