import { type ReactNode } from 'react'; import { sourceWritableRegistryProps } from '../editor/componentInstances.js'; import type { RegistryEntry, RegistryPropValue } from '../editor/registry.js'; import type { NodeModel, PageModel } from '../editor/store.js'; /** Property-panel section frame shared across the shell panels. */ export declare function Sec({ title, description, hint, action, children, }: { title: string; description?: ReactNode; /** One sentence for the title's tooltip, where help text goes instead of a paragraph. */ hint?: string; action?: ReactNode; children: ReactNode; }): import("react").JSX.Element; export declare function componentPropValue(node: Pick, key: string, options: readonly RegistryPropValue[], defaultValue: RegistryPropValue | undefined): RegistryPropValue | undefined; export declare function componentPropLabel(value: RegistryPropValue): string; /** * Typed prop controls for one component instance. `sourceWritableProps` * enables the per-prop "preview only" badge for imported instances whose * prop is expression-bound; pass null for catalog nodes, which are * themselves the source. */ export declare function ComponentPropControls({ node, entry, sourceWritableProps, propBadges, onPatch, }: { node: Pick; entry: RegistryEntry; sourceWritableProps?: readonly string[] | null; /** Scenario ids each prop demonstrates — rendered as chips beside the control. */ propBadges?: Readonly>; onPatch: (prop: string, value: RegistryPropValue) => void; }): import("react").JSX.Element; /** * Curated per-screen dimension controls — "swap this piece's state". The * host declares the pieces (status bar states, row badge kinds); the * control adopts the captured stand-in into the adapter and re-props it. * Undo restores the captured node. This axis is for the single piece a * screen shows once; a repeated piece belongs to the card composition axis, * which knows about slots and can hold several badges at once. Below the * controls, branches discovered in the declared source are listed so * undeclared cases stay visible instead of silently unknown. */ export declare const FrameScreenDimensions: import("react").FunctionComponent<{ page: PageModel; }>; /** * Screen lists — how many rows a repeating list shows. Growing clones the * last row, so the copies start identical and the per-row dimension * controls above are what make them differ. It edits the captured tree, so * it lands instantly and undoes in one step. */ export declare const FrameScreenLists: import("react").FunctionComponent<{ page: PageModel; }>; /** * Card badges — what each repeated card shows, slot by slot. * * One row per slot per card, because that is the shape of the component: the * identity row and the status slot hold different vocabularies, and a slot * that can hold several badges gets several independent toggles rather than * a select that can only ever show one. */ export declare const FrameCardBadges: import("react").FunctionComponent<{ page: PageModel; }>; /** Keeps live input visible beside saved states without competing with them. */ export declare const FrameLiveInteractionStatus: import("react").FunctionComponent<{ pageId: string; }>; export { sourceWritableRegistryProps };