import type { HTMLAttributes, ReactNode } from "react"; import { cn } from "./cn"; /** Flat bordered surface. No shadow, 3 px radius. */ export function Card({ className, children, ...rest }: HTMLAttributes) { return (
{children}
); } export function CardHeader({ title, description, aside, className, level = 3 }: { title: ReactNode; description?: ReactNode; aside?: ReactNode; className?: string; level?: 2 | 3 }) { const H = level === 2 ? "h2" : "h3"; return (
{title} {description &&

{description}

}
{aside &&
{aside}
}
); } export function CardBody({ className, children, padded = true }: { className?: string; children: ReactNode; padded?: boolean }) { return
{children}
; } /** Page-level section: heading row + content, hairline top. */ export function Section({ title, description, aside, children, className, id, level = 2 }: { title: ReactNode; description?: ReactNode; aside?: ReactNode; children: ReactNode; className?: string; id?: string; level?: 2 | 3 }) { const H = level === 2 ? "h2" : "h3"; return (
{title} {description &&

{description}

}
{aside &&
{aside}
}
{children}
); } /** Uniform page container. */ export function Page({ children, className, wide }: { children: ReactNode; className?: string; wide?: boolean }) { return
{children}
; } export function PageHeader({ title, eyebrow, description, aside, className }: { title: ReactNode; eyebrow?: ReactNode; description?: ReactNode; aside?: ReactNode; className?: string }) { return (
{eyebrow &&
{eyebrow}
}

{title}

{description &&

{description}

}
{aside &&
{aside}
}
); }