import { useMemo } from 'react'; import { DataTable } from '@/components/DataTable'; import { Pagination } from '@/components/Pagination'; import type { PaginationProps } from '@/components/Pagination'; import { Avatar, AvatarFallback } from '@/components/ui/avatar'; import { Table, TableBody, TableCell, TableRow } from '@/components/ui/table'; import { useOrganizationParams } from '@/hooks/useOrganizationParams'; import type { RouterOutputs } from '@/utils/api'; import { formatDateTime } from '@/utils/date'; import { toDots } from '@/utils/object'; import { AvatarImage } from '@radix-ui/react-avatar'; import { createColumnHelper } from '@tanstack/react-table'; import Link from 'next/link'; const columnHelper = createColumnHelper(); interface EventsTableProps { data: RouterOutputs['event']['list']; pagination: PaginationProps; } export function EventsTable({ data, pagination }: EventsTableProps) { const params = useOrganizationParams(); const columns = useMemo(() => { return [ columnHelper.accessor((row) => row.createdAt, { id: 'createdAt', header: () => 'Created At', cell(info) { return formatDateTime(info.getValue()); }, footer: () => 'Created At', }), columnHelper.accessor((row) => row.name, { id: 'event', header: () => 'Event', cell(info) { return {info.getValue()}; }, footer: () => 'Created At', }), columnHelper.accessor((row) => row.profile, { id: 'profile', header: () => 'Profile', cell(info) { const profile = info.getValue(); return ( {profile?.avatar && } {profile?.first_name?.at(0)} {`${profile?.first_name} ${profile?.last_name ?? ''}`} ); }, footer: () => 'Created At', }), columnHelper.accessor((row) => row.properties, { id: 'properties', header: () => 'Properties', cell(info) { const dots = toDots(info.getValue() as Record); return ( {Object.keys(dots).map((key) => { return ( {key} {typeof dots[key] === 'boolean' ? dots[key] ? 'true' : 'false' : dots[key]} ); })}
); }, footer: () => 'Created At', }), ]; }, [params]); return ( <> ); }