@zakmandhro/bunti 0.1.5 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/AGENTS.md +65 -0
  2. package/README.md +86 -11
  3. package/dist/cli.d.ts +44 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +147 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/colors.d.ts +77 -7
  8. package/dist/colors.d.ts.map +1 -1
  9. package/dist/colors.js +238 -39
  10. package/dist/colors.js.map +1 -1
  11. package/dist/components/Box.d.ts +6 -0
  12. package/dist/components/Box.d.ts.map +1 -1
  13. package/dist/components/Box.js +5 -0
  14. package/dist/components/Box.js.map +1 -1
  15. package/dist/components/Button.d.ts +15 -2
  16. package/dist/components/Button.d.ts.map +1 -1
  17. package/dist/components/Button.js +45 -25
  18. package/dist/components/Button.js.map +1 -1
  19. package/dist/components/Card.d.ts +24 -2
  20. package/dist/components/Card.d.ts.map +1 -1
  21. package/dist/components/Card.js +56 -14
  22. package/dist/components/Card.js.map +1 -1
  23. package/dist/components/Header.d.ts +11 -1
  24. package/dist/components/Header.d.ts.map +1 -1
  25. package/dist/components/Header.js +12 -8
  26. package/dist/components/Header.js.map +1 -1
  27. package/dist/components/Input.d.ts +10 -1
  28. package/dist/components/Input.d.ts.map +1 -1
  29. package/dist/components/Input.js +176 -41
  30. package/dist/components/Input.js.map +1 -1
  31. package/dist/components/Link.d.ts +21 -0
  32. package/dist/components/Link.d.ts.map +1 -0
  33. package/dist/components/Link.js +38 -0
  34. package/dist/components/Link.js.map +1 -0
  35. package/dist/components/Modal.d.ts +25 -0
  36. package/dist/components/Modal.d.ts.map +1 -1
  37. package/dist/components/Modal.js +88 -24
  38. package/dist/components/Modal.js.map +1 -1
  39. package/dist/components/Progress.d.ts +27 -0
  40. package/dist/components/Progress.d.ts.map +1 -0
  41. package/dist/components/Progress.js +39 -0
  42. package/dist/components/Progress.js.map +1 -0
  43. package/dist/components/Spinner.d.ts +19 -0
  44. package/dist/components/Spinner.d.ts.map +1 -0
  45. package/dist/components/Spinner.js +27 -0
  46. package/dist/components/Spinner.js.map +1 -0
  47. package/dist/components/index.d.ts +3 -0
  48. package/dist/components/index.d.ts.map +1 -1
  49. package/dist/components/index.js +3 -0
  50. package/dist/components/index.js.map +1 -1
  51. package/dist/data/nf-glyphs.d.ts +11 -0
  52. package/dist/data/nf-glyphs.d.ts.map +1 -0
  53. package/dist/data/nf-glyphs.js +535 -0
  54. package/dist/data/nf-glyphs.js.map +1 -0
  55. package/dist/data/nf-names.d.ts +8 -0
  56. package/dist/data/nf-names.d.ts.map +1 -0
  57. package/dist/data/nf-names.js +2 -0
  58. package/dist/data/nf-names.js.map +1 -0
  59. package/dist/demo-registry.d.ts +27 -0
  60. package/dist/demo-registry.d.ts.map +1 -0
  61. package/dist/demo-registry.js +57 -0
  62. package/dist/demo-registry.js.map +1 -0
  63. package/dist/demos/2048.ts +743 -0
  64. package/dist/demos/animation.ts +246 -0
  65. package/dist/demos/demo-layout.ts +124 -0
  66. package/dist/demos/engine.ts +374 -0
  67. package/dist/demos/interaction.ts +91 -0
  68. package/dist/demos/login.ts +203 -0
  69. package/dist/demos/mission-control.ts +558 -0
  70. package/dist/demos/showcase.ts +224 -0
  71. package/dist/detect.d.ts +92 -3
  72. package/dist/detect.d.ts.map +1 -1
  73. package/dist/detect.js +218 -40
  74. package/dist/detect.js.map +1 -1
  75. package/dist/diagnostics.d.ts +73 -0
  76. package/dist/diagnostics.d.ts.map +1 -0
  77. package/dist/diagnostics.js +225 -0
  78. package/dist/diagnostics.js.map +1 -0
  79. package/dist/dsl/context.d.ts +11 -0
  80. package/dist/dsl/context.d.ts.map +1 -0
  81. package/dist/dsl/context.js +658 -0
  82. package/dist/dsl/context.js.map +1 -0
  83. package/dist/dsl/hooks.d.ts +12 -0
  84. package/dist/dsl/hooks.d.ts.map +1 -0
  85. package/dist/dsl/hooks.js +148 -0
  86. package/dist/dsl/hooks.js.map +1 -0
  87. package/dist/dsl/interaction.d.ts +31 -0
  88. package/dist/dsl/interaction.d.ts.map +1 -0
  89. package/dist/dsl/interaction.js +150 -0
  90. package/dist/dsl/interaction.js.map +1 -0
  91. package/dist/dsl/layers.d.ts +14 -0
  92. package/dist/dsl/layers.d.ts.map +1 -0
  93. package/dist/dsl/layers.js +87 -0
  94. package/dist/dsl/layers.js.map +1 -0
  95. package/dist/dsl/motion.d.ts +10 -0
  96. package/dist/dsl/motion.d.ts.map +1 -0
  97. package/dist/dsl/motion.js +150 -0
  98. package/dist/dsl/motion.js.map +1 -0
  99. package/dist/dsl/render.d.ts +22 -0
  100. package/dist/dsl/render.d.ts.map +1 -0
  101. package/dist/dsl/render.js +69 -0
  102. package/dist/dsl/render.js.map +1 -0
  103. package/dist/dsl/types.d.ts +555 -0
  104. package/dist/dsl/types.d.ts.map +1 -0
  105. package/dist/dsl/types.js +33 -0
  106. package/dist/dsl/types.js.map +1 -0
  107. package/dist/dsl.d.ts +13 -154
  108. package/dist/dsl.d.ts.map +1 -1
  109. package/dist/dsl.js +12 -658
  110. package/dist/dsl.js.map +1 -1
  111. package/dist/easing.d.ts +41 -1
  112. package/dist/easing.d.ts.map +1 -1
  113. package/dist/easing.js +105 -2
  114. package/dist/easing.js.map +1 -1
  115. package/dist/geometry.d.ts +39 -0
  116. package/dist/geometry.d.ts.map +1 -1
  117. package/dist/geometry.js +20 -0
  118. package/dist/geometry.js.map +1 -1
  119. package/dist/icons-full.d.ts +5 -0
  120. package/dist/icons-full.d.ts.map +1 -0
  121. package/dist/icons-full.js +31 -0
  122. package/dist/icons-full.js.map +1 -0
  123. package/dist/icons.d.ts +426 -5
  124. package/dist/icons.d.ts.map +1 -1
  125. package/dist/icons.js +144 -15
  126. package/dist/icons.js.map +1 -1
  127. package/dist/index.d.ts +95 -23
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.js +17 -7
  130. package/dist/index.js.map +1 -1
  131. package/dist/input.d.ts +177 -0
  132. package/dist/input.d.ts.map +1 -0
  133. package/dist/input.js +533 -0
  134. package/dist/input.js.map +1 -0
  135. package/dist/layout.d.ts +153 -7
  136. package/dist/layout.d.ts.map +1 -1
  137. package/dist/layout.js +221 -34
  138. package/dist/layout.js.map +1 -1
  139. package/dist/render.d.ts +33 -1
  140. package/dist/render.d.ts.map +1 -1
  141. package/dist/render.js +431 -116
  142. package/dist/render.js.map +1 -1
  143. package/dist/state.d.ts +156 -3
  144. package/dist/state.d.ts.map +1 -1
  145. package/dist/state.js +25 -0
  146. package/dist/state.js.map +1 -1
  147. package/dist/theme.d.ts +129 -0
  148. package/dist/theme.d.ts.map +1 -0
  149. package/dist/theme.js +167 -0
  150. package/dist/theme.js.map +1 -0
  151. package/dist/themes/catppuccin-mocha.d.ts +19 -0
  152. package/dist/themes/catppuccin-mocha.d.ts.map +1 -0
  153. package/dist/themes/catppuccin-mocha.js +36 -0
  154. package/dist/themes/catppuccin-mocha.js.map +1 -0
  155. package/dist/themes/dracula.d.ts +21 -0
  156. package/dist/themes/dracula.d.ts.map +1 -0
  157. package/dist/themes/dracula.js +37 -0
  158. package/dist/themes/dracula.js.map +1 -0
  159. package/dist/themes/github-light.d.ts +21 -0
  160. package/dist/themes/github-light.d.ts.map +1 -0
  161. package/dist/themes/github-light.js +36 -0
  162. package/dist/themes/github-light.js.map +1 -0
  163. package/dist/themes/index.d.ts +19 -0
  164. package/dist/themes/index.d.ts.map +1 -0
  165. package/dist/themes/index.js +17 -0
  166. package/dist/themes/index.js.map +1 -0
  167. package/dist/themes/nord.d.ts +23 -0
  168. package/dist/themes/nord.d.ts.map +1 -0
  169. package/dist/themes/nord.js +38 -0
  170. package/dist/themes/nord.js.map +1 -0
  171. package/dist/themes/one-dark-pro.d.ts +21 -0
  172. package/dist/themes/one-dark-pro.d.ts.map +1 -0
  173. package/dist/themes/one-dark-pro.js +36 -0
  174. package/dist/themes/one-dark-pro.js.map +1 -0
  175. package/dist/themes/tokyo-night.d.ts +20 -0
  176. package/dist/themes/tokyo-night.d.ts.map +1 -0
  177. package/dist/themes/tokyo-night.js +37 -0
  178. package/dist/themes/tokyo-night.js.map +1 -0
  179. package/dist/utils.d.ts +1 -0
  180. package/dist/utils.d.ts.map +1 -1
  181. package/dist/utils.js +1 -0
  182. package/dist/utils.js.map +1 -1
  183. package/dist/vendor/colors.d.ts +45 -0
  184. package/dist/vendor/colors.d.ts.map +1 -0
  185. package/dist/vendor/colors.js +72 -0
  186. package/dist/vendor/colors.js.map +1 -0
  187. package/llms.txt +79 -0
  188. package/package.json +23 -7
  189. package/dist/data/glyphs.d.ts +0 -5
  190. package/dist/data/glyphs.d.ts.map +0 -1
  191. package/dist/data/glyphs.js +0 -29
  192. package/dist/data/glyphs.js.map +0 -1
