/** * Layout props for flexbox-like positioning. */ import type { Style } from "./cell.js"; import type { Input } from "./input.js"; import type { Select } from "./select.js"; import type { VNode } from "./vnode.js"; export type Direction = "row" | "column"; export type Justify = "start" | "center" | "end" | "space-between" | "space-around"; export type Align = "start" | "center" | "end" | "stretch"; export type Position = "relative" | "absolute"; export type BorderStyle = "none" | "single" | "double" | "rounded" | "bold"; export type Overflow = "visible" | "hidden" | "scroll"; export interface Spacing { top: number; right: number; bottom: number; left: number; } export interface LayoutProps { direction?: Direction; justify?: Justify; align?: Align; gap?: number; padding?: number | Partial; margin?: number | Partial; width?: number; height?: number; minWidth?: number; minHeight?: number; position?: Position; x?: number; y?: number; zIndex?: number; overflow?: Overflow; border?: BorderStyle | boolean; style?: Style; } /** * Props for the intrinsic element. */ export interface InputElementProps { /** The input primitive (from createInput) */ input: Input; /** Fixed width for the input field (defaults to content width) */ width?: number; /** Fixed height for the input field (defaults to number of lines) */ height?: number; /** Style for the text (default: white text) */ style?: Style; /** Style for the cursor (default: inverted background) */ cursorStyle?: Style; /** Style for placeholder text (default: dim) */ placeholderStyle?: Style; } /** * Props for the intrinsic element. */ export interface TextElementProps { /** Text styling */ style?: Style; /** When true, wrap text to fit available width */ wrap?: boolean; } /** * Props for the ). */ export interface OptionElementProps { /** The value this option represents */ value: unknown; /** Style for this specific option (overrides select's optionStyle) */ style?: Style; } /** * Normalize spacing value to full Spacing object. */ export declare function normalizeSpacing(value: number | Partial | undefined): Spacing; /** * Border characters for different styles. */ export declare const BORDER_CHARS: { readonly single: { readonly topLeft: "┌"; readonly topRight: "┐"; readonly bottomLeft: "└"; readonly bottomRight: "┘"; readonly horizontal: "─"; readonly vertical: "│"; }; readonly double: { readonly topLeft: "╔"; readonly topRight: "╗"; readonly bottomLeft: "╚"; readonly bottomRight: "╝"; readonly horizontal: "═"; readonly vertical: "║"; }; readonly rounded: { readonly topLeft: "╭"; readonly topRight: "╮"; readonly bottomLeft: "╰"; readonly bottomRight: "╯"; readonly horizontal: "─"; readonly vertical: "│"; }; readonly bold: { readonly topLeft: "┏"; readonly topRight: "┓"; readonly bottomLeft: "┗"; readonly bottomRight: "┛"; readonly horizontal: "━"; readonly vertical: "┃"; }; }; export declare function getBorderStyle(border: BorderStyle | boolean | undefined): BorderStyle; //# sourceMappingURL=props.d.ts.map