import { clsx } from "clsx"; import type { ReactNode } from "react"; /** * Karte: --surface, 1 px Rahmen, 16 px Radius, 22–24 px Innenabstand (#002). * Mit `titel` entsteht ein Kopf mit optionalen Aktionen rechts. */ export function Karte({ titel, untertitel, aktionen, children, className, innen = "normal", as: Element = "section", }: { titel?: ReactNode; untertitel?: ReactNode; aktionen?: ReactNode; children?: ReactNode; className?: string; /** „ohne“ für Inhalte, die bis an den Rand reichen (z. B. Tabellen mit eigenem Abstand). */ innen?: "normal" | "ohne"; as?: "section" | "div" | "article"; }) { return ( {(titel || aktionen) && ( )} {children} ); } function KartenKopf({ titel, untertitel, aktionen, rand, }: { titel?: ReactNode; untertitel?: ReactNode; aktionen?: ReactNode; rand: boolean; }) { return (
{titel &&

{titel}

} {untertitel &&

{untertitel}

}
{aktionen &&
{aktionen}
}
); } /** Innere Box (--sidebar, 12 px Radius) – für Einträge innerhalb einer Karte. */ export function InnereBox({ children, className }: { children: ReactNode; className?: string }) { return (
{children}
); }