linecraft 0.2.4 → 0.2.6

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 (79) hide show
  1. package/LICENSE +59 -21
  2. package/README.md +51 -8
  3. package/lib/components/code-debug.d.ts +2 -0
  4. package/lib/components/code-debug.d.ts.map +1 -1
  5. package/lib/components/code-debug.js +205 -266
  6. package/lib/components/code-debug.js.map +1 -1
  7. package/lib/components/code-debug.test.d.ts +2 -0
  8. package/lib/components/code-debug.test.d.ts.map +1 -0
  9. package/lib/components/code-debug.test.js +245 -0
  10. package/lib/components/code-debug.test.js.map +1 -0
  11. package/lib/components/fill.d.ts +2 -1
  12. package/lib/components/fill.d.ts.map +1 -1
  13. package/lib/components/fill.js.map +1 -1
  14. package/lib/components/progress-bar-grid.d.ts.map +1 -1
  15. package/lib/components/progress-bar-grid.js +5 -3
  16. package/lib/components/progress-bar-grid.js.map +1 -1
  17. package/lib/components/prompt.js +1 -1
  18. package/lib/components/prompt.js.map +1 -1
  19. package/lib/components/section.js +1 -1
  20. package/lib/components/section.js.map +1 -1
  21. package/lib/components/segments.js +4 -4
  22. package/lib/components/segments.js.map +1 -1
  23. package/lib/components/spinner.d.ts +2 -1
  24. package/lib/components/spinner.d.ts.map +1 -1
  25. package/lib/components/spinner.js +1 -1
  26. package/lib/components/spinner.js.map +1 -1
  27. package/lib/components/styled.d.ts +4 -2
  28. package/lib/components/styled.d.ts.map +1 -1
  29. package/lib/components/styled.js +37 -8
  30. package/lib/components/styled.js.map +1 -1
  31. package/lib/index.d.ts +2 -0
  32. package/lib/index.d.ts.map +1 -1
  33. package/lib/index.js +1 -0
  34. package/lib/index.js.map +1 -1
  35. package/lib/layout/grid.d.ts +3 -2
  36. package/lib/layout/grid.d.ts.map +1 -1
  37. package/lib/layout/grid.js +94 -47
  38. package/lib/layout/grid.js.map +1 -1
  39. package/lib/layout/grid.test.js +67 -0
  40. package/lib/layout/grid.test.js.map +1 -1
  41. package/lib/native/diff.test.js.map +1 -1
  42. package/lib/native/region-renderer.d.ts +1 -0
  43. package/lib/native/region-renderer.d.ts.map +1 -1
  44. package/lib/native/region-renderer.js +31 -1
  45. package/lib/native/region-renderer.js.map +1 -1
  46. package/lib/native/region.test.js +1 -1
  47. package/lib/native/region.test.js.map +1 -1
  48. package/lib/region-resize.test.js +3 -3
  49. package/lib/region-resize.test.js.map +1 -1
  50. package/lib/region.d.ts.map +1 -1
  51. package/lib/region.js +0 -46
  52. package/lib/region.js.map +1 -1
  53. package/lib/types.d.ts +6 -5
  54. package/lib/types.d.ts.map +1 -1
  55. package/lib/utils/colors.d.ts.map +1 -1
  56. package/lib/utils/colors.js +50 -8
  57. package/lib/utils/colors.js.map +1 -1
  58. package/lib/utils/colors.test.js.map +1 -1
  59. package/lib/utils/cursor-position.d.ts.map +1 -1
  60. package/lib/utils/cursor-position.js +4 -13
  61. package/lib/utils/cursor-position.js.map +1 -1
  62. package/lib/utils/debug-log.js +1 -1
  63. package/lib/utils/debug-log.js.map +1 -1
  64. package/lib/utils/terminal-theme.d.ts +17 -28
  65. package/lib/utils/terminal-theme.d.ts.map +1 -1
  66. package/lib/utils/terminal-theme.js +66 -38
  67. package/lib/utils/terminal-theme.js.map +1 -1
  68. package/lib/utils/text.d.ts +64 -2
  69. package/lib/utils/text.d.ts.map +1 -1
  70. package/lib/utils/text.js +619 -103
  71. package/lib/utils/text.js.map +1 -1
  72. package/lib/utils/text.test.d.ts +2 -0
  73. package/lib/utils/text.test.d.ts.map +1 -0
  74. package/lib/utils/text.test.js +237 -0
  75. package/lib/utils/text.test.js.map +1 -0
  76. package/lib/utils/wait-for-spacebar.d.ts.map +1 -1
  77. package/lib/utils/wait-for-spacebar.js +1 -8
  78. package/lib/utils/wait-for-spacebar.js.map +1 -1
  79. package/package.json +8 -2
