blecsd 0.4.0 → 0.6.0

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 (142) hide show
  1. package/README.md +145 -145
  2. package/dist/{border-DGNDfT6T.d.ts → border-Br-Jc027.d.ts} +2 -2
  3. package/dist/{cell-DwIu2ryP.d.ts → cell-5Ty_3yMs.d.ts} +1 -1
  4. package/dist/cellRenderer-D0-DJXWl.d.ts +374 -0
  5. package/dist/chunk-4N7IFBRQ.js +4 -0
  6. package/dist/{chunk-DNRXW56C.js → chunk-4XCFTNGN.js} +1 -1
  7. package/dist/chunk-5YWRP2KG.js +3 -0
  8. package/dist/chunk-73Y45MLV.js +12 -0
  9. package/dist/chunk-7ZFQO3OQ.js +1 -0
  10. package/dist/chunk-A3GSH6MV.js +1 -0
  11. package/dist/chunk-A5B2BGUM.js +1 -0
  12. package/dist/chunk-AM6IDSXI.js +1 -0
  13. package/dist/chunk-EHYOVHRL.js +2 -0
  14. package/dist/chunk-EMZA6G2M.js +4 -0
  15. package/dist/chunk-EOFT3PNU.js +1 -0
  16. package/dist/chunk-ETFDYZVJ.js +1 -0
  17. package/dist/chunk-FUW7OD3H.js +1 -0
  18. package/dist/chunk-GRMSEMU7.js +1 -0
  19. package/dist/chunk-I7AUKTXE.js +1 -0
  20. package/dist/chunk-IANAVH2A.js +1 -0
  21. package/dist/chunk-JN2OGNK3.js +1 -0
  22. package/dist/chunk-JVMNMAHX.js +1 -0
  23. package/dist/chunk-K2QWNDXV.js +1 -0
  24. package/dist/chunk-KYNS3GBJ.js +2 -0
  25. package/dist/chunk-LI3ZYXUT.js +1 -0
  26. package/dist/chunk-LNEISTXM.js +1 -0
  27. package/dist/chunk-QABNK7IA.js +1 -0
  28. package/dist/chunk-QS5QXZNJ.js +1 -0
  29. package/dist/chunk-QTDRFJG2.js +1 -0
  30. package/dist/chunk-SVHITP3F.js +2 -0
  31. package/dist/chunk-UKVY43V3.js +1 -0
  32. package/dist/chunk-VIT4KE6Q.js +1 -0
  33. package/dist/chunk-XG5PVDOP.js +1 -0
  34. package/dist/chunk-XH5GTWCV.js +1 -0
  35. package/dist/chunk-XYMPBCYW.js +1 -0
  36. package/dist/chunk-YRSSCEAS.js +1 -0
  37. package/dist/chunk-ZL46COQF.js +1 -0
  38. package/dist/cli/init.js +1 -1
  39. package/dist/{componentStorage-CJTh-TPO.d.ts → componentStorage-CXJvx4Lt.d.ts} +2 -2
  40. package/dist/components/index.d.ts +8172 -7777
  41. package/dist/components/index.js +5 -1
  42. package/dist/core/index.d.ts +4777 -3942
  43. package/dist/core/index.js +1 -1
  44. package/dist/debug/index.d.ts +310 -84
  45. package/dist/debug/index.js +8 -1
  46. package/dist/{dirtyTracking-C4v8MmM9.d.ts → dirtyTracking-kCS9-NVF.d.ts} +2 -2
  47. package/dist/{doubleBuffer-CKQFmlPN.d.ts → doubleBuffer-CWASihKh.d.ts} +1 -1
  48. package/dist/errors/index.js +1 -1
  49. package/dist/{inputActions-Fyw14_Gm.d.ts → factories-vW7bn_He.d.ts} +21 -786
  50. package/dist/{gameLoop-CSTb7e0L.d.ts → gameLoop-C1AyRWyP.d.ts} +3 -3
  51. package/dist/index.d.ts +24 -1217
  52. package/dist/index.js +1 -3
  53. package/dist/input/index.d.ts +1 -1
  54. package/dist/input/index.js +1 -1
  55. package/dist/inputStream-COARA4CP.d.ts +1182 -0
  56. package/dist/interactiveSystem-h92W9W4n.d.ts +1977 -0
  57. package/dist/{keyParser-m7fWto6g.d.ts → keyParser-DReXe2j-.d.ts} +28 -28
  58. package/dist/{events-9ForpTfM.d.ts → mouseParser-CCqSEUVN.d.ts} +177 -2
  59. package/dist/{packedStore-BgvnEdE7.d.ts → packedStore-480t2X74.d.ts} +1 -1
  60. package/dist/panelMovement-DGzIQ8Ll.d.ts +1908 -0
  61. package/dist/{parser-iMHmQuUh.d.ts → parser-Q1YLXYpF.d.ts} +1 -1
  62. package/dist/positioning-DiUivJXa.d.ts +917 -0
  63. package/dist/{renderable-CwqGwrEV.d.ts → renderable-IbSJao5y.d.ts} +2 -2
  64. package/dist/{scheduler-DeeZleia.d.ts → scheduler-NbHT3-D2.d.ts} +1 -1
  65. package/dist/schemas/index.d.ts +6 -6
  66. package/dist/schemas/index.js +1 -1
  67. package/dist/systems/index.d.ts +785 -1882
  68. package/dist/systems/index.js +1 -1
  69. package/dist/terminal/index.d.ts +7563 -3387
  70. package/dist/terminal/index.js +1 -1
  71. package/dist/terminalBuffer-BbUz27qM.d.ts +691 -0
  72. package/dist/{terminus-14-bold-HWSPRLJD.js → terminus-14-bold-ZS4IH465.js} +1 -1
  73. package/dist/{terminus-14-normal-T3SWMH4D.js → terminus-14-normal-HD5N7F5W.js} +1 -1
  74. package/dist/text/index.d.ts +263 -0
  75. package/dist/text/index.js +3 -0
  76. package/dist/textWrap-Ct2J8gO6.d.ts +761 -0
  77. package/dist/{tilemap-BirMJdbu.d.ts → tilemap-ByvTsepD.d.ts} +5 -5
  78. package/dist/{types-CPB4CpbH.d.ts → types-B8LmNkzG.d.ts} +1 -1
  79. package/dist/utils/index.d.ts +829 -782
  80. package/dist/utils/index.js +32 -1
  81. package/dist/{virtualScrollback-D9uLFe8l.d.ts → virtualScrollback-CiooIebp.d.ts} +4 -4
  82. package/dist/virtualViewport-fIlbIGPt.d.ts +657 -0
  83. package/dist/{virtualizedLineStore-DwPEvPkk.d.ts → virtualizedLineStore-DfyhojPZ.d.ts} +1 -1
  84. package/dist/widgets/bigText.d.ts +13 -13
  85. package/dist/widgets/bigText.js +1 -1
  86. package/dist/widgets/fonts/index.d.ts +1 -1
  87. package/dist/widgets/fonts/index.js +1 -1
  88. package/dist/widgets/index.d.ts +1620 -910
  89. package/dist/widgets/index.js +24 -1
  90. package/package.json +9 -22
  91. package/dist/3d/index.d.ts +0 -5
  92. package/dist/3d/index.js +0 -1
  93. package/dist/audio/index.d.ts +0 -177
  94. package/dist/audio/index.js +0 -1
  95. package/dist/chunk-25OEBENM.js +0 -3
  96. package/dist/chunk-26STV7ZS.js +0 -1
  97. package/dist/chunk-2NMGUEFC.js +0 -4
  98. package/dist/chunk-35LCBY6P.js +0 -1
  99. package/dist/chunk-4PRDJTCM.js +0 -1
  100. package/dist/chunk-5PELJRUQ.js +0 -1
  101. package/dist/chunk-5VEKHA3B.js +0 -5
  102. package/dist/chunk-6KEM3OS2.js +0 -11
  103. package/dist/chunk-6XWY6GB7.js +0 -1
  104. package/dist/chunk-735KKTP3.js +0 -1
  105. package/dist/chunk-7SWJNDOL.js +0 -26
  106. package/dist/chunk-APKUNIMB.js +0 -1
  107. package/dist/chunk-CJCSZRV6.js +0 -1
  108. package/dist/chunk-DMBMCCLN.js +0 -1
  109. package/dist/chunk-DQTVJITR.js +0 -1
  110. package/dist/chunk-DSKQ5J4R.js +0 -1
  111. package/dist/chunk-E4CJRSND.js +0 -1
  112. package/dist/chunk-EF4DC6IN.js +0 -1
  113. package/dist/chunk-EJAKECSN.js +0 -1
  114. package/dist/chunk-FNQRUMFD.js +0 -1
  115. package/dist/chunk-GJ3RS2VG.js +0 -1
  116. package/dist/chunk-KTVEMB2I.js +0 -1
  117. package/dist/chunk-KYAPE44E.js +0 -8
  118. package/dist/chunk-LI4Y7TBZ.js +0 -1
  119. package/dist/chunk-NHOL4BN6.js +0 -1
  120. package/dist/chunk-NPNUUSIB.js +0 -1
  121. package/dist/chunk-NZ55KBM6.js +0 -1
  122. package/dist/chunk-OFRWGW2G.js +0 -1
  123. package/dist/chunk-OMMJ7B5P.js +0 -1
  124. package/dist/chunk-OMU5BSAS.js +0 -2
  125. package/dist/chunk-P3ZLIQJP.js +0 -1
  126. package/dist/chunk-PWI36BQJ.js +0 -1
  127. package/dist/chunk-QQMUDJ32.js +0 -2
  128. package/dist/chunk-R3ICZOE4.js +0 -1
  129. package/dist/chunk-RZ7FGVI6.js +0 -1
  130. package/dist/chunk-S6WS46FE.js +0 -1
  131. package/dist/chunk-TSARUU56.js +0 -1
  132. package/dist/chunk-WJRVUAZR.js +0 -33
  133. package/dist/chunk-WY5EZOOL.js +0 -1
  134. package/dist/chunk-YY6RZCZH.js +0 -4
  135. package/dist/chunk-ZPGJCHXH.js +0 -1
  136. package/dist/chunk-ZPL2J25N.js +0 -1
  137. package/dist/game/index.d.ts +0 -486
  138. package/dist/game/index.js +0 -1
  139. package/dist/index-DBS5Uefn.d.ts +0 -3156
  140. package/dist/mouseParser-B7p5ow7K.d.ts +0 -177
  141. package/dist/viewport3d-xI33-_wq.d.ts +0 -182
  142. package/dist/virtualViewport-DTSN6jFk.d.ts +0 -1856
@@ -1,15 +1,19 @@
1
+ export { G as createFormEntity, H as createProgressBarEntity, J as createRadioButtonEntity, K as createRadioSetEntity, M as createSliderEntity, N as createTextareaEntity, O as createTextboxEntity } from '../factories-vW7bn_He.js';
1
2
  import { z } from 'zod';
2
- import { E as Entity, W as World, L as LoopPhase } from '../types-CPB4CpbH.js';
3
- export { BigText, BigTextConfig, BigTextConfigSchema, BigTextWidget, FontDefinition, createBigText, isBigText, resetBigTextStore, setText } from './bigText.js';
4
- import { B as BorderCharset, k as BorderType } from '../border-DGNDfT6T.js';
5
- import { S as Scheduler } from '../scheduler-DeeZleia.js';
6
- import { j as DimensionValue$8, p as ListItem, u as ListState, t as ListSelectCallback, L as ListAction, H as TableData, F as TableCell, K as TableRow, G as TableColumn, I as TableDisplay, C as CellAlign, w as ScrollPercentage, x as ScrollPosition, z as ScrollableData, Q as CursorShape, R as TerminalState, Y as ScrollInfo } from '../virtualViewport-DTSN6jFk.js';
7
- export { BitmapFont, BitmapFontSchema, CharBitmap, CharBitmapSchema, FontName, FontNotFoundError, RenderCharOptions, createFontNotFoundError, getCharBitmap, loadFont, renderChar } from './fonts/index.js';
8
- import { C as Cell$1 } from '../cell-DwIu2ryP.js';
9
- import { T as Transform3DConfig, M as Material3DConfig, h as Viewport3DWidgetConfig } from '../viewport3d-xI33-_wq.js';
3
+ import { E as Entity, W as World, L as LoopPhase } from '../types-B8LmNkzG.js';
4
+ import { createBigText, isBigText, setBigText, resetBigTextStore } from './bigText.js';
5
+ export { BigText, BigTextConfig, BigTextConfigSchema, BigTextWidget, FontDefinition } from './bigText.js';
6
+ import { o as BorderCharset, r as BorderType } from '../border-Br-Jc027.js';
7
+ import { S as Scheduler } from '../scheduler-NbHT3-D2.js';
8
+ import { D as DimensionValue$8, T as ScrollInfo } from '../virtualViewport-fIlbIGPt.js';
9
+ import { FontName, BitmapFont, CharBitmap, RenderCharOptions, FontNotFoundError } from './fonts/index.js';
10
+ export { BitmapFontSchema, CharBitmapSchema, createFontNotFoundError, getCharBitmap, loadFont, renderChar } from './fonts/index.js';
11
+ import { c as Bitmap, o as RenderMode, b as GraphicsManagerState, C as CellMap } from '../cellRenderer-D0-DJXWl.js';
12
+ import { a as ListItem, b as ListState, L as ListSelectCallback, f as ListAction, C as CellAlign, o as TableColumn, T as TableData, m as TableCell, n as TableRow, p as TableDisplay, k as ScrollPercentage, j as ScrollPosition, S as ScrollableData, J as CursorShape, K as TerminalState } from '../terminalBuffer-BbUz27qM.js';
13
+ import { C as Cell } from '../cell-5Ty_3yMs.js';
10
14
  import 'bitecs';
11
- import '../parser-iMHmQuUh.js';
12
- import '../virtualScrollback-D9uLFe8l.js';
15
+ import '../parser-Q1YLXYpF.js';
16
+ import '../virtualScrollback-CiooIebp.js';
13
17
 
14
18
  /**
15
19
  * Accordion and Collapsible Widgets
@@ -275,6 +279,36 @@ declare function isCollapsible(entity: Entity): boolean;
275
279
  */
276
280
  declare function Accordion(entity: Entity, world: World): AccordionWidget | undefined;
277
281
 
282
+ /**
283
+ * Accordion widget namespace.
284
+ *
285
+ * @example
286
+ * ```typescript
287
+ * import { accordion } from 'blecsd/widgets';
288
+ * const a = accordion.create(world, { sections: [...] });
289
+ * accordion.expandSection(world, a.eid, 0);
290
+ * accordion.toggleSection(world, a.eid, 1);
291
+ * ```
292
+ */
293
+
294
+ declare const accordion: Readonly<{
295
+ create: typeof createAccordion;
296
+ is: typeof isAccordion;
297
+ expandSection: typeof expandSection;
298
+ toggleSection: typeof toggleSection;
299
+ collapseAll: typeof collapseAllSections;
300
+ expandAll: typeof expandAllSections;
301
+ getExpandedSections: typeof getExpandedSections;
302
+ resetStore: typeof resetAccordionStore;
303
+ }>;
304
+ declare const collapsible: Readonly<{
305
+ create: typeof createCollapsible;
306
+ is: typeof isCollapsible;
307
+ toggle: typeof toggleCollapsible;
308
+ }>;
309
+ type AccordionModule = typeof accordion;
310
+ type CollapsibleModule = typeof collapsible;
311
+
278
312
  /**
279
313
  * Autocomplete Widget
280
314
  *
@@ -479,6 +513,23 @@ declare function isAutocomplete(_world: World, eid: Entity): boolean;
479
513
  */
480
514
  declare function resetAutocompleteStore(): void;
481
515
 
516
+ /**
517
+ * Autocomplete widget namespace.
518
+ *
519
+ * @example
520
+ * ```typescript
521
+ * import { autocomplete } from 'blecsd/widgets';
522
+ * const ac = autocomplete.create(world, { suggestions: ['foo', 'bar'] });
523
+ * ```
524
+ */
525
+
526
+ declare const autocomplete: Readonly<{
527
+ create: typeof createAutocomplete;
528
+ is: typeof isAutocomplete;
529
+ resetStore: typeof resetAutocompleteStore;
530
+ }>;
531
+ type AutocompleteModule = typeof autocomplete;
532
+
482
533
  /**
483
534
  * BarChart Widget
484
535
  *
@@ -697,6 +748,44 @@ declare function isBarChart(_world: World, eid: Entity): boolean;
697
748
  */
698
749
  declare function resetBarChartStore(): void;
699
750
 
751
+ /**
752
+ * BarChart widget namespace.
753
+ *
754
+ * @example
755
+ * ```typescript
756
+ * import { barChart } from 'blecsd/widgets';
757
+ * const chart = barChart.create(world, { series: [...] });
758
+ * ```
759
+ */
760
+
761
+ declare const barChart: Readonly<{
762
+ create: typeof createBarChart;
763
+ is: typeof isBarChart;
764
+ resetStore: typeof resetBarChartStore;
765
+ HORIZONTAL_BLOCKS: readonly string[];
766
+ VERTICAL_BLOCKS: readonly string[];
767
+ }>;
768
+ type BarChartModule = typeof barChart;
769
+
770
+ /**
771
+ * BigText widget namespace.
772
+ *
773
+ * @example
774
+ * ```typescript
775
+ * import { bigText } from 'blecsd/widgets';
776
+ * const bt = bigText.create(world, { text: 'HELLO' });
777
+ * bigText.set(world, bt.eid, 'WORLD');
778
+ * ```
779
+ */
780
+
781
+ declare const bigText: Readonly<{
782
+ create: typeof createBigText;
783
+ is: typeof isBigText;
784
+ set: typeof setBigText;
785
+ resetStore: typeof resetBigTextStore;
786
+ }>;
787
+ type BigTextModule = typeof bigText;
788
+
700
789
  /**
701
790
  * Box Widget
702
791
  *
@@ -951,31 +1040,31 @@ interface BoxWidget {
951
1040
  declare const BoxConfigSchema: z.ZodObject<{
952
1041
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
953
1042
  left: "left";
954
- top: "top";
1043
+ center: "center";
955
1044
  right: "right";
1045
+ top: "top";
956
1046
  bottom: "bottom";
957
- center: "center";
958
1047
  }>]>>;
959
1048
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
960
1049
  left: "left";
961
- top: "top";
1050
+ center: "center";
962
1051
  right: "right";
1052
+ top: "top";
963
1053
  bottom: "bottom";
964
- center: "center";
965
1054
  }>]>>;
966
1055
  right: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
967
1056
  left: "left";
968
- top: "top";
1057
+ center: "center";
969
1058
  right: "right";
1059
+ top: "top";
970
1060
  bottom: "bottom";
971
- center: "center";
972
1061
  }>]>>;
973
1062
  bottom: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
974
1063
  left: "left";
975
- top: "top";
1064
+ center: "center";
976
1065
  right: "right";
1066
+ top: "top";
977
1067
  bottom: "bottom";
978
- center: "center";
979
1068
  }>]>>;
980
1069
  width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
981
1070
  height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
@@ -983,15 +1072,15 @@ declare const BoxConfigSchema: z.ZodObject<{
983
1072
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
984
1073
  border: z.ZodOptional<z.ZodObject<{
985
1074
  type: z.ZodOptional<z.ZodEnum<{
986
- bg: "bg";
987
1075
  none: "none";
1076
+ bg: "bg";
988
1077
  line: "line";
989
1078
  }>>;
990
1079
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
991
1080
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
992
1081
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
993
- ascii: "ascii";
994
1082
  bold: "bold";
1083
+ ascii: "ascii";
995
1084
  single: "single";
996
1085
  double: "double";
997
1086
  rounded: "rounded";
@@ -1006,13 +1095,13 @@ declare const BoxConfigSchema: z.ZodObject<{
1006
1095
  content: z.ZodOptional<z.ZodString>;
1007
1096
  align: z.ZodOptional<z.ZodEnum<{
1008
1097
  left: "left";
1009
- right: "right";
1010
1098
  center: "center";
1099
+ right: "right";
1011
1100
  }>>;
1012
1101
  valign: z.ZodOptional<z.ZodEnum<{
1013
1102
  top: "top";
1014
- bottom: "bottom";
1015
1103
  middle: "middle";
1104
+ bottom: "bottom";
1016
1105
  }>>;
1017
1106
  }, z.core.$strip>;
1018
1107
  /**
@@ -1117,6 +1206,26 @@ declare function isBox(_world: World, eid: Entity): boolean;
1117
1206
  */
1118
1207
  declare function resetBoxStore(): void;
1119
1208
 
1209
+ /**
1210
+ * Box widget namespace.
1211
+ *
1212
+ * @example
1213
+ * ```typescript
1214
+ * import { box } from 'blecsd/widgets';
1215
+ * const b = box.create(world, { x: 0, y: 0, width: 40, height: 10 });
1216
+ * box.setContent(world, b.eid, 'Hello');
1217
+ * ```
1218
+ */
1219
+
1220
+ declare const box: Readonly<{
1221
+ create: typeof createBox;
1222
+ is: typeof isBox;
1223
+ getContent: typeof getBoxContent;
1224
+ setContent: typeof setBoxContent;
1225
+ resetStore: typeof resetBoxStore;
1226
+ }>;
1227
+ type BoxModule = typeof box;
1228
+
1120
1229
  /**
1121
1230
  * Button Widget
1122
1231
  *
@@ -1301,6 +1410,23 @@ declare function isButtonWidget(_world: World, eid: Entity): boolean;
1301
1410
  */
1302
1411
  declare function resetButtonWidgetStore(): void;
1303
1412
 
1413
+ /**
1414
+ * ButtonWidget namespace.
1415
+ *
1416
+ * @example
1417
+ * ```typescript
1418
+ * import { buttonWidget } from 'blecsd/widgets';
1419
+ * const btn = buttonWidget.create(world, { label: 'Click me' });
1420
+ * ```
1421
+ */
1422
+
1423
+ declare const buttonWidget: Readonly<{
1424
+ create: typeof createButton;
1425
+ is: typeof isButtonWidget;
1426
+ resetStore: typeof resetButtonWidgetStore;
1427
+ }>;
1428
+ type ButtonWidgetModule = typeof buttonWidget;
1429
+
1304
1430
  /**
1305
1431
  * Calendar Widget - Monthly calendar display with date selection
1306
1432
  * @module widgets/calendar
@@ -1567,6 +1693,23 @@ declare function isCalendar(eid: Entity): boolean;
1567
1693
  */
1568
1694
  declare const Calendar: "Calendar";
1569
1695
 
1696
+ /**
1697
+ * Calendar widget namespace.
1698
+ *
1699
+ * @example
1700
+ * ```typescript
1701
+ * import { calendar } from 'blecsd/widgets';
1702
+ * const cal = calendar.create(world, { year: 2026, month: 2 });
1703
+ * ```
1704
+ */
1705
+
1706
+ declare const calendar: Readonly<{
1707
+ create: typeof createCalendar;
1708
+ is: typeof isCalendar;
1709
+ resetStore: typeof resetCalendarStore;
1710
+ }>;
1711
+ type CalendarModule = typeof calendar;
1712
+
1570
1713
  /**
1571
1714
  * Canvas Widget
1572
1715
  *
@@ -1804,6 +1947,36 @@ declare function isCanvas(entity: Entity): boolean;
1804
1947
  */
1805
1948
  declare function resetCanvasStore(): void;
1806
1949
 
