import Link from 'next/link';
import type { ReactNode } from 'react';
import { cn } from '@/lib/cn';
/** Page section with eyebrow + title + optional action. Spatial composition — not everything in a card. */
export function Section({ eyebrow, title, action, children, className, id }: { eyebrow?: string; title?: ReactNode; action?: { href: string; label: string }; children: ReactNode; className?: string; id?: string }) {
return (
{(eyebrow || title) && (
{eyebrow &&
{eyebrow}
}
{title &&
{title}
}
{action && (
{action.label} →
)}
)}
{children}
);
}
export function PageHeader({ eyebrow, title, lede, children, className }: { eyebrow?: ReactNode; title: ReactNode; lede?: ReactNode; children?: ReactNode; className?: string }) {
return (
{eyebrow &&
{eyebrow}
}
{title}
{lede &&
{lede}
}
{children}
);
}
/** Stat tile: big tabular number + label + optional hint. */
export function Stat({ label, value, hint, className, accent = false }: { label: string; value: ReactNode; hint?: ReactNode; className?: string; accent?: boolean }) {
return (
{label}
{value}
{hint &&
{hint}
}
);
}
export function Container({ children, className, wide = false }: { children: ReactNode; className?: string; wide?: boolean }) {
return {children}
;
}