@@ -0,0 +1,245 @@
1
+ // Unit tests for code-debug component
2
+ import { describe, it, expect, beforeEach } from 'vitest';
3
+ import { CodeDebug } from './code-debug.js';
4
+ import { TerminalRegion } from '../region.js';
5
+ import { callComponent } from '../component.js';
6
+ import { stripAnsi } from '../utils/text.js';
7
+ describe('code-debug component', () => {
8
+ let region;
9
+ beforeEach(() => {
10
+ region = new TerminalRegion({ disableRendering: true, width: 100 });
11
+ });
12
+ function render(component, width = 100) {
13
+ const ctx = {
14
+ availableWidth: width,
15
+ region: region,
16
+ columnIndex: 0,
17
+ rowIndex: 0,
18
+ };
19
+ const result = callComponent(component, ctx);
20
+ if (Array.isArray(result)) {
21
+ return result;
22
+ }
23
+ else if (result) {
24
+ return [result];
25
+ }
26
+ return [];
27
+ }
28
+ describe('truncated code with ellipsis', () => {
29
+ it('should correctly point to .v at columns 77-78 when code is truncated with start ellipsis', () => {
30
+ // This is the extend-chaining example that's failing
31
+ const errorLine = ' .ma:extend(.a,.b,.c,.d,.e,.f,.g,.h,.i,.j,.k,.l,.m,.n,.o,.p,.q,.r,.s,.t,.u,.v) {};';
32
+ const startColumn = 77; // Should point to '.'
33
+ const endColumn = 78; // Should point to 'v'
34
+ // Verify original columns
35
+ expect(errorLine[startColumn - 1]).toBe('.');
36
+ expect(errorLine[endColumn - 1]).toBe('v');
37
+ // Test with width that causes truncation (80 chars should truncate this 83-char line)
38
+ const width = 80;
39
+ const component = CodeDebug({
40
+ startLine: 77,
41
+ startColumn,
42
+ endColumn,
43
+ errorLine,
44
+ message: 'Extend target ".v" not accessible',
45
+ shortMessage: 'extend target not accessible',
46
+ filePath: 'test.less',
47
+ fullPath: '/test/test.less',
48
+ baseDir: '/test',
49
+ type: 'warning',
50
+ });
51
+ const output = render(component, width);
52
+ const outputText = output.join('\n');
53
+ const outputTextPlain = stripAnsi(outputText);
54
+ // Find the error line (line with │ and the code) - format: "77 │ ..."
55
+ const errorLineRegex = /^\s*\d+\s*│\s*(.+)$/m;
56
+ const errorLineMatch = outputTextPlain.match(errorLineRegex);
57
+ expect(errorLineMatch, `Error line should be found in:\n${outputTextPlain}`).toBeTruthy();
58
+ const renderedErrorLinePlain = errorLineMatch[1];
59
+ // Find the indicator line (line with │ and the underline) - format: " │ ..."
60
+ // Look for lines with indicator characters (┖, ┬, ┚, ╿)
61
+ const lines = outputTextPlain.split('\n');
62
+ let indicatorLinePlain = null;
63
+ let _fullIndicatorLine = null;
64
+ for (const line of lines) {
65
+ if (line.includes('│') && (line.includes('┖') || line.includes('┬') || line.includes('┚') || line.includes('╿'))) {
66
+ _fullIndicatorLine = line;
67
+ const match = line.match(/│ (.*)$/);
68
+ if (match) {
69
+ indicatorLinePlain = match[1];
70
+ break;
71
+ }
72
+ }
73
+ }
74
+ expect(indicatorLinePlain, `Indicator line should be found in:\n${outputTextPlain}`).toBeTruthy();
75
+ // The indicator should point to .v in the rendered error line
76
+ // Find where .v appears in the rendered error line
77
+ const dotVIndex = renderedErrorLinePlain.indexOf('.v');
78
+ expect(dotVIndex, `.v should be visible in rendered line: "${renderedErrorLinePlain}"`).toBeGreaterThanOrEqual(0);
79
+ // The indicator (┖, ┬, ┚, or ╿) should be positioned at or near .v
80
+ // Find the position of the T-bar (┬) or bracket (┖/┚) in the indicator line
81
+ const tBarIndex = indicatorLinePlain.indexOf('┬');
82
+ const bracketStart = indicatorLinePlain.indexOf('┖');
83
+ const bracketEnd = indicatorLinePlain.indexOf('┚');
84
+ const indicatorPos = tBarIndex >= 0 ? tBarIndex : (bracketStart >= 0 ? bracketStart : bracketEnd);
85
+ expect(indicatorPos, `Indicator should be found in: "${indicatorLinePlain}"`).toBeGreaterThanOrEqual(0);
86
+ // Account for ellipsis at start if present
87
+ // renderedErrorLinePlain includes ellipsis if present
88
+ const expectedIndicatorPos = dotVIndex;
89
+ // The indicator should be at or near where .v is (within 2 characters)
90
+ expect(Math.abs(indicatorPos - expectedIndicatorPos), `Indicator at ${indicatorPos} should be near .v at ${expectedIndicatorPos} in error line "${renderedErrorLinePlain}" and indicator "${indicatorLinePlain}"`).toBeLessThanOrEqual(2);
91
+ });
92
+ });
93
+ describe('short message alignment', () => {
94
+ it('should correctly align left-placed short message (message on right side)', () => {
95
+ // Left placement means message appears to the right of the code
96
+ const component = CodeDebug({
97
+ startLine: 50,
98
+ startColumn: 16,
99
+ endColumn: 35,
100
+ errorLine: 'const result = veryLongFunctionName(withManyParameters, andMoreParameters)',
101
+ message: 'Line too long',
102
+ shortMessage: 'line too long',
103
+ shortMessagePlacement: 'left',
104
+ filePath: 'test.ts',
105
+ fullPath: '/test/test.ts',
106
+ baseDir: '/test',
107
+ type: 'error',
108
+ });
109
+ const output = render(component, 100);
110
+ // Find the short message line (should have connector ──╯ pointing left)
111
+ const _shortMessageLineRegex = /^\s*│\s*(.+)$/m;
112
+ const lines = output.join('\n').split('\n');
113
+ let shortMessageLine = null;
114
+ for (const line of lines) {
115
+ if (line.includes('──╯') || line.includes('line too long')) {
116
+ shortMessageLine = line;
117
+ break;
118
+ }
119
+ }
120
+ expect(shortMessageLine).toBeTruthy();
121
+ const shortMessageLinePlain = stripAnsi(shortMessageLine);
122
+ // Find the indicator line to get the T-bar position
123
+ const _indicatorLineRegex = /^\s*│\s*(.+)$/m;
124
+ let indicatorLine = null;
125
+ for (const line of lines) {
126
+ if (line.includes('┬') || line.includes('┖')) {
127
+ indicatorLine = line;
128
+ break;
129
+ }
130
+ }
131
+ expect(indicatorLine).toBeTruthy();
132
+ const indicatorLinePlain = stripAnsi(indicatorLine);
133
+ // Find T-bar position in indicator line
134
+ const tBarPos = indicatorLinePlain.indexOf('┬');
135
+ expect(tBarPos).toBeGreaterThanOrEqual(0);
136
+ // Find connector end (╯) position in short message line
137
+ const connectorEndPos = shortMessageLinePlain.indexOf('╯');
138
+ expect(connectorEndPos).toBeGreaterThanOrEqual(0);
139
+ // The connector end (╯) should be at the T-bar position (exactly)
140
+ // Since both indicatorLinePlain and shortMessageLinePlain are offsets from the same │ prefix,
141
+ // their indices should match directly.
142
+ expect(connectorEndPos, `Left-placed message: T-bar at ${tBarPos}, connector end at ${connectorEndPos}`).toBe(tBarPos);
143
+ });
144
+ it('should correctly align right-placed short message (message on left side)', () => {
145
+ // Right placement means message appears to the left of the code
146
+ const component = CodeDebug({
147
+ startLine: 12,
148
+ startColumn: 12,
149
+ endColumn: 16,
150
+ errorLine: ' return x + y + z;',
151
+ message: 'Type error: cannot add string and number',
152
+ shortMessage: 'string + number',
153
+ shortMessagePlacement: 'right',
154
+ filePath: 'test.ts',
155
+ fullPath: '/test/test.ts',
156
+ baseDir: '/test',
157
+ type: 'error',
158
+ });
159
+ const output = render(component, 100);
160
+ // Find the short message line (should have connector ╰── pointing right)
161
+ const lines = output.join('\n').split('\n');
162
+ let shortMessageLine = null;
163
+ for (const line of lines) {
164
+ if (line.includes('╰──') || line.includes('string + number')) {
165
+ shortMessageLine = line;
166
+ break;
167
+ }
168
+ }
169
+ expect(shortMessageLine).toBeTruthy();
170
+ const shortMessageLinePlain = stripAnsi(shortMessageLine);
171
+ // Find the indicator line to get the T-bar position
172
+ let indicatorLine = null;
173
+ for (const line of lines) {
174
+ if (line.includes('┬') || line.includes('┖')) {
175
+ indicatorLine = line;
176
+ break;
177
+ }
178
+ }
179
+ expect(indicatorLine).toBeTruthy();
180
+ const indicatorLinePlain = stripAnsi(indicatorLine);
181
+ // Find T-bar position in indicator line
182
+ const tBarPos = indicatorLinePlain.indexOf('┬');
183
+ expect(tBarPos).toBeGreaterThanOrEqual(0);
184
+ // Find connector start (╰) position in short message line
185
+ const connectorStartPos = shortMessageLinePlain.indexOf('╰');
186
+ expect(connectorStartPos).toBeGreaterThanOrEqual(0);
187
+ // The connector start (╰) should be at the T-bar position (exactly)
188
+ // Since both indicatorLinePlain and shortMessageLinePlain are offsets from the same │ prefix,
189
+ // their indices should match directly.
190
+ expect(connectorStartPos, `Right-placed message: T-bar at ${tBarPos}, connector start at ${connectorStartPos}`).toBe(tBarPos);
191
+ });
192
+ });
193
+ describe('hyperlink preservation', () => {
194
+ it('should preserve OSC 8 hyperlink on truncated file path', () => {
195
+ // When a file path with a hyperlink is truncated, the entire visible portion should remain clickable
196
+ const component = CodeDebug({
197
+ startLine: 77,
198
+ startColumn: 77,
199
+ endColumn: 78,
200
+ errorLine: ' .ma:extend(.a,.b,.c,.d,.e,.f,.g,.h,.i,.j,.k,.l,.m,.n,.o,.p,.q,.r,.s,.t,.u,.v) {};',
201
+ message: 'Extend target ".v" not accessible',
202
+ shortMessage: 'extend target not accessible',
203
+ filePath: '../less.js/packages/test-data/tests-unit/extend-chaining/extend-chaining.less',
204
+ fullPath: '/project/../less.js/packages/test-data/tests-unit/extend-chaining/extend-chaining.less',
205
+ baseDir: '/project',
206
+ type: 'warning',
207
+ });
208
+ const output = render(component, 80); // Narrow width to force truncation
209
+ const outputText = output.join('\n');
210
+ const outputTextPlain = stripAnsi(outputText);
211
+ // Find the location line (has the file path with hyperlink)
212
+ // Format: " ╭─[path:line:column]"
213
+ const locationLineMatch = outputTextPlain.match(/╭─\[(.+?)\]/);
214
+ expect(locationLineMatch, `Location line should be found in:\n${outputTextPlain.substring(0, 200)}`).toBeTruthy();
215
+ // Get the actual line with ANSI codes for hyperlink checking
216
+ const locationLineWithAnsi = output.join('\n').split('\n').find(line => stripAnsi(line).includes('╭─['));
217
+ expect(locationLineWithAnsi, 'Location line with ANSI should be found').toBeTruthy();
218
+ const locationLine = locationLineWithAnsi;
219
+ // Check that the entire visible path (not just ellipsis) has the OSC 8 hyperlink
220
+ // OSC 8 format: \x1b]8;;<url>\x1b\\<text>\x1b]8;;\x1b\\
221
+ // The hyperlink should wrap the entire visible text, not just the ellipsis
222
+ const hasOsc8Start = locationLine.includes('\x1b]8;;');
223
+ expect(hasOsc8Start, 'Location line should contain OSC 8 hyperlink start').toBe(true);
224
+ // Extract the visible path portion (after ellipsis if present)
225
+ const pathMatch = locationLine.match(/\[(.+?)\]/);
226
+ expect(pathMatch, 'Path should be found in location line').toBeTruthy();
227
+ const visiblePath = pathMatch[1];
228
+ const visiblePathPlain = stripAnsi(visiblePath);
229
+ // If truncated with ellipsis, check that text after ellipsis is still in the link
230
+ if (visiblePathPlain.startsWith('...')) {
231
+ // Find where the ellipsis ends and the actual path text begins
232
+ const pathAfterEllipsis = visiblePathPlain.substring(3);
233
+ // The path after ellipsis should still be part of the hyperlink
234
+ // We can't easily test this without parsing OSC 8, but we can check that
235
+ // the hyperlink sequence appears before the ellipsis and continues after
236
+ const ellipsisIndex = locationLine.indexOf('...');
237
+ const pathAfterEllipsisIndex = locationLine.indexOf(pathAfterEllipsis.substring(0, Math.min(10, pathAfterEllipsis.length)));
238
+ // There should be an OSC 8 start before the ellipsis
239
+ const osc8BeforeEllipsis = locationLine.substring(0, ellipsisIndex).includes('\x1b]8;;');
240
+ expect(osc8BeforeEllipsis || pathAfterEllipsisIndex > ellipsisIndex, 'Hyperlink should start before ellipsis and continue on the visible path text').toBe(true);
241
+ }
242
+ });
243
+ });
244
+ });
245
+ //# sourceMappingURL=code-debug.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-debug.test.js","sourceRoot":"","sources":["../../src/components/code-debug.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import type { Component } from '../component.js';
2
2
  import type { Color, FillChar } from '../types.js';
