import { FileText, Plus } from 'lucide-react'; import { getTranslations } from 'next-intl/server'; import { getSupabaseServerClient } from '@kit/supabase/server-client'; import { Button } from '@kit/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@kit/ui/card'; import { AccountNotFound } from '~/components/account-not-found'; import { CmsPageShell } from '~/components/cms-page-shell'; import { EmptyState } from '~/components/empty-state'; interface PageProps { params: Promise<{ account: string }>; } export default async function DocumentTemplatesPage({ params }: PageProps) { const { account } = await params; const client = getSupabaseServerClient(); const t = await getTranslations('documents'); const { data: acct } = await client .from('accounts') .select('id') .eq('slug', account) .single(); if (!acct) return ; // Fetch document templates from DB const { data: templates } = await client .from('document_templates') .select('id, name, template_type, description') .eq('account_id', acct.id) .order('name'); const templatesList = (templates ?? []).map((t: any) => ({ id: String(t.id), name: String(t.name), type: String(t.template_type ?? '—'), description: String(t.description ?? ''), })); return ( {/* Header */} {t('templates.subtitle')} {t('templates.newTemplate')} {/* Table or Empty State */} {templatesList.length === 0 ? ( } title={t('templates.noTemplates')} description={t('templates.createFirstLong')} actionLabel={t('templates.newTemplate')} /> ) : ( {t('templates.allTemplates', { count: templatesList.length })} {t('templates.name')} {t('templates.type')} {t('templates.description')} {templatesList.map((template) => ( {template.name} {template.type} {template.description} ))} )} ); }
{t('templates.subtitle')}