Files
Calbook/components/booking/shared-legal-page.tsx

56 lines
2.1 KiB
TypeScript

import { LegalContentCard } from "@/components/layout/legal-content-card";
import { PublicFooter } from "@/components/layout/public-footer";
import { SETTING_KEYS } from "@/lib/constants";
import { getSettings } from "@/lib/settings";
import { renderLegalTokens } from "@/lib/utils";
export const dynamic = "force-dynamic";
export async function SharedLegalPage({
type
}: {
type: "privacy" | "imprint";
}) {
const settings = await getSettings([
SETTING_KEYS.COMPANY_NAME,
type === "privacy" ? SETTING_KEYS.PRIVACY_PAGE_TITLE : SETTING_KEYS.IMPRINT_PAGE_TITLE,
type === "privacy" ? SETTING_KEYS.PRIVACY_PAGE_CONTENT : SETTING_KEYS.IMPRINT_PAGE_CONTENT,
SETTING_KEYS.FOOTER_PRIVACY_LABEL,
SETTING_KEYS.FOOTER_PRIVACY_URL,
SETTING_KEYS.FOOTER_IMPRINT_LABEL,
SETTING_KEYS.FOOTER_IMPRINT_URL,
SETTING_KEYS.FOOTER_COPYRIGHT_TEXT
]).catch(() => ({} as Record<string, string>));
const companyName = settings[SETTING_KEYS.COMPANY_NAME] ?? "CalBook";
const title =
type === "privacy"
? (settings[SETTING_KEYS.PRIVACY_PAGE_TITLE] ?? "Datenschutz")
: (settings[SETTING_KEYS.IMPRINT_PAGE_TITLE] ?? "Impressum");
const content = renderLegalTokens(
type === "privacy"
? (settings[SETTING_KEYS.PRIVACY_PAGE_CONTENT] ?? "")
: (settings[SETTING_KEYS.IMPRINT_PAGE_CONTENT] ?? ""),
companyName
);
return (
<div className="min-h-screen bg-slate-50 flex flex-col font-sans">
<main className="flex-1 mx-auto w-full max-w-3xl px-4 py-8 lg:py-12">
<LegalContentCard title={title} content={content} />
</main>
<PublicFooter
companyName={companyName}
privacyLabel={settings[SETTING_KEYS.FOOTER_PRIVACY_LABEL] ?? "Datenschutz"}
privacyHref={settings[SETTING_KEYS.FOOTER_PRIVACY_URL] ?? "/datenschutz"}
imprintLabel={settings[SETTING_KEYS.FOOTER_IMPRINT_LABEL] ?? "Impressum"}
imprintHref={settings[SETTING_KEYS.FOOTER_IMPRINT_URL] ?? "/impressum"}
copyrightTemplate={
settings[SETTING_KEYS.FOOTER_COPYRIGHT_TEXT] ??
"© {{year}} {{companyName}}"
}
/>
</div>
);
}