1950
+ /**
1951
+ * Canvas widget namespace.
1952
+ *
1953
+ * @example
1954
+ * ```typescript
1955
+ * import { canvas } from 'blecsd/widgets';
1956
+ * const c = canvas.create(world, { width: 80, height: 24 });
1957
+ * canvas.clear(world, c.eid);
1958
+ * canvas.drawLine(world, c.eid, 0, 0, 10, 10);
1959
+ * canvas.drawRect(world, c.eid, 5, 5, 20, 10);
1960
+ * canvas.drawCircle(world, c.eid, 10, 10, 5);
1961
+ * canvas.drawText(world, c.eid, 'Hello', 0, 0);
1962
+ * canvas.setPixel(world, c.eid, 5, 5, '#');
1963
+ * ```
1964
+ */
1965
+
1966
+ declare const canvas: Readonly<{
1967
+ create: typeof createCanvas;
1968
+ is: typeof isCanvas;
1969
+ clear: typeof clearCanvas;
1970
+ getContent: typeof getCanvasContent;
1971
+ drawLine: typeof drawLine;
1972
+ drawRect: typeof drawRect;
1973
+ drawCircle: typeof drawCircle;
1974
+ drawText: typeof drawText;
1975
+ setPixel: typeof setPixel;
1976
+ resetStore: typeof resetCanvasStore;
1977
+ }>;
1978
+ type CanvasModule = typeof canvas;
1979
+
1807
1980
  /**
1808
1981
  * Chart Utilities
1809
1982
  *
@@ -1970,6 +2143,91 @@ declare function renderXAxisLabel(value: number, width: number): string;
1970
2143
  * @returns Formatted label string, right-aligned
1971
2144
  */
1972
2145
  declare function renderYAxisLabel(value: number, width: number): string;
2146
+ /**
2147
+ * Calculates the braille bit pattern for a partial fill.
2148
+ *
2149
+ * Braille cells have 2 columns x 4 rows. For horizontal bars,
2150
+ * we use all 4 rows in each column.
2151
+ *
2152
+ * @param fraction - Fill fraction (0.0 = empty, 0.5 = left column, 1.0 = full)
2153
+ * @returns Braille bit pattern (0-255)
2154
+ *
2155
+ * @example
2156
+ * ```typescript
2157
+ * const pattern = brailleFillPattern(0.0); // 0x00 (empty)
2158
+ * const pattern = brailleFillPattern(0.5); // 0x47 (left column)
2159
+ * const pattern = brailleFillPattern(1.0); // 0xFF (full)
2160
+ * ```
2161
+ */
2162
+ declare function brailleFillPattern(fraction: number): number;
2163
+ /**
2164
+ * Renders a horizontal bar using braille dots for sub-cell precision.
2165
+ *
2166
+ * Each braille cell has 2 columns of dots, giving 2x horizontal resolution.
2167
+ * A cell can be: empty (no dots), left column only, or both columns (full).
2168
+ *
2169
+ * @param fillFraction - Fill fraction (0.0 to 1.0)
2170
+ * @param widthCells - Width in braille cells
2171
+ * @returns String of braille characters representing the bar
2172
+ *
2173
+ * @example
2174
+ * ```typescript
2175
+ * const bar = renderBrailleBar(0.75, 10); // 75% filled bar, 10 cells wide
2176
+ * ```
2177
+ */
2178
+ declare function renderBrailleBar(fillFraction: number, widthCells: number): string;
2179
+ /**
2180
+ * Renders a horizontal bar with color gradient interpolation across cells.
2181
+ *
2182
+ * Same as renderBrailleBar but with color gradient. Note: This function
2183
+ * returns a plain string; color must be applied separately per-cell
2184
+ * in the rendering system.
2185
+ *
2186
+ * @param fillFraction - Fill fraction (0.0 to 1.0)
2187
+ * @param widthCells - Width in braille cells
2188
+ * @param _startColor - Gradient start color (reserved for future use)
2189
+ * @param _endColor - Gradient end color (reserved for future use)
2190
+ * @returns String of braille characters representing the bar
2191
+ *
2192
+ * @example
2193
+ * ```typescript
2194
+ * const bar = renderBrailleGradientBar(0.5, 20, 0xff00ff00, 0xffff0000);
2195
+ * ```
2196
+ */
2197
+ declare function renderBrailleGradientBar(fillFraction: number, widthCells: number, _startColor: number, _endColor: number): string;
2198
+
2199
+ /**
2200
+ * Chart utilities namespace.
2201
+ *
2202
+ * @example
2203
+ * ```typescript
2204
+ * import { chartUtils } from 'blecsd/widgets';
2205
+ * const char = chartUtils.brailleChar(0b11110000);
2206
+ * const scaled = chartUtils.scaleValue(50, 0, 100, 0, 10);
2207
+ * const color = chartUtils.getChartColor(2);
2208
+ * ```
2209
+ */
2210
+
2211
+ declare const chartUtils: Readonly<{
2212
+ brailleChar: typeof brailleChar;
2213
+ brailleFillPattern: typeof brailleFillPattern;
2214
+ combineBrailleDots: typeof combineBrailleDots;
2215
+ scaleValue: typeof scaleValue;
2216
+ getChartColor: typeof getChartColor;
2217
+ interpolateChartColor: typeof interpolateChartColor;
2218
+ formatNumber: typeof formatNumber;
2219
+ formatPercentage: typeof formatPercentage;
2220
+ calculateTickInterval: typeof calculateTickInterval;
2221
+ generateTicks: typeof generateTicks;
2222
+ renderBrailleBar: typeof renderBrailleBar;
2223
+ renderBrailleGradientBar: typeof renderBrailleGradientBar;
2224
+ renderXAxisLabel: typeof renderXAxisLabel;
2225
+ renderYAxisLabel: typeof renderYAxisLabel;
2226
+ BRAILLE_BASE: 10240;
2227
+ BRAILLE_DOTS: readonly (readonly [number, number])[];
2228
+ CHART_COLORS: readonly number[];
2229
+ }>;
2230
+ type ChartUtilsModule = typeof chartUtils;
1973
2231
 
1974
2232
  /**
1975
2233
  * Checkbox Widget
@@ -2128,6 +2386,23 @@ declare function isCheckboxWidget(_world: World, eid: Entity): boolean;
2128
2386
  */
2129
2387
  declare function resetCheckboxWidgetStore(): void;
2130
2388
 
2389
+ /**
2390
+ * CheckboxWidget namespace.
2391
+ *
2392
+ * @example
2393
+ * ```typescript
2394
+ * import { checkboxWidget } from 'blecsd/widgets';
2395
+ * const cb = checkboxWidget.create(world, { label: 'Accept terms' });
2396
+ * ```
2397
+ */
2398
+
2399
+ declare const checkboxWidget: Readonly<{
2400
+ create: typeof createCheckbox;
2401
+ is: typeof isCheckboxWidget;
2402
+ resetStore: typeof resetCheckboxWidgetStore;
2403
+ }>;
2404
+ type CheckboxWidgetModule = typeof checkboxWidget;
2405
+
2131
2406
  /**
2132
2407
  * Command Palette Widget
2133
2408
  *
@@ -2344,6 +2619,23 @@ declare function createCommandPalette(world: World, entity: Entity, config?: Com
2344
2619
  */
2345
2620
  declare function isCommandPalette(entity: Entity): boolean;
2346
2621
 
2622
+ /**
2623
+ * CommandPalette widget namespace.
2624
+ *
2625
+ * @example
2626
+ * ```typescript
2627
+ * import { commandPalette } from 'blecsd/widgets';
2628
+ * const cp = commandPalette.create(world, { commands: [...] });
2629
+ * ```
2630
+ */
2631
+
2632
+ declare const commandPalette: Readonly<{
2633
+ create: typeof createCommandPalette;
2634
+ is: typeof isCommandPalette;
2635
+ resetStore: typeof resetCommandPaletteStore;
2636
+ }>;
2637
+ type CommandPaletteModule = typeof commandPalette;
2638
+
2347
2639
  /**
2348
2640
  * Content line manipulation methods for text content.
2349
2641
  * @module widgets/contentManipulation
@@ -2375,13 +2667,13 @@ declare function getLines(world: World, eid: Entity): string[];
2375
2667
  *
2376
2668
  * @example
2377
2669
  * ```typescript
2378
- * import { setContent, getLineCount } from 'blecsd';
2670
+ * import { setContent, contentGetLineCount } from 'blecsd';
2379
2671
  *
2380
2672
  * setContent(world, entity, 'Line 1\nLine 2\nLine 3');
2381
- * console.log(getLineCount(world, entity)); // 3
2673
+ * console.log(contentGetLineCount(world, entity)); // 3
2382
2674
  * ```
2383
2675
  */
2384
- declare function getLineCount(world: World, eid: Entity): number;
2676
+ declare function contentGetLineCount(world: World, eid: Entity): number;
2385
2677
  /**
2386
2678
  * Gets a specific line from an entity's content.
2387
2679
  *
@@ -2392,13 +2684,13 @@ declare function getLineCount(world: World, eid: Entity): number;
2392
2684
  *
2393
2685
  * @example
2394
2686
  * ```typescript
2395
- * import { setContent, getLine } from 'blecsd';
2687
+ * import { setContent, contentGetLine } from 'blecsd';
2396
2688
  *
2397
2689
  * setContent(world, entity, 'Line 1\nLine 2\nLine 3');
2398
- * console.log(getLine(world, entity, 1)); // 'Line 2'
2690
+ * console.log(contentGetLine(world, entity, 1)); // 'Line 2'
2399
2691
  * ```
2400
2692
  */
2401
- declare function getLine(world: World, eid: Entity, index: number): string;
2693
+ declare function contentGetLine(world: World, eid: Entity, index: number): string;
2402
2694
  /**
2403
2695
  * Sets a specific line in an entity's content.
2404
2696
  * Marks the entity dirty for re-rendering.
@@ -2725,6 +3017,43 @@ declare function replaceLines(world: World, eid: Entity, startIndex: number, new
2725
3017
  */
2726
3018
  declare function spliceLines(world: World, eid: Entity, start: number, deleteCount: number, insertLines?: string[]): string[];
2727
3019
 
3020
+ /**
3021
+ * Content manipulation utilities namespace.
3022
+ *
3023
+ * @example
3024
+ * ```typescript
3025
+ * import { contentManipulation } from 'blecsd/widgets';
3026
+ * contentManipulation.pushLine(world, eid, 'new line');
3027
+ * const line = contentManipulation.popLine(world, eid);
3028
+ * contentManipulation.insertLine(world, eid, 5, 'inserted');
3029
+ * contentManipulation.deleteLine(world, eid, 3);
3030
+ * ```
3031
+ */
3032
+
3033
+ declare const contentManipulation: Readonly<{
3034
+ pushLine: typeof pushLine;
3035
+ popLine: typeof popLine;
3036
+ shiftLine: typeof shiftLine;
3037
+ unshiftLine: typeof unshiftLine;
3038
+ insertLine: typeof insertLine;
3039
+ deleteLine: typeof deleteLine;
3040
+ insertTop: typeof insertTop;
3041
+ insertBottom: typeof insertBottom;
3042
+ deleteTop: typeof deleteTop;
3043
+ deleteBottom: typeof deleteBottom;
3044
+ getLine: typeof contentGetLine;
3045
+ getLineCount: typeof contentGetLineCount;
3046
+ setLine: typeof setLine;
3047
+ getLines: typeof getLines;
3048
+ setLines: typeof setLines;
3049
+ clearLines: typeof clearLines;
3050
+ replaceLines: typeof replaceLines;
3051
+ spliceLines: typeof spliceLines;
3052
+ getBaseLine: typeof getBaseLine;
3053
+ setBaseLine: typeof setBaseLine;
3054
+ }>;
3055
+ type ContentManipulationModule = typeof contentManipulation;
3056
+
2728
3057
  /**
2729
3058
  * Context menu widget for terminal UIs.
2730
3059
  * Provides right-click style menus with keyboard navigation.
@@ -2798,6 +3127,25 @@ declare function handleContextMenuKey(world: World, eid: Entity, key: string): b
2798
3127
  */
2799
3128
  declare function getContextMenuSelectedIndex(eid: Entity): number;
2800
3129
 
3130
+ /**
3131
+ * ContextMenu widget namespace.
3132
+ *
3133
+ * @example
3134
+ * ```typescript
3135
+ * import { contextMenu } from 'blecsd/widgets';
3136
+ * const cm = contextMenu.create(world, { items: [...] });
3137
+ * const selectedIndex = contextMenu.getSelectedIndex(world, cm.eid);
3138
+ * contextMenu.handleKey(world, cm.eid, keyEvent);
3139
+ * ```
3140
+ */
3141
+
3142
+ declare const contextMenu: Readonly<{
3143
+ create: typeof createContextMenu;
3144
+ getSelectedIndex: typeof getContextMenuSelectedIndex;
3145
+ handleKey: typeof handleContextMenuKey;
3146
+ }>;
3147
+ type ContextMenuModule = typeof contextMenu;
3148
+
2801
3149
  /**
2802
3150
  * DevTools Widget
2803
3151
  *
@@ -3017,6 +3365,23 @@ declare function isDevTools(_world: World, eid: Entity): boolean;
3017
3365
  */
3018
3366
  declare function resetDevToolsStore(): void;
3019
3367
 
3368
+ /**
3369
+ * DevTools widget namespace.
3370
+ *
3371
+ * @example
3372
+ * ```typescript
3373
+ * import { devTools } from 'blecsd/widgets';
3374
+ * const dt = devTools.create(world, { position: 'right' });
3375
+ * ```
3376
+ */
3377
+
3378
+ declare const devTools: Readonly<{
3379
+ create: typeof createDevTools;
3380
+ is: typeof isDevTools;
3381
+ resetStore: typeof resetDevToolsStore;
3382
+ }>;
3383
+ type DevToolsModule = typeof devTools;
3384
+
3020
3385
  /**
3021
3386
  * FileManager Widget
3022
3387
  *
@@ -3175,15 +3540,15 @@ declare const FileManagerConfigSchema: z.ZodObject<{
3175
3540
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
3176
3541
  border: z.ZodOptional<z.ZodObject<{
3177
3542
  type: z.ZodOptional<z.ZodEnum<{
3178
- bg: "bg";
3179
3543
  none: "none";
3544
+ bg: "bg";
3180
3545
  line: "line";
3181
3546
  }>>;
3182
3547
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
3183
3548
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
3184
3549
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
3185
- ascii: "ascii";
3186
3550
  bold: "bold";
3551
+ ascii: "ascii";
3187
3552
  single: "single";
3188
3553
  double: "double";
3189
3554
  rounded: "rounded";
@@ -3334,6 +3699,16 @@ declare function resetFileManagerStore(): void;
3334
3699
  */
3335
3700
  declare function setReadDirFn(eid: Entity, fn: (dirPath: string) => FileEntry[]): void;
3336
3701
 
3702
+ declare const fileManager: Readonly<{
3703
+ create: typeof createFileManager;
3704
+ is: typeof isFileManager;
3705
+ handleKey: typeof handleFileManagerKey;
3706
+ setReadDirFn: typeof setReadDirFn;
3707
+ stateMap: Map<number, FileManagerState>;
3708
+ resetStore: typeof resetFileManagerStore;
3709
+ }>;
3710
+ type FileManagerModule = typeof fileManager;
3711
+
3337
3712
  /**
3338
3713
  * Flexbox Widget
3339
3714
  *
@@ -3514,16 +3889,16 @@ declare const FlexContainerConfigSchema: z.ZodObject<{
3514
3889
  }>>>;
3515
3890
  justifyContent: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
3516
3891
  center: "center";
3517
- start: "start";
3518
3892
  end: "end";
3893
+ start: "start";
3519
3894
  "space-between": "space-between";
3520
3895
  "space-around": "space-around";
3521
3896
  "space-evenly": "space-evenly";
3522
3897
  }>>>;
3523
3898
  alignItems: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
3524
3899
  center: "center";
3525
- start: "start";
3526
3900
  end: "end";
3901
+ start: "start";
3527
3902
  stretch: "stretch";
3528
3903
  }>>>;
3529
3904
  gap: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
@@ -3605,6 +3980,33 @@ declare function isFlexContainer(_world: World, eid: Entity): boolean;
3605
3980
  */
3606
3981
  declare function resetFlexContainerStore(): void;
3607
3982
 
3983
+ /**
3984
+ * Flexbox widget namespace.
3985
+ *
3986
+ * @example
3987
+ * ```typescript
3988
+ * import { flexbox } from 'blecsd/widgets';
3989
+ * const container = flexbox.createContainer(world, { direction: 'row' });
3990
+ * flexbox.addChild(world, container.eid, childEid, { grow: 1 });
3991
+ * ```
3992
+ */
3993
+
3994
+ declare const flexbox: Readonly<{
3995
+ createContainer: typeof createFlexContainer;
3996
+ addChild: typeof addFlexChild;
3997
+ isContainer: typeof isFlexContainer;
3998
+ resetStore: typeof resetFlexContainerStore;
3999
+ }>;
4000
+ type FlexboxModule = typeof flexbox;
4001
+
4002
+ declare const fonts: Readonly<{
4003
+ load: (name: FontName) => Promise<BitmapFont>;
4004
+ getCharBitmap: (font: BitmapFont, char: string) => CharBitmap | undefined;
4005
+ renderChar: (font: BitmapFont, char: string, options?: RenderCharOptions) => readonly string[];
4006
+ createFontNotFoundError: (name: string) => FontNotFoundError;
4007
+ }>;
4008
+ type FontsModule = typeof fonts;
4009
+
3608
4010
  /**
3609
4011
  * Footer Widget
3610
4012
  *
@@ -3722,8 +4124,8 @@ declare const FooterConfigSchema: z.ZodObject<{
3722
4124
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
3723
4125
  align: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
3724
4126
  left: "left";
3725
- right: "right";
3726
4127
  center: "center";
4128
+ right: "right";
3727
4129
  }>>>;
3728
4130
  }, z.core.$strip>;
3729
4131
  /**
@@ -3770,6 +4172,21 @@ declare const FooterConfigSchema: z.ZodObject<{
3770
4172
  */
3771
4173
  declare function createFooter(world: World, entity: Entity, config?: FooterConfig): FooterWidget;
3772
4174
 
4175
+ /**
4176
+ * Footer widget namespace.
4177
+ *
4178
+ * @example
4179
+ * ```typescript
4180
+ * import { footer } from 'blecsd/widgets';
4181
+ * const f = footer.create(world, { text: 'Status: Ready', align: 'left' });
4182
+ * ```
4183
+ */
4184
+
4185
+ declare const footer: Readonly<{
4186
+ create: typeof createFooter;
4187
+ }>;
4188
+ type FooterModule = typeof footer;
4189
+
3773
4190
  /**
3774
4191
  * RadioButton and RadioGroup Widgets
3775
4192
  *
@@ -4250,6 +4667,23 @@ declare function isForm(_world: World, eid: Entity): boolean;
4250
4667
  */
4251
4668
  declare function resetFormStore(): void;
4252
4669
 
4670
+ /**
4671
+ * FormWidget namespace.
4672
+ *
4673
+ * @example
4674
+ * ```typescript
4675
+ * import { formWidget } from 'blecsd/widgets';
4676
+ * const f = formWidget.create(world, { fields: [...] });
4677
+ * ```
4678
+ */
4679
+
4680
+ declare const formWidget: Readonly<{
4681
+ create: typeof createForm;
4682
+ is: typeof isForm;
4683
+ resetStore: typeof resetFormStore;
4684
+ }>;
4685
+ type FormWidgetModule = typeof formWidget;
4686
+
4253
4687
  /**
4254
4688
  * Gauge Widget
4255
4689
  *
@@ -4302,6 +4736,12 @@ interface GaugeConfig {
4302
4736
  readonly min?: number;
4303
4737
  /** Maximum value for display (default: 100) */
4304
4738
  readonly max?: number;
4739
+ /** Render mode: 'block' uses fill/empty chars, 'braille' uses braille dots (default: 'block') */
4740
+ readonly renderMode?: 'block' | 'braille';
4741
+ /** Gradient start color for braille mode (optional) */
4742
+ readonly gradientStart?: string | number;
4743
+ /** Gradient end color for braille mode (optional) */
4744
+ readonly gradientEnd?: string | number;
4305
4745
  }
4306
4746
  /**
4307
4747
  * Gauge widget interface providing chainable methods.
@@ -4319,6 +4759,10 @@ interface GaugeWidget {
4319
4759
  getLabel(): string;
4320
4760
  /** Sets the position */
4321
4761
  setPosition(x: number, y: number): GaugeWidget;
4762
+ /** Sets the render mode */
4763
+ setRenderMode(mode: 'block' | 'braille'): GaugeWidget;
4764
+ /** Gets the render mode */
4765
+ getRenderMode(): 'block' | 'braille';
4322
4766
  /** Destroys the widget */
4323
4767
  destroy(): void;
4324
4768
  }
@@ -4344,6 +4788,12 @@ declare const GaugeConfigSchema: z.ZodObject<{
4344
4788
  }, z.core.$strip>>>;
4345
4789
  min: z.ZodDefault<z.ZodNumber>;
4346
4790
  max: z.ZodDefault<z.ZodNumber>;
4791
+ renderMode: z.ZodDefault<z.ZodEnum<{
4792
+ block: "block";
4793
+ braille: "braille";
4794
+ }>>;
4795
+ gradientStart: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
4796
+ gradientEnd: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
4347
4797
  }, z.core.$strip>;
4348
4798
  /**
4349
4799
  * Gauge component marker.
@@ -4404,6 +4854,23 @@ declare function isGauge(_world: World, eid: Entity): boolean;
4404
4854
  */
4405
4855
  declare function resetGaugeStore(): void;
4406
4856
 
4857
+ /**
4858
+ * Gauge widget namespace.
4859
+ *
4860
+ * @example
4861
+ * ```typescript
4862
+ * import { gauge } from 'blecsd/widgets';
4863
+ * const g = gauge.create(world, { min: 0, max: 100, value: 50 });
4864
+ * ```
4865
+ */
4866
+
4867
+ declare const gauge: Readonly<{
4868
+ create: typeof createGauge;
4869
+ is: typeof isGauge;
4870
+ resetStore: typeof resetGaugeStore;
4871
+ }>;
4872
+ type GaugeModule = typeof gauge;
4873
+
4407
4874
  /**
4408
4875
  * Grid Widget
4409
4876
  *
@@ -4654,6 +5121,25 @@ declare function isGrid(_world: World, eid: Entity): boolean;
4654
5121
  */
4655
5122
  declare function resetGridStore(): void;
4656
5123
 
5124
+ /**
5125
+ * Grid widget namespace.
5126
+ *
5127
+ * @example
5128
+ * ```typescript
5129
+ * import { grid } from 'blecsd/widgets';
5130
+ * const g = grid.create(world, { rows: 3, cols: 3 });
5131
+ * grid.addTo(world, g.eid, childEid, { row: 1, col: 1 });
5132
+ * ```
5133
+ */
5134
+
5135
+ declare const grid: Readonly<{
5136
+ create: typeof createGrid;
5137
+ is: typeof isGrid;
5138
+ addTo: typeof addToGrid;
5139
+ resetStore: typeof resetGridStore;
5140
+ }>;
5141
+ type GridModule = typeof grid;
5142
+
4657
5143
  /**
4658
5144
  * Header Widget
4659
5145
  *
@@ -4772,8 +5258,8 @@ declare const HeaderConfigSchema: z.ZodObject<{
4772
5258
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
4773
5259
  align: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
4774
5260
  left: "left";
4775
- right: "right";
4776
5261
  center: "center";
5262
+ right: "right";
4777
5263
  }>>>;
4778
5264
  }, z.core.$strip>;
4779
5265
  /**
@@ -4819,6 +5305,21 @@ declare const HeaderConfigSchema: z.ZodObject<{
4819
5305
  */
4820
5306
  declare function createHeader(world: World, entity: Entity, config?: HeaderConfig): HeaderWidget;
4821
5307
 
5308
+ /**
5309
+ * Header widget namespace.
5310
+ *
5311
+ * @example
5312
+ * ```typescript
5313
+ * import { header } from 'blecsd/widgets';
5314
+ * const h = header.create(world, { text: 'My App', align: 'center' });
5315
+ * ```
5316
+ */
5317
+
5318
+ declare const header: Readonly<{
5319
+ create: typeof createHeader;
5320
+ }>;
5321
+ type HeaderModule = typeof header;
5322
+
4822
5323
  /**
4823
5324
  * Hover Text (Tooltip) System
4824
5325
  *
@@ -5093,27 +5594,27 @@ declare function createHoverTextManager(config?: HoverTextManagerConfig): HoverT
5093
5594
  * setHoverText(entity, 'Click here to submit');
5094
5595
  * ```
5095
5596
  */
