import { SiteDto } from "@/super-admin/dto/SitesDto"; import { ColumnDef } from "@tanstack/react-table"; import { Button } from "@/shared/common/ui/button"; import { Badge } from "@/shared/common/ui/badge"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger, } from "@/shared/common/ui/dropdown-menu"; import { Archive, Trash2, Edit, Eye, MoreHorizontal, RefreshCw, Palette } from "lucide-react"; import { t } from "i18next"; interface ColumnsProps { onView: (site: SiteDto) => void; onEdit: (site: SiteDto) => void; onArchive: (site: SiteDto) => void; onRestore: (site: SiteDto) => void; onDelete: (site: SiteDto) => void; onBranding: (site: SiteDto) => void; } export const getSitesColumnDefn = ({ onView, onEdit, onArchive, onRestore, onDelete, onBranding, }: ColumnsProps): ColumnDef[] => [ { id: "name", header: () => t("sites.columns.siteName"), cell: ({ row }) => { const site = row.original; return (
{site.name?.en || "-"}
{site.name?.am || "-"}
); }, }, { accessorKey: "key", header: () => t("sites.columns.key"), cell: ({ row }) => ( {row.original.key} ), }, { accessorKey: "domain", header: () => t("sites.columns.domain"), cell: ({ row }) => ( {row.original.domain} ), }, { accessorKey: "status", header: () => t("sites.columns.status"), cell: ({ row }) => { const status = row.original.status || "Active"; const isActive = status === "Active"; return ( {status} ); }, }, { id: "actions", header: () => t("sites.columns.actions"), cell: ({ row }) => { const site = row.original; const isArchived = site.status === "Archived"; return ( {t("sites.columns.actions")} onView(site)}> {t("sites.actions.view")} onEdit(site)}> {t("sites.actions.edit")} onBranding(site)}> {t("sites.actions.branding")} {!isArchived ? ( onArchive(site)} className="text-amber-600 focus:text-amber-600 cursor-pointer" > {t("sites.actions.archive")} ) : ( onRestore(site)} className="text-emerald-600 focus:text-emerald-600 cursor-pointer" > {t("sites.actions.restore")} )} onDelete(site)} className="text-rose-600 focus:text-rose-600 cursor-pointer" > {t("sites.actions.delete")} ); }, }, ];