/** * The chrome every Dynamic UI block shares: the bordered surface, its optional title, the * action buttons, and the "you already answered" chip. * * Extracted because eleven renderers draw the same card and the same button, not because the * file was long — a per-renderer copy would let them drift apart, which is exactly the kind of * inconsistency the token system exists to prevent. */ import { type JSX } from 'solid-js'; import type { SvgIconName } from '@/widget/assets/generated/svg-assets'; export declare const DUI_MAX_WIDTH = "34rem"; export declare function DuiSurface(props: { children: JSX.Element; title?: string; subtitle?: string; padded?: boolean; blockType?: string; blockProps?: Record; }): JSX.Element; type DuiButtonProps = { label: string; /** Optional leading glyph, named after a migrated TORUK Core icon asset. */ icon?: SvgIconName; onClick: () => void; variant?: 'primary' | 'secondary' | 'success' | 'danger'; disabled?: boolean; type?: 'button' | 'submit'; }; export declare function DuiButton(props: DuiButtonProps): JSX.Element; /** Terminal state for an interactive block: the answer is recorded, the controls are gone. */ export declare function DuiAnsweredChip(props: { text: string; tone?: 'neutral' | 'success' | 'danger'; }): JSX.Element; export declare function DuiRow(props: { label: string; value: string; }): JSX.Element; export {};