5096
- declare function setHoverText(eid: Entity, text: string | HoverTextConfig): void;
5597
+ declare function setHoverText(_world: World, eid: Entity, text: string | HoverTextConfig): void;
5097
5598
  /**
5098
5599
  * Clears hover text for an entity.
5099
5600
  *
5100
5601
  * @param eid - The entity ID
5101
5602
  */
5102
- declare function clearHoverText(eid: Entity): void;
5603
+ declare function clearHoverText(_world: World, eid: Entity): void;
5103
5604
  /**
5104
5605
  * Gets hover text config for an entity.
5105
5606
  *
5106
5607
  * @param eid - The entity ID
5107
5608
  * @returns Hover text config or undefined
5108
5609
  */
5109
- declare function getHoverText(eid: Entity): HoverTextConfig | undefined;
5610
+ declare function getHoverText(_world: World, eid: Entity): HoverTextConfig | undefined;
5110
5611
  /**
5111
5612
  * Checks if an entity has hover text.
5112
5613
  *
5113
5614
  * @param eid - The entity ID
5114
5615
  * @returns true if entity has hover text
5115
5616
  */
5116
- declare function hasHoverText(eid: Entity): boolean;
5617
+ declare function hasHoverText(_world: World, eid: Entity): boolean;
5117
5618
  /**
5118
5619
  * Clears all hover text registrations.
5119
5620
  * Useful for cleanup or testing.
@@ -5130,106 +5631,59 @@ declare function getHoverTextCount(): number;
5130
5631
  declare function resetHoverTextStore(): void;
5131
5632
 
5132
5633
  /**
5133
- * ANSI image renderer for converting bitmap data to terminal-displayable cells.
5634
+ * HoverText (Tooltip) namespace.
5134
5635
  *
5135
- * Supports 256-color palette mapping, ASCII art mode, and bitmap scaling
5136
- * with alpha blending.
5137
- *
5138
- * @module media/render/ansi
5636
+ * @example
5637
+ * ```typescript
5638
+ * import { hoverText } from 'blecsd/widgets';
5639
+ * const manager = hoverText.createManager(world, {});
5640
+ * hoverText.set(world, eid, 'This is a tooltip');
5641
+ * const text = hoverText.get(world, eid);
5642
+ * hoverText.clear(world, eid);
5643
+ * ```
5139
5644
  */
5140
5645
 
5646
+ declare const hoverText: Readonly<{
5647
+ createManager: typeof createHoverTextManager;
5648
+ set: typeof setHoverText;
5649
+ get: typeof getHoverText;
5650
+ has: typeof hasHoverText;
5651
+ clear: typeof clearHoverText;
5652
+ clearAll: typeof clearAllHoverText;
5653
+ getCount: typeof getHoverTextCount;
5654
+ resetStore: typeof resetHoverTextStore;
5655
+ DEFAULT_CURSOR_OFFSET_X: 2;
5656
+ DEFAULT_CURSOR_OFFSET_Y: 1;
5657
+ DEFAULT_HIDE_DELAY: 100;
5658
+ DEFAULT_HOVER_DELAY: 500;
5659
+ DEFAULT_TOOLTIP_BG: 4281545523;
5660
+ DEFAULT_TOOLTIP_BORDER: 4287137928;
5661
+ DEFAULT_TOOLTIP_FG: 4294967295;
5662
+ }>;
5663
+ type HoverTextModule = typeof hoverText;
5664
+
5141
5665
  /**
5142
- * A single cell in the rendered output, representing one terminal character.
5666
+ * Image Widget
5143
5667
  *
5144
- * @example
5145
- * ```typescript
5146
- * import type { Cell } from 'blecsd';
5668
+ * Factory widget that renders bitmap images in the terminal.
5669
+ * Supports ANSI rendering (256-color, ASCII, braille) and an overlay mode
5670
+ * for external image protocols (w3m, iTerm2, Kitty, Sixel).
5147
5671
  *
5148
- * const cell: Cell = { char: '#', fg: 9, bg: 0 };
5149
- * ```
5672
+ * @module widgets/image
5150
5673
  */
5151
- interface Cell {
5152
- /** The character displayed in this cell */
5153
- readonly char: string;
5154
- /** Foreground color as a 256-color palette index */
5155
- readonly fg: number;
5156
- /** Background color as a 256-color palette index */
5157
- readonly bg: number;
5158
- }
5674
+
5675
+ /**
5676
+ * Image rendering type.
5677
+ * - 'ansi': Renders bitmap as ANSI escape sequences using 256-color palette
5678
+ * - 'overlay': Stores bitmap for external overlay protocols (w3m, iTerm2, Kitty, Sixel)
5679
+ */
5680
+ type ImageType = 'ansi' | 'overlay';
5159
5681
  /**
5160
- * A 2D grid of cells representing the rendered image.
5682
+ * Configuration for creating an Image widget.
5161
5683
  *
5162
5684
  * @example
5163
5685
  * ```typescript
5164
- * import type { CellMap } from 'blecsd';
5165
- *
5166
- * const map: CellMap = { width: 80, height: 24, cells: [[]] };
5167
- * ```
5168
- */
5169
- interface CellMap {
5170
- /** Width in terminal columns */
5171
- readonly width: number;
5172
- /** Height in terminal rows */
5173
- readonly height: number;
5174
- /** 2D array of cells, indexed as cells[row][col] */
5175
- readonly cells: readonly (readonly Cell[])[];
5176
- }
5177
- /**
5178
- * Raw RGBA bitmap pixel data.
5179
- *
5180
- * @example
5181
- * ```typescript
5182
- * import type { Bitmap } from 'blecsd';
5183
- *
5184
- * // 2x2 red image
5185
- * const bitmap: Bitmap = {
5186
- * width: 2,
5187
- * height: 2,
5188
- * data: new Uint8Array([
5189
- * 255, 0, 0, 255, 255, 0, 0, 255,
5190
- * 255, 0, 0, 255, 255, 0, 0, 255,
5191
- * ]),
5192
- * };
5193
- * ```
5194
- */
5195
- interface Bitmap {
5196
- /** Width in pixels */
5197
- readonly width: number;
5198
- /** Height in pixels */
5199
- readonly height: number;
5200
- /** RGBA pixel data (4 bytes per pixel: R, G, B, A) */
5201
- readonly data: Uint8Array;
5202
- }
5203
- /**
5204
- * Render mode for ANSI output.
5205
- * - 'color': Full 256-color background blocks using upper-half-block characters
5206
- * - 'ascii': ASCII art using luminance-based character ramp
5207
- * - 'braille': Braille pattern characters for higher resolution
5208
- */
5209
- type RenderMode = 'color' | 'ascii' | 'braille';
5210
-
5211
- /**
5212
- * Image Widget
5213
- *
5214
- * Factory widget that renders bitmap images in the terminal.
5215
- * Supports ANSI rendering (256-color, ASCII, braille) and an overlay mode
5216
- * for external image protocols (w3m, iTerm2, Kitty, Sixel).
5217
- *
5218
- * @module widgets/image
5219
- */
5220
-
5221
- /**
5222
- * Image rendering type.
5223
- * - 'ansi': Renders bitmap as ANSI escape sequences using 256-color palette
5224
- * - 'overlay': Stores bitmap for external overlay protocols (w3m, iTerm2, Kitty, Sixel)
5225
- */
5226
- type ImageType = 'ansi' | 'overlay';
5227
- /**
5228
- * Configuration for creating an Image widget.
5229
- *
5230
- * @example
5231
- * ```typescript
5232
- * import type { ImageConfig } from 'blecsd';
5686
+ * import type { ImageConfig } from 'blecsd';
5233
5687
  *
5234
5688
  * const config: ImageConfig = {
5235
5689
  * x: 10,
@@ -5260,6 +5714,10 @@ interface ImageConfig {
5260
5714
  readonly dither?: boolean;
5261
5715
  /** Whether to show initially (default: true) */
5262
5716
  readonly visible?: boolean;
5717
+ /** Preserve aspect ratio when resizing (default: true) */
5718
+ readonly preserveAspectRatio?: boolean;
5719
+ /** Graphics manager for overlay mode rendering (optional) */
5720
+ readonly graphicsManager?: GraphicsManagerState;
5263
5721
  }
5264
5722
  /**
5265
5723
  * Image widget interface providing chainable methods.
@@ -5304,50 +5762,25 @@ interface ImageWidget {
5304
5762
  setRenderMode(mode: RenderMode): ImageWidget;
5305
5763
  /** Gets the current render mode */
5306
5764
  getRenderMode(): RenderMode;
5765
+ /** Sets the graphics manager for overlay mode rendering */
5766
+ setGraphicsManager(manager: GraphicsManagerState): ImageWidget;
5307
5767
  /** Renders the current bitmap to an ANSI string */
5308
5768
  render(): string;
5769
+ /** Sets an animated image with multiple frames */
5770
+ setAnimatedImage(frames: readonly Bitmap[], delays: readonly number[], loopCount?: number): ImageWidget;
5771
+ /** Starts the animation playback */
5772
+ startAnimation(): ImageWidget;
5773
+ /** Stops the animation playback */
5774
+ stopAnimation(): ImageWidget;
5775
+ /** Checks if animation is currently playing */
5776
+ isAnimating(): boolean;
5777
+ /** Gets the current frame index */
5778
+ getCurrentFrame(): number;
5779
+ /** Sets the current frame by index */
5780
+ setFrame(index: number): ImageWidget;
5309
5781
  /** Destroys the image widget */
5310
5782
  destroy(): void;
5311
5783
  }
5312
- /**
5313
- * Zod schema for image widget configuration.
5314
- *
5315
- * @example
5316
- * ```typescript
5317
- * import { ImageConfigSchema } from 'blecsd';
5318
- *
5319
- * const result = ImageConfigSchema.safeParse({ type: 'ansi', width: 40 });
5320
- * ```
5321
- */
5322
- declare const ImageConfigSchema: z.ZodObject<{
5323
- x: z.ZodDefault<z.ZodNumber>;
5324
- y: z.ZodDefault<z.ZodNumber>;
5325
- width: z.ZodOptional<z.ZodNumber>;
5326
- height: z.ZodOptional<z.ZodNumber>;
5327
- type: z.ZodDefault<z.ZodEnum<{
5328
- ansi: "ansi";
5329
- overlay: "overlay";
5330
- }>>;
5331
- bitmap: z.ZodOptional<z.ZodObject<{
5332
- width: z.ZodNumber;
5333
- height: z.ZodNumber;
5334
- data: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
5335
- }, z.core.$strip>>;
5336
- renderMode: z.ZodDefault<z.ZodEnum<{
5337
- color: "color";
5338
- braille: "braille";
5339
- ascii: "ascii";
5340
- }>>;
5341
- dither: z.ZodDefault<z.ZodBoolean>;
5342
- visible: z.ZodDefault<z.ZodBoolean>;
5343
- }, z.core.$strip>;
5344
- /**
5345
- * Image component marker for identifying image entities.
5346
- */
5347
- declare const Image: {
5348
- /** Tag indicating this is an image widget (1 = yes) */
5349
- isImage: Uint8Array<ArrayBuffer>;
5350
- };
5351
5784
  /**
5352
5785
  * Creates an Image widget.
5353
5786
  *
@@ -5444,6 +5877,27 @@ declare function getImageCellMap(eid: Entity): CellMap | undefined;
5444
5877
  */
5445
5878
  declare function resetImageStore(): void;
5446
5879
 
5880
+ /**
5881
+ * Image widget namespace.
5882
+ *
5883
+ * @example
5884
+ * ```typescript
5885
+ * import { image } from 'blecsd/widgets';
5886
+ * const img = image.create(world, { bitmap: [...] });
5887
+ * const bitmap = image.getBitmap(world, img.eid);
5888
+ * const cellMap = image.getCellMap(world, img.eid);
5889
+ * ```
5890
+ */
5891
+
5892
+ declare const image: Readonly<{
5893
+ create: typeof createImage;
5894
+ is: typeof isImage;
5895
+ getBitmap: typeof getImageBitmap;
5896
+ getCellMap: typeof getImageCellMap;
5897
+ resetStore: typeof resetImageStore;
5898
+ }>;
5899
+ type ImageModule = typeof image;
5900
+
5447
5901
  /**
5448
5902
  * Layout Widget
5449
5903
  *
@@ -5564,37 +6018,37 @@ interface LayoutPosition {
5564
6018
  declare const LayoutConfigSchema: z.ZodObject<{
5565
6019
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
5566
6020
  left: "left";
5567
- top: "top";
6021
+ center: "center";
5568
6022
  right: "right";
6023
+ top: "top";
5569
6024
  bottom: "bottom";
5570
- center: "center";
5571
6025
  }>]>>;
5572
6026
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
5573
6027
  left: "left";
5574
- top: "top";
6028
+ center: "center";
5575
6029
  right: "right";
6030
+ top: "top";
5576
6031
  bottom: "bottom";
5577
- center: "center";
5578
6032
  }>]>>;
5579
6033
  width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
5580
6034
  height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
5581
6035
  layout: z.ZodOptional<z.ZodEnum<{
5582
- inline: "inline";
5583
6036
  flex: "flex";
6037
+ inline: "inline";
5584
6038
  grid: "grid";
5585
6039
  }>>;
5586
6040
  gap: z.ZodOptional<z.ZodNumber>;
5587
6041
  wrap: z.ZodOptional<z.ZodBoolean>;
5588
6042
  justify: z.ZodOptional<z.ZodEnum<{
5589
6043
  center: "center";
5590
- start: "start";
5591
6044
  end: "end";
6045
+ start: "start";
5592
6046
  "space-between": "space-between";
5593
6047
  }>>;
5594
6048
  align: z.ZodOptional<z.ZodEnum<{
5595
6049
  center: "center";
5596
- start: "start";
5597
6050
  end: "end";
6051
+ start: "start";
5598
6052
  }>>;
5599
6053
  cols: z.ZodOptional<z.ZodNumber>;
5600
6054
  direction: z.ZodOptional<z.ZodEnum<{
@@ -5747,6 +6201,28 @@ declare function getLayoutMode(_world: World, eid: Entity): LayoutMode;
5747
6201
  */
5748
6202
  declare function resetLayoutStore(): void;
5749
6203
 
6204
+ /**
6205
+ * LayoutWidget namespace.
6206
+ *
6207
+ * @example
6208
+ * ```typescript
6209
+ * import { layoutWidget } from 'blecsd/widgets';
6210
+ * const layout = layoutWidget.create(world, { mode: 'flex' });
6211
+ * const mode = layoutWidget.getMode(world, layout.eid);
6212
+ * ```
6213
+ */
6214
+
6215
+ declare const layoutWidget: Readonly<{
6216
+ create: typeof createLayout;
6217
+ is: typeof isLayout;
6218
+ getMode: typeof getLayoutMode;
6219
+ calculateFlex: typeof calculateFlexLayout;
6220
+ calculateGrid: typeof calculateGridLayout;
6221
+ calculateInline: typeof calculateInlineLayout;
6222
+ resetStore: typeof resetLayoutStore;
6223
+ }>;
6224
+ type LayoutWidgetModule = typeof layoutWidget;
6225
+
5750
6226
  /**
5751
6227
  * Line Widget
5752
6228
  *
@@ -5832,17 +6308,17 @@ declare const DEFAULT_LINE_LENGTH = 10;
5832
6308
  declare const LineConfigSchema: z.ZodObject<{
5833
6309
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
5834
6310
  left: "left";
5835
- top: "top";
6311
+ center: "center";
5836
6312
  right: "right";
6313
+ top: "top";
5837
6314
  bottom: "bottom";
5838
- center: "center";
5839
6315
  }>]>>;
5840
6316
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
5841
6317
  left: "left";
5842
- top: "top";
6318
+ center: "center";
5843
6319
  right: "right";
6320
+ top: "top";
5844
6321
  bottom: "bottom";
5845
- center: "center";
5846
6322
  }>]>>;
5847
6323
  orientation: z.ZodOptional<z.ZodEnum<{
5848
6324
  horizontal: "horizontal";
@@ -5951,6 +6427,32 @@ declare function getLineOrientation(_world: World, eid: Entity): LineOrientation
5951
6427
  */
5952
6428
  declare function resetLineStore(): void;
5953
6429
 
6430
+ /**
6431
+ * Line widget namespace.
6432
+ *
6433
+ * @example
6434
+ * ```typescript
6435
+ * import { line } from 'blecsd/widgets';
6436
+ * const l = line.create(world, { orientation: 'horizontal', length: 40 });
6437
+ * const char = line.getChar(world, l.eid);
6438
+ * line.setChar(world, l.eid, '=');
6439
+ * const orientation = line.getOrientation(world, l.eid);
6440
+ * ```
6441
+ */
6442
+
6443
+ declare const line: Readonly<{
6444
+ create: typeof createLine;
6445
+ is: typeof isLine;
6446
+ getChar: typeof getLineChar;
6447
+ setChar: typeof setLineChar;
6448
+ getOrientation: typeof getLineOrientation;
6449
+ resetStore: typeof resetLineStore;
6450
+ DEFAULT_HORIZONTAL_CHAR: "─";
6451
+ DEFAULT_VERTICAL_CHAR: "│";
6452
+ DEFAULT_LINE_LENGTH: 10;
6453
+ }>;
6454
+ type LineModule = typeof line;
6455
+
5954
6456
  /**
5955
6457
  * LineChart Widget
5956
6458
  *
@@ -6107,6 +6609,23 @@ declare function isLineChart(_world: World, eid: Entity): boolean;
6107
6609
  */
6108
6610
  declare function resetLineChartStore(): void;
6109
6611
 
6612
+ /**
6613
+ * LineChart widget namespace.
6614
+ *
6615
+ * @example
6616
+ * ```typescript
6617
+ * import { lineChart } from 'blecsd/widgets';
6618
+ * const chart = lineChart.create(world, { series: [...] });
6619
+ * ```
6620
+ */
6621
+
6622
+ declare const lineChart: Readonly<{
6623
+ create: typeof createLineChart;
6624
+ is: typeof isLineChart;
6625
+ resetStore: typeof resetLineChartStore;
6626
+ }>;
6627
+ type LineChartModule = typeof lineChart;
6628
+
6110
6629
  /**
6111
6630
  * List Widget
6112
6631
  *
@@ -6423,6 +6942,22 @@ declare function createList(world: World, entity: Entity, config?: ListWidgetCon
6423
6942
  */
6424
6943
  declare function isListWidget(world: World, eid: Entity): boolean;
6425
6944
 
6945
+ /**
6946
+ * ListWidget namespace.
6947
+ *
6948
+ * @example
6949
+ * ```typescript
6950
+ * import { listWidget } from 'blecsd/widgets';
6951
+ * const list = listWidget.create(world, { items: ['a', 'b', 'c'] });
6952
+ * ```
6953
+ */
6954
+
6955
+ declare const listWidget: Readonly<{
6956
+ create: typeof createList;
6957
+ is: typeof isListWidget;
6958
+ }>;
6959
+ type ListWidgetModule = typeof listWidget;
6960
+
6426
6961
  /**
6427
6962
  * Listbar Widget
6428
6963
  *
@@ -6679,6 +7214,23 @@ declare function createListbar(world: World, entity: Entity, config?: ListbarWid
6679
7214
  */
6680
7215
  declare function isListbarWidget(_world: World, eid: Entity): boolean;
6681
7216
 
7217
+ /**
7218
+ * Listbar widget namespace.
7219
+ *
7220
+ * @example
7221
+ * ```typescript
7222
+ * import { listbar } from 'blecsd/widgets';
7223
+ * const lb = listbar.create(world, { items: [...] });
7224
+ * ```
7225
+ */
7226
+
7227
+ declare const listbar: Readonly<{
7228
+ create: typeof createListbar;
7229
+ is: typeof isListbarWidget;
7230
+ resetStore: typeof resetListbarStore;
7231
+ }>;
7232
+ type ListbarModule = typeof listbar;
7233
+
6682
7234
  /**
6683
7235
  * ListTable Widget
6684
7236
  *
@@ -6869,8 +7421,8 @@ declare const ListTableWidgetConfigSchema: z.ZodObject<{
6869
7421
  pad: z.ZodDefault<z.ZodNumber>;
6870
7422
  align: z.ZodDefault<z.ZodEnum<{
6871
7423
  left: "left";
6872
- right: "right";
6873
7424
  center: "center";
7425
+ right: "right";
6874
7426
  }>>;
6875
7427
  style: z.ZodOptional<z.ZodObject<{
6876
7428
  border: z.ZodOptional<z.ZodObject<{
@@ -6900,8 +7452,8 @@ declare const ListTableWidgetConfigSchema: z.ZodObject<{
6900
7452
  maxWidth: z.ZodOptional<z.ZodNumber>;
6901
7453
  align: z.ZodOptional<z.ZodEnum<{
6902
7454
  left: "left";
6903
- right: "right";
6904
7455
  center: "center";
7456
+ right: "right";
6905
7457
  }>>;
6906
7458
  }, z.core.$strip>>>;
6907
7459
  selected: z.ZodDefault<z.ZodNumber>;
@@ -6980,6 +7532,22 @@ declare function createListTable(world: World, entity: Entity, config?: ListTabl
6980
7532
  */
6981
7533
  declare function isListTableWidget(world: World, eid: Entity): boolean;
6982
7534
 
7535
+ /**
7536
+ * ListTable widget namespace.
7537
+ *
7538
+ * @example
7539
+ * ```typescript
7540
+ * import { listTable } from 'blecsd/widgets';
7541
+ * const lt = listTable.create(world, { headers: [...], rows: [...] });
7542
+ * ```
7543
+ */
7544
+
7545
+ declare const listTable: Readonly<{
7546
+ create: typeof createListTable;
7547
+ is: typeof isListTableWidget;
7548
+ }>;
7549
+ type ListTableModule = typeof listTable;
7550
+
6983
7551
  /**
6984
7552
  * Loading Widget
6985
7553
  *
@@ -7182,6 +7750,33 @@ declare function updateLoadingAnimation(world: World, eid: Entity, deltaMs: numb
7182
7750
  */
7183
7751
  declare function resetLoadingStore(): void;
7184
7752
 
