'use client'; import { useMemo, useState } from 'react'; import { ColumnDef } from '@tanstack/react-table'; import { Ellipsis } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { Database } from '@kit/supabase/database'; import { Button } from '@kit/ui/button'; import { DataTable } from '@kit/ui/data-table'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@kit/ui/dropdown-menu'; import { If } from '@kit/ui/if'; import { Input } from '@kit/ui/input'; import { ProfileAvatar } from '@kit/ui/profile-avatar'; import { Trans } from '@kit/ui/trans'; import { RoleBadge } from '../members/role-badge'; import { DeleteInvitationDialog } from './delete-invitation-dialog'; import { UpdateInvitationDialog } from './update-invitation-dialog'; type Invitations = Database['public']['Functions']['get_account_invitations']['Returns']; type AccountInvitationsTableProps = { invitations: Invitations; permissions: { canUpdateInvitation: boolean; canRemoveInvitation: boolean; }; }; export function AccountInvitationsTable({ invitations, permissions, }: AccountInvitationsTableProps) { const { t } = useTranslation('teams'); const [search, setSearch] = useState(''); const columns = useGetColumns(permissions); const filteredInvitations = invitations.filter((member) => { const searchString = search.toLowerCase(); const email = member.email.split('@')[0]?.toLowerCase() ?? ''; return ( email.includes(searchString) || member.role.toLowerCase().includes(searchString) ); }); return (