import type { ComponentProps, ReactNode } from "react";
/** A titled list of rows separated by hairlines, without a surrounding card. */
export function Group(
{ title, description, children }: {
title?: string;
description?: ReactNode;
children: ReactNode;
},
) {
return (
{title &&
{title}
}
{description &&
{description}
}
{children}
);
}
/** Label and description on the left, compact controls on the right; stacks in narrow panes. */
export function Row({ label, description, children, footer, id }: {
label: ReactNode;
description?: ReactNode;
children?: ReactNode;
/** Full-width content under the row: inline forms, confirmations, and action results. */
footer?: ReactNode;
id?: string;
}) {
return (
{label}
{description && (
{description}
)}
{children &&
{children}
}
{footer}
);
}
/** Secondary detail that should not dominate common settings. */
export function Disclosure({ summary, children }: { summary: string; children: ReactNode }) {
return (
{summary}
{children}
);
}
export function Select({ className, ...props }: ComponentProps<"select">) {
return (
);
}
export function Status({ children }: { children: ReactNode }) {
return
{children}
;
}
export function Problem({ children }: { children: ReactNode }) {
return