7753
+ /**
7754
+ * Loading widget namespace.
7755
+ *
7756
+ * @example
7757
+ * ```typescript
7758
+ * import { loading } from 'blecsd/widgets';
7759
+ * const loader = loading.create(world, { message: 'Loading...' });
7760
+ * loading.show(world, loader.eid);
7761
+ * loading.setMessage(world, loader.eid, 'Processing...');
7762
+ * loading.hide(world, loader.eid);
7763
+ * loading.updateAnimation(world, deltaTime);
7764
+ * ```
7765
+ */
7766
+
7767
+ declare const loading: Readonly<{
7768
+ create: typeof createLoading;
7769
+ is: typeof isLoadingWidget;
7770
+ show: typeof showLoading;
7771
+ hide: typeof hideLoading;
7772
+ setMessage: typeof setLoadingMessage;
7773
+ updateAnimation: typeof updateLoadingAnimation;
7774
+ resetStore: typeof resetLoadingStore;
7775
+ DEFAULT_LOADING_BG: 0;
7776
+ DEFAULT_LOADING_FG: 4294967295;
7777
+ }>;
7778
+ type LoadingModule = typeof loading;
7779
+
7185
7780
  /**
7186
7781
  * Log Widget
7187
7782
  *
@@ -7362,31 +7957,31 @@ interface LogWidget {
7362
7957
  declare const LogConfigSchema: z.ZodObject<{
7363
7958
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
7364
7959
  left: "left";
7365
- top: "top";
7960
+ center: "center";
7366
7961
  right: "right";
7962
+ top: "top";
7367
7963
  bottom: "bottom";
7368
- center: "center";
7369
7964
  }>]>>;
7370
7965
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
7371
7966
  left: "left";
7372
- top: "top";
7967
+ center: "center";
7373
7968
  right: "right";
7969
+ top: "top";
7374
7970
  bottom: "bottom";
7375
- center: "center";
7376
7971
  }>]>>;
7377
7972
  right: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
7378
7973
  left: "left";
7379
- top: "top";
7974
+ center: "center";
7380
7975
  right: "right";
7976
+ top: "top";
7381
7977
  bottom: "bottom";
7382
- center: "center";
7383
7978
  }>]>>;
7384
7979
  bottom: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
7385
7980
  left: "left";
7386
- top: "top";
7981
+ center: "center";
7387
7982
  right: "right";
7983
+ top: "top";
7388
7984
  bottom: "bottom";
7389
- center: "center";
7390
7985
  }>]>>;
7391
7986
  width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
7392
7987
  height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
@@ -7394,15 +7989,15 @@ declare const LogConfigSchema: z.ZodObject<{
7394
7989
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
7395
7990
  border: z.ZodOptional<z.ZodObject<{
7396
7991
  type: z.ZodOptional<z.ZodEnum<{
7397
- bg: "bg";
7398
7992
  none: "none";
7993
+ bg: "bg";
7399
7994
  line: "line";
7400
7995
  }>>;
7401
7996
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
7402
7997
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
7403
7998
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
7404
- ascii: "ascii";
7405
7999
  bold: "bold";
8000
+ ascii: "ascii";
7406
8001
  single: "single";
7407
8002
  double: "double";
7408
8003
  rounded: "rounded";
@@ -7537,6 +8132,29 @@ declare function getScrollback(_world: World, eid: Entity): number;
7537
8132
  */
7538
8133
  declare function resetLogStore(): void;
7539
8134
 
8135
+ /**
8136
+ * Log widget namespace.
8137
+ *
8138
+ * @example
8139
+ * ```typescript
8140
+ * import { log } from 'blecsd/widgets';
8141
+ * const l = log.create(world, { scrollback: 1000 });
8142
+ * const scrollback = log.getScrollback(world, l.eid);
8143
+ * const keysEnabled = log.isKeysScrollEnabled(world, l.eid);
8144
+ * const mouseEnabled = log.isMouseScrollEnabled(world, l.eid);
8145
+ * ```
8146
+ */
8147
+
8148
+ declare const log: Readonly<{
8149
+ create: typeof createLog;
8150
+ is: typeof isLog;
8151
+ getScrollback: typeof getScrollback;
8152
+ isKeysScrollEnabled: typeof isKeysScrollEnabled$1;
8153
+ isMouseScrollEnabled: typeof isMouseScrollEnabled$1;
8154
+ resetStore: typeof resetLogStore;
8155
+ }>;
8156
+ type LogModule = typeof log;
8157
+
7540
8158
  /**
7541
8159
  * Message Widget
7542
8160
  *
@@ -7653,17 +8271,17 @@ interface MessageWidget {
7653
8271
  declare const MessageConfigSchema: z.ZodObject<{
7654
8272
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
7655
8273
  left: "left";
7656
- top: "top";
8274
+ center: "center";
7657
8275
  right: "right";
8276
+ top: "top";
7658
8277
  bottom: "bottom";
7659
- center: "center";
7660
8278
  }>]>>;
7661
8279
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
7662
8280
  left: "left";
7663
- top: "top";
8281
+ center: "center";
7664
8282
  right: "right";
8283
+ top: "top";
7665
8284
  bottom: "bottom";
7666
- center: "center";
7667
8285
  }>]>>;
7668
8286
  width: z.ZodOptional<z.ZodNumber>;
7669
8287
  height: z.ZodOptional<z.ZodNumber>;
@@ -7681,15 +8299,15 @@ declare const MessageConfigSchema: z.ZodObject<{
7681
8299
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
7682
8300
  border: z.ZodOptional<z.ZodObject<{
7683
8301
  type: z.ZodOptional<z.ZodEnum<{
7684
- bg: "bg";
7685
8302
  none: "none";
8303
+ bg: "bg";
7686
8304
  line: "line";
7687
8305
  }>>;
7688
8306
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
7689
8307
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
7690
8308
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
7691
- ascii: "ascii";
7692
8309
  bold: "bold";
8310
+ ascii: "ascii";
7693
8311
  single: "single";
7694
8312
  double: "double";
7695
8313
  rounded: "rounded";
@@ -7881,6 +8499,24 @@ declare function handleMessageKey(world: World, eid: Entity): boolean;
7881
8499
  */
7882
8500
  declare function resetMessageStore(): void;
7883
8501
 
8502
+ declare const message: Readonly<{
8503
+ create: typeof createMessage;
8504
+ is: typeof isMessage;
8505
+ showInfo: typeof showInfo;
8506
+ showWarning: typeof showWarning;
8507
+ showError: typeof showError;
8508
+ showSuccess: typeof showSuccess;
8509
+ handleKey: typeof handleMessageKey;
8510
+ handleClick: typeof handleMessageClick;
8511
+ isDismissOnKey: typeof isDismissOnKey;
8512
+ isDismissOnClick: typeof isDismissOnClick;
8513
+ resetStore: typeof resetMessageStore;
8514
+ DEFAULT_MESSAGE_PADDING: 1;
8515
+ DEFAULT_MESSAGE_STYLES: Record<MessageType, MessageStyleConfig>;
8516
+ DEFAULT_MESSAGE_TIMEOUT: 3000;
8517
+ }>;
8518
+ type MessageModule = typeof message;
8519
+
7884
8520
  /**
7885
8521
  * Modal Widget
7886
8522
  *
@@ -8006,15 +8642,15 @@ declare const ModalConfigSchema: z.ZodObject<{
8006
8642
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
8007
8643
  border: z.ZodOptional<z.ZodObject<{
8008
8644
  type: z.ZodOptional<z.ZodEnum<{
8009
- bg: "bg";
8010
8645
  none: "none";
8646
+ bg: "bg";
8011
8647
  line: "line";
8012
8648
  }>>;
8013
8649
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
8014
8650
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
8015
8651
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
8016
- ascii: "ascii";
8017
8652
  bold: "bold";
8653
+ ascii: "ascii";
8018
8654
  single: "single";
8019
8655
  double: "double";
8020
8656
  rounded: "rounded";
@@ -8228,6 +8864,37 @@ declare function handleModalBackdropClick(world: World, eid: Entity): boolean;
8228
8864
  */
8229
8865
  declare function handleModalEscape(world: World, eid: Entity): boolean;
8230
8866
 
8867
+ /**
8868
+ * Modal widget namespace.
8869
+ *
8870
+ * @example
8871
+ * ```typescript
8872
+ * import { modal } from 'blecsd/widgets';
8873
+ * const m = modal.create(world, { title: 'Confirm', content: 'Are you sure?' });
8874
+ * modal.open(world, m.eid);
8875
+ * const isOpen = modal.isOpen(world, m.eid);
8876
+ * const stack = modal.getStack(world);
8877
+ * modal.handleEscape(world, keyEvent);
8878
+ * modal.handleBackdropClick(world, m.eid, mouseEvent);
8879
+ * modal.close(world, m.eid);
8880
+ * modal.closeAll(world);
8881
+ * ```
8882
+ */
8883
+
8884
+ declare const modal: Readonly<{
8885
+ create: typeof createModal;
8886
+ is: typeof isModal;
8887
+ open: typeof openModal;
8888
+ close: typeof closeModal;
8889
+ closeAll: typeof closeAllModals;
8890
+ isOpen: typeof isModalOpen;
8891
+ getStack: typeof getModalStack;
8892
+ handleEscape: typeof handleModalEscape;
8893
+ handleBackdropClick: typeof handleModalBackdropClick;
8894
+ resetStore: typeof resetModalStore;
8895
+ }>;
8896
+ type ModalModule = typeof modal;
8897
+
8231
8898
  /**
8232
8899
  * Multi-Select Widget
8233
8900
  *
@@ -8523,6 +9190,27 @@ declare function isMultiSelect(_world: World, eid: Entity): boolean;
8523
9190
  */
8524
9191
  declare function resetMultiSelectStore(): void;
8525
9192
 
9193
+ /**
9194
+ * MultiSelect widget namespace.
9195
+ *
9196
+ * @example
9197
+ * ```typescript
9198
+ * import { multiSelect } from 'blecsd/widgets';
9199
+ * const ms = multiSelect.create(world, { items: [...] });
9200
+ * const selected = multiSelect.getSelectedItems(world, ms.eid);
9201
+ * multiSelect.onSelectionChange(world, ms.eid, callback);
9202
+ * ```
9203
+ */
9204
+
9205
+ declare const multiSelect: Readonly<{
9206
+ create: typeof createMultiSelect;
9207
+ is: typeof isMultiSelect;
9208
+ getSelectedItems: typeof getSelectedItems;
9209
+ onSelectionChange: typeof onSelectionChange;
9210
+ resetStore: typeof resetMultiSelectStore;
9211
+ }>;
9212
+ type MultiSelectModule = typeof multiSelect;
9213
+
8526
9214
  /**
8527
9215
  * Panel Widget
8528
9216
  *
@@ -8775,25 +9463,25 @@ declare const EXPAND_CHAR = "\u25B6";
8775
9463
  declare const PanelConfigSchema: z.ZodObject<{
8776
9464
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
8777
9465
  left: "left";
8778
- top: "top";
9466
+ center: "center";
8779
9467
  right: "right";
9468
+ top: "top";
8780
9469
  bottom: "bottom";
8781
- center: "center";
8782
9470
  }>]>>;
8783
9471
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
8784
9472
  left: "left";
8785
- top: "top";
9473
+ center: "center";
8786
9474
  right: "right";
9475
+ top: "top";
8787
9476
  bottom: "bottom";
8788
- center: "center";
8789
9477
  }>]>>;
8790
9478
  width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
8791
9479
  height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
8792
9480
  title: z.ZodOptional<z.ZodString>;
8793
9481
  titleAlign: z.ZodOptional<z.ZodEnum<{
8794
9482
  left: "left";
8795
- right: "right";
8796
9483
  center: "center";
9484
+ right: "right";
8797
9485
  }>>;
8798
9486
  closable: z.ZodOptional<z.ZodBoolean>;
8799
9487
  collapsible: z.ZodOptional<z.ZodBoolean>;
@@ -8806,8 +9494,8 @@ declare const PanelConfigSchema: z.ZodObject<{
8806
9494
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
8807
9495
  align: z.ZodOptional<z.ZodEnum<{
8808
9496
  left: "left";
8809
- right: "right";
8810
9497
  center: "center";
9498
+ right: "right";
8811
9499
  }>>;
8812
9500
  }, z.core.$strip>>;
8813
9501
  content: z.ZodOptional<z.ZodObject<{
@@ -8816,15 +9504,15 @@ declare const PanelConfigSchema: z.ZodObject<{
8816
9504
  }, z.core.$strip>>;
8817
9505
  border: z.ZodOptional<z.ZodObject<{
8818
9506
  type: z.ZodOptional<z.ZodEnum<{
8819
- bg: "bg";
8820
9507
  none: "none";
9508
+ bg: "bg";
8821
9509
  line: "line";
8822
9510
  }>>;
8823
9511
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
8824
9512
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
8825
9513
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
8826
- ascii: "ascii";
8827
9514
  bold: "bold";
9515
+ ascii: "ascii";
8828
9516
  single: "single";
8829
9517
  double: "double";
8830
9518
  rounded: "rounded";
@@ -8962,6 +9650,37 @@ declare function renderPanelTitleBar(_world: World, eid: Entity, width: number):
8962
9650
  */
8963
9651
  declare function resetPanelStore(): void;
8964
9652
 
9653
+ /**
9654
+ * Panel widget namespace.
9655
+ *
9656
+ * @example
9657
+ * ```typescript
9658
+ * import { panel } from 'blecsd/widgets';
9659
+ * const p = panel.create(world, { title: 'Settings' });
9660
+ * const title = panel.getTitle(world, p.eid);
9661
+ * panel.setTitle(world, p.eid, 'New Title');
9662
+ * const align = panel.getTitleAlign(world, p.eid);
9663
+ * const collapsed = panel.isCollapsed(world, p.eid);
9664
+ * panel.renderTitleBar(world, p.eid);
9665
+ * ```
9666
+ */
9667
+
9668
+ declare const panel: Readonly<{
9669
+ create: typeof createPanel;
9670
+ is: typeof isPanel;
9671
+ getTitle: typeof getPanelTitle;
9672
+ setTitle: typeof setPanelTitle;
9673
+ getTitleAlign: typeof getPanelTitleAlign;
9674
+ isCollapsed: typeof isPanelCollapsed;
9675
+ renderTitleBar: typeof renderPanelTitleBar;
9676
+ resetStore: typeof resetPanelStore;
9677
+ CLOSE_BUTTON_CHAR: "✕";
9678
+ COLLAPSE_CHAR: "▼";
9679
+ EXPAND_CHAR: "▶";
9680
+ DEFAULT_PANEL_TITLE: "";
9681
+ }>;
9682
+ type PanelModule = typeof panel;
9683
+
8965
9684
  /**
8966
9685
  * ProgressBar Widget
8967
9686
  *
@@ -9125,6 +9844,22 @@ declare function isProgressBar(_world: World, eid: Entity): boolean;
9125
9844
  */
9126
9845
  declare function resetProgressBarStore(): void;
9127
9846
 
9847
+ /**
9848
+ * ProgressBarWidget namespace.
9849
+ *
9850
+ * @example
9851
+ * ```typescript
9852
+ * import { progressBarWidget } from 'blecsd/widgets';
9853
+ * const pb = progressBarWidget.create(world, { min: 0, max: 100, value: 50 });
9854
+ * ```
9855
+ */
9856
+
9857
+ declare const progressBarWidget: Readonly<{
9858
+ create: typeof createProgressBar;
9859
+ resetStore: typeof resetProgressBarStore;
9860
+ }>;
9861
+ type ProgressBarWidgetModule = typeof progressBarWidget;
9862
+
9128
9863
  /**
9129
9864
  * Prompt Widget
9130
9865
  *
@@ -9268,15 +10003,15 @@ interface PromptWidget {
9268
10003
  */
