import { type Component, type Focusable, type TUI } from "@earendil-works/pi-tui"; import type { HostInputFormRequest } from "../../../core/extensions/ui-types.js"; import type { KeybindingsManager } from "../../../core/keybindings.ts"; import type { Theme } from "../theme/theme.js"; export interface HostInputFormDelegate { onSubmit(values: Record): void; onCancel(): void; } /** Host-owned form: all key handling and mutable editing state stay in the terminal process. */ export declare class HostInputFormComponent implements Component, Focusable { private readonly title; private readonly heading; private readonly submitLabel; private readonly fields; private readonly values; private readonly editors; private readonly keybindings; private readonly theme; private readonly tui; private readonly delegate; private focusedIndex; private invalid; private _focused; constructor(tui: TUI, theme: Theme, keybindings: KeybindingsManager, request: HostInputFormRequest, delegate: HostInputFormDelegate); get focused(): boolean; set focused(value: boolean); handleInput(data: string): boolean; render(width: number): string[]; invalidate(): void; private renderField; private handleEditable; private handleSelect; private handleBoolean; private handleSubmitRow; private submit; private invalidReason; private moveFocus; private syncFocus; private currentValue; /** Field header: focus chevron + name (accent when active) with a right-aligned required/optional badge. */ private labelRow; /** Submit control rendered as a button pill; filled accent when focused, quiet outline otherwise. */ private submitRow; /** Key-hint footer with accent key chips and muted verbs. */ private footerRow; /** * Wrap the pre-built body rows in a rounded panel. The title rides the top * border; each row gets one cell of interior padding on both sides. Rows are * padded (not truncated) unless they overflow, so an embedded editor's inline * cursor marker is never clipped away. */ private frame; } //# sourceMappingURL=host-input-form.d.ts.map