import Link from 'next/link'; import { User, Mail, Phone, MapPin, CreditCard, Pencil, Ban } 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'; interface PageProps { params: Promise<{ account: string; memberId: string }>; } const STATUS_LABEL: Record = { active: 'Aktiv', inactive: 'Inaktiv', pending: 'Ausstehend', cancelled: 'Gekündigt', }; const STATUS_VARIANT: Record = { active: 'default', inactive: 'secondary', pending: 'outline', cancelled: 'destructive', }; function DetailRow({ label, value }: { label: string; value: string }) { return (
{label} {value || '—'}
); } export default async function MemberDetailPage({ params }: PageProps) { const { account, memberId } = await params; const client = getSupabaseServerClient(); const api = createMemberManagementApi(client); const member = await api.getMember(memberId); if (!member) return
Mitglied nicht gefunden
; const m = member as Record; return (
{/* Header */}

{String(m.first_name)} {String(m.last_name)}

{STATUS_LABEL[String(m.status)] ?? String(m.status)} {m.member_number ? ( Nr. {String(m.member_number)} ) : null}
{/* Persönliche Daten */} Persönliche Daten {/* Kontakt */} Kontakt {/* Adresse */} Adresse {/* Mitgliedschaft */} Mitgliedschaft {/* SEPA */} SEPA-Bankverbindung
); }