& { label: string; hint?: string }) {
return (
);
}
/** Zwei Felder nebeneinander, ab „sm“ — für Paare wie Vor- und Nachname. */
export function FieldRow({ children }: { children: ReactNode }) {
return (
{children}
);
}
/** Abschnitt innerhalb eines Formulars mit eigener Überschrift. */
export function FieldSet({
legend,
children,
}: {
legend: string;
children: ReactNode;
}) {
return (
);
}
/* ------------------------------------------------------------------- Badge */
export function Badge({
tone = "neutral",
children,
}: {
tone?: "neutral" | "accent" | "soon" | "success";
children: ReactNode;
}) {
const tones: Record = {
neutral: "bg-slate-100 text-slate-600",
// Hervorhebung — hieß früher "popular", als sie nur für das Abzeichen
// „Beliebt" auf der Startseite gedacht war.
accent: "bg-accent-soft text-accent-soft-fg",
soon: "bg-slate-100 text-slate-500",
success: "bg-emerald-100 text-emerald-700",
};
return (
{children}
);
}
/* ------------------------------------------------------------------ Notice */
export function Notice({
tone,
children,
}: {
tone: "warning" | "error" | "info" | "success";
children: ReactNode;
}) {
const tones: Record = {
warning: "border-amber-300 bg-amber-50 text-amber-900",
error: "border-red-300 bg-red-50 text-red-800",
info: "border-sky-300 bg-sky-50 text-sky-900",
success: "border-emerald-300 bg-emerald-50 text-emerald-900",
};
return (
{children}
);
}