'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 = { 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 ( ) }