9269
10004
  declare const PromptBorderConfigSchema: z.ZodOptional<z.ZodObject<{
9270
10005
  type: z.ZodOptional<z.ZodEnum<{
9271
- bg: "bg";
9272
10006
  none: "none";
10007
+ bg: "bg";
9273
10008
  line: "line";
9274
10009
  }>>;
9275
10010
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
9276
10011
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
9277
10012
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
9278
- ascii: "ascii";
9279
10013
  bold: "bold";
10014
+ ascii: "ascii";
9280
10015
  single: "single";
9281
10016
  double: "double";
9282
10017
  rounded: "rounded";
@@ -9316,15 +10051,15 @@ declare const PromptConfigSchema: z.ZodObject<{
9316
10051
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
9317
10052
  border: z.ZodOptional<z.ZodObject<{
9318
10053
  type: z.ZodOptional<z.ZodEnum<{
9319
- bg: "bg";
9320
10054
  none: "none";
10055
+ bg: "bg";
9321
10056
  line: "line";
9322
10057
  }>>;
9323
10058
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
9324
10059
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
9325
10060
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
9326
- ascii: "ascii";
9327
10061
  bold: "bold";
10062
+ ascii: "ascii";
9328
10063
  single: "single";
9329
10064
  double: "double";
9330
10065
  rounded: "rounded";
@@ -9440,7 +10175,7 @@ declare function prompt(world: World, message: string, options?: Omit<PromptConf
9440
10175
  * }
9441
10176
  * ```
9442
10177
  */
9443
- declare function isPrompt(eid: Entity): boolean;
10178
+ declare function isPrompt(_world: World, eid: Entity): boolean;
9444
10179
  /**
9445
10180
  * Resets the prompt component store and state map. Useful for testing.
9446
10181
  *
@@ -9476,6 +10211,31 @@ declare function resetPromptStore(): void;
9476
10211
  */
9477
10212
  declare function handlePromptKey(widget: PromptWidget, key: string): boolean;
9478
10213
 
10214
+ /**
10215
+ * PromptWidget namespace.
10216
+ *
10217
+ * @example
10218
+ * ```typescript
10219
+ * import { promptWidget } from 'blecsd/widgets';
10220
+ * const p = promptWidget.create(world, { message: 'Enter name:' });
10221
+ * const result = await promptWidget.prompt(world, 'Enter email:');
10222
+ * promptWidget.handleKey(world, p.eid, keyEvent);
10223
+ * ```
10224
+ */
10225
+
10226
+ declare const promptWidget: Readonly<{
10227
+ create: typeof createPrompt;
10228
+ is: typeof isPrompt;
10229
+ prompt: typeof prompt;
10230
+ handleKey: typeof handlePromptKey;
10231
+ resetStore: typeof resetPromptStore;
10232
+ DEFAULT_PROMPT_BG: 255;
10233
+ DEFAULT_PROMPT_FG: 4294967295;
10234
+ DEFAULT_PROMPT_HEIGHT: 5;
10235
+ DEFAULT_PROMPT_WIDTH: 40;
10236
+ }>;
10237
+ type PromptWidgetModule = typeof promptWidget;
10238
+
9479
10239
  /**
9480
10240
  * Question Widget
9481
10241
  *
@@ -9608,15 +10368,15 @@ declare const QuestionConfigSchema: z.ZodObject<{
9608
10368
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
9609
10369
  border: z.ZodOptional<z.ZodObject<{
9610
10370
  type: z.ZodOptional<z.ZodEnum<{
9611
- bg: "bg";
9612
10371
  none: "none";
10372
+ bg: "bg";
9613
10373
  line: "line";
9614
10374
  }>>;
9615
10375
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
9616
10376
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
9617
10377
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
9618
- ascii: "ascii";
9619
10378
  bold: "bold";
10379
+ ascii: "ascii";
9620
10380
  single: "single";
9621
10381
  double: "double";
9622
10382
  rounded: "rounded";
@@ -9776,6 +10536,53 @@ declare function handleQuestionKey(widget: QuestionWidget, key: string): boolean
9776
10536
  */
9777
10537
  declare function resetQuestionStore(): void;
9778
10538
 
10539
+ /**
10540
+ * Question widget namespace.
10541
+ *
10542
+ * @example
10543
+ * ```typescript
10544
+ * import { question } from 'blecsd/widgets';
10545
+ * const q = question.create(world, { message: 'Are you sure?' });
10546
+ * const answer = await question.ask(world, 'Proceed?');
10547
+ * const confirmed = await question.confirm(world, 'Delete file?');
10548
+ * question.handleKey(world, q.eid, keyEvent);
10549
+ * ```
10550
+ */
10551
+
10552
+ declare const question: Readonly<{
10553
+ create: typeof createQuestion;
10554
+ is: typeof isQuestion;
10555
+ ask: typeof ask;
10556
+ confirm: typeof confirm;
10557
+ handleKey: typeof handleQuestionKey;
10558
+ resetStore: typeof resetQuestionStore;
10559
+ DEFAULT_QUESTION_BG: 0;
10560
+ DEFAULT_QUESTION_FG: 4294967295;
10561
+ DEFAULT_QUESTION_HEIGHT: 5;
10562
+ DEFAULT_QUESTION_WIDTH: 40;
10563
+ }>;
10564
+ type QuestionModule = typeof question;
10565
+
10566
+ /**
10567
+ * RadioWidget namespace.
10568
+ *
10569
+ * @example
10570
+ * ```typescript
10571
+ * import { radioWidget } from 'blecsd/widgets';
10572
+ * const btn = radioWidget.createButton(world, { label: 'Option A', group: 'group1' });
10573
+ * const group = radioWidget.createGroup(world, { options: [...] });
10574
+ * ```
10575
+ */
10576
+
10577
+ declare const radioWidget: Readonly<{
10578
+ createButton: typeof createRadioButton;
10579
+ createGroup: typeof createRadioGroup;
10580
+ isButton: typeof isRadioButtonWidget;
10581
+ isGroup: typeof isRadioGroupWidget;
10582
+ resetStore: typeof resetRadioWidgetStore;
10583
+ }>;
10584
+ type RadioWidgetModule = typeof radioWidget;
10585
+
9779
10586
  /**
9780
10587
  * Widget Registry System
9781
10588
  *
@@ -9817,6 +10624,37 @@ interface WidgetRegistration<TConfig = unknown, TWidget = unknown> {
9817
10624
  readonly description?: string;
9818
10625
  /** Optional tags for categorization */
9819
10626
  readonly tags?: readonly string[];
10627
+ /** Optional Zod schema for config validation */
10628
+ readonly configSchema?: z.ZodType<TConfig>;
10629
+ /** Optional category (e.g., 'basic', 'data', 'feedback', 'layout', 'display') */
10630
+ readonly category?: string;
10631
+ /** Optional version string */
10632
+ readonly version?: string;
10633
+ /** Optional list of required ECS components */
10634
+ readonly requiredComponents?: readonly string[];
10635
+ /** Optional list of supported events */
10636
+ readonly supportedEvents?: readonly string[];
10637
+ }
10638
+ /**
10639
+ * Widget metadata returned by the info method.
10640
+ */
10641
+ interface WidgetInfo {
10642
+ /** Widget type name */
10643
+ readonly name: string;
10644
+ /** Widget description */
10645
+ readonly description: string;
10646
+ /** Widget category */
10647
+ readonly category: string;
10648
+ /** Widget tags */
10649
+ readonly tags: readonly string[];
10650
+ /** Widget version */
10651
+ readonly version: string;
10652
+ /** Required ECS components */
10653
+ readonly requiredComponents: readonly string[];
10654
+ /** Supported event types */
10655
+ readonly supportedEvents: readonly string[];
10656
+ /** Whether the widget has a config schema */
10657
+ readonly hasConfigSchema: boolean;
9820
10658
  }
9821
10659
  /**
9822
10660
  * Widget registry interface.
@@ -9881,6 +10719,52 @@ interface WidgetRegistry {
9881
10719
  * @param tag - Tag to filter by
9882
10720
  */
9883
10721
  listByTag(tag: string): readonly string[];
10722
+ /**
10723
+ * Lists widget types by category.
10724
+ *
10725
+ * @param category - Category to filter by
10726
+ * @returns Array of widget type names in that category
10727
+ *
10728
+ * @example
10729
+ * ```typescript
10730
+ * const registry = createWidgetRegistry();
10731
+ * registerBuiltinWidgets(registry);
10732
+ * const basicWidgets = registry.listByCategory('basic');
10733
+ * // ['box', 'line', 'text']
10734
+ * ```
10735
+ */
10736
+ listByCategory(category: string): readonly string[];
10737
+ /**
10738
+ * Searches for widgets by name or description.
10739
+ *
10740
+ * @param query - Search query (case-insensitive)
10741
+ * @returns Array of matching widget type names
10742
+ *
10743
+ * @example
10744
+ * ```typescript
10745
+ * const registry = createWidgetRegistry();
10746
+ * registerBuiltinWidgets(registry);
10747
+ * const results = registry.search('scroll');
10748
+ * // ['scrollableBox', 'scrollableText']
10749
+ * ```
10750
+ */
10751
+ search(query: string): readonly string[];
10752
+ /**
10753
+ * Gets detailed information about a widget.
10754
+ *
10755
+ * @param name - Widget type name (case-insensitive)
10756
+ * @returns Widget info or undefined if not found
10757
+ *
10758
+ * @example
10759
+ * ```typescript
10760
+ * const registry = createWidgetRegistry();
10761
+ * registerBuiltinWidgets(registry);
10762
+ * const info = registry.info('box');
10763
+ * console.log(info?.category); // 'basic'
10764
+ * console.log(info?.requiredComponents); // ['Position', 'Dimensions', 'Border']
10765
+ * ```
10766
+ */
10767
+ info(name: string): WidgetInfo | undefined;
9884
10768
  /**
9885
10769
  * Unregisters a widget type.
9886
10770
  *
@@ -9995,14 +10879,166 @@ declare function isWidgetType(name: string): boolean;
9995
10879
  */
9996
10880
  declare function getWidgetsByTag(tag: string): readonly string[];
9997
10881
 
10882
+ declare const registry: Readonly<{
10883
+ create: typeof createWidgetRegistry;
10884
+ registerBuiltins: typeof registerBuiltinWidgets;
10885
+ getWidgetTypes: typeof getWidgetTypes;
10886
+ getWidgetsByTag: typeof getWidgetsByTag;
10887
+ isWidgetType: typeof isWidgetType;
10888
+ defaultRegistry: WidgetRegistry;
10889
+ }>;
10890
+ type RegistryModule = typeof registry;
10891
+
10892
+ /**
10893
+ * ScrollableBox Widget API
10894
+ *
10895
+ * Standalone API functions for working with ScrollableBox widgets.
10896
+ *
10897
+ * @module widgets/scrollableBox/api
10898
+ */
10899
+
10900
+ /**
10901
+ * Checks if an entity is a scrollable box widget.
10902
+ *
10903
+ * @param _world - The ECS world (unused, for API consistency)
10904
+ * @param eid - The entity ID
10905
+ * @returns true if the entity is a scrollable box
10906
+ *
10907
+ * @example
10908
+ * ```typescript
10909
+ * import { isScrollableBox } from 'blecsd/widgets';
10910
+ *
10911
+ * if (isScrollableBox(world, entity)) {
10912
+ * // Handle scrollable-box-specific logic
10913
+ * }
10914
+ * ```
10915
+ */
10916
+ declare function isScrollableBox(_world: World, eid: Entity): boolean;
10917
+ /**
10918
+ * Checks if mouse scrolling is enabled for a scrollable box.
10919
+ *
10920
+ * @param _world - The ECS world (unused, for API consistency)
10921
+ * @param eid - The entity ID
10922
+ * @returns true if mouse scrolling is enabled
10923
+ */
10924
+ declare function isMouseScrollEnabled(_world: World, eid: Entity): boolean;
10925
+ /**
10926
+ * Checks if keyboard scrolling is enabled for a scrollable box.
10927
+ *
10928
+ * @param _world - The ECS world (unused, for API consistency)
10929
+ * @param eid - The entity ID
10930
+ * @returns true if keyboard scrolling is enabled
10931
+ */
10932
+ declare function isKeysScrollEnabled(_world: World, eid: Entity): boolean;
10933
+ /**
10934
+ * Resets the ScrollableBox component store. Useful for testing.
10935
+ * @internal
10936
+ */
10937
+ declare function resetScrollableBoxStore(): void;
10938
+
10939
+ /**
10940
+ * ScrollableBox Widget Configuration
10941
+ *
10942
+ * Zod schemas for runtime validation of scrollable box configuration.
10943
+ *
10944
+ * @module widgets/scrollableBox/config
10945
+ */
10946
+
10947
+ /**
10948
+ * Zod schema for scrollable box widget configuration.
10949
+ */
10950
+ declare const ScrollableBoxConfigSchema: z.ZodObject<{
10951
+ left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
10952
+ left: "left";
10953
+ center: "center";
10954
+ right: "right";
10955
+ top: "top";
10956
+ bottom: "bottom";
10957
+ }>]>>;
10958
+ top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
10959
+ left: "left";
10960
+ center: "center";
10961
+ right: "right";
10962
+ top: "top";
10963
+ bottom: "bottom";
10964
+ }>]>>;
10965
+ right: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
10966
+ left: "left";
10967
+ center: "center";
10968
+ right: "right";
10969
+ top: "top";
10970
+ bottom: "bottom";
10971
+ }>]>>;
10972
+ bottom: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
10973
+ left: "left";
10974
+ center: "center";
10975
+ right: "right";
10976
+ top: "top";
10977
+ bottom: "bottom";
10978
+ }>]>>;
10979
+ width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
10980
+ height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
10981
+ fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10982
+ bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10983
+ border: z.ZodOptional<z.ZodObject<{
10984
+ type: z.ZodOptional<z.ZodEnum<{
10985
+ none: "none";
10986
+ bg: "bg";
10987
+ line: "line";
10988
+ }>>;
10989
+ fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10990
+ bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10991
+ ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
10992
+ bold: "bold";
10993
+ ascii: "ascii";
10994
+ single: "single";
10995
+ double: "double";
10996
+ rounded: "rounded";
10997
+ }>, z.ZodCustom<BorderCharset, BorderCharset>]>>;
10998
+ }, z.core.$strip>>;
10999
+ padding: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
11000
+ left: z.ZodOptional<z.ZodNumber>;
11001
+ top: z.ZodOptional<z.ZodNumber>;
11002
+ right: z.ZodOptional<z.ZodNumber>;
11003
+ bottom: z.ZodOptional<z.ZodNumber>;
11004
+ }, z.core.$strip>]>>;
11005
+ content: z.ZodOptional<z.ZodString>;
11006
+ align: z.ZodOptional<z.ZodEnum<{
11007
+ left: "left";
11008
+ center: "center";
11009
+ right: "right";
11010
+ }>>;
11011
+ valign: z.ZodOptional<z.ZodEnum<{
11012
+ top: "top";
11013
+ middle: "middle";
11014
+ bottom: "bottom";
11015
+ }>>;
11016
+ scrollbar: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
11017
+ mode: z.ZodOptional<z.ZodEnum<{
11018
+ auto: "auto";
11019
+ visible: "visible";
11020
+ hidden: "hidden";
11021
+ }>>;
11022
+ fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
11023
+ bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
11024
+ trackChar: z.ZodOptional<z.ZodString>;
11025
+ thumbChar: z.ZodOptional<z.ZodString>;
11026
+ }, z.core.$strip>]>>;
11027
+ alwaysScroll: z.ZodOptional<z.ZodBoolean>;
11028
+ mouse: z.ZodOptional<z.ZodBoolean>;
11029
+ keys: z.ZodOptional<z.ZodBoolean>;
11030
+ scrollWidth: z.ZodOptional<z.ZodNumber>;
11031
+ scrollHeight: z.ZodOptional<z.ZodNumber>;
11032
+ scrollX: z.ZodOptional<z.ZodNumber>;
11033
+ scrollY: z.ZodOptional<z.ZodNumber>;
11034
+ }, z.core.$strip>;
11035
+
9998
11036
  /**
9999
- * ScrollableBox Widget
11037
+ * ScrollableBox Widget Types
10000
11038
  *
10001
- * A scrollable container widget that combines Box functionality with scrolling.
10002
- * Supports keyboard and mouse-based scrolling, configurable scrollbars, and
10003
- * automatic scroll clamping.
11039
+ * TypeScript interfaces and type definitions for the ScrollableBox widget.
10004
11040
  *
10005
- * @module widgets/scrollableBox
11041
+ * @module widgets/scrollableBox/types
10006
11042
  */
10007
11043
 
10008
11044
  /**
@@ -10178,105 +11214,15 @@ interface ScrollableBoxWidget {
10178
11214
  /** Destroys the widget and removes it from the world */
10179
11215
  destroy(): void;
10180
11216
  }
11217
+
10181
11218
  /**
10182
- * Zod schema for scrollable box widget configuration.
10183
- */
10184
- declare const ScrollableBoxConfigSchema: z.ZodObject<{
10185
- left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
10186
- left: "left";
10187
- top: "top";
10188
- right: "right";
10189
- bottom: "bottom";
10190
- center: "center";
10191
- }>]>>;
10192
- top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
10193
- left: "left";
10194
- top: "top";
10195
- right: "right";
10196
- bottom: "bottom";
10197
- center: "center";
10198
- }>]>>;
10199
- right: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
10200
- left: "left";
10201
- top: "top";
10202
- right: "right";
10203
- bottom: "bottom";
10204
- center: "center";
10205
- }>]>>;
10206
- bottom: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
10207
- left: "left";
10208
- top: "top";
10209
- right: "right";
10210
- bottom: "bottom";
10211
- center: "center";
10212
- }>]>>;
10213
- width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
10214
- height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
10215
- fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10216
- bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10217
- border: z.ZodOptional<z.ZodObject<{
10218
- type: z.ZodOptional<z.ZodEnum<{
10219
- bg: "bg";
10220
- none: "none";
10221
- line: "line";
10222
- }>>;
10223
- fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10224
- bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10225
- ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
10226
- ascii: "ascii";
10227
- bold: "bold";
10228
- single: "single";
10229
- double: "double";
10230
- rounded: "rounded";
10231
- }>, z.ZodCustom<BorderCharset, BorderCharset>]>>;
10232
- }, z.core.$strip>>;
10233
- padding: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodObject<{
10234
- left: z.ZodOptional<z.ZodNumber>;
10235
- top: z.ZodOptional<z.ZodNumber>;
10236
- right: z.ZodOptional<z.ZodNumber>;
10237
- bottom: z.ZodOptional<z.ZodNumber>;
10238
- }, z.core.$strip>]>>;
10239
- content: z.ZodOptional<z.ZodString>;
10240
- align: z.ZodOptional<z.ZodEnum<{
10241
- left: "left";
10242
- right: "right";
10243
- center: "center";
10244
- }>>;
10245
- valign: z.ZodOptional<z.ZodEnum<{
10246
- top: "top";
10247
- bottom: "bottom";
10248
- middle: "middle";
10249
- }>>;
10250
- scrollbar: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
10251
- mode: z.ZodOptional<z.ZodEnum<{
10252
- auto: "auto";
10253
- visible: "visible";
10254
- hidden: "hidden";
10255
- }>>;
10256
- fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10257
- bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10258
- trackChar: z.ZodOptional<z.ZodString>;
10259
- thumbChar: z.ZodOptional<z.ZodString>;
10260
- }, z.core.$strip>]>>;
10261
- alwaysScroll: z.ZodOptional<z.ZodBoolean>;
10262
- mouse: z.ZodOptional<z.ZodBoolean>;
10263
- keys: z.ZodOptional<z.ZodBoolean>;
10264
- scrollWidth: z.ZodOptional<z.ZodNumber>;
10265
- scrollHeight: z.ZodOptional<z.ZodNumber>;
10266
- scrollX: z.ZodOptional<z.ZodNumber>;
10267
- scrollY: z.ZodOptional<z.ZodNumber>;
10268
- }, z.core.$strip>;
10269
- /**
10270
- * ScrollableBox component marker for identifying scrollable box entities.
11219
+ * ScrollableBox Widget Factory
11220
+ *
11221
+ * Factory function for creating ScrollableBox widgets.
11222
+ *
11223
+ * @module widgets/scrollableBox/factory
10271
11224
  */
10272
- declare const ScrollableBox: {
10273
- /** Tag indicating this is a scrollable box widget (1 = yes) */
10274
- isScrollableBox: Uint8Array<ArrayBuffer>;
10275
- /** Mouse scrolling enabled (1 = yes) */
10276
- mouseEnabled: Uint8Array<ArrayBuffer>;
10277
- /** Keyboard scrolling enabled (1 = yes) */
10278
- keysEnabled: Uint8Array<ArrayBuffer>;
10279
- };
11225
+
10280
11226
  /**
10281
11227
  * Creates a ScrollableBox widget with the given configuration.
10282
11228
  *
@@ -10317,44 +11263,46 @@ declare const ScrollableBox: {
10317
11263
  * ```
10318
11264
  */
10319
11265
  declare function createScrollableBox(world: World, entity: Entity, config?: ScrollableBoxConfig): ScrollableBoxWidget;
11266
+
10320
11267
  /**
10321
- * Checks if an entity is a scrollable box widget.
11268
+ * ScrollableBox Widget State
10322
11269
  *
10323
- * @param _world - The ECS world (unused, for API consistency)
10324
- * @param eid - The entity ID
10325
- * @returns true if the entity is a scrollable box
11270
+ * State management for scrollable box widgets including component definition.
10326
11271
  *
10327
- * @example
10328
- * ```typescript
10329
- * import { isScrollableBox } from 'blecsd/widgets';
10330
- *
10331
- * if (isScrollableBox(world, entity)) {
10332
- * // Handle scrollable-box-specific logic
10333
- * }
10334
- * ```
11272
+ * @module widgets/scrollableBox/state
10335
11273
  */
10336
- declare function isScrollableBox(_world: World, eid: Entity): boolean;
10337
11274
  /**
10338
- * Checks if mouse scrolling is enabled for a scrollable box.
10339
- *
10340
- * @param _world - The ECS world (unused, for API consistency)
10341
- * @param eid - The entity ID
10342
- * @returns true if mouse scrolling is enabled
11275
+ * ScrollableBox component marker for identifying scrollable box entities.
10343
11276
  */
10344
- declare function isMouseScrollEnabled(_world: World, eid: Entity): boolean;
11277
+ declare const ScrollableBox: {
11278
+ /** Tag indicating this is a scrollable box widget (1 = yes) */
11279
+ isScrollableBox: Uint8Array<ArrayBuffer>;
11280
+ /** Mouse scrolling enabled (1 = yes) */
11281
+ mouseEnabled: Uint8Array<ArrayBuffer>;
11282
+ /** Keyboard scrolling enabled (1 = yes) */
11283
+ keysEnabled: Uint8Array<ArrayBuffer>;
11284
+ };
11285
+
10345
11286
  /**
10346
- * Checks if keyboard scrolling is enabled for a scrollable box.
11287
+ * ScrollableBox widget namespace.
10347
11288
  *
10348
- * @param _world - The ECS world (unused, for API consistency)
10349
- * @param eid - The entity ID
10350
- * @returns true if keyboard scrolling is enabled
10351
- */
10352
- declare function isKeysScrollEnabled(_world: World, eid: Entity): boolean;
10353
- /**
10354
- * Resets the ScrollableBox component store. Useful for testing.
10355
- * @internal
11289
+ * @example
11290
+ * ```typescript
11291
+ * import { scrollableBox } from 'blecsd/widgets';
11292
+ * const sb = scrollableBox.create(world, { scrollbarMode: 'auto' });
11293
+ * const keysEnabled = scrollableBox.isKeysScrollEnabled(world, sb.eid);
11294
+ * const mouseEnabled = scrollableBox.isMouseScrollEnabled(world, sb.eid);
11295
+ * ```
10356
11296
  */
10357
- declare function resetScrollableBoxStore(): void;
11297
+
11298
+ declare const scrollableBox: Readonly<{
11299
+ create: typeof createScrollableBox;
11300
+ is: typeof isScrollableBox;
11301
+ isKeysScrollEnabled: typeof isKeysScrollEnabled;
11302
+ isMouseScrollEnabled: typeof isMouseScrollEnabled;
11303
+ resetStore: typeof resetScrollableBoxStore;
11304
+ }>;
11305
+ type ScrollableBoxModule = typeof scrollableBox;
10358
11306
 
10359
11307
  /**
10360
11308
  * ScrollableText Widget
@@ -10412,6 +11360,22 @@ type ScrollableTextWidget = ScrollableBoxWidget;
10412
11360
  */
10413
11361
  declare function createScrollableText(world: World, entity: Entity, config?: ScrollableTextConfig): ScrollableTextWidget;
10414
11362
 
11363
+ /**
11364
+ * ScrollableText widget namespace.
11365
+ *
11366
+ * @example
11367
+ * ```typescript
11368
+ * import { scrollableText } from 'blecsd/widgets';
11369
+ * const st = scrollableText.create(world, { text: 'Long text content...' });
11370
+ * ```
11371
+ */
11372
+
11373
+ declare const scrollableText: Readonly<{
11374
+ create: typeof createScrollableText;
11375
+ is: typeof isScrollableBox;
11376
+ }>;
11377
+ type ScrollableTextModule = typeof scrollableText;
11378
+
10415
11379
  /**
10416
11380
  * Searchable List Enhancement
10417
11381
  *
@@ -10672,6 +11636,27 @@ declare function isSearchableList(_world: World, eid: Entity): boolean;
10672
11636
  */
10673
11637
  declare function resetSearchableListStore(): void;
10674
11638
 
11639
+ /**
11640
+ * SearchableList widget namespace.
11641
+ *
11642
+ * @example
11643
+ * ```typescript
11644
+ * import { searchableList } from 'blecsd/widgets';
11645
+ * const sl = searchableList.create(world, { items: [...] });
11646
+ * searchableList.setFilter(world, sl.eid, 'search term');
11647
+ * const filtered = searchableList.getFilteredItems(world, sl.eid);
11648
+ * ```
11649
+ */
11650
+
11651
+ declare const searchableList: Readonly<{
11652
+ create: typeof createSearchableList;
11653
+ is: typeof isSearchableList;
11654
+ setFilter: typeof setSearchableFilter;
11655
+ getFilteredItems: typeof getSearchableFilteredItems;
11656
+ resetStore: typeof resetSearchableListStore;
11657
+ }>;
11658
+ type SearchableListModule = typeof searchableList;
11659
+
10675
11660
  /**
10676
11661
  * Search Overlay Widget
10677
11662
  *
@@ -10973,6 +11958,29 @@ declare function getSearchOverlayColors(eid: Entity): {
10973
11958
  */
10974
11959
  declare function resetSearchOverlayStore(): void;
10975
11960
 
11961
+ /**
11962
+ * SearchOverlay widget namespace.
11963
+ *
11964
+ * @example
11965
+ * ```typescript
11966
+ * import { searchOverlay } from 'blecsd/widgets';
11967
+ * const so = searchOverlay.create(world, {});
11968
+ * searchOverlay.attach(world, so.eid, targetEid);
11969
+ * const target = searchOverlay.getTarget(world, so.eid);
11970
+ * const colors = searchOverlay.getColors(world, so.eid);
11971
+ * ```
11972
+ */
11973
+
11974
+ declare const searchOverlay: Readonly<{
11975
+ create: typeof createSearchOverlay;
11976
+ is: typeof isSearchOverlay;
11977
+ attach: typeof attachSearchOverlay;
11978
+ getTarget: typeof getSearchOverlayTarget;
11979
+ getColors: typeof getSearchOverlayColors;
11980
+ resetStore: typeof resetSearchOverlayStore;
11981
+ }>;
11982
+ type SearchOverlayModule = typeof searchOverlay;
11983
+
10976
11984
  /**
10977
11985
  * Sparkline Widget
10978
11986
  *
@@ -11102,6 +12110,23 @@ declare function isSparkline(_world: World, eid: Entity): boolean;
11102
12110
  */
11103
12111
  declare function resetSparklineStore(): void;
11104
12112
 
12113
+ /**
12114
+ * Sparkline widget namespace.
12115
+ *
12116
+ * @example
12117
+ * ```typescript
12118
+ * import { sparkline } from 'blecsd/widgets';
12119
+ * const sp = sparkline.create(world, { data: [1, 2, 3, 4, 5] });
12120
+ * ```
12121
+ */
12122
+
12123
+ declare const sparkline: Readonly<{
12124
+ create: typeof createSparkline;
12125
+ is: typeof isSparkline;
12126
+ resetStore: typeof resetSparklineStore;
12127
+ }>;
12128
+ type SparklineModule = typeof sparkline;
12129
+
11105
12130
  /**
11106
12131
  * Split Pane Widget
11107
12132
  *
@@ -11317,17 +12342,17 @@ interface SplitPaneWidget {
11317
12342
  declare const SplitPaneConfigSchema: z.ZodObject<{
11318
12343
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
11319
12344
  left: "left";
11320
- top: "top";
12345
+ center: "center";
11321
12346
  right: "right";
12347
+ top: "top";
11322
12348
  bottom: "bottom";
11323
- center: "center";
11324
12349
  }>]>>;
11325
12350
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
11326
12351
  left: "left";
11327
- top: "top";
12352
+ center: "center";
11328
12353
  right: "right";
12354
+ top: "top";
11329
12355
  bottom: "bottom";
11330
- center: "center";
11331
12356
  }>]>>;
11332
12357
  width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
11333
12358
  height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
@@ -11500,6 +12525,33 @@ declare function getDividerRenderInfo(_world: World, eid: Entity): readonly {
11500
12525
  */
11501
12526
  declare function resetSplitPaneStore(): void;
11502
12527
 
12528
+ /**
12529
+ * SplitPane widget namespace.
12530
+ *
12531
+ * @example
12532
+ * ```typescript
12533
+ * import { splitPane } from 'blecsd/widgets';
12534
+ * const sp = splitPane.create(world, { direction: 'horizontal' });
12535
+ * const direction = splitPane.getDirection(world, sp.eid);
12536
+ * const dividerInfo = splitPane.getDividerRenderInfo(world, sp.eid);
12537
+ * const hit = splitPane.hitTestDivider(world, sp.eid, x, y);
12538
+ * const buffer = splitPane.createSharedTextBuffer(world);
12539
+ * const shared = splitPane.getSharedTextBuffer(world, sp.eid);
12540
+ * ```
12541
+ */
12542
+
12543
+ declare const splitPane: Readonly<{
12544
+ create: typeof createSplitPane;
12545
+ is: typeof isSplitPane;
12546
+ getDirection: typeof getSplitDirection;
12547
+ getDividerRenderInfo: typeof getDividerRenderInfo;
12548
+ hitTestDivider: typeof hitTestDivider;
12549
+ createSharedTextBuffer: typeof createSharedTextBuffer;
12550
+ getSharedTextBuffer: typeof getSharedTextBuffer;
12551
+ resetStore: typeof resetSplitPaneStore;
12552
+ }>;
12553
+ type SplitPaneModule = typeof splitPane;
12554
+
11503
12555
  /**
11504
12556
  * Streaming Text Renderer
11505
12557
  *
@@ -11693,7 +12745,7 @@ declare function scrollToLine(state: StreamingTextState, line: number): Streamin
11693
12745
  * @param delta - Lines to scroll (positive = down, negative = up)
11694
12746
  * @returns Updated state
11695
12747
  */
11696
- declare function scrollByLines(state: StreamingTextState, delta: number): StreamingTextState;
12748
+ declare function streamingScrollByLines(state: StreamingTextState, delta: number): StreamingTextState;
11697
12749
  /**
11698
12750
  * Creates a streaming text widget for efficient real-time text rendering.
11699
12751
  *
@@ -11734,6 +12786,37 @@ declare function scrollByLines(state: StreamingTextState, delta: number): Stream
11734
12786
  */
11735
12787
  declare function createStreamingText(world: World, entity: Entity, config?: Partial<StreamingTextConfig>): StreamingTextWidget;
11736
12788
 
12789
+ /**
12790
+ * StreamingText namespace.
12791
+ *
12792
+ * @example
12793
+ * ```typescript
12794
+ * import { streamingText } from 'blecsd/widgets';
12795
+ * const st = streamingText.create(world, {});
12796
+ * const state = streamingText.createState();
12797
+ * streamingText.appendToState(state, 'new text');
12798
+ * streamingText.clearState(state);
12799
+ * const visibleLines = streamingText.getVisibleLines(state, viewport);
12800
+ * streamingText.scrollToLine(state, lineIndex);
12801
+ * streamingText.scrollByLines(state, delta);
12802
+ * const wrapped = streamingText.wrapLine('long text', maxWidth);
12803
+ * const stripped = streamingText.stripAnsi(text);
12804
+ * ```
12805
+ */
12806
+
12807
+ declare const streamingText: Readonly<{
12808
+ create: typeof createStreamingText;
12809
+ createState: typeof createStreamingState;
12810
+ appendToState: typeof appendToState;
12811
+ clearState: typeof clearState;
12812
+ getVisibleLines: typeof getStreamVisibleLines;
12813
+ scrollToLine: typeof scrollToLine;
12814
+ scrollByLines: typeof streamingScrollByLines;
12815
+ wrapLine: typeof wrapLine;
12816
+ stripAnsi: typeof stripAnsiSequences;
12817
+ }>;
12818
+ type StreamingTextModule = typeof streamingText;
12819
+
11737
12820
  /**
11738
12821
  * Switch Widget
11739
12822
  *
@@ -11903,6 +12986,27 @@ declare function handleSwitchClick(world: World, eid: Entity): boolean;
11903
12986
  */
11904
12987
  declare function resetSwitchStore(): void;
11905
12988
 
12989
+ /**
12990
+ * SwitchWidget namespace.
12991
+ *
12992
+ * @example
12993
+ * ```typescript
12994
+ * import { switchWidget } from 'blecsd/widgets';
12995
+ * const sw = switchWidget.create(world, { on: false });
12996
+ * switchWidget.handleKey(world, sw.eid, keyEvent);
12997
+ * switchWidget.handleClick(world, sw.eid, mouseEvent);
12998
+ * ```
12999
+ */
13000
+
13001
+ declare const switchWidget: Readonly<{
13002
+ create: typeof createSwitch;
13003
+ is: typeof isSwitch;
13004
+ handleKey: typeof handleSwitchKey;
13005
+ handleClick: typeof handleSwitchClick;
13006
+ resetStore: typeof resetSwitchStore;
13007
+ }>;
13008
+ type SwitchWidgetModule = typeof switchWidget;
13009
+
11906
13010
  /**
11907
13011
  * Table Widget
11908
13012
  *
@@ -12049,8 +13153,8 @@ declare const TableWidgetConfigSchema: z.ZodObject<{
12049
13153
  pad: z.ZodDefault<z.ZodNumber>;
12050
13154
  align: z.ZodDefault<z.ZodEnum<{
12051
13155
  left: "left";
12052
- right: "right";
12053
13156
  center: "center";
13157
+ right: "right";
12054
13158
  }>>;
12055
13159
  style: z.ZodOptional<z.ZodObject<{
12056
13160
  border: z.ZodOptional<z.ZodObject<{
@@ -12080,8 +13184,8 @@ declare const TableWidgetConfigSchema: z.ZodObject<{
12080
13184
  maxWidth: z.ZodOptional<z.ZodNumber>;
12081
13185
  align: z.ZodOptional<z.ZodEnum<{
12082
13186
  left: "left";
12083
- right: "right";
12084
13187
  center: "center";
13188
+ right: "right";
12085
13189
  }>>;
12086
13190
  }, z.core.$strip>>>;
12087
13191
  }, z.core.$strip>;
@@ -12142,6 +13246,22 @@ declare function createTable(world: World, entity: Entity, config?: TableWidgetC
12142
13246
  */
12143
13247
  declare function isTableWidget(world: World, eid: Entity): boolean;
12144
13248
 
13249
+ /**
13250
+ * TableWidget namespace.
13251
+ *
13252
+ * @example
13253
+ * ```typescript
13254
+ * import { tableWidget } from 'blecsd/widgets';
13255
+ * const table = tableWidget.create(world, { headers: [...], rows: [...] });
13256
+ * ```
13257
+ */
13258
+
13259
+ declare const tableWidget: Readonly<{
13260
+ create: typeof createTable;
13261
+ is: typeof isTableWidget;
13262
+ }>;
13263
+ type TableWidgetModule = typeof tableWidget;
13264
+
12145
13265
  /**
12146
13266
  * Tabs Widget
12147
13267
  *
@@ -12331,17 +13451,17 @@ declare const TAB_CLOSE_CHAR = "\u2715";
12331
13451
  declare const TabsConfigSchema: z.ZodObject<{
12332
13452
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
12333
13453
  left: "left";
12334
- top: "top";
13454
+ center: "center";
12335
13455
  right: "right";
13456
+ top: "top";
12336
13457
  bottom: "bottom";
12337
- center: "center";
12338
13458
  }>]>>;
12339
13459
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
12340
13460
  left: "left";
12341
- top: "top";
13461
+ center: "center";
12342
13462
  right: "right";
13463
+ top: "top";
12343
13464
  bottom: "bottom";
12344
- center: "center";
12345
13465
  }>]>>;
12346
13466
  width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
12347
13467
  height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
@@ -12370,15 +13490,15 @@ declare const TabsConfigSchema: z.ZodObject<{
12370
13490
  }, z.core.$strip>>;
12371
13491
  border: z.ZodOptional<z.ZodObject<{
12372
13492
  type: z.ZodOptional<z.ZodEnum<{
12373
- bg: "bg";
12374
13493
  none: "none";
13494
+ bg: "bg";
12375
13495
  line: "line";
12376
13496
  }>>;
12377
13497
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
12378
13498
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
12379
13499
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
12380
- ascii: "ascii";
12381
13500
  bold: "bold";
13501
+ ascii: "ascii";
12382
13502
  single: "single";
12383
13503
  double: "double";
12384
13504
  rounded: "rounded";
@@ -12493,6 +13613,20 @@ declare function renderTabBar(_world: World, eid: Entity, width: number): string
12493
13613
  */
12494
13614
  declare function resetTabsStore(): void;
12495
13615
 
13616
+ declare const tabs: Readonly<{
13617
+ create: typeof createTabs;
13618
+ is: typeof isTabs;
13619
+ getActiveIndex: typeof getActiveTabIndex;
13620
+ getCount: typeof getTabCount;
13621
+ getPosition: typeof getTabPosition;
13622
+ renderTabBar: typeof renderTabBar;
13623
+ resetStore: typeof resetTabsStore;
13624
+ DEFAULT_TAB_POSITION: TabPosition;
13625
+ TAB_CLOSE_CHAR: "✕";
13626
+ TAB_SEPARATOR: " │ ";
13627
+ }>;
13628
+ type TabsModule = typeof tabs;
13629
+
12496
13630
  /**
12497
13631
  * Terminal Widget
12498
13632
  *
@@ -12689,7 +13823,7 @@ interface TerminalWidget {
12689
13823
  /** Gets the terminal state (for advanced use) */
12690
13824
  getState(): TerminalState | undefined;
12691
13825
  /** Gets the cell buffer (for rendering) */
12692
- getCells(): readonly Cell$1[] | undefined;
13826
+ getCells(): readonly Cell[] | undefined;
12693
13827
  /** Destroys the widget and releases resources */
12694
13828
  destroy(): void;
12695
13829
  /** Marks the widget as dirty (needs re-render) */
@@ -12739,29 +13873,29 @@ declare const TerminalConfigSchema: z.ZodObject<{
12739
13873
  }>>;
12740
13874
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
12741
13875
  left: "left";
12742
- top: "top";
13876
+ center: "center";
12743
13877
  right: "right";
13878
+ top: "top";
12744
13879
  bottom: "bottom";
12745
- center: "center";
12746
13880
  }>]>>;
12747
13881
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
12748
13882
  left: "left";
12749
- top: "top";
13883
+ center: "center";
12750
13884
  right: "right";
13885
+ top: "top";
12751
13886
  bottom: "bottom";
12752
- center: "center";
12753
13887
  }>]>>;
