UNPKG

@opentui/core

Version:

OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)

86 lines (85 loc) 3.51 kB
import { type RenderableOptions, Renderable } from "../Renderable.js"; import type { OptimizedBuffer } from "../buffer.js"; import { type BorderCharacters, type BorderSides, type BorderSidesConfig, type BorderStyle } from "../lib/index.js"; import { type ColorInput, RGBA } from "../lib/RGBA.js"; import type { RenderContext } from "../types.js"; export interface BoxOptions<TRenderable extends Renderable = BoxRenderable> extends RenderableOptions<TRenderable> { backgroundColor?: string | RGBA; borderStyle?: BorderStyle; border?: boolean | BorderSides[]; borderColor?: string | RGBA; customBorderChars?: BorderCharacters; shouldFill?: boolean; title?: string; titleColor?: string | RGBA; titleAlignment?: "left" | "center" | "right"; bottomTitle?: string; bottomTitleAlignment?: "left" | "center" | "right"; focusedBorderColor?: ColorInput; focusable?: boolean; gap?: number | `${number}%`; rowGap?: number | `${number}%`; columnGap?: number | `${number}%`; } export declare class BoxRenderable extends Renderable { protected _backgroundColor: RGBA; protected _border: boolean | BorderSides[]; protected _borderStyle: BorderStyle; protected _borderColor: RGBA; protected _focusedBorderColor: RGBA; private _customBorderCharsObj; protected _customBorderChars?: Uint32Array; protected borderSides: BorderSidesConfig; shouldFill: boolean; protected _title?: string; protected _titleColor?: RGBA; protected _titleAlignment: "left" | "center" | "right"; protected _bottomTitle?: string; protected _bottomTitleAlignment: "left" | "center" | "right"; protected _defaultOptions: { backgroundColor: string; borderStyle: "single"; border: false; borderColor: string; shouldFill: true; titleAlignment: "left"; bottomTitleAlignment: "left"; focusedBorderColor: string; }; constructor(ctx: RenderContext, options: BoxOptions); private initializeBorder; get customBorderChars(): BorderCharacters | undefined; set customBorderChars(value: BorderCharacters | undefined); get backgroundColor(): RGBA; set backgroundColor(value: RGBA | string | undefined); get border(): boolean | BorderSides[]; set border(value: boolean | BorderSides[]); get borderStyle(): BorderStyle; set borderStyle(value: BorderStyle); get borderColor(): RGBA; set borderColor(value: RGBA | string); get focusedBorderColor(): RGBA; set focusedBorderColor(value: RGBA | string); get title(): string | undefined; set title(value: string | undefined); get titleColor(): RGBA | undefined; set titleColor(value: string | RGBA | undefined); get titleAlignment(): "left" | "center" | "right"; set titleAlignment(value: "left" | "center" | "right"); get bottomTitle(): string | undefined; set bottomTitle(value: string | undefined); get bottomTitleAlignment(): "left" | "center" | "right"; set bottomTitleAlignment(value: "left" | "center" | "right"); protected renderSelf(buffer: OptimizedBuffer): void; protected getScissorRect(): { x: number; y: number; width: number; height: number; }; private applyYogaBorders; private applyYogaGap; set gap(gap: number | `${number}%` | undefined); set rowGap(rowGap: number | `${number}%` | undefined); set columnGap(columnGap: number | `${number}%` | undefined); }