import { MarketingHero } from "~/components/marketing/MarketingHero"; import { LEGAL_LAST_UPDATED, LEGAL_PAGES } from "~/lib/legal"; import type { LegalInfo } from "~/lib/legal"; import { Callout } from "~/ui/Callout"; import { PageContainer } from "~/ui/PageContainer"; import { ExternalLink, TextLink } from "~/ui/TextLink"; type Props = { title: string; lede: string; info: LegalInfo; children: React.ReactNode; }; /** Shared frame for /terms, /privacy and the other policy pages: hero, draft banner, date, sibling nav. */ export function LegalPage({ title, lede, info, children }: Props) { return ( <>
{info.draft && ( Draft — have counsel review before launch. The operator has not yet set every legal detail (entity, contact, jurisdiction, copyright agent); bracketed placeholders mark the gaps. )}

Last updated {LEGAL_LAST_UPDATED}

{children}
); } export function LegalSection({ title, children }: { title: string; children: React.ReactNode }) { return (

{title}

{children}
); } /** An operator fact, or a visible placeholder naming the var that sets it. */ export function Fact({ value, placeholder }: { value: string | null; placeholder: string }) { if (value) return value; return [{placeholder}]; } export function MailLink({ address, placeholder }: { address: string | null; placeholder: string }) { if (!address) return ; return {address}; } /** "the operator" in running text: the legal entity when configured. */ export function Operator({ info }: { info: LegalInfo }) { return ; }