12754
13888
  border: z.ZodOptional<z.ZodObject<{
12755
13889
  type: z.ZodOptional<z.ZodEnum<{
12756
- bg: "bg";
12757
13890
  none: "none";
13891
+ bg: "bg";
12758
13892
  line: "line";
12759
13893
  }>>;
12760
13894
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
12761
13895
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
12762
13896
  ch: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
12763
- ascii: "ascii";
12764
13897
  bold: "bold";
13898
+ ascii: "ascii";
12765
13899
  single: "single";
12766
13900
  double: "double";
12767
13901
  rounded: "rounded";
@@ -12865,6 +13999,29 @@ declare function isTerminalKeysEnabled(_world: World, eid: Entity): boolean;
12865
13999
  */
12866
14000
  declare function resetTerminalStore(): void;
12867
14001
 
14002
+ /**
14003
+ * TerminalWidget namespace.
14004
+ *
14005
+ * @example
14006
+ * ```typescript
14007
+ * import { terminalWidget } from 'blecsd/widgets';
14008
+ * const term = terminalWidget.create(world, { shell: '/bin/bash' });
14009
+ * terminalWidget.handleKey(world, term.eid, keyEvent);
14010
+ * const keysEnabled = terminalWidget.isKeysEnabled(world, term.eid);
14011
+ * const mouseEnabled = terminalWidget.isMouseEnabled(world, term.eid);
14012
+ * ```
14013
+ */
14014
+
14015
+ declare const terminalWidget: Readonly<{
14016
+ create: typeof createTerminal;
14017
+ is: typeof isTerminal;
14018
+ handleKey: typeof handleTerminalKey;
14019
+ isKeysEnabled: typeof isTerminalKeysEnabled;
14020
+ isMouseEnabled: typeof isTerminalMouseEnabled;
14021
+ resetStore: typeof resetTerminalStore;
14022
+ }>;
14023
+ type TerminalWidgetModule = typeof terminalWidget;
14024
+
12868
14025
  /**
12869
14026
  * Text Widget
12870
14027
  *
@@ -13007,31 +14164,31 @@ interface TextWidget {
13007
14164
  declare const TextConfigSchema: z.ZodObject<{
13008
14165
  left: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
13009
14166
  left: "left";
13010
- top: "top";
14167
+ center: "center";
13011
14168
  right: "right";
14169
+ top: "top";
13012
14170
  bottom: "bottom";
13013
- center: "center";
13014
14171
  }>]>>;
13015
14172
  top: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
13016
14173
  left: "left";
13017
- top: "top";
14174
+ center: "center";
13018
14175
  right: "right";
14176
+ top: "top";
13019
14177
  bottom: "bottom";
13020
- center: "center";
13021
14178
  }>]>>;
13022
14179
  right: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
13023
14180
  left: "left";
13024
- top: "top";
14181
+ center: "center";
13025
14182
  right: "right";
14183
+ top: "top";
13026
14184
  bottom: "bottom";
13027
- center: "center";
13028
14185
  }>]>>;
13029
14186
  bottom: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodEnum<{
13030
14187
  left: "left";
13031
- top: "top";
14188
+ center: "center";
13032
14189
  right: "right";
14190
+ top: "top";
13033
14191
  bottom: "bottom";
13034
- center: "center";
13035
14192
  }>]>>;
13036
14193
  width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
13037
14194
  height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodLiteral<"auto">]>>;
@@ -13040,13 +14197,13 @@ declare const TextConfigSchema: z.ZodObject<{
13040
14197
  content: z.ZodOptional<z.ZodString>;
13041
14198
  align: z.ZodOptional<z.ZodEnum<{
13042
14199
  left: "left";
13043
- right: "right";
13044
14200
  center: "center";
14201
+ right: "right";
13045
14202
  }>>;
13046
14203
  valign: z.ZodOptional<z.ZodEnum<{
13047
14204
  top: "top";
13048
- bottom: "bottom";
13049
14205
  middle: "middle";
14206
+ bottom: "bottom";
13050
14207
  }>>;
13051
14208
  shrink: z.ZodOptional<z.ZodBoolean>;
13052
14209
  }, z.core.$strip>;
@@ -13155,6 +14312,27 @@ declare function isText(_world: World, eid: Entity): boolean;
13155
14312
  */
13156
14313
  declare function resetTextStore(): void;
13157
14314
 
14315
+ /**
14316
+ * Text widget namespace.
14317
+ *
14318
+ * @example
14319
+ * ```typescript
14320
+ * import { text } from 'blecsd/widgets';
14321
+ * const t = text.create(world, { content: 'Hello' });
14322
+ * const content = text.getContent(world, t.eid);
14323
+ * text.setContent(world, t.eid, 'World');
14324
+ * ```
14325
+ */
14326
+
14327
+ declare const text: Readonly<{
14328
+ create: typeof createText;
14329
+ is: typeof isText;
14330
+ getContent: typeof getTextContent;
14331
+ setContent: typeof setTextContent;
14332
+ resetStore: typeof resetTextStore;
14333
+ }>;
14334
+ type TextModule = typeof text;
14335
+
13158
14336
  /**
13159
14337
  * Timer and Stopwatch Widgets
13160
14338
  *
@@ -13450,6 +14628,29 @@ declare function resetTimerWidgetStore(): void;
13450
14628
  */
13451
14629
  declare function resetStopwatchWidgetStore(): void;
13452
14630
 
14631
+ /**
14632
+ * TimerWidget namespace.
14633
+ *
14634
+ * @example
14635
+ * ```typescript
14636
+ * import { timerWidget } from 'blecsd/widgets';
14637
+ * const timer = timerWidget.createTimer(world, { duration: 60 });
14638
+ * const stopwatch = timerWidget.createStopwatch(world, {});
14639
+ * timerWidget.updateWidgets(world, deltaTime);
14640
+ * ```
14641
+ */
14642
+
14643
+ declare const timerWidget: Readonly<{
14644
+ createTimer: typeof createTimer;
14645
+ createStopwatch: typeof createStopwatch;
14646
+ isTimer: typeof isTimer;
14647
+ isStopwatch: typeof isStopwatch;
14648
+ updateWidgets: typeof updateTimeWidgets;
14649
+ resetTimerStore: typeof resetTimerWidgetStore;
14650
+ resetStopwatchStore: typeof resetStopwatchWidgetStore;
14651
+ }>;
14652
+ type TimerWidgetModule = typeof timerWidget;
14653
+
13453
14654
  /**
13454
14655
  * Toast Widget
13455
14656
  *
@@ -13571,8 +14772,8 @@ declare const ToastConfigSchema: z.ZodObject<{
13571
14772
  bg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
13572
14773
  border: z.ZodOptional<z.ZodObject<{
13573
14774
  type: z.ZodOptional<z.ZodEnum<{
13574
- bg: "bg";
13575
14775
  none: "none";
14776
+ bg: "bg";
13576
14777
  line: "line";
13577
14778
  }>>;
13578
14779
  fg: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
@@ -13705,6 +14906,21 @@ declare function isToast(_world: World, eid: Entity): boolean;
13705
14906
  */
13706
14907
  declare function resetToastStore(): void;
13707
14908
 
14909
+ declare const toast: Readonly<{
14910
+ create: typeof createToast;
14911
+ is: typeof isToast;
14912
+ showInfo: typeof showInfoToast;
14913
+ showWarning: typeof showWarningToast;
14914
+ showError: typeof showErrorToast;
14915
+ showSuccess: typeof showSuccessToast;
14916
+ resetStore: typeof resetToastStore;
14917
+ DEFAULT_TOAST_PADDING: 1;
14918
+ DEFAULT_TOAST_STYLES: Record<ToastType, ToastStyleConfig>;
14919
+ DEFAULT_TOAST_TIMEOUT: 3000;
14920
+ TOAST_STACK_SPACING: 1;
14921
+ }>;
14922
+ type ToastModule = typeof toast;
14923
+
13708
14924
  /**
13709
14925
  * Tree Widget
13710
14926
  *
@@ -14005,547 +15221,21 @@ declare function createTree(world: World, entity: Entity, config?: TreeWidgetCon
14005
15221
  declare function isTreeWidget(_world: World, eid: Entity): boolean;
14006
15222
 
14007
15223
  /**
14008
- * Video Widget
14009
- *
14010
- * Factory widget that plays video files in the terminal using external
14011
- * players (mpv, mplayer) with ASCII/ANSI rendering via libcaca or
14012
- * built-in terminal output modes.
14013
- *
14014
- * The widget manages the video player subprocess lifecycle, supports
14015
- * play/pause/seek controls, and handles terminal resize.
14016
- *
14017
- * @module widgets/video
14018
- */
14019
-
14020
- /**
14021
- * Supported video player backends.
14022
- *
14023
- * - 'mpv': Modern, feature-rich player (preferred)
14024
- * - 'mplayer': Legacy player, widely available
14025
- */
14026
- type VideoPlayer = 'mpv' | 'mplayer';
14027
- /**
14028
- * Video playback state.
14029
- */
14030
- type VideoPlaybackState = 'stopped' | 'playing' | 'paused';
14031
- /**
14032
- * Video output driver mode for terminal rendering.
14033
- *
14034
- * - 'caca': Uses libcaca for ASCII art rendering (best quality)
14035
- * - 'tct': True-color terminal output (mpv only)
14036
- * - 'sixel': Sixel graphics output (mpv only, requires sixel support)
14037
- */
14038
- type VideoOutputDriver = 'caca' | 'tct' | 'sixel';
14039
- /**
14040
- * Configuration for creating a Video widget.
14041
- *
14042
- * @example
14043
- * ```typescript
14044
- * import type { VideoConfig } from 'blecsd';
14045
- *
14046
- * const config: VideoConfig = {
14047
- * x: 0,
14048
- * y: 0,
14049
- * width: 80,
14050
- * height: 24,
14051
- * path: '/path/to/video.mp4',
14052
- * player: 'mpv',
14053
- * };
14054
- * ```
14055
- */
14056
- interface VideoConfig {
14057
- /** X position in terminal columns */
14058
- readonly x?: number;
14059
- /** Y position in terminal rows */
14060
- readonly y?: number;
14061
- /** Width in terminal columns */
14062
- readonly width?: number;
14063
- /** Height in terminal rows */
14064
- readonly height?: number;
14065
- /** Path to the video file */
14066
- readonly path?: string;
14067
- /** Preferred video player backend (default: auto-detect) */
14068
- readonly player?: VideoPlayer;
14069
- /** Video output driver mode (default: 'caca') */
14070
- readonly outputDriver?: VideoOutputDriver;
14071
- /** Playback speed multiplier (default: 1.0) */
14072
- readonly speed?: number;
14073
- /** Start playback automatically (default: false) */
14074
- readonly autoPlay?: boolean;
14075
- /** Loop playback (default: false) */
14076
- readonly loop?: boolean;
14077
- /** Mute audio (default: true for terminal use) */
14078
- readonly mute?: boolean;
14079
- /** Whether to show initially (default: true) */
14080
- readonly visible?: boolean;
14081
- }
14082
- /**
14083
- * Video widget interface providing chainable methods for video playback.
14084
- *
14085
- * @example
14086
- * ```typescript
14087
- * import { createVideo } from 'blecsd';
14088
- *
14089
- * const video = createVideo(world, {
14090
- * x: 0, y: 0, width: 80, height: 24,
14091
- * path: '/path/to/video.mp4',
14092
- * });
14093
- * video.play();
14094
- * ```
14095
- */
14096
- interface VideoWidget {
14097
- /** The underlying entity ID */
14098
- readonly eid: Entity;
14099
- /** Shows the video widget */
14100
- show(): VideoWidget;
14101
- /** Hides the video widget */
14102
- hide(): VideoWidget;
14103
- /** Checks if visible */
14104
- isVisible(): boolean;
14105
- /** Moves the video widget by dx, dy */
14106
- move(dx: number, dy: number): VideoWidget;
14107
- /** Sets the absolute position */
14108
- setPosition(x: number, y: number): VideoWidget;
14109
- /** Gets current position */
14110
- getPosition(): {
14111
- x: number;
14112
- y: number;
14113
- };
14114
- /** Sets the video file path */
14115
- setPath(path: string): VideoWidget;
14116
- /** Gets the current video file path */
14117
- getPath(): string;
14118
- /** Starts or resumes playback */
14119
- play(): VideoWidget;
14120
- /** Pauses playback */
14121
- pause(): VideoWidget;
14122
- /** Stops playback and resets position */
14123
- stop(): VideoWidget;
14124
- /** Toggles between playing and paused */
14125
- togglePlayback(): VideoWidget;
14126
- /** Seeks to a position in seconds */
14127
- seek(seconds: number): VideoWidget;
14128
- /** Gets the current playback state */
14129
- getPlaybackState(): VideoPlaybackState;
14130
- /** Sets playback speed multiplier */
14131
- setSpeed(speed: number): VideoWidget;
14132
- /** Gets current playback speed */
14133
- getSpeed(): number;
14134
- /** Sets whether playback loops */
14135
- setLoop(loop: boolean): VideoWidget;
14136
- /** Gets whether playback loops */
14137
- getLoop(): boolean;
14138
- /** Sets audio mute state */
14139
- setMute(mute: boolean): VideoWidget;
14140
- /** Gets audio mute state */
14141
- getMute(): boolean;
14142
- /** Gets the detected or configured player */
14143
- getPlayer(): VideoPlayer | undefined;
14144
- /** Gets whether the video player process is running */
14145
- isRunning(): boolean;
14146
- /** Resize the video output */
14147
- resize(width: number, height: number): VideoWidget;
14148
- /** Sets callback for when playback ends */
14149
- onEnd(callback: () => void): VideoWidget;
14150
- /** Sets callback for when an error occurs */
14151
- onError(callback: (error: string) => void): VideoWidget;
14152
- /** Sets callback for process data output */
14153
- onData(callback: (data: string) => void): VideoWidget;
14154
- /** Destroys the video widget and kills any running process */
14155
- destroy(): void;
14156
- }
14157
- /**
14158
- * Interface for spawning child processes (injectable for testing).
14159
- *
14160
- * @example
14161
- * ```typescript
14162
- * import type { VideoProcessSpawner } from 'blecsd';
14163
- *
14164
- * const spawner: VideoProcessSpawner = {
14165
- * spawn: (cmd, args) => ({ pid: 123, stdout: mockStream, ... }),
14166
- * exists: (path) => true,
14167
- * };
14168
- * ```
14169
- */
14170
- interface VideoProcessSpawner {
14171
- /** Spawns a child process and returns a handle */
14172
- readonly spawn: (command: string, args: readonly string[]) => VideoProcessHandle;
14173
- /** Checks if a binary exists at the given path */
14174
- readonly exists: (path: string) => boolean;
14175
- }
14176
- /**
14177
- * Handle to a running video player process.
14178
- */
14179
- interface VideoProcessHandle {
14180
- /** Process ID */
14181
- readonly pid: number;
14182
- /** Send data to stdin */
14183
- readonly write: (data: string) => void;
14184
- /** Register stdout data handler */
14185
- readonly onData: (callback: (data: string) => void) => void;
14186
- /** Register exit handler */
14187
- readonly onExit: (callback: (code: number) => void) => void;
14188
- /** Kill the process */
14189
- readonly kill: (signal?: string) => void;
14190
- /** Resize the pseudo-terminal (if available) */
14191
- readonly resize?: (cols: number, rows: number) => void;
14192
- }
14193
- /**
14194
- * Internal state for a video widget instance.
14195
- */
14196
- interface VideoState {
14197
- path: string;
14198
- player: VideoPlayer | undefined;
14199
- outputDriver: VideoOutputDriver;
14200
- speed: number;
14201
- loop: boolean;
14202
- mute: boolean;
14203
- playbackState: VideoPlaybackState;
14204
- visible: boolean;
14205
- process: VideoProcessHandle | null;
14206
- seekPosition: number;
14207
- onEndCallback: (() => void) | null;
14208
- onErrorCallback: ((error: string) => void) | null;
14209
- onDataCallback: ((data: string) => void) | null;
14210
- }
14211
- /**
14212
- * Zod schema for video widget configuration.
14213
- *
14214
- * @example
14215
- * ```typescript
14216
- * import { VideoConfigSchema } from 'blecsd';
14217
- *
14218
- * const result = VideoConfigSchema.safeParse({
14219
- * path: '/path/to/video.mp4',
14220
- * player: 'mpv',
14221
- * });
14222
- * ```
14223
- */
14224
- declare const VideoConfigSchema: z.ZodObject<{
14225
- x: z.ZodDefault<z.ZodNumber>;
14226
- y: z.ZodDefault<z.ZodNumber>;
14227
- width: z.ZodDefault<z.ZodNumber>;
14228
- height: z.ZodDefault<z.ZodNumber>;
14229
- path: z.ZodDefault<z.ZodString>;
14230
- player: z.ZodOptional<z.ZodEnum<{
14231
- mpv: "mpv";
14232
- mplayer: "mplayer";
14233
- }>>;
14234
- outputDriver: z.ZodDefault<z.ZodEnum<{
14235
- sixel: "sixel";
14236
- caca: "caca";
14237
- tct: "tct";
14238
- }>>;
14239
- speed: z.ZodDefault<z.ZodNumber>;
14240
- autoPlay: z.ZodDefault<z.ZodBoolean>;
14241
- loop: z.ZodDefault<z.ZodBoolean>;
14242
- mute: z.ZodDefault<z.ZodBoolean>;
14243
- visible: z.ZodDefault<z.ZodBoolean>;
14244
- }, z.core.$strip>;
14245
- /**
14246
- * Video component marker for identifying video entities.
14247
- */
14248
- declare const Video: {
14249
- /** Tag indicating this is a video widget (1 = yes) */
14250
- isVideo: Uint8Array<ArrayBuffer>;
14251
- };
14252
- /**
14253
- * Default search paths for video player binaries.
14254
- */
14255
- declare const MPV_SEARCH_PATHS: readonly string[];
14256
- /**
14257
- * Default search paths for mplayer binary.
14258
- */
14259
- declare const MPLAYER_SEARCH_PATHS: readonly string[];
14260
- /**
14261
- * Finds the best available video player binary.
14262
- *
14263
- * Checks mpv first (preferred), then mplayer.
14264
- *
14265
- * @param checkExists - Function to check if a file exists (injectable for testing)
14266
- * @returns The detected player and its path, or undefined if none found
14267
- *
14268
- * @example
14269
- * ```typescript
14270
- * import { detectVideoPlayer } from 'blecsd';
14271
- *
14272
- * const result = detectVideoPlayer();
14273
- * if (result) {
14274
- * console.log(`Found ${result.player} at ${result.path}`);
14275
- * }
14276
- * ```
14277
- */
14278
- declare function detectVideoPlayer(checkExists?: (path: string) => boolean): {
14279
- player: VideoPlayer;
14280
- path: string;
14281
- } | undefined;
14282
- /**
14283
- * Builds command-line arguments for mpv.
14284
- *
14285
- * @param config - Video state configuration
14286
- * @param cols - Terminal width in columns
14287
- * @param rows - Terminal height in rows
14288
- * @returns Array of command-line arguments
14289
- *
14290
- * @example
14291
- * ```typescript
14292
- * import { buildMpvArgs } from 'blecsd';
14293
- *
14294
- * const args = buildMpvArgs(
14295
- * { path: 'video.mp4', outputDriver: 'caca', speed: 1.0, loop: false, mute: true },
14296
- * 80,
14297
- * 24,
14298
- * );
14299
- * ```
14300
- */
14301
- declare function buildMpvArgs(config: Pick<VideoState, 'path' | 'outputDriver' | 'speed' | 'loop' | 'mute' | 'seekPosition'>, cols: number, rows: number): string[];
14302
- /**
14303
- * Builds command-line arguments for mplayer.
14304
- *
14305
- * @param config - Video state configuration
14306
- * @param cols - Terminal width in columns
14307
- * @param rows - Terminal height in rows
14308
- * @returns Array of command-line arguments
14309
- *
14310
- * @example
14311
- * ```typescript
14312
- * import { buildMplayerArgs } from 'blecsd';
14313
- *
14314
- * const args = buildMplayerArgs(
14315
- * { path: 'video.mp4', outputDriver: 'caca', speed: 1.0, loop: false, mute: true },
14316
- * 80,
14317
- * 24,
14318
- * );
14319
- * ```
14320
- */
14321
- declare function buildMplayerArgs(config: Pick<VideoState, 'path' | 'outputDriver' | 'speed' | 'loop' | 'mute' | 'seekPosition'>, _cols: number, _rows: number): string[];
14322
- /**
14323
- * Builds player command arguments based on the detected player type.
14324
- *
14325
- * @param player - The video player to use
14326
- * @param state - Video state
14327
- * @param cols - Terminal width
14328
- * @param rows - Terminal height
14329
- * @returns Array of command-line arguments
14330
- *
14331
- * @example
14332
- * ```typescript
14333
- * import { buildPlayerArgs } from 'blecsd';
14334
- *
14335
- * const args = buildPlayerArgs('mpv', videoState, 80, 24);
14336
- * ```
14337
- */
14338
- declare function buildPlayerArgs(player: VideoPlayer, state: Pick<VideoState, 'path' | 'outputDriver' | 'speed' | 'loop' | 'mute' | 'seekPosition'>, cols: number, rows: number): string[];
14339
- /**
14340
- * Sends a pause/unpause command to an mpv process via IPC.
14341
- *
14342
- * @param handle - Process handle
14343
- * @param player - Player type
14344
- *
14345
- * @example
14346
- * ```typescript
14347
- * import { sendPauseCommand } from 'blecsd';
14348
- *
14349
- * sendPauseCommand(processHandle, 'mpv');
14350
- * ```
14351
- */
14352
- declare function sendPauseCommand(handle: VideoProcessHandle, player: VideoPlayer): void;
14353
- /**
14354
- * Sends a seek command to a running player process.
14355
- *
14356
- * @param handle - Process handle
14357
- * @param player - Player type
14358
- * @param seconds - Position in seconds
14359
- *
14360
- * @example
14361
- * ```typescript
14362
- * import { sendSeekCommand } from 'blecsd';
14363
- *
14364
- * sendSeekCommand(processHandle, 'mplayer', 30);
14365
- * ```
14366
- */
14367
- declare function sendSeekCommand(handle: VideoProcessHandle, player: VideoPlayer, seconds: number): void;
14368
- /**
14369
- * Creates a Video widget.
14370
- *
14371
- * The Video widget plays video files in the terminal using external video
14372
- * players (mpv or mplayer) with ASCII/ANSI rendering via libcaca or other
14373
- * terminal-compatible output drivers.
14374
- *
14375
- * @param world - The ECS world
14376
- * @param config - Video configuration
14377
- * @param spawner - Optional process spawner (injectable for testing)
14378
- * @returns VideoWidget interface
14379
- *
14380
- * @example
14381
- * ```typescript
14382
- * import { createVideo } from 'blecsd';
14383
- *
14384
- * const video = createVideo(world, {
14385
- * x: 0, y: 0, width: 80, height: 24,
14386
- * path: '/path/to/video.mp4',
14387
- * player: 'mpv',
14388
- * outputDriver: 'caca',
14389
- * });
14390
- *
14391
- * video.play();
14392
- *
14393
- * // Later...
14394
- * video.pause();
14395
- * video.seek(30);
14396
- * video.play();
14397
- *
14398
- * // Cleanup
14399
- * video.destroy();
14400
- * ```
14401
- */
14402
- declare function createVideo(world: World, config?: VideoConfig, spawner?: VideoProcessSpawner): VideoWidget;
14403
- /**
14404
- * Checks if an entity is a video widget.
14405
- *
14406
- * @param _world - The ECS world (unused, for API consistency)
14407
- * @param eid - Entity ID
14408
- * @returns true if entity is a video widget
14409
- *
14410
- * @example
14411
- * ```typescript
14412
- * import { isVideo } from 'blecsd';
14413
- *
14414
- * if (isVideo(world, entity)) {
14415
- * // Handle video-specific logic
14416
- * }
14417
- * ```
14418
- */
14419
- declare function isVideo(_world: World, eid: Entity): boolean;
14420
- /**
14421
- * Gets the video state for an entity.
14422
- *
14423
- * @param eid - Entity ID
14424
- * @returns The video playback state, or undefined
14425
- *
14426
- * @example
14427
- * ```typescript
14428
- * import { getVideoPlaybackState } from 'blecsd';
14429
- *
14430
- * const state = getVideoPlaybackState(videoEntity);
14431
- * // 'stopped' | 'playing' | 'paused'
14432
- * ```
14433
- */
14434
- declare function getVideoPlaybackState(eid: Entity): VideoPlaybackState | undefined;
14435
- /**
14436
- * Gets the detected video player for an entity.
14437
- *
14438
- * @param eid - Entity ID
14439
- * @returns The player name, or undefined
15224
+ * Tree widget namespace.
14440
15225
  *
14441
15226
  * @example
14442
15227
  * ```typescript
14443
- * import { getVideoPlayer } from 'blecsd';
14444
- *
14445
- * const player = getVideoPlayer(videoEntity);
14446
- * // 'mpv' | 'mplayer' | undefined
15228
+ * import { tree } from 'blecsd/widgets';
15229
+ * const t = tree.create(world, { nodes: [...] });
14447
15230
  * ```
14448
15231
  */
14449
- declare function getVideoPlayer(eid: Entity): VideoPlayer | undefined;
14450
- /**
14451
- * Resets all video widget stores. Useful for testing.
14452
- *
14453
- * @internal
14454
- */
14455
- declare function resetVideoStore(): void;
14456
15232
 
14457
- /**
14458
- * Viewport3D widget factory.
14459
- *
14460
- * Creates a 3D rendering viewport as a composable ECS widget.
14461
- * Combines camera setup, viewport configuration, and mesh management
14462
- * into a chainable interface following the existing widget patterns.
14463
- *
14464
- * @module widgets/viewport3d
14465
- */
14466
-
14467
- /**
14468
- * Tag component marking entities as Viewport3D widgets.
14469
- */
14470
- declare const Viewport3DTag: {
14471
- isViewport3D: Uint8Array<ArrayBuffer>;
14472
- };
14473
- /**
14474
- * Interface for the Viewport3D widget with chainable methods.
14475
- *
14476
- * @example
14477
- * ```typescript
14478
- * const viewport = createViewport3D(world, eid, {
14479
- * width: 60, height: 20, fov: Math.PI / 3,
14480
- * });
14481
- *
14482
- * const cubeId = createCubeMesh();
14483
- * viewport.addMesh(cubeId, { tz: -5 });
14484
- * viewport.setCameraPosition(0, 2, 0);
14485
- * ```
14486
- */
14487
- interface Viewport3DWidget {
14488
- /** The viewport entity ID. */
14489
- readonly eid: Entity;
14490
- /** The camera entity ID. */
14491
- readonly cameraEid: Entity;
14492
- /** Add a mesh to the viewport scene. Returns the mesh entity ID. */
14493
- addMesh(meshId: number, transform?: Transform3DConfig, material?: Material3DConfig): Entity;
14494
- /** Remove a mesh entity from the viewport scene. */
14495
- removeMesh(meshEid: Entity): void;
14496
- /** Set camera position in world space. */
14497
- setCameraPosition(x: number, y: number, z: number): Viewport3DWidget;
14498
- /** Set camera rotation in radians. */
14499
- setCameraRotation(rx: number, ry: number, rz: number): Viewport3DWidget;
14500
- /** Set camera field of view in radians. */
14501
- setFov(fov: number): Viewport3DWidget;
14502
- /** Resize the viewport in terminal cells. */
14503
- resize(width: number, height: number): Viewport3DWidget;
14504
- /** Show the viewport. */
14505
- show(): Viewport3DWidget;
14506
- /** Hide the viewport. */
14507
- hide(): Viewport3DWidget;
14508
- /** Clean up all entities and stores associated with this viewport. */
14509
- destroy(): void;
14510
- }
14511
- /**
14512
- * Creates a Viewport3D widget.
14513
- *
14514
- * Sets up a camera entity, configures the viewport component, and returns
14515
- * a chainable interface for managing 3D content within the viewport.
14516
- *
14517
- * @param world - The ECS world
14518
- * @param entity - The entity to attach the viewport to
14519
- * @param config - Widget configuration
14520
- * @returns The Viewport3D widget interface
14521
- *
14522
- * @example
14523
- * ```typescript
14524
- * import { createWorld, addEntity } from '../core/ecs';
14525
- * import { createViewport3D } from 'blecsd/widgets';
14526
- * import { createCubeMesh } from 'blecsd/3d/stores';
14527
- *
14528
- * const world = createWorld();
14529
- * const eid = addEntity(world);
14530
- *
14531
- * const viewport = createViewport3D(world, eid, {
14532
- * left: 5, top: 2, width: 60, height: 20,
14533
- * fov: Math.PI / 3, backend: 'auto',
14534
- * });
14535
- *
14536
- * const cubeId = createCubeMesh();
14537
- * viewport.addMesh(cubeId, { tz: -5 });
14538
- * viewport.setCameraPosition(0, 2, 5);
14539
- * ```
14540
- */
14541
- declare function createViewport3D(world: World, entity: Entity, config?: Viewport3DWidgetConfig): Viewport3DWidget;
14542
- /**
14543
- * Check if an entity is a Viewport3D widget.
14544
- *
14545
- * @param eid - Entity ID
14546
- * @returns True if the entity has the Viewport3D widget tag
14547
- */
14548
- declare function isViewport3DWidget(eid: Entity): boolean;
15233
+ declare const tree: Readonly<{
15234
+ create: typeof createTree;
15235
+ is: typeof isTreeWidget;
15236
+ resetStore: typeof resetTreeStore;
15237
+ }>;
15238
+ type TreeModule = typeof tree;
14549
15239
 
14550
15240
  /**
14551
15241
  * VirtualizedList Widget
@@ -14765,4 +15455,24 @@ declare function handleVirtualizedListWheel(widget: VirtualizedList, direction:
14765
15455
  */
14766
15456
  declare function isVirtualizedList(_world: World, eid: Entity): boolean;
14767
15457
 
14768
- export { Accordion, type AccordionConfig, AccordionConfigSchema, type AccordionSection, type AccordionWidget, type Align$2 as Align, type AlignItems, Autocomplete, type AutocompleteConfig, AutocompleteConfigSchema, type AutocompleteWidget, BRAILLE_BASE, BRAILLE_DOTS, BarChart, type BarChartConfig, BarChartConfigSchema, type BarChartWidget, type BarMode, type BarOrientation, type BarSeries, type BorderConfig$4 as BorderConfig, BorderConfigSchema, Box, type BoxConfig, BoxConfigSchema, type BoxWidget, type ButtonWidget, ButtonWidgetComponent, type ButtonConfig as ButtonWidgetConfig, ButtonConfigSchema as ButtonWidgetConfigSchema, CHART_COLORS, CLOSE_BUTTON_CHAR, COLLAPSE_CHAR, Calendar, type CalendarConfig, CalendarConfigSchema, type CalendarTheme, type CalendarWidget, Canvas, type CanvasConfig, CanvasConfigSchema, type CanvasWidget, type CellSize, type CheckboxWidget, CheckboxWidgetComponent, type CheckboxConfig as CheckboxWidgetConfig, CheckboxConfigSchema as CheckboxWidgetConfigSchema, type ChildLayoutData, type CollapsibleConfig, CollapsibleConfigSchema, type CollapsibleWidget, type Command, CommandPalette, type CommandPaletteConfig, CommandPaletteConfigSchema, type CommandPaletteTheme, type CommandPaletteWidget, type ContextMenuConfig, type ContextMenuItem, DEFAULT_CURSOR_OFFSET_X, DEFAULT_CURSOR_OFFSET_Y, DEFAULT_HIDE_DELAY, DEFAULT_HORIZONTAL_CHAR, DEFAULT_HOVER_DELAY, DEFAULT_LINE_LENGTH, DEFAULT_LOADING_BG, DEFAULT_LOADING_FG, DEFAULT_MESSAGE_PADDING, DEFAULT_MESSAGE_STYLES, DEFAULT_MESSAGE_TIMEOUT, DEFAULT_PANEL_TITLE, DEFAULT_PROMPT_BG, DEFAULT_PROMPT_FG, DEFAULT_PROMPT_HEIGHT, DEFAULT_PROMPT_WIDTH, DEFAULT_QUESTION_BG, DEFAULT_QUESTION_FG, DEFAULT_QUESTION_HEIGHT, DEFAULT_QUESTION_WIDTH, DEFAULT_TAB_POSITION, DEFAULT_TOAST_PADDING, DEFAULT_TOAST_STYLES, DEFAULT_TOAST_TIMEOUT, DEFAULT_TOOLTIP_BG, DEFAULT_TOOLTIP_BORDER, DEFAULT_TOOLTIP_FG, DEFAULT_VERTICAL_CHAR, DevTools, type DevToolsComponentInfo, type DevToolsConfig, DevToolsConfigSchema, type DevToolsPosition, type DevToolsTab, type DevToolsTheme, type DevToolsWidget, type DimensionValue$7 as DimensionValue, type DirtyRect, type DividerState, EXPAND_CHAR, type EntityInfo, type EventLogEntry, type FileEntry, FileManager, type FileManagerBorderConfig, type FileManagerConfig, FileManagerConfigSchema, type FileManagerPaddingConfig, type FileManagerWidget, type FlattenedNode, type AlignItems$1 as FlexAlignItems, type FlexChildOptions, FlexContainer, type FlexContainerConfig, FlexContainerConfigSchema, type FlexContainerWidget, type FlexDirection, type JustifyContent$1 as FlexJustifyContent, type FlexWrap, type FlexDirection$1 as FlexboxDirection, Footer, type FooterAlign, type FooterConfig, FooterConfigSchema, type FooterWidget, FormComponent, type FormField, type FormValidator, type FormWidget, type FormConfig as FormWidgetConfig, FormConfigSchema as FormWidgetConfigSchema, Gauge, type GaugeConfig, GaugeConfigSchema, type GaugeThreshold, type GaugeWidget, Grid, type GridCell, type GridConfig, GridConfigSchema, type GridWidget, HORIZONTAL_BLOCKS, Header, type HeaderAlign, type HeaderConfig, HeaderConfigSchema, type HeaderWidget, type HoverTextConfig, type HoverTextManager, type HoverTextManagerConfig, Image, type ImageConfig, ImageConfigSchema, type ImageType, type ImageWidget, type JustifyContent, Layout, type LayoutConfig, LayoutConfigSchema, type LayoutMode, type LayoutPosition, type LayoutWidget, Line, LineChart, type LineChartConfig, LineChartConfigSchema, type LineChartWidget, type LineConfig, LineConfigSchema, type LineOrientation, type LineSeries, type LineWidget, type ListStyleConfig, type ListTableStyleConfig, type ListTableWidget, type ListTableWidgetConfig, ListTableWidgetConfigSchema, type ListWidget, type ListWidgetConfig, ListWidgetConfigSchema, type ListbarAction, type ListbarItem, type ListbarSelectCallback, type ListbarState, type ListbarStyleConfig, type ListbarWidget, type ListbarWidgetConfig, ListbarWidgetConfigSchema, type LoadingConfig, LoadingConfigSchema, type LoadingStyleConfig, LoadingStyleConfigSchema, type LoadingWidget, Log, type BorderConfig$3 as LogBorderConfig, type LogConfig, LogConfigSchema, type DimensionValue$5 as LogDimensionValue, type PaddingConfig$2 as LogPaddingConfig, type PositionValue$7 as LogPositionValue, type ScrollbarConfig$1 as LogScrollbarConfig, type ScrollbarMode$1 as LogScrollbarMode, type LogWidget, MPLAYER_SEARCH_PATHS, MPV_SEARCH_PATHS, Message, type BorderConfig$2 as MessageBorderConfig, type MessageConfig, MessageConfigSchema, type PositionValue$6 as MessagePositionValue, type MessageStyleConfig, type MessageType, type MessageWidget, Modal, type ModalBorderConfig, type ModalConfig, ModalConfigSchema, type ModalPaddingConfig, type ModalWidget, MultiSelect, type MultiSelectConfig, MultiSelectConfigSchema, type MultiSelectItem, type MultiSelectWidget, type PaddingConfig$3 as PaddingConfig, type PaneScrollState, type PaneState, type PaneViewport, Panel, type PanelAction, type PanelBorderConfig, type PanelConfig, PanelConfigSchema, type PanelContentStyle, type PanelStyleConfig, type PanelTitleStyle, type PanelWidget, type PositionValue$a as PositionValue, ProgressBarComponent, type ProgressBarWidget, type ProgressBarConfig as ProgressBarWidgetConfig, ProgressBarConfigSchema as ProgressBarWidgetConfigSchema, Prompt, type PromptBorderConfig, PromptBorderConfigSchema, type PromptConfig, PromptConfigSchema, type PromptPaddingConfig, PromptPaddingConfigSchema, type PromptValidator, type PromptWidget, type PtyOptions, PtyOptionsSchema, Question, type QuestionBorderConfig, type QuestionConfig, QuestionConfigSchema, type QuestionPaddingConfig, type QuestionWidget, type RadioButtonWidget, RadioButtonWidgetComponent, type RadioButtonConfig as RadioButtonWidgetConfig, RadioButtonConfigSchema as RadioButtonWidgetConfigSchema, type RadioGroupWidget, RadioGroupWidgetComponent, type RadioGroupConfig as RadioGroupWidgetConfig, RadioGroupConfigSchema as RadioGroupWidgetConfigSchema, ScrollableBox, type ScrollableBoxConfig, ScrollableBoxConfigSchema, type ScrollableBoxWidget, type ScrollableTextConfig, type ScrollableTextWidget, type ScrollbarConfig, type ScrollbarMode, type SearchMode, SearchOverlay, type SearchOverlayConfig, SearchOverlayConfigSchema, type SearchOverlayMatch, type SearchOverlayMatchCallback, type SearchOverlayWidget, type SearchableContent, SearchableList, type SearchableListCallback, type SearchableListConfig, SearchableListConfigSchema, type SearchableListItem, type SearchableListWidget, type SelectionChangeCallback, type SharedTextBuffer, Sparkline, type SparklineConfig, SparklineConfigSchema, type SparklineWidget, type SplitDirection, SplitPane, type SplitPaneConfig, SplitPaneConfigSchema, type DimensionValue$2 as SplitPaneDimensionValue, type PositionValue$3 as SplitPanePositionValue, type SplitPaneWidget, type SplitResizeEvent, StopwatchComponent, type StopwatchConfig, StopwatchConfigSchema, type StopwatchState, type StopwatchWidget, type StreamDirtyRegion, type StreamProgress, type StreamingTextConfig, StreamingTextConfigSchema, type StreamingTextState, type StreamingTextWidget, Switch, type SwitchConfig, SwitchConfigSchema, type SwitchWidget, type SystemInfo, TAB_CLOSE_CHAR, TAB_SEPARATOR, TOAST_STACK_SPACING, type TabConfig, type TabData, type TabPosition, type TabStyleConfig, type TableStyleConfig, type TableWidget, type TableWidgetConfig, TableWidgetConfigSchema, Tabs, type TabsAction, type TabsBorderConfig, type TabsConfig, TabsConfigSchema, type ContentStyleConfig as TabsContentStyleConfig, type TabsStyleConfig, type TabsWidget, Terminal, type BorderConfig as TerminalBorderConfig, type TerminalConfig, TerminalConfigSchema, type TerminalStyle, type TerminalWidget, Text, type TextConfig, TextConfigSchema, type TextWidget, type TimeFormat, TimerComponent, type TimerConfig, TimerConfigSchema, type TimerState, type TimerWidget, type TitleAlign, Toast, type ToastBorderConfig, type ToastConfig, ToastConfigSchema, type ToastPosition, type ToastStyleConfig, type ToastType, type ToastWidget, type TooltipPosition, type TooltipRenderData, type TooltipState, type TooltipStyle, type TreeNode, type TreeStyleConfig, type TreeWidget, type TreeWidgetConfig, TreeWidgetConfigSchema, type VAlign$2 as VAlign, VERTICAL_BLOCKS, Video, type VideoConfig, VideoConfigSchema, type VideoOutputDriver, type VideoPlaybackState, type VideoPlayer, type VideoProcessHandle, type VideoProcessSpawner, type VideoWidget, Viewport3DTag, type Viewport3DWidget, type VirtualizedList, type VirtualizedListConfig, VirtualizedListConfigSchema, type VirtualizedListStyle, VirtualizedListStyleSchema, type WidgetFactory, type WidgetRegistration, type WidgetRegistry, addFlexChild, addToGrid, appendToState, ask, attachSearchOverlay, brailleChar, buildMplayerArgs, buildMpvArgs, buildPlayerArgs, calculateFlexLayout, calculateGridLayout, calculateInlineLayout, calculateTickInterval, clearAllHoverText, clearCanvas, clearHoverText, clearLines, clearState, closeAllModals, closeModal, collapseAllSections, combineBrailleDots, confirm, createAccordion, createAutocomplete, createBarChart, createBox, createButton, createCalendar, createCanvas, createCheckbox, createCollapsible, createCommandPalette, createContextMenu, createDevTools, createFileManager, createFlexContainer, createFooter, createForm, createGauge, createGrid, createHeader, createHoverTextManager, createImage, createLayout, createLine, createLineChart, createList, createListTable, createListbar, createLoading, createLog, createMessage, createModal, createMultiSelect, createPanel, createProgressBar, createPrompt, createQuestion, createRadioButton, createRadioGroup, createScrollableBox, createScrollableText, createSearchOverlay, createSearchableList, createSharedTextBuffer, createSparkline, createSplitPane, createStopwatch, createStreamingState, createStreamingText, createSwitch, createTable, createTabs, createTerminal, createText, createTimer, createToast, createTree, createVideo, createViewport3D, createVirtualizedList, createWidgetRegistry, defaultRegistry, deleteBottom, deleteLine, deleteTop, detectVideoPlayer, drawCircle, drawLine, drawRect, drawText, expandAllSections, expandSection, fileManagerStateMap, formatNumber, formatPercentage, generateTicks, getActiveTabIndex, getBaseLine, getBoxContent, getCanvasContent, getChartColor, getContextMenuSelectedIndex, getDividerRenderInfo, getExpandedSections, getHoverText, getHoverTextCount, getImageBitmap, getImageCellMap, getLayoutMode, getLine, getLineChar, getLineCount, getLineOrientation, getLines, getModalStack, getPanelTitle, getPanelTitleAlign, getScrollback, getSearchOverlayColors, getSearchOverlayTarget, getSearchableFilteredItems, getSelectedItems, getSharedTextBuffer, getSplitDirection, getStreamVisibleLines, getTabCount, getTabPosition, getTextContent, getVideoPlaybackState, getVideoPlayer, getWidgetTypes, getWidgetsByTag, handleContextMenuKey, handleFileManagerKey, handleMessageClick, handleMessageKey, handleModalBackdropClick, handleModalEscape, handlePromptKey, handleQuestionKey, handleSwitchClick, handleSwitchKey, handleTerminalKey, handleVirtualizedListKey, handleVirtualizedListWheel, hasHoverText, hideLoading, hitTestDivider, insertBottom, insertLine, insertTop, interpolateChartColor, isAccordion, isAutocomplete, isBarChart, isBox, isButtonWidget, isCalendar, isCanvas, isCheckboxWidget, isCollapsible, isCommandPalette, isDevTools, isDismissOnClick, isDismissOnKey, isFileManager, isFlexContainer, isForm as isFormWidget, isGauge, isGrid, isImage, isKeysScrollEnabled, isLayout, isLine, isLineChart, isListTableWidget, isListWidget, isListbarWidget, isLoadingWidget, isLog, isKeysScrollEnabled$1 as isLogKeysScrollEnabled, isMouseScrollEnabled$1 as isLogMouseScrollEnabled, isMessage, isModal, isModalOpen, isMouseScrollEnabled, isMultiSelect, isPanel, isPanelCollapsed, isProgressBar as isProgressBarWidget, isPrompt, isQuestion, isRadioButtonWidget, isRadioGroupWidget, isScrollableBox, isScrollableBox as isScrollableText, isSearchOverlay, isSearchableList, isSparkline, isSplitPane, isStopwatch, isSwitch, isTableWidget, isTabs, isTerminal, isTerminalKeysEnabled, isTerminalMouseEnabled, isText, isTimer, isToast, isTreeWidget, isVideo, isViewport3DWidget, isVirtualizedList, isWidgetType, onSelectionChange, openModal, popLine, prompt, promptStateMap, pushLine, questionStateMap, registerBuiltinWidgets, renderPanelTitleBar, renderTabBar, renderXAxisLabel, renderYAxisLabel, replaceLines, resetAccordionStore, resetAutocompleteStore, resetBarChartStore, resetBoxStore, resetButtonWidgetStore, resetCalendarStore, resetCanvasStore, resetCheckboxWidgetStore, resetCommandPaletteStore, resetDevToolsStore, resetFileManagerStore, resetFlexContainerStore, resetFormStore as resetFormWidgetStore, resetGaugeStore, resetGridStore, resetHoverTextStore, resetImageStore, resetLayoutStore, resetLineChartStore, resetLineStore, resetListbarStore, resetLoadingStore, resetLogStore, resetMessageStore, resetModalStore, resetMultiSelectStore, resetPanelStore, resetProgressBarStore as resetProgressBarWidgetStore, resetPromptStore, resetQuestionStore, resetRadioWidgetStore, resetScrollableBoxStore, resetSearchOverlayStore, resetSearchableListStore, resetSparklineStore, resetSplitPaneStore, resetStopwatchWidgetStore, resetSwitchStore, resetTabsStore, resetTerminalStore, resetTextStore, resetTimerWidgetStore, resetToastStore, resetTreeStore, resetVideoStore, scaleValue, scrollByLines, scrollToLine, sendPauseCommand, sendSeekCommand, setBaseLine, setBoxContent, setHoverText, setLine, setLineChar, setLines, setLoadingMessage, setPanelTitle, setPixel, setReadDirFn, setSearchableFilter, setTextContent, shiftLine, showError, showErrorToast, showInfo, showInfoToast, showLoading, showSuccess, showSuccessToast, showWarning, showWarningToast, spliceLines, stripAnsiSequences, toggleCollapsible, toggleSection, unshiftLine, updateLoadingAnimation, updateTimeWidgets, wrapLine };
15458
+ /**
15459
+ * VirtualizedList widget namespace.
15460
+ *
15461
+ * @example
15462
+ * ```typescript
15463
+ * import { virtualizedList } from 'blecsd/widgets';
15464
+ * const vl = virtualizedList.create(world, { items: [...] });
15465
+ * virtualizedList.handleKey(world, vl.eid, keyEvent);
15466
+ * virtualizedList.handleWheel(world, vl.eid, mouseEvent);
15467
+ * ```
15468
+ */
15469
+
15470
+ declare const virtualizedList: Readonly<{
15471
+ create: typeof createVirtualizedList;
15472
+ is: typeof isVirtualizedList;
15473
+ handleKey: typeof handleVirtualizedListKey;
15474
+ handleWheel: typeof handleVirtualizedListWheel;
15475
+ }>;
15476
+ type VirtualizedListModule = typeof virtualizedList;
15477
+
15478
+ export { Accordion, type AccordionConfig, AccordionConfigSchema, type AccordionModule, type AccordionSection, type AccordionWidget, type Align$2 as Align, type AlignItems, Autocomplete, type AutocompleteConfig, AutocompleteConfigSchema, type AutocompleteModule, type AutocompleteWidget, BRAILLE_BASE, BRAILLE_DOTS, BarChart, type BarChartConfig, BarChartConfigSchema, type BarChartModule, type BarChartWidget, type BarMode, type BarOrientation, type BarSeries, type BigTextModule, BitmapFont, type BorderConfig$4 as BorderConfig, BorderConfigSchema, Box, type BoxConfig, BoxConfigSchema, type BoxModule, type BoxWidget, type ButtonWidget, ButtonWidgetComponent, type ButtonConfig as ButtonWidgetConfig, ButtonConfigSchema as ButtonWidgetConfigSchema, type ButtonWidgetModule, CHART_COLORS, CLOSE_BUTTON_CHAR, COLLAPSE_CHAR, Calendar, type CalendarConfig, CalendarConfigSchema, type CalendarModule, type CalendarTheme, type CalendarWidget, Canvas, type CanvasConfig, CanvasConfigSchema, type CanvasModule, type CanvasWidget, type CellSize, CharBitmap, type ChartUtilsModule, type CheckboxWidget, CheckboxWidgetComponent, type CheckboxConfig as CheckboxWidgetConfig, CheckboxConfigSchema as CheckboxWidgetConfigSchema, type CheckboxWidgetModule, type ChildLayoutData, type CollapsibleConfig, CollapsibleConfigSchema, type CollapsibleModule, type CollapsibleWidget, type Command, CommandPalette, type CommandPaletteConfig, CommandPaletteConfigSchema, type CommandPaletteModule, type CommandPaletteTheme, type CommandPaletteWidget, type ContentManipulationModule, type ContextMenuConfig, type ContextMenuItem, type ContextMenuModule, DEFAULT_CURSOR_OFFSET_X, DEFAULT_CURSOR_OFFSET_Y, DEFAULT_HIDE_DELAY, DEFAULT_HORIZONTAL_CHAR, DEFAULT_HOVER_DELAY, DEFAULT_LINE_LENGTH, DEFAULT_LOADING_BG, DEFAULT_LOADING_FG, DEFAULT_MESSAGE_PADDING, DEFAULT_MESSAGE_STYLES, DEFAULT_MESSAGE_TIMEOUT, DEFAULT_PANEL_TITLE, DEFAULT_PROMPT_BG, DEFAULT_PROMPT_FG, DEFAULT_PROMPT_HEIGHT, DEFAULT_PROMPT_WIDTH, DEFAULT_QUESTION_BG, DEFAULT_QUESTION_FG, DEFAULT_QUESTION_HEIGHT, DEFAULT_QUESTION_WIDTH, DEFAULT_TAB_POSITION, DEFAULT_TOAST_PADDING, DEFAULT_TOAST_STYLES, DEFAULT_TOAST_TIMEOUT, DEFAULT_TOOLTIP_BG, DEFAULT_TOOLTIP_BORDER, DEFAULT_TOOLTIP_FG, DEFAULT_VERTICAL_CHAR, DevTools, type DevToolsComponentInfo, type DevToolsConfig, DevToolsConfigSchema, type DevToolsModule, type DevToolsPosition, type DevToolsTab, type DevToolsTheme, type DevToolsWidget, type DimensionValue$7 as DimensionValue, type DirtyRect, type DividerState, EXPAND_CHAR, type EntityInfo, type EventLogEntry, type FileEntry, FileManager, type FileManagerBorderConfig, type FileManagerConfig, FileManagerConfigSchema, type FileManagerModule, type FileManagerPaddingConfig, type FileManagerWidget, type FlattenedNode, type AlignItems$1 as FlexAlignItems, type FlexChildOptions, FlexContainer, type FlexContainerConfig, FlexContainerConfigSchema, type FlexContainerWidget, type FlexDirection, type JustifyContent$1 as FlexJustifyContent, type FlexWrap, type FlexDirection$1 as FlexboxDirection, type FlexboxModule, FontName, FontNotFoundError, type FontsModule, Footer, type FooterAlign, type FooterConfig, FooterConfigSchema, type FooterModule, type FooterWidget, FormComponent, type FormField, type FormValidator, type FormWidget, type FormConfig as FormWidgetConfig, FormConfigSchema as FormWidgetConfigSchema, type FormWidgetModule, Gauge, type GaugeConfig, GaugeConfigSchema, type GaugeModule, type GaugeThreshold, type GaugeWidget, Grid, type GridCell, type GridConfig, GridConfigSchema, type GridModule, type GridWidget, HORIZONTAL_BLOCKS, Header, type HeaderAlign, type HeaderConfig, HeaderConfigSchema, type HeaderModule, type HeaderWidget, type HoverTextConfig, type HoverTextManager, type HoverTextManagerConfig, type HoverTextModule, type ImageModule, type JustifyContent, Layout, type LayoutConfig, LayoutConfigSchema, type LayoutMode, type LayoutPosition, type LayoutWidget, type LayoutWidgetModule, Line, LineChart, type LineChartConfig, LineChartConfigSchema, type LineChartModule, type LineChartWidget, type LineConfig, LineConfigSchema, type LineModule, type LineOrientation, type LineSeries, type LineWidget, type ListStyleConfig, type ListTableModule, type ListTableStyleConfig, type ListTableWidget, type ListTableWidgetConfig, ListTableWidgetConfigSchema, type ListWidget, type ListWidgetConfig, ListWidgetConfigSchema, type ListWidgetModule, type ListbarAction, type ListbarItem, type ListbarModule, type ListbarSelectCallback, type ListbarState, type ListbarStyleConfig, type ListbarWidget, type ListbarWidgetConfig, ListbarWidgetConfigSchema, type LoadingConfig, LoadingConfigSchema, type LoadingModule, type LoadingStyleConfig, LoadingStyleConfigSchema, type LoadingWidget, Log, type BorderConfig$3 as LogBorderConfig, type LogConfig, LogConfigSchema, type DimensionValue$5 as LogDimensionValue, type LogModule, type PaddingConfig$2 as LogPaddingConfig, type PositionValue$7 as LogPositionValue, type ScrollbarConfig$1 as LogScrollbarConfig, type ScrollbarMode$1 as LogScrollbarMode, type LogWidget, Message, type BorderConfig$2 as MessageBorderConfig, type MessageConfig, MessageConfigSchema, type MessageModule, type PositionValue$6 as MessagePositionValue, type MessageStyleConfig, type MessageType, type MessageWidget, Modal, type ModalBorderConfig, type ModalConfig, ModalConfigSchema, type ModalModule, type ModalPaddingConfig, type ModalWidget, MultiSelect, type MultiSelectConfig, MultiSelectConfigSchema, type MultiSelectItem, type MultiSelectModule, type MultiSelectWidget, type PaddingConfig$3 as PaddingConfig, type PaneScrollState, type PaneState, type PaneViewport, Panel, type PanelAction, type PanelBorderConfig, type PanelConfig, PanelConfigSchema, type PanelContentStyle, type PanelModule, type PanelStyleConfig, type PanelTitleStyle, type PanelWidget, type PositionValue$a as PositionValue, ProgressBarComponent, type ProgressBarWidget, type ProgressBarConfig as ProgressBarWidgetConfig, ProgressBarConfigSchema as ProgressBarWidgetConfigSchema, type ProgressBarWidgetModule, Prompt, type PromptBorderConfig, PromptBorderConfigSchema, type PromptConfig, PromptConfigSchema, type PromptPaddingConfig, PromptPaddingConfigSchema, type PromptValidator, type PromptWidget, type PromptWidgetModule, type PtyOptions, PtyOptionsSchema, Question, type QuestionBorderConfig, type QuestionConfig, QuestionConfigSchema, type QuestionModule, type QuestionPaddingConfig, type QuestionWidget, type RadioButtonWidget, RadioButtonWidgetComponent, type RadioButtonConfig as RadioButtonWidgetConfig, RadioButtonConfigSchema as RadioButtonWidgetConfigSchema, type RadioGroupWidget, RadioGroupWidgetComponent, type RadioGroupConfig as RadioGroupWidgetConfig, RadioGroupConfigSchema as RadioGroupWidgetConfigSchema, type RadioWidgetModule, type RegistryModule, RenderCharOptions, ScrollableBox, type ScrollableBoxConfig, ScrollableBoxConfigSchema, type ScrollableBoxModule, type ScrollableBoxWidget, type ScrollableTextConfig, type ScrollableTextModule, type ScrollableTextWidget, type ScrollbarConfig, type ScrollbarMode, type SearchMode, SearchOverlay, type SearchOverlayConfig, SearchOverlayConfigSchema, type SearchOverlayMatch, type SearchOverlayMatchCallback, type SearchOverlayModule, type SearchOverlayWidget, type SearchableContent, SearchableList, type SearchableListCallback, type SearchableListConfig, SearchableListConfigSchema, type SearchableListItem, type SearchableListModule, type SearchableListWidget, type SelectionChangeCallback, type SharedTextBuffer, Sparkline, type SparklineConfig, SparklineConfigSchema, type SparklineModule, type SparklineWidget, type SplitDirection, SplitPane, type SplitPaneConfig, SplitPaneConfigSchema, type DimensionValue$2 as SplitPaneDimensionValue, type SplitPaneModule, type PositionValue$3 as SplitPanePositionValue, type SplitPaneWidget, type SplitResizeEvent, StopwatchComponent, type StopwatchConfig, StopwatchConfigSchema, type StopwatchState, type StopwatchWidget, type StreamDirtyRegion, type StreamProgress, type StreamingTextConfig, StreamingTextConfigSchema, type StreamingTextModule, type StreamingTextState, type StreamingTextWidget, Switch, type SwitchConfig, SwitchConfigSchema, type SwitchWidget, type SwitchWidgetModule, type SystemInfo, TAB_CLOSE_CHAR, TAB_SEPARATOR, TOAST_STACK_SPACING, type TabConfig, type TabData, type TabPosition, type TabStyleConfig, type TableStyleConfig, type TableWidget, type TableWidgetConfig, TableWidgetConfigSchema, type TableWidgetModule, Tabs, type TabsAction, type TabsBorderConfig, type TabsConfig, TabsConfigSchema, type ContentStyleConfig as TabsContentStyleConfig, type TabsModule, type TabsStyleConfig, type TabsWidget, Terminal, type BorderConfig as TerminalBorderConfig, type TerminalConfig, TerminalConfigSchema, type TerminalStyle, type TerminalWidget, type TerminalWidgetModule, Text, type TextConfig, TextConfigSchema, type TextModule, type TextWidget, type TimeFormat, TimerComponent, type TimerConfig, TimerConfigSchema, type TimerState, type TimerWidget, type TimerWidgetModule, type TitleAlign, Toast, type ToastBorderConfig, type ToastConfig, ToastConfigSchema, type ToastModule, type ToastPosition, type ToastStyleConfig, type ToastType, type ToastWidget, type TooltipPosition, type TooltipRenderData, type TooltipState, type TooltipStyle, type TreeModule, type TreeNode, type TreeStyleConfig, type TreeWidget, type TreeWidgetConfig, TreeWidgetConfigSchema, type VAlign$2 as VAlign, VERTICAL_BLOCKS, type VirtualizedList, type VirtualizedListConfig, VirtualizedListConfigSchema, type VirtualizedListModule, type VirtualizedListStyle, VirtualizedListStyleSchema, type WidgetFactory, type WidgetRegistration, type WidgetRegistry, accordion, addFlexChild, addToGrid, appendToState, ask, attachSearchOverlay, autocomplete, barChart, bigText, box, brailleChar, brailleFillPattern, buttonWidget, calculateFlexLayout, calculateGridLayout, calculateInlineLayout, calculateTickInterval, calendar, canvas, chartUtils, checkboxWidget, clearAllHoverText, clearCanvas, clearHoverText, clearLines, clearState, closeAllModals, closeModal, collapseAllSections, collapsible, combineBrailleDots, commandPalette, confirm, contentGetLine, contentGetLineCount, contentManipulation, contextMenu, createAccordion, createAutocomplete, createBarChart, createBigText, createBox, createButton, createCalendar, createCanvas, createCheckbox, createCollapsible, createCommandPalette, createContextMenu, createDevTools, createFileManager, createFlexContainer, createFooter, createForm, createGauge, createGrid, createHeader, createHoverTextManager, createLayout, createLine, createLineChart, createList, createListTable, createListbar, createLoading, createLog, createMessage, createModal, createMultiSelect, createPanel, createProgressBar, createPrompt, createQuestion, createRadioButton, createRadioGroup, createScrollableBox, createScrollableText, createSearchOverlay, createSearchableList, createSharedTextBuffer, createSparkline, createSplitPane, createStopwatch, createStreamingState, createStreamingText, createSwitch, createTable, createTabs, createTerminal, createText, createTimer, createToast, createTree, createVirtualizedList, createWidgetRegistry, defaultRegistry, deleteBottom, deleteLine, deleteTop, devTools, drawCircle, drawLine, drawRect, drawText, expandAllSections, expandSection, fileManager, fileManagerStateMap, flexbox, fonts, footer, formWidget, formatNumber, formatPercentage, gauge, generateTicks, getActiveTabIndex, getBaseLine, getBoxContent, getCanvasContent, getChartColor, getContextMenuSelectedIndex, getDividerRenderInfo, getExpandedSections, getHoverText, getHoverTextCount, getLayoutMode, getLineChar, getLineOrientation, getLines, getModalStack, getPanelTitle, getPanelTitleAlign, getScrollback, getSearchOverlayColors, getSearchOverlayTarget, getSearchableFilteredItems, getSelectedItems, getSharedTextBuffer, getSplitDirection, getStreamVisibleLines, getTabCount, getTabPosition, getTextContent, getWidgetTypes, getWidgetsByTag, grid, handleContextMenuKey, handleFileManagerKey, handleMessageClick, handleMessageKey, handleModalBackdropClick, handleModalEscape, handlePromptKey, handleQuestionKey, handleSwitchClick, handleSwitchKey, handleTerminalKey, handleVirtualizedListKey, handleVirtualizedListWheel, hasHoverText, header, hideLoading, hitTestDivider, hoverText, image, insertBottom, insertLine, insertTop, interpolateChartColor, isAccordion, isAutocomplete, isBarChart, isBigText, isBox, isButtonWidget, isCalendar, isCanvas, isCheckboxWidget, isCollapsible, isCommandPalette, isDevTools, isDismissOnClick, isDismissOnKey, isFileManager, isFlexContainer, isForm as isFormWidget, isGauge, isGrid, isKeysScrollEnabled, isLayout, isLine, isLineChart, isListTableWidget, isListWidget, isListbarWidget, isLoadingWidget, isLog, isKeysScrollEnabled$1 as isLogKeysScrollEnabled, isMouseScrollEnabled$1 as isLogMouseScrollEnabled, isMessage, isModal, isModalOpen, isMouseScrollEnabled, isMultiSelect, isPanel, isPanelCollapsed, isProgressBar as isProgressBarWidget, isPrompt, isQuestion, isRadioButtonWidget, isRadioGroupWidget, isScrollableBox, isScrollableBox as isScrollableText, isSearchOverlay, isSearchableList, isSparkline, isSplitPane, isStopwatch, isSwitch, isTableWidget, isTabs, isTerminal, isTerminalKeysEnabled, isTerminalMouseEnabled, isText, isTimer, isToast, isTreeWidget, isVirtualizedList, isWidgetType, layoutWidget, line, lineChart, listTable, listWidget, listbar, loading, log, message, modal, multiSelect, onSelectionChange, openModal, panel, popLine, progressBarWidget, prompt, promptStateMap, promptWidget, pushLine, question, questionStateMap, radioWidget, registerBuiltinWidgets, registry, renderBrailleBar, renderBrailleGradientBar, renderPanelTitleBar, renderTabBar, renderXAxisLabel, renderYAxisLabel, replaceLines, resetAccordionStore, resetAutocompleteStore, resetBarChartStore, resetBigTextStore, resetBoxStore, resetButtonWidgetStore, resetCalendarStore, resetCanvasStore, resetCheckboxWidgetStore, resetCommandPaletteStore, resetDevToolsStore, resetFileManagerStore, resetFlexContainerStore, resetFormStore as resetFormWidgetStore, resetGaugeStore, resetGridStore, resetHoverTextStore, resetLayoutStore, resetLineChartStore, resetLineStore, resetListbarStore, resetLoadingStore, resetLogStore, resetMessageStore, resetModalStore, resetMultiSelectStore, resetPanelStore, resetProgressBarStore as resetProgressBarWidgetStore, resetPromptStore, resetQuestionStore, resetRadioWidgetStore, resetScrollableBoxStore, resetSearchOverlayStore, resetSearchableListStore, resetSparklineStore, resetSplitPaneStore, resetStopwatchWidgetStore, resetSwitchStore, resetTabsStore, resetTerminalStore, resetTextStore, resetTimerWidgetStore, resetToastStore, resetTreeStore, scaleValue, scrollToLine, scrollableBox, scrollableText, searchOverlay, searchableList, setBaseLine, setBigText, setBoxContent, setHoverText, setLine, setLineChar, setLines, setLoadingMessage, setPanelTitle, setPixel, setReadDirFn, setSearchableFilter, setTextContent, shiftLine, showError, showErrorToast, showInfo, showInfoToast, showLoading, showSuccess, showSuccessToast, showWarning, showWarningToast, sparkline, spliceLines, splitPane, streamingScrollByLines, streamingText, stripAnsiSequences, switchWidget, tableWidget, tabs, terminalWidget, text, timerWidget, toast, toggleCollapsible, toggleSection, tree, unshiftLine, updateLoadingAnimation, updateTimeWidgets, virtualizedList, wrapLine };