import Link from 'next/link'; import { CalendarDays, MapPin, Users, Clock, Pencil, UserPlus, } from 'lucide-react'; import { getTranslations } from 'next-intl/server'; import { createEventManagementApi } from '@kit/event-management/api'; import { formatDate } from '@kit/shared/dates'; 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 { CmsPageShell } from '~/components/cms-page-shell'; import { EVENT_STATUS_LABEL_KEYS, EVENT_STATUS_VARIANT, } from '~/lib/status-badges'; import { DeleteEventButton } from './delete-event-button'; interface PageProps { params: Promise<{ account: string; eventId: string }>; } export default async function EventDetailPage({ params }: PageProps) { const { account, eventId } = await params; const client = getSupabaseServerClient(); const api = createEventManagementApi(client); const t = await getTranslations('cms.events'); const [event, registrations] = await Promise.all([ api.events.getById(eventId), api.registrations.list(eventId), ]); if (!event) return
{t('date')}
{formatDate(eventData.event_date as string)}
{t('time')}
{String(eventData.start_time ?? '—')} –{' '} {String(eventData.end_time ?? '—')}
{t('location')}
{String(eventData.location ?? '—')}
{t('registrations')}
{registrations.length} / {String(eventData.capacity ?? '∞')}
{String(eventData.description)}
{t('noRegistrations')}
) : (| {t('name')} | {t('parentName')} | {t('date')} | |
|---|---|---|---|
| {String(reg.last_name ?? '')},{' '} {String(reg.first_name ?? '')} | {String(reg.email ?? '—')} | {String(reg.parent_name ?? '—')} | {formatDate(reg.created_at as string)} |