@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/colors.js CHANGED
@@ -1,6 +1,25 @@
1
1
  /**
2
2
  * Bunti Semantic & Palette Color System
3
3
  */
4
+ import { colorTier } from './detect';
5
+ import { hintsSuppressed, nearestMatch, recordHint } from './diagnostics';
6
+ /**
7
+ * Internal brand carried by ThemeColor instances so callable theme tokens can
8
+ * be distinguished from plain function-style border wrappers.
9
+ */
10
+ export const THEME_COLOR = Symbol.for('bunti.theme-color');
11
+ /**
12
+ * Returns true when the value is a ThemeColor (callable fg-styler carrying
13
+ * `.rgb` and `.hex`), detected via the internal brand symbol.
14
+ */
15
+ export function isThemeColor(value) {
16
+ return (typeof value === 'function' &&
17
+ value[THEME_COLOR] === true);
18
+ }
19
+ /**
20
+ * Bunti's named color palette (ANSI-256 codes). Any name here works as a
21
+ * color value: `fg('bunti-blue', text)`, `{ bgColor: 'midnight' }`.
22
+ */
4
23
  export const PALETTE = {
5
24
  // Greyscale
6
25
  slate: '235',
@@ -72,38 +91,173 @@ const NAME_TO_ANSI = {
72
91
  gray: '244',
73
92
  };
74
93
  /**
75
- * Parses a hex color string (#RRGGBB or #RGB) to an RGB object.
94
+ * Parses a hex color string (#RGB, #RGBA, #RRGGBB, or #RRGGBBAA) to an RGB
95
+ * object. Alpha channels are composited over `base` (defaults to black), so
96
+ * `#ffffff80` over black resolves to mid-gray.
76
97
  */
77
- export function hexToRGB(hex) {
78
- const h = hex.replace('#', '');
79
- if (h.length === 3) {
98
+ export function hexToRGB(hex, base = { r: 0, g: 0, b: 0 }) {
99
+ let h = hex.replace('#', '');
100
+ if (h.length === 3 || h.length === 4) {
101
+ let expanded = '';
102
+ for (const c of h)
103
+ expanded += c + c;
104
+ h = expanded;
105
+ }
106
+ const r = parseInt(h.substring(0, 2), 16);
107
+ const g = parseInt(h.substring(2, 4), 16);
108
+ const b = parseInt(h.substring(4, 6), 16);
109
+ if (h.length === 8) {
110
+ const a = parseInt(h.substring(6, 8), 16) / 255;
80
111
  return {
81
- r: parseInt(h[0] + h[0], 16),
82
- g: parseInt(h[1] + h[1], 16),
83
- b: parseInt(h[2] + h[2], 16),
112
+ r: Math.round(r * a + base.r * (1 - a)),
113
+ g: Math.round(g * a + base.g * (1 - a)),
114
+ b: Math.round(b * a + base.b * (1 - a)),
84
115
  };
85
116
  }
86
- return {
87
- r: parseInt(h.substring(0, 2), 16),
88
- g: parseInt(h.substring(2, 4), 16),
89
- b: parseInt(h.substring(4, 6), 16),
90
- };
117
+ return { r, g, b };
118
+ }
119
+ /**
120
+ * Formats an RGB object as a #rrggbb hex string.
121
+ */
122
+ export function rgbToHex(rgb) {
123
+ const h = (v) => Math.max(0, Math.min(255, Math.round(v)))
124
+ .toString(16)
125
+ .padStart(2, '0');
126
+ return `#${h(rgb.r)}${h(rgb.g)}${h(rgb.b)}`;
127
+ }
128
+ // Exact xterm 256-color model: 16 base colors + 6x6x6 cube + 24-step gray ramp.
129
+ const CUBE_LEVELS = [0, 95, 135, 175, 215, 255];
130
+ const BASE16 = [
131
+ { r: 0, g: 0, b: 0 },
132
+ { r: 128, g: 0, b: 0 },
133
+ { r: 0, g: 128, b: 0 },
134
+ { r: 128, g: 128, b: 0 },
135
+ { r: 0, g: 0, b: 128 },
136
+ { r: 128, g: 0, b: 128 },
137
+ { r: 0, g: 128, b: 128 },
138
+ { r: 192, g: 192, b: 192 },
139
+ { r: 128, g: 128, b: 128 },
140
+ { r: 255, g: 0, b: 0 },
141
+ { r: 0, g: 255, b: 0 },
142
+ { r: 255, g: 255, b: 0 },
143
+ { r: 0, g: 0, b: 255 },
144
+ { r: 255, g: 0, b: 255 },
145
+ { r: 0, g: 255, b: 255 },
146
+ { r: 255, g: 255, b: 255 },
147
+ ];
148
+ /**
149
+ * Converts an ANSI-256 code to its exact xterm RGB value
150
+ * (16 base + 6x6x6 color cube + 24-step gray ramp).
151
+ */
152
+ export function ansi256ToRGB(code) {
153
+ const c = Math.max(0, Math.min(255, Math.trunc(code)));
154
+ if (c < 16)
155
+ return { ...BASE16[c] };
156
+ if (c < 232) {
157
+ const n = c - 16;
158
+ return {
159
+ r: CUBE_LEVELS[Math.floor(n / 36)],
160
+ g: CUBE_LEVELS[Math.floor(n / 6) % 6],
161
+ b: CUBE_LEVELS[n % 6],
162
+ };
163
+ }
164
+ const v = 8 + (c - 232) * 10;
165
+ return { r: v, g: v, b: v };
166
+ }
167
+ function nearestCubeIndex(v) {
168
+ return v < 48 ? 0 : v < 115 ? 1 : Math.min(5, Math.floor((v - 35) / 40));
169
+ }
170
+ /**
171
+ * Quantizes an RGB value to the nearest ANSI-256 code
172
+ * (best of the 6x6x6 cube vs the gray ramp).
173
+ */
174
+ export function rgbTo256(rgb) {
175
+ const ri = nearestCubeIndex(rgb.r);
176
+ const gi = nearestCubeIndex(rgb.g);
177
+ const bi = nearestCubeIndex(rgb.b);
178
+ const cr = CUBE_LEVELS[ri];
179
+ const cg = CUBE_LEVELS[gi];
180
+ const cb = CUBE_LEVELS[bi];
181
+ const cubeDist = (cr - rgb.r) ** 2 + (cg - rgb.g) ** 2 + (cb - rgb.b) ** 2;
182
+ const avg = (rgb.r + rgb.g + rgb.b) / 3;
183
+ const grayIdx = Math.max(0, Math.min(23, Math.round((avg - 8) / 10)));
184
+ const gv = 8 + grayIdx * 10;
185
+ const grayDist = (gv - rgb.r) ** 2 + (gv - rgb.g) ** 2 + (gv - rgb.b) ** 2;
186
+ return grayDist < cubeDist ? 232 + grayIdx : 16 + 36 * ri + 6 * gi + bi;
187
+ }
188
+ /**
189
+ * Quantizes an RGB value to the nearest of the 16 base ANSI colors.
190
+ */
191
+ export function rgbTo16(rgb) {
192
+ let best = 0;
193
+ let bestDist = Infinity;
194
+ for (let i = 0; i < 16; i++) {
195
+ const c = BASE16[i];
196
+ const dist = (c.r - rgb.r) ** 2 + (c.g - rgb.g) ** 2 + (c.b - rgb.b) ** 2;
197
+ if (dist < bestDist) {
198
+ bestDist = dist;
199
+ best = i;
200
+ }
201
+ }
202
+ return best;
203
+ }
204
+ function quantizeRGB(rgb, tier) {
205
+ if (tier === 'truecolor')
206
+ return `2;${rgb.r};${rgb.g};${rgb.b}`;
207
+ return tier === '256' ? rgbTo256(rgb) : rgbTo16(rgb);
208
+ }
209
+ // Dev diagnostics: unknown color names hint once each (buffered to exit).
210
+ // The Set keeps the per-cell hot path O(1) after the first sighting.
211
+ const reportedUnknownColors = new Set();
212
+ function reportUnknownColorName(name) {
213
+ if (reportedUnknownColors.has(name))
214
+ return;
215
+ reportedUnknownColors.add(name);
216
+ if (hintsSuppressed())
217
+ return;
218
+ const suggestion = nearestMatch(name, [
219
+ ...Object.keys(PALETTE),
220
+ ...Object.keys(NAME_TO_ANSI),
221
+ ]);
222
+ recordHint(`unknown color name '${name}' passed through as a raw ANSI code` +
223
+ `${suggestion ? ` (did you mean '${suggestion}'?)` : ''}`);
91
224
  }
92
225
  /**
93
- * Resolves a palette name, color code, or RGB object to a string for ANSI.
226
+ * Resolves a palette name, color code, RGB object, or ThemeColor to an ANSI
227
+ * color code, quantized to the active color tier. Returns undefined on the
228
+ * 'mono' tier (NO_COLOR), which suppresses color output entirely.
94
229
  */
95
230
  export function resolveColor(color) {
96
- if (typeof color === 'object' && 'r' in color) {
97
- return `2;${color.r};${color.g};${color.b}`;
231
+ const tier = colorTier();
232
+ if (tier === 'mono')
233
+ return undefined;
234
+ const value = isThemeColor(color)
235
+ ? color.rgb
236
+ : color;
237
+ if (typeof value === 'object' && 'r' in value) {
238
+ return quantizeRGB(value, tier);
98
239
  }
99
- if (typeof color === 'string') {
100
- if (color.startsWith('#')) {
101
- const rgb = hexToRGB(color);
102
- return `2;${rgb.r};${rgb.g};${rgb.b}`;
240
+ if (typeof value === 'string') {
241
+ if (value.startsWith('#')) {
242
+ return quantizeRGB(hexToRGB(value), tier);
103
243
  }
104
- return PALETTE[color] || NAME_TO_ANSI[color] || color;
244
+ const resolved = PALETTE[value] || NAME_TO_ANSI[value] || value;
245
+ // Unrecognized non-numeric names fall through as raw ANSI codes and
246
+ // render garbage — hint once with a nearest-name suggestion.
247
+ if (resolved === value && !/^\d+$/.test(value) && !value.startsWith('2;')) {
248
+ reportUnknownColorName(value);
249
+ }
250
+ if (tier === '16') {
251
+ const code = Number.parseInt(String(resolved), 10);
252
+ if (Number.isFinite(code) && code > 15) {
253
+ return rgbTo16(ansi256ToRGB(code));
254
+ }
255
+ }
256
+ return resolved;
105
257
  }
106
- return color;
258
+ if (tier === '16' && value > 15)
259
+ return rgbTo16(ansi256ToRGB(value));
260
+ return value;
107
261
  }
108
262
  /**
109
263
  * Creates a multi-stop gradient (array of RGB objects) between multiple colors.
@@ -143,27 +297,61 @@ export function createGradient(arg1, arg2, arg3) {
143
297
  return result;
144
298
  }
145
299
  /**
146
- * Helper to resolve any color type to an RGB object.
300
+ * Resolves any color value (name, hex, ANSI-256 code, RGB, ThemeColor) to an
301
+ * exact RGB object. Numeric codes use the exact xterm 256-color table.
147
302
  */
148
- function resolveColorToRGB(color) {
149
- if (typeof color === 'object' && 'r' in color)
303
+ export function resolveColorToRGB(color) {
304
+ if (isThemeColor(color))
305
+ return color.rgb;
306
+ if (typeof color === 'object' && color !== null && 'r' in color) {
150
307
  return color;
151
- if (typeof color === 'string' && color.startsWith('#'))
152
- return hexToRGB(color);
153
- // 1. Check registry
154
- if (typeof color === 'string' && RGB_REGISTRY[color])
155
- return RGB_REGISTRY[color];
156
- // 2. Check Palette
157
- const paletteValue = PALETTE[color];
158
- if (paletteValue) {
159
- // If palette value is a name, look it up in registry
160
- const registered = RGB_REGISTRY[color];
161
- if (registered)
162
- return registered;
308
+ }
309
+ if (typeof color === 'number')
310
+ return ansi256ToRGB(color);
311
+ if (typeof color === 'string') {
312
+ if (color.startsWith('#'))
313
+ return hexToRGB(color);
314
+ // Resolved truecolor code ('2;r;g;b') — cells store these after
315
+ // resolveColor(); dimRect and friends must round-trip them.
316
+ if (color.startsWith('2;')) {
317
+ const parts = color.split(';');
318
+ return {
319
+ r: Number(parts[1]) || 0,
320
+ g: Number(parts[2]) || 0,
321
+ b: Number(parts[3]) || 0,
322
+ };
323
+ }
324
+ if (RGB_REGISTRY[color])
325
+ return RGB_REGISTRY[color];
326
+ const paletteValue = PALETTE[color] ?? NAME_TO_ANSI[color];
327
+ const code = Number.parseInt(paletteValue ?? color, 10);
328
+ if (Number.isFinite(code))
329
+ return ansi256ToRGB(code);
163
330
  }
164
331
  // Fallback
165
332
  return { r: 128, g: 128, b: 128 };
166
333
  }
334
+ /**
335
+ * WCAG 2.x relative luminance (0 = black, 1 = white) of any color value.
336
+ */
337
+ export function relativeLuminance(color) {
338
+ const { r, g, b } = resolveColorToRGB(color);
339
+ const lin = (v) => {
340
+ const s = v / 255;
341
+ return s <= 0.04045 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
342
+ };
343
+ return 0.2126 * lin(r) + 0.7152 * lin(g) + 0.0722 * lin(b);
344
+ }
345
+ /**
346
+ * Picks pure black or pure white text for maximum WCAG contrast against the
347
+ * given background color. (White wins below luminance ~0.179, the point where
348
+ * both contrast ratios are equal.)
349
+ */
350
+ export function contrastText(bgColor) {
351
+ return relativeLuminance(bgColor) < 0.1791
352
+ ? { r: 255, g: 255, b: 255 }
353
+ : { r: 0, g: 0, b: 0 };
354
+ }
167
355
  /**
168
356
  * Adjusts the brightness of a color.
169
357
  */
@@ -210,18 +398,29 @@ export function rgb(r, g, b) {
210
398
  return { r, g, b };
211
399
  }
212
400
  /**
213
- * Returns an ANSI escape sequence for a color.
401
+ * Wraps text in a foreground-color ANSI sequence (any color value:
402
+ * palette name, hex, ANSI-256 code, RGB, ThemeColor). On the 'mono' tier
403
+ * the text is returned unstyled.
404
+ * @example fg('#3bbce1', 'hello') // truecolor cyan text
214
405
  */
215
406
  export function fg(color, text) {
216
407
  const code = resolveColor(color);
408
+ if (code === undefined)
409
+ return text;
217
410
  const codeStr = String(code);
218
- const prefix = typeof color === 'object' || codeStr.startsWith('2;') ? '38' : '38;5';
411
+ const prefix = codeStr.startsWith('2;') ? '38' : '38;5';
219
412
  return `\x1b[${prefix};${codeStr}m${text}\x1b[0m`;
220
413
  }
414
+ /**
415
+ * Wraps text in a background-color ANSI sequence (any color value). On the
416
+ * 'mono' tier the text is returned unstyled.
417
+ */
221
418
  export function bg(color, text) {
222
419
  const code = resolveColor(color);
420
+ if (code === undefined)
421
+ return text;
223
422
  const codeStr = String(code);
224
- const prefix = typeof color === 'object' || codeStr.startsWith('2;') ? '48' : '48;5';
423
+ const prefix = codeStr.startsWith('2;') ? '48' : '48;5';
225
424
  return `\x1b[${prefix};${codeStr}m${text}\x1b[0m`;
226
425
  }
227
426
  //# sourceMappingURL=colors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import type { BuntiContext, DSLBoxOptions } from '../dsl';
2
+ /** Props for Box — identical to ctx.box() options. */
2
3
  export interface BoxProps extends DSLBoxOptions {
3
4
  }
5
+ /**
6
+ * Component-style alias for ctx.box(): draws a styled box and renders the
7
+ * callback inside its padded interior. Returns the rendered string.
8
+ * @example Box(ctx, { width: 40, border: 'rounded' }, (s) => s.text('hi'));
9
+ */
4
10
  export declare function Box(ctx: BuntiContext, props: BoxProps, callback: (sub: BuntiContext) => void): string;
5
11
  //# sourceMappingURL=Box.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../src/components/Box.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE1D,MAAM,WAAW,QAAS,SAAQ,aAAa;CAAG;AAElD,wBAAgB,GAAG,CACjB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,UAGtC"}
1
+ {"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../src/components/Box.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE1D,sDAAsD;AACtD,MAAM,WAAW,QAAS,SAAQ,aAAa;CAAG;AAElD;;;;GAIG;AACH,wBAAgB,GAAG,CACjB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,UAGtC"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Component-style alias for ctx.box(): draws a styled box and renders the
3
+ * callback inside its padded interior. Returns the rendered string.
4
+ * @example Box(ctx, { width: 40, border: 'rounded' }, (s) => s.text('hi'));
5
+ */
1
6
  export function Box(ctx, props, callback) {
2
7
  return ctx.box(props, callback);
3
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Box.js","sourceRoot":"","sources":["../../src/components/Box.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,GAAG,CACjB,GAAiB,EACjB,KAAe,EACf,QAAqC;IAErC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"Box.js","sourceRoot":"","sources":["../../src/components/Box.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,UAAU,GAAG,CACjB,GAAiB,EACjB,KAAe,EACf,QAAqC;IAErC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC"}
@@ -1,14 +1,27 @@
1
1
  import type { BuntiContext, DSLBoxOptions } from '../dsl';
2
+ /** Props for Button. */
2
3
  export interface ButtonProps extends DSLBoxOptions {
4
+ /** Stable id: keys the hitbox, Tab-focus slot, and hover state. */
3
5
  id: string;
6
+ /** Button text. */
4
7
  label: string;
8
+ /** Glyph rendered before the label (use ctx.icon(name)). */
5
9
  icon?: string;
10
+ /**
11
+ * Visual style, mapped to theme tokens. Row heights differ:
12
+ * - default/'secondary' = 3-row outlined box (border + 1 content row)
13
+ * - 'primary' = 1-row filled pill
14
+ * - 'danger' = 1-row filled red pill
15
+ * - 'ghost' = 1-row borderless text
16
+ */
6
17
  variant?: 'primary' | 'secondary' | 'danger' | 'ghost';
18
+ /** Fires once per activation (mouse click release, Enter, or Space). */
7
19
  onClick?: () => void;
8
20
  }
9
21
  /**
10
- * Tactical Button Component
11
- * Fully reactive to keyboard focus and action events.
22
+ * Themed push button: Tab-focusable, hover/press styled from ctx.theme
23
+ * tokens, activated by click, Enter, or Space (onClick fires once).
24
+ * @example Button(ctx, { id: 'go', label: 'Deploy', variant: 'primary', onClick: deploy });
12
25
  */
13
26
  export declare function Button(ctx: BuntiContext, props: ButtonProps): string;
14
27
  //# sourceMappingURL=Button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/components/Button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG1D,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,UA6F3D"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/components/Button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAO1D,wBAAwB;AACxB,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvD,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,UA8G3D"}
@@ -1,8 +1,9 @@
1
- import { adjustBrightness } from '../colors';
1
+ import { adjustBrightness, contrastText } from '../colors';
2
2
  import { indentBlock } from '../utils';
3
3
  /**
4
- * Tactical Button Component
5
- * Fully reactive to keyboard focus and action events.
4
+ * Themed push button: Tab-focusable, hover/press styled from ctx.theme
5
+ * tokens, activated by click, Enter, or Space (onClick fires once).
6
+ * @example Button(ctx, { id: 'go', label: 'Deploy', variant: 'primary', onClick: deploy });
6
7
  */
7
8
  export function Button(ctx, props) {
8
9
  const { box, color, focusable, state, hitbox, resolveLocalRect } = ctx;
@@ -15,8 +16,16 @@ export function Button(ctx, props) {
15
16
  const filled = isPill || props.variant === 'danger';
16
17
  const contentWidth = Math.max(12, finalLabel.length + (isPill ? 6 : 4));
17
18
  const contentHeight = filled || isGhost ? 1 : 3;
19
+ // Flow placement: without explicit coordinates, a non-detached button in
20
+ // a box joins the text flow at the CURRENT cursor — several buttons can
21
+ // share one line — so the hitbox anchors at the cursor and is re-placed
22
+ // with the painted line (alignment included) by the enclosing box.
23
+ const flowPlaced = !ctx.isRoot &&
24
+ !props.detach &&
25
+ props.x === undefined &&
26
+ props.y === undefined;
18
27
  const area = resolveLocalRect({
19
- x: props.x,
28
+ x: props.x ?? (flowPlaced ? ctx.cursorX : undefined),
20
29
  y: props.y ?? ctx.cursorY,
21
30
  width: props.width ?? contentWidth,
22
31
  height: props.height ?? contentHeight,
@@ -28,38 +37,49 @@ export function Button(ctx, props) {
28
37
  y: area.y,
29
38
  width: area.width,
30
39
  height: area.height,
40
+ flow: flowPlaced,
31
41
  });
32
42
  const isHovered = interaction.hovered;
33
43
  const isActive = isSelected || isHovered;
34
- // 3. Resolve Theme & State
35
- let bg = 254; // Near white
36
- let fg = 'black';
37
- let borderCol = { r: 217, g: 216, b: 213 };
44
+ // 3. Resolve Theme & State — every color derives from ctx.theme tokens so
45
+ // a live theme swap restyles the button. Hover/pressed shifts are
46
+ // mode-aware: brighten on dark themes, darken on light themes.
47
+ const theme = ctx.theme;
48
+ const shiftDir = theme.mode === 'dark' ? 1 : -1;
49
+ const hover = (base) => adjustBrightness(base, 15 * shiftDir);
50
+ const press = (base) => adjustBrightness(base, 30 * shiftDir);
51
+ let bg = theme.surface;
52
+ let fg = theme.foreground;
53
+ let borderCol = theme.border;
38
54
  if (props.variant === 'primary') {
39
- bg = isActive ? 'sky' : 'bunti-blue';
40
- fg = 'white';
55
+ bg = isActive ? hover(theme.primary) : theme.primary;
56
+ if (interaction.pressed)
57
+ bg = press(theme.primary);
58
+ fg = theme.onPrimary;
41
59
  borderCol = bg;
42
60
  }
43
61
  else if (props.variant === 'danger') {
44
- bg = 'error';
45
- borderCol = adjustBrightness('error', 20);
46
- fg = 'white';
62
+ bg = isActive ? hover(theme.danger) : theme.danger;
63
+ if (interaction.pressed)
64
+ bg = press(theme.danger);
65
+ fg = contrastText(bg);
66
+ borderCol = bg;
47
67
  }
48
68
  else if (isGhost) {
49
69
  bg = undefined;
50
- fg = isActive ? 'white' : 'silver';
51
- borderCol = 'ash';
70
+ fg = isActive ? hover(theme.foreground) : theme.foreground;
71
+ }
72
+ else if (isActive) {
73
+ // Default variant: focus ring + mode-aware surface shift.
74
+ borderCol = theme.focus;
75
+ bg = interaction.pressed ? press(theme.surface) : hover(theme.surface);
52
76
  }
53
- if (isActive) {
54
- if (props.variant !== 'primary' && !isGhost) {
55
- borderCol = 'black';
56
- if (interaction.pressed) {
57
- bg = adjustBrightness(bg, -5); // Pressed state
58
- }
59
- }
77
+ if (isSelected && props.variant !== 'primary' && !isGhost) {
78
+ borderCol = theme.focus; // Keyboard focus ring
60
79
  }
61
- // 4. Handle Interaction
62
- const wasClicked = interaction.pressed;
80
+ // 4. Handle Interaction — clicks fire once, on mouse release at the
81
+ // press origin (interaction.pressed would repeat every held frame).
82
+ const wasClicked = interaction.clicked;
63
83
  const wasActivated = isSelected && (state.lastKey === 'enter' || state.lastKey === ' ');
64
84
  if (wasClicked || wasActivated) {
65
85
  if (props.onClick)
@@ -76,7 +96,7 @@ export function Button(ctx, props) {
76
96
  height: area.height,
77
97
  border: filled || isGhost ? 'none' : props.border || 'rounded',
78
98
  borderColor: borderCol,
79
- bgColor: filled && !isPill ? bg : undefined,
99
+ bgColor: isPill || isGhost ? undefined : bg,
80
100
  align: props.align || 'center',
81
101
  valign: props.valign || 'middle',
82
102
  padding: props.padding || [0, isGhost ? 0 : 1],
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,33 @@
1
1
  import type { BuntiContext, DSLBoxOptions } from '../dsl';
2
+ /** Card visual variants, mapped to theme tokens. */
3
+ export type CardVariant = 'default' | 'accent' | 'danger';
4
+ /** Props for Card. */
2
5
  export interface CardProps extends DSLBoxOptions {
6
+ /** Uppercased header line rendered above the content. */
3
7
  title?: string;
4
- theme?: 'default' | 'accent' | 'danger';
8
+ /** Visual variant, mapped to theme tokens (border + title color). */
9
+ variant?: CardVariant;
10
+ /** @deprecated Use `variant` — kept as an alias to avoid breaking callers. */
11
+ theme?: CardVariant;
12
+ /**
13
+ * Registers a hitbox and enables the hover affordance: border lifts to
14
+ * theme.focus and the background shifts one step (mode-aware). Without an
15
+ * id the card has no hitbox and behaves exactly as before.
16
+ */
17
+ id?: string;
5
18
  }
6
19
  /**
7
20
  * Tactical Card Component
8
- * A structural container with an integrated header.
21
+ * A structural container with an integrated header. Colors derive from
22
+ * ctx.theme tokens:
23
+ * - default: border `theme.border`, title `theme.muted`
24
+ * - accent: border `theme.border`, title `theme.accent`
25
+ * - danger: border `theme.danger`, title `theme.danger`
26
+ *
27
+ * With an `id`, hovering lifts the border to `theme.focus` and shifts the
28
+ * background one step. Hover styling reads the hitbox registered on the
29
+ * previous frame (immediate-mode: geometry is only exact after a render),
30
+ * which is invisible at interactive frame rates.
9
31
  */
10
32
  export declare function Card(ctx: BuntiContext, props: CardProps, callback: (sub: BuntiContext) => void): string;
11
33
  //# sourceMappingURL=Card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG1D,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,UAuCtC"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAI1D,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1D,sBAAsB;AACtB,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,UAyEtC"}