import { useState } from "react"; import { Trash2, Eye, EyeOff } from "lucide-react"; import { useAdminCollections, useAdminCollectionUpdate, useAdminCollectionDelete, type AdminCollectionRow, } from "~/requestHandler/use-admin-hooks"; import { AdminTable, AdminPagination, AdminToolbar, AdminSearch, AdminSelect, AdminPageTitle, StatusBadge, faNum, faDate, useDebouncedValue, type Column, } from "~/components/admin/DataTable"; const PAGE_SIZE = 25; const CREATOR: Record = { seller: "فروشنده", admin: "مدیر", user: "کاربر", }; export default function AdminCollections() { const [page, setPage] = useState(1); const [search, setSearch] = useState(""); const [creatorType, setCreatorType] = useState(""); const [isPublic, setIsPublic] = useState(""); const debouncedSearch = useDebouncedValue(search); const { data, isLoading } = useAdminCollections({ page, page_size: PAGE_SIZE, search: debouncedSearch, creator_type: creatorType, is_public: isPublic, }); const update = useAdminCollectionUpdate(); const del = useAdminCollectionDelete(); const reset = (fn: () => void) => { fn(); setPage(1); }; const toggle = (r: AdminCollectionRow) => update.mutate({ id: r.id, data: { isPublic: !r.isPublic } }); const onDelete = (r: AdminCollectionRow) => { if (confirm(`حذف مجموعه «${r.title}»؟`)) del.mutate(r.id); }; const columns: Column[] = [ { header: "عنوان", render: (r) => (
{r.coverImageUrl ? ( ) : (
)}

{r.title}

), }, { header: "سازنده", render: (r) => {CREATOR[r.creatorType] || r.creatorType} }, { header: "محصولات", render: (r) => {faNum(r.productCount)}, }, { header: "نمایش", render: (r) => r.isPublic ? ( ) : ( ), }, { header: "تاریخ", render: (r) => {faDate(r.createdAt)} }, { header: "", render: (r) => (
), }, ]; return (
مجموعه‌ها reset(() => setSearch(v))} placeholder="جستجوی عنوان / تلفن سازنده…" /> reset(() => setCreatorType(v))} options={[ { value: "", label: "همه سازنده‌ها" }, { value: "seller", label: "فروشنده" }, { value: "admin", label: "مدیر" }, { value: "user", label: "کاربر" }, ]} /> reset(() => setIsPublic(v))} options={[ { value: "", label: "همه" }, { value: "true", label: "عمومی" }, { value: "false", label: "خصوصی" }, ]} /> r.id} emptyText="مجموعه‌ای ثبت نشده است" />
); }