3
+ import { type AutoColor } from '../utils/terminal-theme.js';
3
4
  export interface FillOptions {
4
- backgroundColor?: Color;
5
+ backgroundColor?: Color | AutoColor;
5
6
  }
6
7
  /**
7
8
  * Fill component - fills the available width with a repeated character
@@ -1 +1 @@
1
- {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../src/components/fill.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,KAAK,CAAC;CACzB;AAYD;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAClB,QAAQ,GAAE,QAAc,EACxB,OAAO,GAAE,WAAgB,GACxB,SAAS,CAmBX"}
1
+ {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../src/components/fill.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CACrC;AAYD;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAClB,QAAQ,GAAE,QAAc,EACxB,OAAO,GAAE,WAAgB,GACxB,SAAS,CAmBX"}
@@ -1 +1 @@
1
- {"version":3,"file":"fill.js","sourceRoot":"","sources":["../../src/components/fill.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAI1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD;;GAEG;AACH,SAAS,iBAAiB,CAAC,QAAkB;IAC3C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAClB,WAAqB,GAAG,EACxB,UAAuB,EAAE;IAEzB,OAAO,CAAC,GAAkB,EAAE,EAAE;QAC5B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QAE1C,mEAAmE;QACnE,sEAAsE;QACtE,oEAAoE;QACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE7C,OAAO,UAAU,CAAC,QAAQ,EAAE;YAC1B,KAAK;YACL,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fill.js","sourceRoot":"","sources":["../../src/components/fill.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAI1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD;;GAEG;AACH,SAAS,iBAAiB,CAAC,QAAkB;IAC3C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAClB,WAAqB,GAAG,EACxB,UAAuB,EAAE;IAEzB,OAAO,CAAC,GAAkB,EAAE,EAAE;QAC5B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QAE1C,mEAAmE;QACnE,sEAAsE;QACtE,oEAAoE;QACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE7C,OAAO,UAAU,CAAC,QAAQ,EAAE;YAC1B,KAAK;YACL,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"progress-bar-grid.d.ts","sourceRoot":"","sources":["../../src/components/progress-bar-grid.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAKzC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,CA0ClE"}
1
+ {"version":3,"file":"progress-bar-grid.d.ts","sourceRoot":"","sources":["../../src/components/progress-bar-grid.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAKzC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,CA4ClE"}
@@ -14,7 +14,9 @@ export function progressBar(options) {
14
14
  const incompleteChar = options.incompleteChar ?? '─';
15
15
  const leftBracket = options.brackets?.[0] ?? '\u263E'; // ☾
16
16
  const rightBracket = options.brackets?.[1] ?? '\u263D'; // ☽
17
- const bracketColor = options.bracketColor ?? 'brightBlack';
17
+ const bracketColor = options.bracketColor ?? 'muted';
18
+ const barIncompleteColor = 'muted';
19
+ const percentColor = options.percentColor ?? 'muted';
18
20
  // Use grid to layout: left bracket (1), bar (flex), right bracket (1), percent (6)
19
21
  // The bar column will receive its allocated width and calculate fill based on that
20
22
  const barComponent = (barCtx) => {
@@ -26,7 +28,7 @@ export function progressBar(options) {
26
28
  const emptyBar = incompleteChar.repeat(empty);
27
29
  const barText = ' ' +
28
30
  (options.barColor ? applyStyle(filledBar, { color: options.barColor }) : filledBar) +
29
- applyStyle(emptyBar, { color: 'brightBlack' }) +
31
+ applyStyle(emptyBar, { color: barIncompleteColor }) +
30
32
  ' ';
31
33
  return barText;
32
34
  };
@@ -35,7 +37,7 @@ export function progressBar(options) {
35
37
  Styled({ color: bracketColor }, leftBracket),
36
38
  barComponent,
37
39
  Styled({ color: bracketColor }, rightBracket),
38
- Styled({ color: options.percentColor ?? 'brightBlack', align: 'right' }, percent.toFixed(1) + '%'),
40
+ Styled({ color: percentColor, align: 'right' }, percent.toFixed(1) + '%'),
39
41
  ];
40
42
  // Use grid to layout: [1] [flex] [1] [7]
41
43
  const gridComp = Grid({ template: [1, '1*', 1, 7], columnGap: 0 }, ...children);
@@ -1 +1 @@
1
- {"version":3,"file":"progress-bar-grid.js","sourceRoot":"","sources":["../../src/components/progress-bar-grid.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAehD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,OAAO,CAAC,GAAkB,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAEpF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC;QACjD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC;QACrD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI;QAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI;QAE5D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC;QAE3D,mFAAmF;QACnF,mFAAmF;QACnF,MAAM,YAAY,GAAG,CAAC,MAAqB,EAAU,EAAE;YACrD,gEAAgE;YAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB;YACzF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,iBAAiB,GAAG,MAAM,CAAC;YAEzC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE9C,MAAM,OAAO,GAAG,GAAG;gBACjB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnF,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;gBAC9C,GAAG,CAAC;YAEN,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QAEF,sBAAsB;QACtB,MAAM,QAAQ,GAAG;YACf,MAAM,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,WAAW,CAAC;YAC5C,YAAY;YACZ,MAAM,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,YAAY,CAAC;YAC7C,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;SACnG,CAAC;QAEF,yCAAyC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;QAChF,OAAO,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"progress-bar-grid.js","sourceRoot":"","sources":["../../src/components/progress-bar-grid.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { Styled } from './styled.js';
6
6
  * The component renders a blank line followed by the prompt message
7
7
  */
