import { createMemberManagementApi } from '@kit/member-management/api'; import { MembersListView } from '@kit/member-management/components'; import { getSupabaseServerClient } from '@kit/supabase/server-client'; import { AccountNotFound } from '~/components/account-not-found'; const PAGE_SIZE = 25; interface Props { params: Promise<{ account: string }>; searchParams: Promise>; } export default async function MembersPage({ params, searchParams }: Props) { const { account } = await params; const search = await searchParams; const client = getSupabaseServerClient(); const { data: acct } = await client .from('accounts') .select('id') .eq('slug', account) .single(); if (!acct) return ; const api = createMemberManagementApi(client); const page = Number(search.page) || 1; // Parse multi-status filter const statusParam = search.status; const statusFilter = statusParam ? Array.isArray(statusParam) ? statusParam : statusParam.split(',') : undefined; const result = await api.searchMembers({ accountId: acct.id, search: search.q as string, status: statusFilter as any, duesCategoryId: search.duesCategoryId as string, sortBy: (search.sortBy as string) ?? 'last_name', sortDirection: (search.sortDirection as 'asc' | 'desc') ?? 'asc', page, pageSize: PAGE_SIZE, }); const [duesCategories, departments] = await Promise.all([ api.listDuesCategories(acct.id), api.listDepartmentsWithCounts(acct.id), ]); return ( ) => ({ id: String(c.id), name: String(c.name), }), )} departments={(departments ?? []).map((d) => ({ id: String(d.id), name: String(d.name), memberCount: d.memberCount, }))} /> ); }