"use client"; import React, { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; import { useAuth } from "@/hooks/useAuth"; import useSWR from "swr"; import axios from "@/lib/axios"; import { Plus, Search, FileText, ChevronRight, Edit3, Trash2 } from "lucide-react"; import ComponentCard from "@/components/common/ComponentCard"; import PageBreadcrumb from "@/components/common/PageBreadCrumb"; import Link from "next/link"; import { useToast } from "@/context/ToastContext"; import PageLoader from "@/components/ui/PageLoader"; import { useTranslations } from "next-intl"; const fetcher = (url: string) => axios.get(url).then((res) => res.data); export default function AdminLegalListClient() { const t = useTranslations("LegalAdmin"); const router = useRouter(); const { user, isAdminOrOwner } = useAuth(); const { addToast } = useToast(); useEffect(() => { if (user && !isAdminOrOwner) { router.push("/dashboard"); } }, [user, isAdminOrOwner, router]); const [searchTerm, setSearchTerm] = useState(""); const { data, mutate, isLoading } = useSWR("/api/admin/legal-pages", fetcher); const pages = data?.data || []; const filteredPages = pages.filter((page: any) => page.title.toLowerCase().includes(searchTerm.toLowerCase()) || page.slug.toLowerCase().includes(searchTerm.toLowerCase()) ); const handleDelete = async (id: number) => { if (!confirm(t("delete_confirm"))) return; try { await axios.delete(`/api/admin/legal-pages/${id}`); addToast(t("toast_delete_success"), "success"); mutate(); } catch (error) { addToast(t("toast_delete_failed"), "error"); } }; return (
setSearchTerm(e.target.value)} />
{t("create_new")}
{isLoading ? ( ) : filteredPages.length === 0 ? ( ) : ( filteredPages.map((page: any) => ( )) )}
{t("th_title_slug")} {t("th_version")} {t("th_last_updated")} {t("th_actions")}
{t("no_pages")}
{page.title}
/{page.slug}
v{page.latest_revision?.version || '1.0'} {new Date(page.updated_at).toLocaleDateString()}
); }