"use client"; import { Eye, Pencil, Sofa, Wifi } from "lucide-react"; import Link from "next/link"; import { DataTable } from "@/components/admin/data-table"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import type { DataTableColumn, PaginatedResult } from "@/types"; interface RoomRow { id: number; name: string; ownerName: string; ownerId: number; state: string; users: number; usersMax: number; description: string; } const stateVariants: Record< string, "default" | "secondary" | "destructive" | "outline" > = { open: "default", locked: "secondary", password: "destructive", invisible: "outline", }; function getColumns(canEdit: boolean): DataTableColumn[] { return [ { key: "id", label: "ID", sortable: true }, { key: "name", label: "Room", sortable: true, render: (_, row) => (
{row.name} {row.description && ( {row.description} )}
), }, { key: "ownerName", label: "Owner", render: (_, row) => ( {row.ownerName} ), }, { key: "state", label: "State", sortable: true, filterKey: "filter_state", filterOptions: [ { label: "Open", value: "open" }, { label: "Locked", value: "locked" }, { label: "Password", value: "password" }, { label: "Invisible", value: "invisible" }, ], render: (value) => ( {String(value)} ), }, { key: "users", label: "Users", sortable: true, render: (_, row) => ( {row.users > 0 && ( )} 0 ? "font-medium" : "text-muted-foreground"} > {row.users} / {row.usersMax} ), }, { key: "actions", label: "", render: (_, row) => (
{canEdit && ( )}
), }, ]; } interface RoomsTableProps { data: PaginatedResult; canEdit: boolean; } export function RoomsTable({ data, canEdit }: RoomsTableProps) { return ( ); }