07c70c86f5
Mirrors the Payload backend's new company-settings.legalForm field: when present, registerCourt/registerNumber/managingDirector now appear in the email footer (buildLegalFooterLines) and both invoice PDF footers, matching §37a HGB / §35a GmbHG requirements for registered legal forms. A sole proprietorship (the default) renders identically to before — these fields are only appended when actually set. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
45 lines
1.7 KiB
TypeScript
45 lines
1.7 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { draftMode } from "next/headers";
|
|
import { notFound } from "next/navigation";
|
|
import { getCompanySettings, type CompanySettings } from "../lib/payload";
|
|
import { LiveCompanySettingsPreviewClient } from "./components/LiveCompanySettingsPreviewClient";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Firmendaten-Vorschau",
|
|
robots: { index: false, follow: false },
|
|
};
|
|
|
|
const FALLBACK: CompanySettings = {
|
|
sellerName: "",
|
|
legalForm: "sole-proprietorship",
|
|
registerCourt: null,
|
|
registerNumber: null,
|
|
managingDirector: null,
|
|
sellerStreet: "",
|
|
sellerZip: "",
|
|
sellerCity: "",
|
|
sellerCountry: "",
|
|
sellerEmail: "",
|
|
vatId: "",
|
|
taxRatePercent: 19,
|
|
bankDetails: null,
|
|
};
|
|
|
|
// Entered exclusively via CompanySettings.ts's admin.livePreview.url (a
|
|
// Payload-admin-only iframe target, see buildPreviewUrl()/api/preview) —
|
|
// gated on Draft Mode actually being enabled, unlike email-templates'
|
|
// preview: this data includes a real bank IBAN/address once filled in,
|
|
// not just marketing email copy, so this page must not render for an
|
|
// unauthenticated visitor who happens to find the URL. Unlike
|
|
// email-templates there's no draft/published distinction in the data
|
|
// itself (company-settings has no content-versioning concept, it's just
|
|
// the current row) — the initial fetch is the same live data
|
|
// getCompanySettings() always returns, useLivePreview() takes over from
|
|
// there as the admin edits fields.
|
|
export default async function CompanySettingsPreviewPage() {
|
|
const draft = await draftMode();
|
|
if (!draft.isEnabled) notFound();
|
|
const initialSettings = (await getCompanySettings()) ?? FALLBACK;
|
|
return <LiveCompanySettingsPreviewClient initialSettings={initialSettings} />;
|
|
}
|