package/dist/layout.js CHANGED
@@ -2,10 +2,15 @@
2
2
  * Bunti Functional Layout & Drawing
3
3
  * Strictly functional primitives for buffer manipulation and layout generation.
4
4
  */
5
- import { resolveColor } from './colors';
5
+ import { fg as fgColor, isThemeColor, resolveColor, resolveColorToRGB, } from './colors';
6
+ import { colorTier } from './detect';
6
7
  import { replaceEmojis } from './icons';
7
8
  import { charWidth, truncate, visibleWidth, wrapText } from './utils';
8
9
  // --- Functional Primitives (Buffer Manipulation) ---
10
+ /**
11
+ * Writes one cell into the back buffer (bounds-checked). Wide glyphs mark
12
+ * their tail cells as skip so the differ keeps columns aligned.
13
+ */
9
14
  export function setCell(state, x, y, cell) {
10
15
  if (x >= 0 && x < state.width && y >= 0 && y < state.height) {
11
16
  const target = state.backBuffer[y * state.width + x];
@@ -20,6 +25,10 @@ export function setCell(state, x, y, cell) {
20
25
  target.fg = undefined;
21
26
  target.fgCode = undefined;
22
27
  target.bold = false;
28
+ target.italic = false;
29
+ target.underline = false;
30
+ target.dim = false;
31
+ target.strike = false;
23
32
  }
24
33
  if (cell.fg !== undefined) {
25
34
  target.fg = cell.fg;
@@ -31,6 +40,14 @@ export function setCell(state, x, y, cell) {
31
40
  }
32
41
  if (cell.bold !== undefined)
33
42
  target.bold = cell.bold;
43
+ if (cell.italic !== undefined)
44
+ target.italic = cell.italic;
45
+ if (cell.underline !== undefined)
46
+ target.underline = cell.underline;
47
+ if (cell.dim !== undefined)
48
+ target.dim = cell.dim;
49
+ if (cell.strike !== undefined)
50
+ target.strike = cell.strike;
34
51
  target.skip = cell.skip ?? false;
35
52
  for (let dx = 1; dx < displayWidth; dx++) {
36
53
  const skipX = x + dx;
@@ -43,10 +60,67 @@ export function setCell(state, x, y, cell) {
43
60
  skip.fgCode = target.fgCode;
44
61
  skip.bgCode = target.bgCode;
45
62
  skip.bold = target.bold;
63
+ skip.italic = target.italic;
64
+ skip.underline = target.underline;
65
+ skip.dim = target.dim;
66
+ skip.strike = target.strike;
46
67
  skip.skip = true;
47
68
  }
48
69
  }
49
70
  }
71
+ /**
72
+ * Repaints existing back-buffer cells inside `area` at reduced luminance.
73
+ * Each cell's current fg/bg is resolved to exact RGB (numeric ANSI-256 codes
74
+ * via the xterm table) and scaled toward black by `amount` (0 = unchanged,
75
+ * 1 = fully black). Cells with an undefined bg keep their transparent
76
+ * background (fg-only dim); undefined fg is left alone (there is no color to
77
+ * scale). Wide-glyph tail cells (skip) are dimmed too so they stay in sync
78
+ * with their head cell. No-op on the mono tier — there is no color to dim.
79
+ */
80
+ export function dimRect(state, area, amount) {
81
+ if (colorTier() === 'mono')
82
+ return;
83
+ const t = Math.max(0, Math.min(1, amount));
84
+ if (t === 0)
85
+ return;
86
+ const keep = 1 - t;
87
+ const x0 = Math.max(0, area.x);
88
+ const y0 = Math.max(0, area.y);
89
+ const x1 = Math.min(state.width, area.x + area.width);
90
+ const y1 = Math.min(state.height, area.y + area.height);
91
+ for (let y = y0; y < y1; y++) {
92
+ const rowOffset = y * state.width;
93
+ for (let x = x0; x < x1; x++) {
94
+ const cell = state.backBuffer[rowOffset + x];
95
+ if (cell.fg !== undefined) {
96
+ const rgb = resolveColorToRGB(cell.fg);
97
+ const dimmed = {
98
+ r: Math.round(rgb.r * keep),
99
+ g: Math.round(rgb.g * keep),
100
+ b: Math.round(rgb.b * keep),
101
+ };
102
+ cell.fg = dimmed;
103
+ cell.fgCode = resolveColor(dimmed);
104
+ }
105
+ if (cell.bg !== undefined) {
106
+ const rgb = resolveColorToRGB(cell.bg);
107
+ const dimmed = {
108
+ r: Math.round(rgb.r * keep),
109
+ g: Math.round(rgb.g * keep),
110
+ b: Math.round(rgb.b * keep),
111
+ };
112
+ cell.bg = dimmed;
113
+ cell.bgCode = resolveColor(dimmed);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ /**
119
+ * Fills a w×h cell rectangle at absolute coordinates — bars, panels,
120
+ * charts, backgrounds. Pure-background fills (no `char`) preserve the
121
+ * characters already painted underneath.
122
+ * @example rect(state, 0, 0, state.width, 3, { bg: 'midnight' });
123
+ */
50
124
  export function rect(state, x, y, w, h, style) {
51
125
  const isGradient = style.bg && typeof style.bg === 'object' && 'colors' in style.bg;
52
126
  for (let dy = 0; dy < h; dy++) {
@@ -88,6 +162,12 @@ export function rect(state, x, y, w, h, style) {
88
162
  }
89
163
  }
90
164
  }
165
+ /**
166
+ * Paints a multi-line, ANSI-styled string into the back buffer at absolute
167
+ * cell coordinates, parsing SGR codes into per-cell attributes. Grapheme-
168
+ * aware: emoji and wide glyphs occupy their real column width.
169
+ * @example blit(state, 2, 1, fg('gold', 'FPS 60'));
170
+ */
91
171
  export function blit(state, startX, startY, content, style = {}) {
92
172
  const lines = content.split('\n');
93
173
  for (let row = 0; row < lines.length; row++) {
@@ -95,6 +175,10 @@ export function blit(state, startX, startY, content, style = {}) {
95
175
  let x = startX;
96
176
  let currentFg, currentBg;
97
177
  let currentBold = false;
178
+ let currentItalic = false;
179
+ let currentUnderline = false;
180
+ let currentDim = false;
181
+ let currentStrike = false;
98
182
  const regex = /\x1B\[([0-9;]*)m|([^\x1B]+)/g;
99
183
  let match = null;
100
184
  while ((match = regex.exec(line)) !== null) {
@@ -106,11 +190,32 @@ export function blit(state, startX, startY, content, style = {}) {
106
190
  currentFg = undefined;
107
191
  currentBg = undefined;
108
192
  currentBold = false;
193
+ currentItalic = false;
194
+ currentUnderline = false;
195
+ currentDim = false;
196
+ currentStrike = false;
109
197
  }
110
198
  else if (code === 1)
111
199
  currentBold = true;
112
- else if (code === 22)
200
+ else if (code === 2)
201
+ currentDim = true;
202
+ else if (code === 3)
203
+ currentItalic = true;
204
+ else if (code === 4)
205
+ currentUnderline = true;
206
+ else if (code === 9)
207
+ currentStrike = true;
208
+ else if (code === 22) {
209
+ // SGR 22 resets intensity: clears BOTH bold and dim.
113
210
  currentBold = false;
211
+ currentDim = false;
212
+ }
213
+ else if (code === 23)
214
+ currentItalic = false;
215
+ else if (code === 24)
216
+ currentUnderline = false;
217
+ else if (code === 29)
218
+ currentStrike = false;
114
219
  else if (code >= 30 && code <= 37)
115
220
  currentFg = (code - 30).toString();
116
221
  else if (code >= 40 && code <= 47)
@@ -172,6 +277,14 @@ export function blit(state, startX, startY, content, style = {}) {
172
277
  cell.bg = style.bg;
173
278
  if (currentBold)
174
279
  cell.bold = true;
280
+ if (currentItalic)
281
+ cell.italic = true;
282
+ if (currentUnderline)
283
+ cell.underline = true;
284
+ if (currentDim)
285
+ cell.dim = true;
286
+ if (currentStrike)
287
+ cell.strike = true;
175
288
  setCell(state, x, startY + row, cell);
176
289
  x += w;
177
290
  }
@@ -218,15 +331,19 @@ export function resolveSize(unit, parentDim, contentDim) {
218
331
  return contentDim;
219
332
  }
220
333
  /**
221
- * Generates a styled box string with perfect alignment and optional wrapping.
334
+ * Measures a box without rendering it: resolves outer/inner dimensions,
335
+ * wraps/truncates the content lines, and exposes the per-line placement
336
+ * (alignment + valign) the renderer will use. Pass the result back to
337
+ * box() to render without re-measuring.
222
338
  */
223
- export function box(content, options = {}, parentW, parentH) {
339
+ export function measureBox(content, options = {}, parentW, parentH) {
224
340
  // Ensure we operate on the swapped glyphs for all layout math
225
341
  content = replaceEmojis(content);
226
342
  const px = options.padding?.[1] ?? 0;
227
343
  const py = options.padding?.[0] ?? 0;
228
344
  const borderStyle = options.border || 'none';
229
345
  const borderOffset = borderStyle === 'none' ? 0 : 2;
346
+ const borderInset = borderOffset / 2;
230
347
  const rawLines = content.split('\n');
231
348
  const maxRawW = Math.max(...rawLines.map((l) => visibleWidth(l)), 0);
232
349
  const intrinsicW = maxRawW + px * 2 + borderOffset;
@@ -253,12 +370,73 @@ export function box(content, options = {}, parentW, parentH) {
253
370
  finalInnerH = Math.max(finalInnerH, options.minHeight - borderOffset);
254
371
  if (options.maxHeight)
255
372
  finalInnerH = Math.min(finalInnerH, options.maxHeight - borderOffset);
373
+ const vSpace = Math.max(0, finalInnerH - lines.length - py * 2);
374
+ let topSpace = 0;
375
+ let bottomSpace = vSpace;
376
+ if (options.valign === 'middle') {
377
+ topSpace = Math.floor(vSpace / 2);
378
+ bottomSpace = Math.ceil(vSpace / 2);
379
+ }
380
+ else if (options.valign === 'bottom') {
381
+ topSpace = vSpace;
382
+ bottomSpace = 0;
383
+ }
384
+ const align = options.align || 'left';
385
+ return {
386
+ lines,
387
+ borderInset,
388
+ px,
389
+ py,
390
+ innerW: targetInnerW,
391
+ innerH: finalInnerH,
392
+ topSpace,
393
+ bottomSpace,
394
+ width: targetInnerW + borderOffset,
395
+ // Content lines are never clipped to a too-small fixed height, so the
396
+ // rendered string can exceed finalInnerH — mirror that here.
397
+ height: borderOffset + py * 2 + topSpace + bottomSpace + lines.length,
398
+ contentLeft(k) {
399
+ const line = (lines[k] ?? '').trimEnd();
400
+ const extra = Math.max(0, targetInnerW - visibleWidth(line) - px * 2);
401
+ const left = align === 'center'
402
+ ? px + Math.floor(extra / 2)
403
+ : align === 'right'
404
+ ? px + extra
405
+ : px;
406
+ return borderInset + left;
407
+ },
408
+ contentTop(k) {
409
+ return borderInset + py + topSpace + k;
410
+ },
411
+ };
412
+ }
413
+ /**
414
+ * Generates a styled box string with perfect alignment and optional
415
+ * wrapping. This is the pure string-building form; ctx.box() adds
416
+ * placement and painting on top of it. Pass a precomputed `measure`
417
+ * (from measureBox with the SAME content/options) to skip re-measuring.
418
+ * @example box('hello', { width: 20, border: 'rounded', padding: [0, 1] });
419
+ */
420
+ export function box(content, options = {}, parentW, parentH, measure) {
421
+ const m = measure ?? measureBox(content, options, parentW, parentH);
422
+ const px = m.px;
423
+ const py = m.py;
424
+ const borderStyle = options.border || 'none';
425
+ const lines = m.lines;
426
+ const targetInnerW = m.innerW;
427
+ const topS = m.topSpace;
428
+ const bottomS = m.bottomSpace;
256
429
  const b = borderStyle === 'none'
257
430
  ? null
258
431
  : BORDERS[borderStyle] || BORDERS.default;
259
432
  // Color Resolution
260
- const { fg } = require('./colors');
261
- const resolveSide = (color) => typeof color === 'function' ? color : (s) => fg(color, s);
433
+ // ThemeColors are callable, so they must be detected BEFORE the
434
+ // function-style border-wrapper path (brand check via isThemeColor).
435
+ const resolveSide = (color) => isThemeColor(color)
436
+ ? (s) => fgColor(color.rgb, s)
437
+ : typeof color === 'function'
438
+ ? color
439
+ : (s) => fgColor(color, s);
262
440
  const wrapBg = (s) => {
263
441
  if (!options.bgColor)
264
442
  return s;
@@ -267,12 +445,12 @@ export function box(content, options = {}, parentW, parentH) {
267
445
  // In string-building mode, we must ignore gradients. They are handled in absolute rect mode.
268
446
  return s;
269
447
  }
270
- const { resolveColor } = require('./colors');
271
448
  const code = resolveColor(options.bgColor);
272
- const prefix = typeof options.bgColor === 'object' || String(code).startsWith('2;')
273
- ? '48'
274
- : '48;5';
275
- const bgOn = `\x1b[${prefix};${code}m`;
449
+ if (code === undefined)
450
+ return s; // mono tier: no color output
451
+ const codeStr = String(code);
452
+ const prefix = codeStr.startsWith('2;') ? '48' : '48;5';
453
+ const bgOn = `\x1b[${prefix};${codeStr}m`;
276
454
  // Apply bg, and if the string contains resets, re-apply the bg right after the reset.
277
455
  // We add a final reset at the very end to clean up.
278
456
  return `${bgOn + s.replace(/\x1b\[0m/g, `\x1b[0m${bgOn}`)}\x1b[0m`;
@@ -299,16 +477,6 @@ export function box(content, options = {}, parentW, parentH) {
299
477
  const hBottom = b?.bottom || b?.h || ' ';
300
478
  const vLeft = b?.left || b?.v || ' ';
301
479
  const vRight = b?.right || b?.v || ' ';
302
- const vSpace = Math.max(0, finalInnerH - lines.length - py * 2);
303
- let topS = 0, bottomS = vSpace;
304
- if (options.valign === 'middle') {
305
- topS = Math.floor(vSpace / 2);
306
- bottomS = Math.ceil(vSpace / 2);
307
- }
308
- else if (options.valign === 'bottom') {
309
- topS = vSpace;
310
- bottomS = 0;
311
- }
312
480
  const out = [];
313
481
  // Top Border
314
482
  if (b) {
@@ -374,6 +542,7 @@ export function box(content, options = {}, parentW, parentH) {
374
542
  }
375
543
  return out.join('\n');
376
544
  }
545
+ /** Joins rendered blocks side-by-side, padding each to its own width. */
377
546
  export function joinHorizontal(...blocks) {
378
547
  const parsed = blocks.map((b) => b.split('\n'));
379
548
  const maxH = Math.max(...parsed.map((p) => p.length));
@@ -397,14 +566,17 @@ export function joinHorizontal(...blocks) {
397
566
  }
398
567
  return out.join('\n');
399
568
  }
569
+ /** Stacks rendered blocks vertically (skips empty strings). */
400
570
  export function joinVertical(...blocks) {
401
571
  return blocks.filter(Boolean).join('\n');
402
572
  }
573
+ /** Returns a box() partially applied with default StyleOptions. */
403
574
  export function createStyle(defaults) {
404
575
  return (content, overrides = {}) => {
405
576
  return box(content, { ...defaults, ...overrides });
406
577
  };
407
578
  }
579
+ /** Uppercased ` TEXT ` chip, wrapped by the given styler. */
408
580
  export function badge(text, colorFn = (s) => s) {
409
581
  return colorFn(` ${text.toUpperCase()} `);
410
582
  }
@@ -448,6 +620,10 @@ export function table(rows, options = {}, parentW) {
448
620
  align: 'left',
449
621
  });
450
622
  }
623
+ /**
624
+ * Computes the scroll window that keeps `selectedIndex` visible in
625
+ * `maxVisible` rows (used by list windowing).
626
+ */
451
627
  export function getWindow(items, selectedIndex, maxVisible) {
452
628
  const start = Math.max(0, Math.min(selectedIndex - Math.floor(maxVisible / 2), items.length - maxVisible));
453
629
  const visible = items.slice(start, start + maxVisible);
@@ -458,22 +634,27 @@ export function getWindow(items, selectedIndex, maxVisible) {
458
634
  hasMoreBelow: start + maxVisible < items.length,
459
635
  };
460
636
  }
637
+ /**
638
+ * Renders items as list rows with selection/hover washes and optional
639
+ * maxVisible windowing. Pure string form; ctx.list() adds the keyboard
640
+ * and mouse behavior on top.
641
+ */
461
642
  export function list(items, options = {}, parentW) {
462
643
  const bullet = options.bullet || '';
463
644
  const indent = ' '.repeat(options.indent || 0);
464
645
  const resolvedW = resolveSize(options.width, parentW || 0, 0);
465
- const { resolveColor } = require('./colors');
466
- const wrapSelectedBg = (line) => {
467
- if (!options.selectedBg)
468
- return line;
469
- const code = resolveColor(options.selectedBg);
646
+ const wrapLineBg = (line, bg) => {
647
+ const code = resolveColor(bg);
648
+ if (code === undefined)
649
+ return line; // mono tier: no color output
470
650
  const codeStr = String(code);
471
- const prefix = typeof options.selectedBg === 'object' || codeStr.startsWith('2;')
472
- ? '48'
473
- : '48;5';
651
+ const prefix = codeStr.startsWith('2;') ? '48' : '48;5';
474
652
  const bgOn = `\x1b[${prefix};${codeStr}m`;
475
653
  return `${bgOn + line.replace(/\x1b\[0m/g, `\x1b[0m${bgOn}`)}\x1b[0m`;
476
654
  };
655
+ const padToWidth = (line) => resolvedW > 0
656
+ ? line + ' '.repeat(Math.max(0, resolvedW - visibleWidth(line)))
657
+ : line;
477
658
  let targetItems = items, offset = 0, hasMoreAbove = false, hasMoreBelow = false;
478
659
  if (options.maxVisible && items.length > options.maxVisible) {
479
660
  const win = getWindow(items, options.focusedIndex || 0, options.maxVisible);
@@ -490,11 +671,11 @@ export function list(items, options = {}, parentW) {
490
671
  const styledLine = options.focusStyle ? options.focusStyle(line) : line;
491
672
  if (!options.selectedBg)
492
673
  return styledLine;
493
- const paddedLine = resolvedW > 0
494
- ? styledLine +
495
- ' '.repeat(Math.max(0, resolvedW - visibleWidth(styledLine)))
496
- : styledLine;
497
- return wrapSelectedBg(paddedLine);
674
+ return wrapLineBg(padToWidth(styledLine), options.selectedBg);
675
+ }
676
+ // Hover wash (selection wins: checked above).
677
+ if (options.hoveredIndex === actualIdx && options.hoverBg) {
678
+ return wrapLineBg(padToWidth(line), options.hoverBg);
498
679
  }
499
680
  return line;
500
681
  })
@@ -506,6 +687,10 @@ export function list(items, options = {}, parentW) {
506
687
  out = `${out}\n${indent} ↓ more…`;
507
688
  return out;
508
689
  }
690
+ /**
691
+ * Crops a multi-line string to a width×height window starting at
692
+ * `scrollY` — the primitive for scrollable content.
693
+ */
509
694
  export function viewport(content, width, height, scrollY = 0) {
510
695
  const lines = content.split('\n');
511
696
  const visibleLines = lines.slice(scrollY, scrollY + height);
@@ -515,10 +700,12 @@ export function viewport(content, width, height, scrollY = 0) {
515
700
  })
516
701
  .join('\n');
517
702
  }
703
+ /** Fills the whole screen background with a solid color. */
518
704
  export function wallpaper(state, options) {
519
705
  const { bg } = options;
520
706
  rect(state, 0, 0, state.width, state.height, { char: ' ', bg });
521
707
  }
708
+ /** Fills the whole screen background with a multi-stop gradient. */
522
709
  export function gradient(state, colors, options = {}) {
523
710
  const { direction = 'vertical' } = options;
524
711
  rect(state, 0, 0, state.width, state.height, {
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
package/dist/render.d.ts CHANGED
@@ -2,16 +2,48 @@
2
2
  * Bunti Functional Rendering & Diffing
3
3
  */
4
4
  import { type ScreenState } from './state';
5
+ /**
6
+ * Emits the restorative ANSI sequence for a screen (mouse/focus tracking off,
7
+ * reset, clear, back to main buffer, cursor visible) and disables raw mode.
8
+ * Idempotent: safe to call any number of times per loop session.
9
+ */
10
+ export declare function restoreTerminal(state: ScreenState): void;
5
11
  export declare function syncScreenSize(state: ScreenState): boolean;
6
12
  export declare function isResizeSettled(state: ScreenState, now?: number): boolean;
7
13
  export declare function clearTerminalForResize(state: ScreenState): void;
8
14
  /**
9
- * Diffs back and front buffers surgically.
15
+ * OSC 22 pointer cursor: emits the 'pointer' shape when any hitbox
16
+ * registered this frame is under the mouse, and resets to 'default' on the
17
+ * hover-off edge. Emission is edge-triggered (once per state change, never
18
+ * per frame). Gated off for Apple Terminal, which does not understand
19
+ * OSC 22; everywhere else an unsupported sequence is harmlessly ignored.
20
+ */
21
+ export declare function updatePointerShape(state: ScreenState): void;
22
+ /**
23
+ * Diffs back and front buffers and assembles the ANSI update string.
24
+ * Mutates the front buffer and the state's SGR trackers exactly like a real
25
+ * flush, but performs no I/O — flush() writes the result, tests assert on it.
26
+ */
27
+ export declare function renderFrame(state: ScreenState): string;
28
+ /**
29
+ * Diffs back and front buffers surgically and writes the update to stdout.
10
30
  */
11
31
  export declare function flush(state: ScreenState): void;
12
32
  /**
13
33
  * Starts the render loop for a given screen state.
14
34
  */
15
35
  export declare function loop(state: ScreenState, renderCallback: (s: ScreenState) => void): Promise<void>;
36
+ /**
37
+ * Feeds a raw stdin chunk through the screen's stateful tokenizer and
38
+ * dispatches the resulting tokens. Partial escape sequences are carried
39
+ * across calls; a bare ESC flushes as 'escape' via the tokenizer timer.
40
+ */
16
41
  export declare function applyInputToState(state: ScreenState, data: unknown, stop?: () => void): void;
42
+ /**
43
+ * Moves queued KeyEvents into this frame's `state.keys`, appends synthetic
44
+ * held-key releases, and recomputes the legacy `state.lastKey` slot (first
45
+ * unmodified press/repeat of the frame). Runs once per render tick, before
46
+ * the render callback.
47
+ */
48
+ export declare function drainFrameInput(state: ScreenState): void;
17
49
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,WAQhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,SAAa,WAEnE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,QAGxD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,WAAW,QAsIvC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,WAAW,EAClB,cAAc,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,GACvC,OAAO,CAAC,IAAI,CAAC,CA4Hf;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,OAAO,EACb,IAAI,CAAC,EAAE,MAAM,IAAI,QAuDlB"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAS/D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,QA+BjD;AAsDD,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,WAQhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,SAAa,WAEnE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,QASxD;AAwBD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,QAyBpD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAkJtD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,WAAW,QAiBvC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,WAAW,EAClB,cAAc,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,GACvC,OAAO,CAAC,IAAI,CAAC,CAuKf;AA2HD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,OAAO,EACb,IAAI,CAAC,EAAE,MAAM,IAAI,QAUlB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,QAsBjD"}