8
8
  export function Prompt(options) {
9
- const { message, key = 'SPACEBAR', color: promptColor = 'brightBlack', } = options;
9
+ const { message, key = 'SPACEBAR', color: promptColor = 'muted', } = options;
10
10
  return (ctx) => {
11
11
  const promptText = `Press ${key} to ${message}...`;
12
12
  const styledComponent = Styled({ color: promptColor }, promptText);
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/components/prompt.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAIpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,MAAM,EACJ,OAAO,EACP,GAAG,GAAG,UAAU,EAChB,KAAK,EAAE,WAAW,GAAG,aAAa,GACnC,GAAG,OAAO,CAAC;IAEZ,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,OAAO,KAAK,CAAC;QACnD,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAEzD,6BAA6B;QAC7B,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5B,CAAC;IACD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/components/prompt.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAIpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,MAAM,EACJ,OAAO,EACP,GAAG,GAAG,UAAU,EAChB,KAAK,EAAE,WAAW,GAAG,OAAO,GAC7B,GAAG,OAAO,CAAC;IAEZ,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,OAAO,KAAK,CAAC;QACnD,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAEzD,6BAA6B;QAC7B,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5B,CAAC;IACD,CAAC,CAAC;AACJ,CAAC"}
@@ -22,7 +22,7 @@ import { applyStyle } from '../utils/colors.js';
22
22
  */
23
23
  export function Section(options, ...children) {
24
24
  return (ctx) => {
25
- const { title, titleColor = 'brightCyan', borderColor = 'brightBlack', padding = 1, left = true, right = true, top = true, bottom = true, } = options;
25
+ const { title, titleColor = 'accent', borderColor = 'muted', padding = 1, left = true, right = true, top = true, bottom = true, } = options;
26
26
  const availableWidth = ctx.availableWidth;
27
27
  const titleText = ` ${title} `;
28
28
  const titleWidth = titleText.length;
@@ -1 +1 @@
1
- {"version":3,"file":"section.js","sourceRoot":"","sources":["../../src/components/section.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"section.js","sourceRoot":"","sources":["../../src/components/section.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,7 @@ export function Segments(options) {
56
56
  // Left divider (automatic - dash for middle segments)
57
57
  if (i > 0) {
58
58
  // Always use dash (─) for dividers - it works well with all border styles
59
- const dividerColor = 'brightBlack';
59
+ const dividerColor = 'muted';
60
60
  const styledDivider = applyStyle('─', { color: dividerColor });
61
61
  result += styledDivider;
62
62
  }
@@ -65,7 +65,7 @@ export function Segments(options) {
65
65
  const borderChars = getBorderChars(borderStyle);
66
66
  if (borderChars.left) {
67
67
  // Auto-theme: borders use text color
68
- const borderColor = segment.color ?? 'brightCyan';
68
+ const borderColor = segment.color ?? 'accent';
69
69
  result += applyStyle(borderChars.left, { color: borderColor });
70
70
  }
71
71
  // Segment content with automatic padding (no background, just text color)
@@ -80,13 +80,13 @@ export function Segments(options) {
80
80
  // Right border decoration
81
81
  if (borderChars.right) {
82
82
  // Auto-theme: borders use text color
83
- const borderColor = segment.color ?? 'brightCyan';
83
+ const borderColor = segment.color ?? 'accent';
84
84
  result += applyStyle(borderChars.right, { color: borderColor });
85
85
  }
86
86
  // Right divider (automatic - dash for middle segments)
87
87
  if (i < segments.length - 1) {
88
88
  // Always use dash (─) for dividers - it works well with all border styles
89
- const dividerColor = 'brightBlack';
89
+ const dividerColor = 'muted';
90
90
  const styledDivider = applyStyle('─', { color: dividerColor });
91
91
  result += styledDivider;
92
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"segments.js","sourceRoot":"","sources":["../../src/components/segments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"segments.js","sourceRoot":"","sources":["../../src/components/segments.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import type { Component } from '../component.js';
2
2
  import type { Color } from '../types.js';
3
+ import type { AutoColor } from '../utils/terminal-theme.js';
3
4
  export type SpinnerStyle = 'classic-dots' | 'bouncing-bar';
4
5
  export interface SpinnerOptions {
5
6
  style?: SpinnerStyle;
6
7
  frames?: string[];
7
8
  interval?: number;
8
- color?: Color;
9
+ color?: Color | AutoColor;
9
10
  autoStart?: boolean;
10
11
  }
11
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/components/spinner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,cAAc,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG;IACrD,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAoEA"}
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/components/spinner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,cAAc,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG;IACrD,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAoEA"}
@@ -10,7 +10,7 @@ const SPINNER_FRAMES = {
10
10
  * Returns an object with render(), start(), and stop() methods
11
11
  */
12
12
  export function Spinner(options = {}) {
13
- const { style, frames, interval = 80, color = 'yellow', autoStart = true, } = options;
13
+ const { style, frames, interval = 80, color = 'accent', autoStart = true, } = options;
14
14
  // Determine which frames to use: custom frames override style
15
15
  const finalFrames = frames ?? (style ? SPINNER_FRAMES[style] : ['⠇', '⠋', '⠙', '⠴', '⠋', '⠙', '⠸', '⠴', '⠦']);
16
16
  let currentFrameIndex = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/components/spinner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/components/spinner.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,15 @@
1
1
  import type { RenderContext, Component } from '../component.js';
2
2
  import type { Color } from '../types.js';
3
+ import { type AutoColor } from '../utils/terminal-theme.js';
3
4
  export interface StyleOptions {
4
- color?: Color;
5
- backgroundColor?: Color;
5
+ color?: Color | AutoColor;
6
+ backgroundColor?: Color | AutoColor;
6
7
  bold?: boolean;
7
8
  italic?: boolean;
8
9
  underline?: boolean;
9
10
  overflow?: 'none' | 'ellipsis-end' | 'ellipsis-start' | 'ellipsis-middle' | 'wrap';
10
11
  align?: 'left' | 'right' | 'center';
12
+ max?: number;
11
13
  when?: (ctx: RenderContext) => boolean;
12
14
  }
13
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../src/components/styled.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,CAAC;IACnF,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,MAAM,CACpB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACrC,SAAS,CAyEX"}
1
+ {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../src/components/styled.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,CAAC;IACnF,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,MAAM,CACpB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACrC,SAAS,CAuGX"}
@@ -1,7 +1,7 @@
1
1
  // Style component for text styling and overflow handling
2
2
  import { callComponent } from '../component.js';
3
3
  import { applyStyle } from '../utils/colors.js';
4
- import { truncateEnd, truncateStart, truncateMiddle, wrapText } from '../utils/text.js';
4
+ import { truncateEnd, truncateStart, truncateMiddle, wrapText, countVisibleChars } from '../utils/text.js';
5
5
  /**
6
6
  * Styled component - applies styling and handles overflow
7
7
  */
@@ -25,10 +25,13 @@ export function Styled(options, content) {
25
25
  }
26
26
  // Handle overflow
27
27
  const overflow = options.overflow ?? 'wrap';
28
- const availableWidth = Math.max(0, ctx.availableWidth);
28
+ // Apply max width constraint if specified (content-based width up to max)
29
+ const availableWidth = Math.max(0, options.max !== undefined
30
+ ? Math.min(ctx.availableWidth, options.max)
31
+ : ctx.availableWidth);
29
32
  const alignMode = options.align ?? 'left';
30
33
  const styleOptions = {
31
- color: options.color,
34
+ color: options.color, // Cast because we know applyStyle handles both Color and AutoColor
32
35
  backgroundColor: options.backgroundColor,
33
36
  bold: options.bold,
34
37
  italic: options.italic,
@@ -40,6 +43,13 @@ export function Styled(options, content) {
40
43
  }
41
44
  const formatted = lines.map(line => {
42
45
  const aligned = alignText(line, availableWidth, alignMode);
46
+ // Check if the line already has ANSI codes - if so, preserve them
47
+ const hasAnsiCodes = /\x1b\[[0-9;]*m/.test(aligned);
48
+ if (hasAnsiCodes) {
49
+ // Text already has styling - don't overwrite it, just return as-is
50
+ return aligned;
51
+ }
52
+ // No existing ANSI codes - apply the style options
43
53
  return applyStyle(aligned, styleOptions);
44
54
  });
45
55
  return formatted.length === 1 ? formatted[0] : formatted;
@@ -50,13 +60,15 @@ export function Styled(options, content) {
50
60
  if (typeof text === 'string') {
51
61
  // Single line
52
62
  let processed = text;
53
- if (overflow === 'ellipsis-end' && processed.length > availableWidth) {
63
+ // Check visible width, not raw string length
64
+ const visibleWidth = countVisibleChars(processed);
65
+ if (overflow === 'ellipsis-end' && visibleWidth > availableWidth) {
54
66
  processed = truncateEnd(processed, availableWidth);
55
67
  }
56
- else if (overflow === 'ellipsis-start' && processed.length > availableWidth) {
68
+ else if (overflow === 'ellipsis-start' && visibleWidth > availableWidth) {
57
69
  processed = truncateStart(processed, availableWidth);
58
70
  }
59
- else if (overflow === 'ellipsis-middle' && processed.length > availableWidth) {
71
+ else if (overflow === 'ellipsis-middle' && visibleWidth > availableWidth) {
60
72
  processed = truncateMiddle(processed, availableWidth);
61
73
  }
62
74
  else if (overflow === 'wrap' || overflow === 'none') {
@@ -65,14 +77,31 @@ export function Styled(options, content) {
65
77
  }
66
78
  // Apply alignment
67
79
  const aligned = alignText(processed, availableWidth, alignMode);
80
+ // Check if the line already has ANSI codes - if so, preserve them
81
+ const hasAnsiCodes = /\x1b\[[0-9;]*m/.test(aligned);
82
+ if (hasAnsiCodes) {
83
+ // Text already has styling - don't overwrite it, just return as-is
84
+ return aligned;
85
+ }
86
+ // No existing ANSI codes - apply the style options
68
87
  return applyStyle(aligned, styleOptions);
69
88
  }
70
89
  else {
71
90
  // Array of strings - apply styling and alignment to each line
72
91
  const lines = [];
73
92
  for (const line of text) {
74
- const wrapped = wrapText(line, availableWidth);
75
- lines.push(...wrapped);
93
+ // Check if line already has ANSI codes
94
+ const hasAnsiCodes = /\x1b\[[0-9;]*m/.test(line);
95
+ if (hasAnsiCodes) {
96
+ // Already styled - wrap it preserving ANSI codes
97
+ const wrapped = wrapText(line, availableWidth);
98
+ lines.push(...wrapped);
99
+ }
100
+ else {
101
+ // No ANSI codes - wrap and will be styled later
102
+ const wrapped = wrapText(line, availableWidth);
103
+ lines.push(...wrapped);
104
+ }
76
105
  }
77
106
  return formatLines(lines);
78
107
  }