@sayknow-cli/tui 0.3.16 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +18 -1
  2. package/package.json +8 -9
  3. package/src/autocomplete.ts +31 -1
  4. package/src/bracketed-paste.ts +106 -29
  5. package/src/components/editor.ts +81 -37
  6. package/src/components/input.ts +5 -1
  7. package/src/components/secret-input.ts +489 -0
  8. package/src/components/select-list.ts +138 -33
  9. package/src/index.ts +1 -0
  10. package/src/keybindings.ts +11 -3
  11. package/src/stdin-buffer.ts +153 -20
  12. package/src/terminal.ts +38 -2
  13. package/src/tui.ts +184 -18
  14. package/dist/types/animation-scheduler.d.ts +0 -13
  15. package/dist/types/autocomplete.d.ts +0 -83
  16. package/dist/types/bracketed-paste.d.ts +0 -26
  17. package/dist/types/components/box.d.ts +0 -20
  18. package/dist/types/components/cancellable-loader.d.ts +0 -21
  19. package/dist/types/components/editor.d.ts +0 -126
  20. package/dist/types/components/image.d.ts +0 -18
  21. package/dist/types/components/input.d.ts +0 -16
  22. package/dist/types/components/loader.d.ts +0 -23
  23. package/dist/types/components/markdown.d.ts +0 -87
  24. package/dist/types/components/sayknow-pet.d.ts +0 -128
  25. package/dist/types/components/select-list.d.ts +0 -46
  26. package/dist/types/components/settings-list.d.ts +0 -39
  27. package/dist/types/components/spacer.d.ts +0 -11
  28. package/dist/types/components/tab-bar.d.ts +0 -56
  29. package/dist/types/components/text.d.ts +0 -22
  30. package/dist/types/components/truncated-text.d.ts +0 -10
  31. package/dist/types/editor-component.d.ts +0 -36
  32. package/dist/types/fuzzy.d.ts +0 -15
  33. package/dist/types/index.d.ts +0 -28
  34. package/dist/types/keybindings.d.ts +0 -201
  35. package/dist/types/keys.d.ts +0 -208
  36. package/dist/types/kill-ring.d.ts +0 -27
  37. package/dist/types/metrics.d.ts +0 -85
  38. package/dist/types/stdin-buffer.d.ts +0 -50
  39. package/dist/types/symbols.d.ts +0 -23
  40. package/dist/types/terminal-capabilities.d.ts +0 -187
  41. package/dist/types/terminal.d.ts +0 -90
  42. package/dist/types/ttyid.d.ts +0 -9
  43. package/dist/types/tui.d.ts +0 -269
  44. package/dist/types/utils.d.ts +0 -110
