import { UserCheck, UserX, FileText } from 'lucide-react'; import { getSupabaseServerClient } from '@kit/supabase/server-client'; import { Badge } from '@kit/ui/badge'; import { Button } from '@kit/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@kit/ui/card'; import { createMemberManagementApi } from '@kit/member-management/api'; import { CmsPageShell } from '~/components/cms-page-shell'; import { EmptyState } from '~/components/empty-state'; interface PageProps { params: Promise<{ account: string }>; } const STATUS_VARIANT: Record = { pending: 'secondary', approved: 'default', rejected: 'destructive', }; const STATUS_LABEL: Record = { pending: 'Ausstehend', approved: 'Genehmigt', rejected: 'Abgelehnt', }; export default async function ApplicationsPage({ params }: PageProps) { const { account } = await params; const client = getSupabaseServerClient(); const { data: acct } = await client .from('accounts') .select('id') .eq('slug', account) .single(); if (!acct) return
Konto nicht gefunden
; const api = createMemberManagementApi(client); const applications = await api.listApplications(acct.id); return (

Mitgliedsanträge

Eingehende Anträge prüfen und bearbeiten

{applications.length === 0 ? ( } title="Keine Anträge" description="Es liegen derzeit keine Mitgliedsanträge vor." /> ) : ( Alle Anträge ({applications.length})
{applications.map((app: Record) => ( ))}
Name E-Mail Datum Status Aktionen
{String(app.last_name ?? '')}, {String(app.first_name ?? '')} {String(app.email ?? '—')} {app.created_at ? new Date(String(app.created_at)).toLocaleDateString('de-DE') : '—'} {STATUS_LABEL[String(app.status)] ?? String(app.status)} {String(app.status) === 'pending' && (
)}
)}
); }