import type { Component } from "@earendil-works/pi-tui"; /** * Pure layout math for the startup resource boxes. No coloring here so it can * be unit-tested without a terminal. * * Items flow horizontally into columns; the box width hugs its content and * never exceeds maxWidth: * * ╭─ Skills ────────────────────────╮ * │ • alpha • gamma • zeta │ * │ • beta • delta │ * ╰─────────────────────────────────╯ * * Every line is exactly `innerWidth + 2` visible characters: outer border char * (1) + inner content (innerWidth) + border char (1). */ /** Minimum inner width so the bullet, label, and padding always have room. */ export declare const MIN_BOX_INNER_WIDTH = 6; /** Visible line width for a box with the given inner content width. */ export declare function boxLineWidth(innerWidth: number): number; /** * Build the box lines for a titled bullet box. * Labels are trimmed and sorted. Items flow into as many columns as fit within * `maxWidth`; the box shrinks to its content (never wider than maxWidth). * Anything that still doesn't fit is ellipsis-truncated. */ export declare function buildBulletBoxLines(title: string, items: string[], maxWidth?: number): string[]; /** * Responsive boxed bullet list component. Recomputes layout per render width, * so it stays correct on terminal resize. */ export declare class StartupBox implements Component { private readonly title; private readonly items; constructor(title: string, items: string[]); invalidate(): void; render(width: number): string[]; }