import { ServerDataLoader } from '@makerkit/data-loader-supabase-nextjs'; import { AdminAccountsTable } from '@kit/admin/components/admin-accounts-table'; import { AdminGuard } from '@kit/admin/components/admin-guard'; import { getSupabaseServerAdminClient } from '@kit/supabase/server-admin-client'; import { AppBreadcrumbs } from '@kit/ui/app-breadcrumbs'; import { PageBody, PageHeader } from '@kit/ui/page'; interface SearchParams { page?: string; account_type?: 'all' | 'team' | 'personal'; query?: string; } interface AdminAccountsPageProps { searchParams: Promise; } export const metadata = { title: `Accounts`, }; async function AccountsPage(props: AdminAccountsPageProps) { const client = getSupabaseServerAdminClient(); const searchParams = await props.searchParams; const page = searchParams.page ? parseInt(searchParams.page) : 1; const filters = getFilters(searchParams); return ( <> } /> {({ data, page, pageSize, pageCount }) => { return ( ); }} ); } function getFilters(params: SearchParams) { const filters: Record< string, { eq?: boolean | string; like?: string; } > = {}; if (params.account_type && params.account_type !== 'all') { filters.is_personal_account = { eq: params.account_type === 'personal', }; } if (params.query) { filters.name = { like: `%${params.query}%`, }; } return filters; } export default AdminGuard(AccountsPage);