import { Head, Link, router } from '@inertiajs/react';
import { Badge } from '@/components/ui/badge';
import { Button } from '@/components/ui/button';
import type { KnowledgeBaseArticle, PaginatedData } from '@/types';

type Props = { articles: PaginatedData<KnowledgeBaseArticle> };

export default function KnowledgeBaseIndex({ articles }: Props) {
    return (
        <>
            <Head title="Knowledge Base" />
            <div className="space-y-4 p-4">
                <div className="flex items-center justify-between">
                    <h1 className="text-2xl font-bold">Knowledge Base</h1>
                    <Button asChild>
                        <Link href="/admin/knowledge-base/create">
                            New Article
                        </Link>
                    </Button>
                </div>
                <div className="overflow-x-auto rounded border">
                    <table className="w-full text-sm">
                        <thead className="bg-muted text-left">
                            <tr>
                                <th className="p-3">Title</th>
                                <th className="p-3">System</th>
                                <th className="p-3">Category</th>
                                <th className="p-3">Published</th>
                                <th className="p-3">Tags</th>
                                <th className="p-3">Actions</th>
                            </tr>
                        </thead>
                        <tbody>
                            {articles.data.map((article) => (
                                <tr
                                    key={article.id}
                                    className="cursor-pointer border-t hover:bg-muted/50"
                                    onClick={() =>
                                        router.visit(
                                            `/admin/knowledge-base/${article.id}`,
                                        )
                                    }
                                >
                                    <td className="p-3 font-medium">
                                        {article.title}
                                    </td>
                                    <td className="p-3">
                                        {article.system?.name ?? '—'}
                                    </td>
                                    <td className="p-3">
                                        {article.category?.name ?? '—'}
                                    </td>
                                    <td className="p-3">
                                        <Badge
                                            variant={
                                                article.is_published
                                                    ? 'default'
                                                    : 'secondary'
                                            }
                                        >
                                            {article.is_published
                                                ? 'Yes'
                                                : 'Draft'}
                                        </Badge>
                                    </td>
                                    <td className="p-3">
                                        {article.tags?.map((t) => (
                                            <Badge
                                                key={t}
                                                variant="outline"
                                                className="mr-1"
                                            >
                                                {t}
                                            </Badge>
                                        ))}
                                    </td>
                                    <td
                                        className="p-3"
                                        onClick={(e) => e.stopPropagation()}
                                    >
                                        <Button
                                            variant="outline"
                                            size="sm"
                                            asChild
                                        >
                                            <Link
                                                href={`/admin/knowledge-base/${article.id}/edit`}
                                            >
                                                Edit
                                            </Link>
                                        </Button>
                                    </td>
                                </tr>
                            ))}
                            {articles.data.length === 0 && (
                                <tr>
                                    <td
                                        colSpan={6}
                                        className="p-6 text-center text-muted-foreground"
                                    >
                                        No articles found.
                                    </td>
                                </tr>
                            )}
                        </tbody>
                    </table>
                </div>
                {articles.last_page > 1 && (
                    <div className="flex justify-center gap-2">
                        {articles.prev_page_url && (
                            <Button variant="outline" size="sm" asChild>
                                <Link href={articles.prev_page_url}>
                                    Previous
                                </Link>
                            </Button>
                        )}
                        <span className="self-center text-sm">
                            Page {articles.current_page} of {articles.last_page}
                        </span>
                        {articles.next_page_url && (
                            <Button variant="outline" size="sm" asChild>
                                <Link href={articles.next_page_url}>Next</Link>
                            </Button>
                        )}
                    </div>
                )}
            </div>
        </>
    );
}
