import type { ReactNode } from "react"; import { Rule } from "@unlocalhosted/metalui"; import { Box } from "./ui"; /* * The settings pages' form plates, in MetalUI's settings anatomy: a heading engraved just above a * raised card (Settings.Section's look), for the parts that are forms with Save rather than rows. * Server-safe: no hooks, only serializable props on MetalUI parts. */ /** A titled group: the engraved heading, then a raised plate holding a form or a list. */ export function PlateSection({ title, children, className = "" }: { title: string; children: ReactNode; className?: string }) { return (

{title}

{children}
); } /** The plate's content: the fields, stacked 20 apart. */ export function PlateBody({ children, className = "" }: { children: ReactNode; className?: string }) { return
{children}
; } /** The plate's actions, at the end under an inset engraved rule: the one that does the thing last. */ export function PlateFooter({ children, className = "" }: { children: ReactNode; className?: string }) { return ( <>
{children}
); } /** A thing in a settings list: a lead, its name and engraved meta, then one control. */ export function ListRow({ lead, title, meta, children, }: { lead?: ReactNode; title: ReactNode; meta?: ReactNode; children?: ReactNode; }) { return (
{lead}
{title}
{meta}
{children &&
{children}
}
); } /** A glyph sunk in a small well, leading a list row. */ export function RowGlyph({ children }: { children: ReactNode }) { return {children}; }