import Link from "next/link" import { Badge } from "@/components/ui/badge" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { getClients } from "@/modules/admin/queries/clients" import { dateFormat, shareState, type ShareState } from "../../lib/preview" import { getTemplate } from "../../lib/registry" import { getVariants } from "../../queries/variants" import { TemplateGrid } from "../components/template-grid" const shareBadge: Record = { shared: { label: "Geteilt", variant: "success" }, expired: { label: "Abgelaufen", variant: "warning" }, private: { label: "Privat", variant: "neutral" }, } const TemplatesView = async () => { const [variants, clients] = await Promise.all([getVariants(), getClients()]) const clientNames = new Map(clients.map((client) => [client.id, client.name])) return (

Vorlagen

Demo-Webseiten für Pitches: Vorlage wählen oder im Baukasten aus Bausteinen selbst zusammenstellen, für den Kunden anpassen (Inhalte, Farben, Schriften, Reihenfolge) und als Link teilen.

Varianten

{variants.length === 0 ? (

Noch keine Varianten. Wähle oben eine Vorlage und klicke auf „Anpassen“.

) : (
Name Vorlage Client Link Geändert {variants.map((variant) => { const badge = shareBadge[shareState(variant.share_token, variant.share_expires_at)] return ( {variant.name} {getTemplate(variant.template_key)?.name ?? variant.template_key} {(variant.client_id && clientNames.get(variant.client_id)) ?? "—"} {badge.label} {dateFormat.format(new Date(variant.updated_at))} ) })}
)}
) } export default TemplatesView