@@ -1,16 +0,0 @@
1
- import { type Component, type Focusable } from "../tui";
2
- /**
3
- * Input component - single-line text input with horizontal scrolling
4
- */
5
- export declare class Input implements Component, Focusable {
6
- #private;
7
- onSubmit?: (value: string) => void;
8
- onEscape?: () => void;
9
- /** Focusable interface - set by TUI when focus changes */
10
- focused: boolean;
11
- getValue(): string;
12
- setValue(value: string): void;
13
- handleInput(data: string): void;
14
- invalidate(): void;
15
- render(width: number): string[];
16
- }
@@ -1,23 +0,0 @@
1
- import type { TUI } from "../tui";
2
- import { Text } from "./text";
3
- export interface LoaderOptions {
4
- timeDependentColor?: boolean;
5
- }
6
- /** Test-only performance counters for advisory baseline tests. */
7
- export declare const __loaderPerfCounters: {
8
- liveIntervals: number;
9
- startedIntervals: number;
10
- reset(): void;
11
- };
12
- export declare class Loader extends Text {
13
- #private;
14
- private spinnerColorFn;
15
- private messageColorFn;
16
- private message;
17
- constructor(ui: TUI, spinnerColorFn: (str: string) => string, messageColorFn: (str: string) => string, message?: string, spinnerFrames?: string[], options?: LoaderOptions);
18
- render(width: number): string[];
19
- start(): void;
20
- stop(): void;
21
- dispose(): void;
22
- setMessage(message: string): void;
23
- }
@@ -1,87 +0,0 @@
1
- import type { SymbolTheme } from "../symbols";
2
- import type { Component } from "../tui";
3
- import { type ViewportAnchorSpan } from "../utils";
4
- /** Test-only clock seam for streaming throttle tests. */
5
- export declare function __setMarkdownNowForTest(now: (() => number) | undefined): void;
6
- /** Test/diagnostic seam: number of synchronous highlight invocations since the last reset. */
7
- export declare function getMarkdownHighlightCallCount(): number;
8
- export declare function resetMarkdownHighlightCallCount(): void;
9
- /** Test-only performance counters for advisory baseline tests. */
10
- export declare const __markdownPerfCounters: {
11
- lexerInvocations: number;
12
- lexedBytes: number;
13
- reset(): void;
14
- };
15
- /** Drop all L2 cache entries. Call on theme change to prevent stale styled output. */
16
- export declare function clearRenderCache(): void;
17
- export declare function getRenderCacheRetainedBytes(): number;
18
- /**
19
- * Default text styling for markdown content.
20
- * Applied to all text unless overridden by markdown formatting.
21
- */
22
- export interface DefaultTextStyle {
23
- /** Foreground color function */
24
- color?: (text: string) => string;
25
- /** Background color function */
26
- bgColor?: (text: string) => string;
27
- /** Bold text */
28
- bold?: boolean;
29
- /** Italic text */
30
- italic?: boolean;
31
- /** Strikethrough text */
32
- strikethrough?: boolean;
33
- /** Underline text */
34
- underline?: boolean;
35
- }
36
- /**
37
- * Theme functions for markdown elements.
38
- * Each function takes text and returns styled text with ANSI codes.
39
- */
40
- export interface MarkdownTheme {
41
- heading: (text: string) => string;
42
- link: (text: string) => string;
43
- linkUrl: (text: string) => string;
44
- code: (text: string) => string;
45
- codeBlock: (text: string) => string;
46
- codeBlockBorder: (text: string) => string;
47
- quote: (text: string) => string;
48
- quoteBorder: (text: string) => string;
49
- hr: (text: string) => string;
50
- listBullet: (text: string) => string;
51
- bold: (text: string) => string;
52
- italic: (text: string) => string;
53
- strikethrough: (text: string) => string;
54
- underline: (text: string) => string;
55
- highlightCode?: (code: string, lang?: string) => string[];
56
- /**
57
- * Resolve a mermaid ASCII rendering by fenced block source text.
58
- * Return null to fall back to fenced code rendering.
59
- */
60
- resolveMermaidAscii?: (source: string) => string | null;
61
- symbols: SymbolTheme;
62
- }
63
- export declare class Markdown implements Component {
64
- #private;
65
- constructor(text: string, paddingX: number, paddingY: number, theme: MarkdownTheme, defaultTextStyle?: DefaultTextStyle, codeBlockIndent?: number);
66
- setOnStaleThrottle(callback: (() => void) | undefined): void;
67
- setText(text: string, options?: {
68
- streaming?: boolean;
69
- }): void;
70
- setStreaming(streaming: boolean): void;
71
- dispose(): void;
72
- invalidate(): void;
73
- render(width: number): string[];
74
- renderWithViewportAnchorSource(width: number, source: {
75
- id: string;
76
- }): {
77
- lines: string[];
78
- anchors: Array<({
79
- id: string;
80
- } & ViewportAnchorSpan) | null>;
81
- };
82
- }
83
- /**
84
- * Render inline markdown (bold, italic, code, links, strikethrough) to a styled string.
85
- * Unlike the full Markdown component, this produces a single line with no block-level elements.
86
- */
87
- export declare function renderInlineMarkdown(text: string, mdTheme: MarkdownTheme, baseColor?: (t: string) => string): string;
@@ -1,128 +0,0 @@
1
- /**
2
- * ┌─ SAYKNOW PET SPRITE SPEC ────────────────────────────────────────────────┐
3
- * The pet is a 16×16 pixel octopus drawn beside the composer. Everything here
4
- * is data: no PNGs, no assets — each frame is 16 strings of 16 chars, encoded
5
- * to a sixel or kitty escape at runtime. Author a new frame by drawing a grid.
6
- *
7
- * GRID RULES
8
- * - Exactly 16 rows × 16 columns. Only PALETTE keys below are valid chars.
9
- * - `.` = transparent. Keep the outer columns transparent so the sprite sits
10
- * snug beside the input box (the widget reserves +1 column of slack).
11
- *
12
- * PALETTE (char → role) — see PALETTE for exact RGB:
13
- * .=transparent K=dark outline R=mantle body r=body highlight
14
- * W=eye white V=pupil G=eye sparkle b=underside
15
- * w=tear H h A=reserved (unused by the octopus art)
16
- *
17
- * FRAME CATALOG (SayknowPixelFrameName → PIXEL_GRIDS):
18
- * base idle rest; also the dance "drop/settle" beat
19
- * gazeL eyes glance left ┐ idle loop (see sayknow-pet-widget IDLE_LOOP)
20
- * gazeR eyes glance right │
21
- * flicker eyes blink ┘
22
- * flex sparkly "yay" eyes; dance accent + random idle flex burst
23
- * danceL tentacles sway left ┐ work loop (PARA_PARA_STEPS)
24
- * danceR tentacles sway right ┘
25
- * cry1..3 a tear trails from the outer eye corners (BlueOcto sob)
26
- *
27
- * RENDERING: buildSayknowPixelFrames({ protocol, cellWidthPx, cellHeightPx,
28
- * targetRows: 2 }) scales the art to 2 terminal rows and encodes each frame
29
- * once. Kitty uses a native `Y=` sub-cell drop (set by the widget) to sit on the
30
- * composer border; sixel uses transparent top padding.
31
- *
32
- * BEHAVIOR (timing, positioning, on/off) lives in
33
- * packages/coding-agent/src/modes/components/sayknow-pet-widget.ts.
34
- *
35
- * ADD A FRAME: draw the grid → add its name to SayknowPixelFrameName → register it in
36
- * PIXEL_GRIDS → reference it from an idle/work loop or a skin burst.
37
- *
38
- * ADD A PET (skin): append one entry to PET_SKINS below — { id, label, description,
39
- * palette, burst }. The id flows into PetSkinId/PetMode automatically, the settings
40
- * enum, `/pet` command and both selectors derive their options from PET_SKINS, and the
41
- * widget reads `burst` to animate — no other file needs editing. Recolor with a palette
42
- * spread (see BLUE_PALETTE); add frames only for poses the catalog lacks.
43
- * └────────────────────────────────────────────────────────────────────────┘
44
- */
45
- type Rgb = readonly [number, number, number];
46
- export type Palette = Record<string, Rgb | null>;
47
- export declare const PET_SKIN_IDS: readonly ["red", "blue"];
48
- export type PetSkinId = (typeof PET_SKIN_IDS)[number];
49
- /** Every pet mode: "off" plus each skin id, in menu order. */
50
- export declare const PET_MODE_IDS: readonly ["off", "red", "blue"];
51
- export type PetMode = (typeof PET_MODE_IDS)[number];
52
- /** Narrow an arbitrary string to a PetMode. */
53
- export declare function isPetMode(value: string): value is PetMode;
54
- /** Logical pixel-pet frame names shared by the overlay state machine. */
55
- export type SayknowPixelFrameName = "base" | "gazeL" | "gazeR" | "flicker" | "flex" | "danceL" | "danceR" | "cry1" | "cry2" | "cry3";
56
- /** Para-para work dance beats: the working loop and each skin's burst "work-in" intro. */
57
- export declare const PARA_PARA_STEPS: ReadonlyArray<readonly [SayknowPixelFrameName, number]>;
58
- /**
59
- * A skin's idle burst: a short intro sequence, then an optional looping tail. It drives
60
- * BOTH the random live show-off AND the selector's preview demo, so give every skin a
61
- * real animation (reuse PARA_PARA_STEPS for a work-in intro) rather than one held frame.
62
- */
63
- export interface PetBurst {
64
- /** Frames played once, in order, at the start of the burst. */
65
- intro: ReadonlyArray<readonly [SayknowPixelFrameName, number]>;
66
- /** Frames cycled every `stepMs` for `ms` after the intro (a held or looping finish). */
67
- tail?: {
68
- frames: readonly SayknowPixelFrameName[];
69
- stepMs: number;
70
- ms: number;
71
- };
72
- }
73
- /** Everything that defines a pet skin: identity, UI copy, colors and behavior. */
74
- export interface PetSkin {
75
- id: PetSkinId;
76
- /** Selector/settings label, e.g. "RedOctopus". */
77
- label: string;
78
- /** One-line selector/settings description. */
79
- description: string;
80
- palette: Palette;
81
- /** Idle burst animation played between quiet idle loops. */
82
- burst: PetBurst;
83
- }
84
- /** Skin registry — the single source for palettes, behavior and selector/command copy. */
85
- export declare const PET_SKINS: Record<PetSkinId, PetSkin>;
86
- /** Total burst duration (intro beats plus the looping tail). */
87
- export declare function petBurstDurationMs(burst: PetBurst): number;
88
- /** The frame to show `elapsed` ms into a burst (`now` cycles the looping tail). */
89
- export declare function petBurstFrame(burst: PetBurst, elapsed: number, now: number): SayknowPixelFrameName;
90
- /** Test-only access to logical art; production rendering still uses encoded frames. */
91
- export declare const __sayknowPetTestHooks: {
92
- getPixelGrid(name: SayknowPixelFrameName): string[];
93
- };
94
- /** Encode a grid as a transparent SIXEL image, optionally bottom-aligned by top padding. */
95
- export declare function encodeGridSixel(grid: string[], scale: number, topPaddingPx?: number, palette?: Palette): string;
96
- /** Encode a bottom-aligned grid as kitty raw RGBA at `scale`. */
97
- export declare function encodeGridKitty(grid: string[], scale: number, imageId: number, cols: number, rows: number, topPaddingPx?: number, cellYOffsetPx?: number, leftPaddingPx?: number, rightPaddingPx?: number, palette?: Palette): string;
98
- export interface SayknowPixelFrames {
99
- /** escape payload per logical frame (drawn at the current cursor cell) */
100
- frames: Record<SayknowPixelFrameName, string>;
101
- /** protocol the frames were encoded for */
102
- protocol: "sixel" | "kitty";
103
- widthPx: number;
104
- heightPx: number;
105
- columns: number;
106
- rows: number;
107
- /** terminal rows touched by the encoded raster, including pixel offset */
108
- rasterRows: number;
109
- }
110
- /**
111
- * Build overlay pixel frames exactly `targetRows` terminal rows tall when the
112
- * terminal cells permit it. Nearest-neighbor sampling preserves the 16x16 art
113
- * while allowing fractional scale factors such as 36px / 16px.
114
- */
115
- export declare function buildSayknowPixelFrames(options: {
116
- protocol: "sixel" | "kitty";
117
- cellWidthPx: number;
118
- cellHeightPx: number;
119
- targetRows?: number;
120
- /** Transparent pixel offset above sixel art for sub-cell vertical placement. */
121
- sixelTopPaddingPx?: number;
122
- /** Native sub-cell `Y=` pixel offset that drops the kitty sprite within its first cell. */
123
- kittyCellYOffsetPx?: number;
124
- kittyImageId?: number;
125
- /** Color skin for the sprite palette (default "red"). */
126
- skin?: PetSkinId;
127
- }): SayknowPixelFrames;
128
- export {};
@@ -1,46 +0,0 @@
1
- import type { SymbolTheme } from "../symbols";
2
- import type { Component } from "../tui";
3
- export interface SelectItem {
4
- value: string;
5
- label: string;
6
- description?: string;
7
- /** Dim hint text shown inline after cursor when this item is selected */
8
- hint?: string;
9
- }
10
- export interface SelectListTheme {
11
- selectedPrefix: (text: string) => string;
12
- selectedText: (text: string) => string;
13
- description: (text: string) => string;
14
- scrollInfo: (text: string) => string;
15
- noMatch: (text: string) => string;
16
- symbols: SymbolTheme;
17
- }
18
- export interface SelectListTruncatePrimaryContext {
19
- text: string;
20
- maxWidth: number;
21
- columnWidth: number;
22
- item: SelectItem;
23
- isSelected: boolean;
24
- }
25
- export interface SelectListLayoutOptions {
26
- minPrimaryColumnWidth?: number;
27
- maxPrimaryColumnWidth?: number;
28
- truncatePrimary?: (context: SelectListTruncatePrimaryContext) => string;
29
- }
30
- export declare class SelectList implements Component {
31
- #private;
32
- private readonly items;
33
- private readonly maxVisible;
34
- private readonly theme;
35
- private readonly layout;
36
- onSelect?: (item: SelectItem) => void;
37
- onCancel?: () => void;
38
- onSelectionChange?: (item: SelectItem) => void;
39
- constructor(items: ReadonlyArray<SelectItem>, maxVisible: number, theme: SelectListTheme, layout?: SelectListLayoutOptions);
40
- setFilter(filter: string): void;
41
- setSelectedIndex(index: number): void;
42
- invalidate(): void;
43
- render(width: number): string[];
44
- handleInput(keyData: string): void;
45
- getSelectedItem(): SelectItem | null;
46
- }
@@ -1,39 +0,0 @@
1
- import type { Component } from "../tui";
2
- export interface SettingItem {
3
- /** Unique identifier for this setting */
4
- id: string;
5
- /** Display label (left side) */
6
- label: string;
7
- /** Optional description shown when selected */
8
- description?: string;
9
- /** Current value to display (right side) */
10
- currentValue: string;
11
- /** If provided, Enter/Space cycles through these values */
12
- values?: string[];
13
- /** If provided, Enter opens this submenu. Receives current value and done callback. */
14
- submenu?: (currentValue: string, done: (selectedValue?: string) => void) => Component;
15
- }
16
- export interface SettingsListTheme {
17
- label: (text: string, selected: boolean) => string;
18
- value: (text: string, selected: boolean) => string;
19
- description: (text: string) => string;
20
- cursor: string;
21
- hint: (text: string) => string;
22
- }
23
- export declare class SettingsList implements Component {
24
- #private;
25
- constructor(items: SettingItem[], maxVisible: number, theme: SettingsListTheme, onChange: (id: string, newValue: string) => void, onCancel: () => void, onSelectionChange?: (item: SettingItem | undefined) => void);
26
- /** Update an item's currentValue */
27
- updateValue(id: string, newValue: string): void;
28
- /**
29
- * Replace the entire items array. Selection is preserved when the prior
30
- * index is still valid, otherwise clamped to the last item (or 0 if the
31
- * list is now empty). An open submenu is left untouched — its lifetime
32
- * is bounded by its own done callback, and `#closeSubmenu` re-clamps the
33
- * restored index against the new list on the way out.
34
- */
35
- setItems(items: SettingItem[]): void;
36
- invalidate(): void;
37
- render(width: number): string[];
38
- handleInput(data: string): void;
39
- }
@@ -1,11 +0,0 @@
1
- import type { Component } from "../tui";
2
- /**
3
- * Spacer component that renders empty lines
4
- */
5
- export declare class Spacer implements Component {
6
- #private;
7
- constructor(lines?: number);
8
- setLines(lines: number): void;
9
- invalidate(): void;
10
- render(_width: number): string[];
11
- }
@@ -1,56 +0,0 @@
1
- import type { Component } from "../tui";
2
- /** Tab definition */
3
- export interface Tab {
4
- /** Unique identifier for the tab */
5
- id: string;
6
- /** Display label shown in the tab bar */
7
- label: string;
8
- }
9
- /** Theme for styling the tab bar */
10
- export interface TabBarTheme {
11
- /** Style for the label prefix (e.g., "Settings:") */
12
- label: (text: string) => string;
13
- /** Style for the currently active tab */
14
- activeTab: (text: string) => string;
15
- /** Style for inactive tabs */
16
- inactiveTab: (text: string) => string;
17
- /** Style for the hint text (e.g., "(tab to cycle)") */
18
- hint: (text: string) => string;
19
- }
20
- /**
21
- * Horizontal tab bar component.
22
- *
23
- * @example
24
- * ```ts
25
- * const tabs = [
26
- * { id: "config", label: "Config" },
27
- * { id: "tools", label: "Tools" },
28
- * ];
29
- * const tabBar = new TabBar("Settings", tabs, theme);
30
- * tabBar.onTabChange = (tab) => console.log(`Switched to ${tab.id}`);
31
- * ```
32
- */
33
- export declare class TabBar implements Component {
34
- #private;
35
- /** Callback fired when the active tab changes */
36
- onTabChange?: (tab: Tab, index: number) => void;
37
- constructor(label: string, tabs: Tab[], theme: TabBarTheme, initialIndex?: number);
38
- /** Get the currently active tab */
39
- getActiveTab(): Tab;
40
- /** Get the index of the currently active tab */
41
- getActiveIndex(): number;
42
- /** Set the active tab by index (clamped to valid range) */
43
- setActiveIndex(index: number): void;
44
- /** Move to the next tab (wraps to first tab after last) */
45
- nextTab(): void;
46
- /** Move to the previous tab (wraps to last tab before first) */
47
- prevTab(): void;
48
- invalidate(): void;
49
- /**
50
- * Handle keyboard input for tab navigation.
51
- * @returns true if the input was handled, false otherwise
52
- */
53
- handleInput(data: string): boolean;
54
- /** Render the tab bar, wrapping to multiple lines if needed */
55
- render(width: number): string[];
56
- }
@@ -1,22 +0,0 @@
1
- import type { Component } from "../tui";
2
- import { type ViewportAnchorSpan } from "../utils";
3
- /**
4
- * Text component - displays multi-line text with word wrapping
5
- */
6
- export declare class Text implements Component {
7
- #private;
8
- constructor(text?: string, paddingX?: number, paddingY?: number, customBgFn?: (text: string) => string);
9
- getText(): string;
10
- setText(text: string): void;
11
- setCustomBgFn(customBgFn?: (text: string) => string): void;
12
- invalidate(): void;
13
- render(width: number): string[];
14
- renderWithViewportAnchorSource(width: number, source: {
15
- id: string;
16
- }): {
17
- lines: string[];
18
- anchors: Array<({
19
- id: string;
20
- } & ViewportAnchorSpan) | null>;
21
- };
22
- }
@@ -1,10 +0,0 @@
1
- import type { Component } from "../tui";
2
- /**
3
- * Text component that truncates to fit viewport width
4
- */
5
- export declare class TruncatedText implements Component {
6
- #private;
7
- constructor(text: string, paddingX?: number, paddingY?: number);
8
- invalidate(): void;
9
- render(width: number): string[];
10
- }
@@ -1,36 +0,0 @@
1
- import type { AutocompleteProvider } from "./autocomplete";
2
- import type { Component } from "./tui";
3
- /**
4
- * Interface for custom editor components.
5
- *
6
- * This allows extensions to provide their own editor implementation
7
- * (e.g., vim mode, emacs mode, custom keybindings) while maintaining
8
- * compatibility with the core application.
9
- */
10
- export interface EditorComponent extends Component {
11
- /** Get the current text content */
12
- getText(): string;
13
- /** Set the text content */
14
- setText(text: string): void;
15
- /** Handle raw terminal input (key presses, paste sequences, etc.) */
16
- handleInput(data: string): void;
17
- /** Called when user submits (e.g., Enter key) */
18
- onSubmit?: (text: string) => void;
19
- /** Called when text changes */
20
- onChange?: (text: string) => void;
21
- /** Add text to history for up/down navigation */
22
- addToHistory?(text: string): void;
23
- /** Insert text at current cursor position */
24
- insertTextAtCursor?(text: string): void;
25
- /**
26
- * Get text with any markers expanded (e.g., paste markers).
27
- * Falls back to getText() if not implemented.
28
- */
29
- getExpandedText?(): string;
30
- /** Set the autocomplete provider */
31
- setAutocompleteProvider?(provider: AutocompleteProvider): void;
32
- /** Border color function */
33
- borderColor?: (str: string) => string;
34
- /** Set horizontal padding */
35
- setPaddingX?(padding: number): void;
36
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * Fuzzy matching utilities.
3
- * Matches if all query characters appear in order (not necessarily consecutive).
4
- * Lower score = better match.
5
- */
6
- export interface FuzzyMatch {
7
- matches: boolean;
8
- score: number;
9
- }
10
- export declare function fuzzyMatch(query: string, text: string): FuzzyMatch;
11
- /**
12
- * Filter and sort items by fuzzy match quality (best matches first).
13
- * Supports space-separated tokens: all tokens must match.
14
- */
15
- export declare function fuzzyFilter<T>(items: T[], query: string, getText: (item: T) => string): T[];
@@ -1,28 +0,0 @@
1
- export * from "./animation-scheduler";
2
- export * from "./autocomplete";
3
- export * from "./components/box";
4
- export * from "./components/cancellable-loader";
5
- export * from "./components/editor";
6
- export * from "./components/image";
7
- export * from "./components/input";
8
- export * from "./components/loader";
9
- export * from "./components/markdown";
10
- export * from "./components/sayknow-pet";
11
- export * from "./components/select-list";
12
- export * from "./components/settings-list";
13
- export * from "./components/spacer";
14
- export * from "./components/tab-bar";
15
- export * from "./components/text";
16
- export * from "./components/truncated-text";
17
- export type * from "./editor-component";
18
- export * from "./fuzzy";
19
- export * from "./keybindings";
20
- export * from "./keys";
21
- export * from "./metrics";
22
- export * from "./stdin-buffer";
23
- export type * from "./symbols";
24
- export * from "./terminal";
25
- export * from "./terminal-capabilities";
26
- export * from "./ttyid";
27
- export * from "./tui";
28
- export * from "./utils";