@mudah-cli/ui 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/output.d.ts +48 -2
- package/dist/output.js +139 -12
- package/dist/output.js.map +1 -1
- package/dist/theme.d.ts +28 -1
- package/dist/theme.js +30 -1
- package/dist/theme.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { bold, dim, italic, paint, paintBg, stripAnsi, underline, visibleLength, } from './colors.js';
|
|
2
|
-
export { Output, type OutputOptions } from './output.js';
|
|
2
|
+
export { Output, type OutputEvent, type OutputMode, type OutputOptions } from './output.js';
|
|
3
3
|
export { renderMarkdown, type RenderMarkdownOptions } from './markdown.js';
|
|
4
4
|
export { renderPanel, type RenderPanelOptions } from './panel.js';
|
|
5
5
|
export { renderTable, type RenderTableOptions, type TableColumn } from './table.js';
|
|
6
|
-
export { resolveTheme, sleekDark, sleekLight, themes, type Theme, type ThemeColors } from './theme.js';
|
|
6
|
+
export { detectTheme, resolveTheme, sleekDark, sleekLight, themes, type DetectThemeOptions, type Theme, type ThemeColors, } from './theme.js';
|
package/dist/index.js
CHANGED
|
@@ -3,5 +3,5 @@ export { Output } from './output.js';
|
|
|
3
3
|
export { renderMarkdown } from './markdown.js';
|
|
4
4
|
export { renderPanel } from './panel.js';
|
|
5
5
|
export { renderTable } from './table.js';
|
|
6
|
-
export { resolveTheme, sleekDark, sleekLight, themes } from './theme.js';
|
|
6
|
+
export { detectTheme, resolveTheme, sleekDark, sleekLight, themes, } from './theme.js';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,GAAG,EACH,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,SAAS,EACT,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,GAAG,EACH,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,SAAS,EACT,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAyD,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,cAAc,EAA8B,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,WAAW,EAA2B,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,WAAW,EAA6C,MAAM,YAAY,CAAC;AACpF,OAAO,EACL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,UAAU,EACV,MAAM,GAIP,MAAM,YAAY,CAAC"}
|
package/dist/output.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ColorLevel } from '@mudah-cli/terminal';
|
|
2
2
|
import type { Theme } from './theme.js';
|
|
3
3
|
import { type TableColumn } from './table.js';
|
|
4
|
+
export type OutputMode = 'styled' | 'plain' | 'json';
|
|
4
5
|
export interface OutputOptions {
|
|
5
6
|
stream?: {
|
|
6
7
|
write(data: string): unknown;
|
|
@@ -13,10 +14,26 @@ export interface OutputOptions {
|
|
|
13
14
|
unicode: boolean;
|
|
14
15
|
/** OSC 9 notifications supported? */
|
|
15
16
|
osc9?: boolean;
|
|
17
|
+
/** Rendering mode. Default `styled` (colors when level > 0). */
|
|
18
|
+
mode?: OutputMode;
|
|
19
|
+
}
|
|
20
|
+
/** A structured result event (used by JSON mode and the result envelope). */
|
|
21
|
+
export interface OutputEvent {
|
|
22
|
+
readonly kind: 'info' | 'success' | 'error' | 'warn' | 'data';
|
|
23
|
+
readonly message: string;
|
|
24
|
+
readonly data?: unknown;
|
|
16
25
|
}
|
|
17
26
|
/**
|
|
18
27
|
* The styled output surface. Every framework message flows through here so
|
|
19
|
-
* theming, color level, unicode,
|
|
28
|
+
* theming, color level, unicode, stream selection — and output *mode* — stay
|
|
29
|
+
* consistent.
|
|
30
|
+
*
|
|
31
|
+
* Modes:
|
|
32
|
+
* - `styled`: colors/glyphs when the terminal allows; default.
|
|
33
|
+
* - `plain`: no ANSI at all (still human-readable). Good for logs.
|
|
34
|
+
* - `json`: every primitive becomes one machine-readable JSON line on
|
|
35
|
+
* stdout; use {@link emit} for structured payloads and
|
|
36
|
+
* {@link jsonEnvelope} for a single `{ok, results|error}` document.
|
|
20
37
|
*/
|
|
21
38
|
export declare class Output {
|
|
22
39
|
private out;
|
|
@@ -25,6 +42,8 @@ export declare class Output {
|
|
|
25
42
|
private readonly level;
|
|
26
43
|
private readonly unicode;
|
|
27
44
|
private readonly osc9;
|
|
45
|
+
private modeInternal;
|
|
46
|
+
private readonly events;
|
|
28
47
|
constructor(options: OutputOptions);
|
|
29
48
|
/** Replace the underlying streams (used by test harnesses). */
|
|
30
49
|
redirect(stream: {
|
|
@@ -32,8 +51,32 @@ export declare class Output {
|
|
|
32
51
|
}, errorStream: {
|
|
33
52
|
write(data: string): unknown;
|
|
34
53
|
}): void;
|
|
54
|
+
get mode(): OutputMode;
|
|
55
|
+
get isMachineReadable(): boolean;
|
|
56
|
+
/** Switch rendering mode mid-run (e.g. after parsing global flags). */
|
|
57
|
+
setMode(mode: OutputMode): void;
|
|
58
|
+
private levelForcedZero;
|
|
59
|
+
private effectiveLevel;
|
|
35
60
|
get themeName(): string;
|
|
36
61
|
get colorLevel(): ColorLevel;
|
|
62
|
+
/** Record + (in json mode) write a structured data payload. */
|
|
63
|
+
emit(kind: OutputEvent['kind'], message: string, data?: unknown): void;
|
|
64
|
+
/** All events recorded this run (for envelopes/tests). */
|
|
65
|
+
takeEvents(): OutputEvent[];
|
|
66
|
+
/**
|
|
67
|
+
* The full-run JSON envelope: `{ ok, results }` or
|
|
68
|
+
* `{ ok: false, error: {...} }`. Extra contextual fields (command, help,
|
|
69
|
+
* version, commands, duration) are merged at the top level.
|
|
70
|
+
*/
|
|
71
|
+
jsonEnvelope(options: {
|
|
72
|
+
ok: boolean;
|
|
73
|
+
exitCode: number;
|
|
74
|
+
error?: {
|
|
75
|
+
message: string;
|
|
76
|
+
hint?: string;
|
|
77
|
+
usage?: string;
|
|
78
|
+
};
|
|
79
|
+
} & Record<string, unknown>): string;
|
|
37
80
|
raw(message: string): void;
|
|
38
81
|
info(message: string): void;
|
|
39
82
|
success(message: string): void;
|
|
@@ -49,9 +92,12 @@ export declare class Output {
|
|
|
49
92
|
table(columns: TableColumn[], rows: string[][]): void;
|
|
50
93
|
panel(title: string | undefined, body: string[], width?: number): void;
|
|
51
94
|
markdown(text: string): void;
|
|
95
|
+
/** Record an event and stream it as a JSON line (json mode only). */
|
|
96
|
+
private writeJsonLine;
|
|
52
97
|
/**
|
|
53
98
|
* Desktop notification via OSC 9 (Ghostty/WezTerm). When unsupported,
|
|
54
|
-
* degrades to a styled status line on stderr.
|
|
99
|
+
* degrades to a styled status line on stderr. In json mode, becomes a
|
|
100
|
+
* data event.
|
|
55
101
|
*/
|
|
56
102
|
notification(title: string, message: string): void;
|
|
57
103
|
private mark;
|
package/dist/output.js
CHANGED
|
@@ -5,7 +5,15 @@ import { renderTable } from './table.js';
|
|
|
5
5
|
import { renderMarkdown } from './markdown.js';
|
|
6
6
|
/**
|
|
7
7
|
* The styled output surface. Every framework message flows through here so
|
|
8
|
-
* theming, color level, unicode,
|
|
8
|
+
* theming, color level, unicode, stream selection — and output *mode* — stay
|
|
9
|
+
* consistent.
|
|
10
|
+
*
|
|
11
|
+
* Modes:
|
|
12
|
+
* - `styled`: colors/glyphs when the terminal allows; default.
|
|
13
|
+
* - `plain`: no ANSI at all (still human-readable). Good for logs.
|
|
14
|
+
* - `json`: every primitive becomes one machine-readable JSON line on
|
|
15
|
+
* stdout; use {@link emit} for structured payloads and
|
|
16
|
+
* {@link jsonEnvelope} for a single `{ok, results|error}` document.
|
|
9
17
|
*/
|
|
10
18
|
export class Output {
|
|
11
19
|
out;
|
|
@@ -14,6 +22,8 @@ export class Output {
|
|
|
14
22
|
level;
|
|
15
23
|
unicode;
|
|
16
24
|
osc9;
|
|
25
|
+
modeInternal;
|
|
26
|
+
events = [];
|
|
17
27
|
constructor(options) {
|
|
18
28
|
this.out = options.stream ?? process.stdout;
|
|
19
29
|
this.err = options.errorStream ?? process.stderr;
|
|
@@ -21,81 +31,198 @@ export class Output {
|
|
|
21
31
|
this.level = options.colorLevel;
|
|
22
32
|
this.unicode = options.unicode;
|
|
23
33
|
this.osc9 = options.osc9 ?? false;
|
|
34
|
+
this.modeInternal = options.mode ?? 'styled';
|
|
24
35
|
}
|
|
25
36
|
/** Replace the underlying streams (used by test harnesses). */
|
|
26
37
|
redirect(stream, errorStream) {
|
|
27
38
|
this.out = stream;
|
|
28
39
|
this.err = errorStream;
|
|
29
40
|
}
|
|
41
|
+
get mode() {
|
|
42
|
+
return this.modeInternal;
|
|
43
|
+
}
|
|
44
|
+
get isMachineReadable() {
|
|
45
|
+
return this.modeInternal === 'json';
|
|
46
|
+
}
|
|
47
|
+
/** Switch rendering mode mid-run (e.g. after parsing global flags). */
|
|
48
|
+
setMode(mode) {
|
|
49
|
+
this.modeInternal = mode;
|
|
50
|
+
if (mode !== 'styled') {
|
|
51
|
+
// Plain/json ignore color levels entirely.
|
|
52
|
+
this.levelForcedZero = true;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.levelForcedZero = false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
levelForcedZero = false;
|
|
59
|
+
effectiveLevel() {
|
|
60
|
+
return this.levelForcedZero ? 0 : this.level;
|
|
61
|
+
}
|
|
30
62
|
get themeName() {
|
|
31
63
|
return this.theme.name;
|
|
32
64
|
}
|
|
33
65
|
get colorLevel() {
|
|
34
|
-
return this.
|
|
66
|
+
return this.effectiveLevel();
|
|
67
|
+
}
|
|
68
|
+
/** Record + (in json mode) write a structured data payload. */
|
|
69
|
+
emit(kind, message, data) {
|
|
70
|
+
const event = kind === 'data' && data !== undefined ? { kind, message, data } : { kind, message };
|
|
71
|
+
this.events.push(event);
|
|
72
|
+
if (this.isMachineReadable) {
|
|
73
|
+
this.out.write(JSON.stringify(event) + '\n');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/** All events recorded this run (for envelopes/tests). */
|
|
77
|
+
takeEvents() {
|
|
78
|
+
return this.events.splice(0);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The full-run JSON envelope: `{ ok, results }` or
|
|
82
|
+
* `{ ok: false, error: {...} }`. Extra contextual fields (command, help,
|
|
83
|
+
* version, commands, duration) are merged at the top level.
|
|
84
|
+
*/
|
|
85
|
+
jsonEnvelope(options) {
|
|
86
|
+
const { ok, exitCode, error, ...extra } = options;
|
|
87
|
+
if (ok) {
|
|
88
|
+
return JSON.stringify({
|
|
89
|
+
ok: true,
|
|
90
|
+
exitCode,
|
|
91
|
+
...extra,
|
|
92
|
+
...(this.events.length > 0 ? { results: this.events } : {}),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return JSON.stringify({
|
|
96
|
+
ok: false,
|
|
97
|
+
exitCode,
|
|
98
|
+
...extra,
|
|
99
|
+
error: error ?? { message: 'Unknown error' },
|
|
100
|
+
});
|
|
35
101
|
}
|
|
36
102
|
raw(message) {
|
|
37
103
|
this.out.write(message + '\n');
|
|
38
104
|
}
|
|
39
105
|
info(message) {
|
|
106
|
+
if (this.isMachineReadable) {
|
|
107
|
+
this.writeJsonLine('info', message);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
40
110
|
this.out.write(this.paint('info', message) + '\n');
|
|
41
111
|
}
|
|
42
112
|
success(message) {
|
|
113
|
+
if (this.isMachineReadable) {
|
|
114
|
+
this.writeJsonLine('success', message);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
43
117
|
this.out.write(this.mark('success') + ' ' + this.paint('success', message) + '\n');
|
|
44
118
|
}
|
|
45
119
|
error(message) {
|
|
120
|
+
if (this.isMachineReadable) {
|
|
121
|
+
this.err.write(JSON.stringify({ kind: 'error', message }) + '\n');
|
|
122
|
+
this.events.push({ kind: 'error', message });
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
46
125
|
this.err.write(this.mark('error') + ' ' + this.paint('error', message) + '\n');
|
|
47
126
|
}
|
|
48
127
|
warn(message) {
|
|
128
|
+
if (this.isMachineReadable) {
|
|
129
|
+
this.err.write(JSON.stringify({ kind: 'warn', message }) + '\n');
|
|
130
|
+
this.events.push({ kind: 'warn', message });
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
49
133
|
this.err.write(this.mark('warn') + ' ' + this.paint('warn', message) + '\n');
|
|
50
134
|
}
|
|
51
135
|
muted(message) {
|
|
52
|
-
|
|
136
|
+
if (this.isMachineReadable)
|
|
137
|
+
return; // human-only decoration
|
|
138
|
+
this.out.write(dim(this.paint('muted', message), this.effectiveLevel()) + '\n');
|
|
53
139
|
}
|
|
54
140
|
/** A muted hint line on the error stream (used alongside error output). */
|
|
55
141
|
hint(message) {
|
|
56
|
-
|
|
142
|
+
if (this.isMachineReadable)
|
|
143
|
+
return;
|
|
144
|
+
this.err.write(dim(this.paint('muted', `Hint: ${message}`), this.effectiveLevel()) + '\n');
|
|
57
145
|
}
|
|
58
146
|
section(title) {
|
|
59
|
-
|
|
147
|
+
if (this.isMachineReadable)
|
|
148
|
+
return;
|
|
149
|
+
this.out.write('\n' + underline(bold(this.paint('accent', title), this.effectiveLevel()), this.effectiveLevel()) + '\n');
|
|
60
150
|
}
|
|
61
151
|
bullet(message) {
|
|
152
|
+
if (this.isMachineReadable)
|
|
153
|
+
return;
|
|
62
154
|
this.out.write(` ${this.paint('muted', this.unicode ? '•' : '*')} ${message}\n`);
|
|
63
155
|
}
|
|
64
156
|
keyValue(label, value) {
|
|
65
|
-
|
|
157
|
+
if (this.isMachineReadable) {
|
|
158
|
+
this.emit('data', label, value);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const labelPart = bold(this.paint('muted', label), this.effectiveLevel());
|
|
66
162
|
this.out.write(` ${labelPart.padEnd(24)} ${value}\n`);
|
|
67
163
|
}
|
|
68
164
|
line() {
|
|
165
|
+
if (this.isMachineReadable)
|
|
166
|
+
return;
|
|
69
167
|
const ch = this.unicode ? '─' : '-';
|
|
70
168
|
this.out.write(this.paint('border', ch.repeat(60)) + '\n');
|
|
71
169
|
}
|
|
72
170
|
table(columns, rows) {
|
|
73
|
-
|
|
171
|
+
if (this.isMachineReadable) {
|
|
172
|
+
// Render rows as data events keyed by header.
|
|
173
|
+
const headers = columns.map((c) => c.header);
|
|
174
|
+
for (const row of rows) {
|
|
175
|
+
const record = {};
|
|
176
|
+
headers.forEach((header, i) => {
|
|
177
|
+
record[header] = row[i] ?? '';
|
|
178
|
+
});
|
|
179
|
+
this.emit('data', 'table-row', record);
|
|
180
|
+
}
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
this.out.write(renderTable(columns, rows, { level: this.effectiveLevel(), unicode: this.unicode }) + '\n');
|
|
74
184
|
}
|
|
75
185
|
panel(title, body, width) {
|
|
76
|
-
|
|
186
|
+
if (this.isMachineReadable)
|
|
187
|
+
return;
|
|
188
|
+
this.out.write(renderPanel(title, body, { level: this.effectiveLevel(), unicode: this.unicode, width }) + '\n');
|
|
77
189
|
}
|
|
78
190
|
markdown(text) {
|
|
79
|
-
|
|
191
|
+
if (this.isMachineReadable) {
|
|
192
|
+
this.emit('data', 'markdown', text);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
this.out.write(renderMarkdown(text, { level: this.effectiveLevel(), theme: this.theme }) + '\n');
|
|
196
|
+
}
|
|
197
|
+
/** Record an event and stream it as a JSON line (json mode only). */
|
|
198
|
+
writeJsonLine(kind, message, data) {
|
|
199
|
+
const event = data !== undefined ? { kind, message, data } : { kind, message };
|
|
200
|
+
this.events.push(event);
|
|
201
|
+
this.out.write(JSON.stringify(event) + '\n');
|
|
80
202
|
}
|
|
81
203
|
/**
|
|
82
204
|
* Desktop notification via OSC 9 (Ghostty/WezTerm). When unsupported,
|
|
83
|
-
* degrades to a styled status line on stderr.
|
|
205
|
+
* degrades to a styled status line on stderr. In json mode, becomes a
|
|
206
|
+
* data event.
|
|
84
207
|
*/
|
|
85
208
|
notification(title, message) {
|
|
209
|
+
if (this.isMachineReadable) {
|
|
210
|
+
this.emit('data', 'notification', { title, message });
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
86
213
|
if (this.osc9) {
|
|
87
214
|
this.err.write(`\x1b]9;${title}\x1f${message}\x07`);
|
|
88
215
|
this.err.write(`\x1b]777;notify;${title};${message}\x07`);
|
|
89
216
|
return;
|
|
90
217
|
}
|
|
91
|
-
this.err.write(this.paint('highlight', '●') + ' ' + bold(title, this.
|
|
218
|
+
this.err.write(this.paint('highlight', '●') + ' ' + bold(title, this.effectiveLevel()) + ' ' + dim(message, this.effectiveLevel()) + '\n');
|
|
92
219
|
}
|
|
93
220
|
mark(kind) {
|
|
94
221
|
const glyph = kind === 'success' ? (this.unicode ? '✓' : 'v') : kind === 'error' ? (this.unicode ? '✗' : 'x') : this.unicode ? '⚠' : '!';
|
|
95
222
|
return this.paint(kind, glyph);
|
|
96
223
|
}
|
|
97
224
|
paint(key, text) {
|
|
98
|
-
return paint(this.theme.colors[key], text, this.
|
|
225
|
+
return paint(this.theme.colors[key], text, this.effectiveLevel());
|
|
99
226
|
}
|
|
100
227
|
/** Visible width of the current terminal column, for wrapping decisions. */
|
|
101
228
|
padTo(text, width) {
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAuB/C;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,MAAM;IACT,GAAG,CAAmC;IACtC,GAAG,CAAmC;IAC7B,KAAK,CAAQ;IACb,KAAK,CAAa;IAClB,OAAO,CAAU;IACjB,IAAI,CAAU;IACvB,YAAY,CAAa;IAChB,MAAM,GAAkB,EAAE,CAAC;IAE5C,YAAY,OAAsB;QAChC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;IAC/C,CAAC;IAED,+DAA+D;IAC/D,QAAQ,CAAC,MAAwC,EAAE,WAA6C;QAC9F,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC;IACzB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;IACtC,CAAC;IAED,uEAAuE;IACvE,OAAO,CAAC,IAAgB;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,2CAA2C;YAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,eAAe,GAAG,KAAK,CAAC;IAExB,cAAc;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/C,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,IAAyB,EAAE,OAAe,EAAE,IAAc;QAC7D,MAAM,KAAK,GAAgB,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC/G,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,YAAY,CACV,OAI2B;QAE3B,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAClD,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,EAAE,EAAE,IAAI;gBACR,QAAQ;gBACR,GAAG,KAAK;gBACR,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,EAAE,EAAE,KAAK;YACT,QAAQ;YACR,GAAG,KAAK;YACR,KAAK,EAAE,KAAK,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO,CAAC,wBAAwB;QAC5D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,2EAA2E;IAC3E,IAAI,CAAC,OAAe;QAClB,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,CAAC,KAAa;QACnB,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3H,CAAC;IAED,MAAM,CAAC,OAAe;QACpB,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,KAAa;QACnC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,OAAsB,EAAE,IAAgB;QAC5C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,8CAA8C;YAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAA2B,EAAE,CAAC;gBAC1C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5B,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7G,CAAC;IAED,KAAK,CAAC,KAAyB,EAAE,IAAc,EAAE,KAAc;QAC7D,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAClH,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACnG,CAAC;IAED,qEAAqE;IAC7D,aAAa,CAAC,IAAyB,EAAE,OAAe,EAAE,IAAc;QAC9E,MAAM,KAAK,GAAgB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,KAAa,EAAE,OAAe;QACzC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,OAAO,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,IAAI,OAAO,MAAM,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAC3H,CAAC;IACJ,CAAC;IAEO,IAAI,CAAC,IAAkC;QAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACzI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,GAAiG,EAAE,IAAY;QAC3H,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,IAAY,EAAE,KAAa;QAC/B,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,0EAA0E;IAC1E,UAAU,CAAC,CAAS;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
package/dist/theme.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type OscWriter, type ThemeQueryInput } from '@mudah-cli/terminal';
|
|
1
2
|
export interface ThemeColors {
|
|
2
3
|
/** Primary brand accent (headings, highlights). */
|
|
3
4
|
accent: string;
|
|
@@ -20,6 +21,32 @@ export declare const sleekLight: Theme;
|
|
|
20
21
|
export declare const themes: Record<string, Theme>;
|
|
21
22
|
/**
|
|
22
23
|
* Resolve a theme by name. `'auto'` falls back to dark mode (the safe
|
|
23
|
-
* default for CLI tools)
|
|
24
|
+
* default for CLI tools) — use `detectTheme()` when you want the terminal's
|
|
25
|
+
* real colors to decide.
|
|
24
26
|
*/
|
|
25
27
|
export declare function resolveTheme(name: string | undefined): Theme;
|
|
28
|
+
export interface DetectThemeOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Theme name. Only `'auto'` triggers a terminal query — an explicit name
|
|
31
|
+
* (and `undefined`) resolve synchronously, keeping cold start untouched.
|
|
32
|
+
*/
|
|
33
|
+
name?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Skip the query entirely (non-interactive runs, tests). Defaults to
|
|
36
|
+
* `process.stdin.isTTY`.
|
|
37
|
+
*/
|
|
38
|
+
allowQuery?: boolean;
|
|
39
|
+
/** How long to wait for the terminal's answer. */
|
|
40
|
+
timeoutMs?: number;
|
|
41
|
+
/** Stream the query is written to (default `process.stdout`). */
|
|
42
|
+
stdout?: OscWriter;
|
|
43
|
+
/** Stream the answer is read from (default `process.stdin`). */
|
|
44
|
+
stdin?: ThemeQueryInput;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the theme, asking the terminal for its colors when the manifest
|
|
48
|
+
* asks for `'auto'`. Every other name resolves synchronously, and any run
|
|
49
|
+
* that can't answer (no TTY, timeout, silent terminal) falls back to dark.
|
|
50
|
+
* Never throws.
|
|
51
|
+
*/
|
|
52
|
+
export declare function detectTheme(options?: DetectThemeOptions): Promise<Theme>;
|
package/dist/theme.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { queryTerminalTheme } from '@mudah-cli/terminal';
|
|
1
2
|
export const sleekDark = {
|
|
2
3
|
name: 'sleek-dark',
|
|
3
4
|
mode: 'dark',
|
|
@@ -35,11 +36,39 @@ export const themes = {
|
|
|
35
36
|
};
|
|
36
37
|
/**
|
|
37
38
|
* Resolve a theme by name. `'auto'` falls back to dark mode (the safe
|
|
38
|
-
* default for CLI tools)
|
|
39
|
+
* default for CLI tools) — use `detectTheme()` when you want the terminal's
|
|
40
|
+
* real colors to decide.
|
|
39
41
|
*/
|
|
40
42
|
export function resolveTheme(name) {
|
|
41
43
|
if (name === undefined || name === 'auto')
|
|
42
44
|
return sleekDark;
|
|
43
45
|
return themes[name] ?? sleekDark;
|
|
44
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Resolve the theme, asking the terminal for its colors when the manifest
|
|
49
|
+
* asks for `'auto'`. Every other name resolves synchronously, and any run
|
|
50
|
+
* that can't answer (no TTY, timeout, silent terminal) falls back to dark.
|
|
51
|
+
* Never throws.
|
|
52
|
+
*/
|
|
53
|
+
export async function detectTheme(options = {}) {
|
|
54
|
+
const name = options.name;
|
|
55
|
+
if (name !== 'auto')
|
|
56
|
+
return resolveTheme(name);
|
|
57
|
+
const allowQuery = options.allowQuery ?? process.stdin.isTTY === true;
|
|
58
|
+
if (!allowQuery)
|
|
59
|
+
return sleekDark;
|
|
60
|
+
try {
|
|
61
|
+
const result = await queryTerminalTheme({
|
|
62
|
+
timeoutMs: options.timeoutMs,
|
|
63
|
+
stdout: options.stdout,
|
|
64
|
+
stdin: options.stdin,
|
|
65
|
+
});
|
|
66
|
+
if (!result.ok)
|
|
67
|
+
return sleekDark;
|
|
68
|
+
return result.theme === 'light' ? sleekLight : sleekDark;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return sleekDark;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
45
74
|
//# sourceMappingURL=theme.js.map
|
package/dist/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAwC,MAAM,qBAAqB,CAAC;AAqB/F,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE;QACN,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,SAAS;QACpB,IAAI,EAAE,SAAS;KAChB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,OAAO;IACb,MAAM,EAAE;QACN,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,SAAS;QACpB,IAAI,EAAE,SAAS;KAChB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAA0B;IAC3C,KAAK,EAAE,SAAS;IAChB,YAAY,EAAE,SAAS;IACvB,aAAa,EAAE,UAAU;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAwB;IACnD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACnC,CAAC;AAqBD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAO,GAAuB,EAAE;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;IACtE,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QACjC,OAAO,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mudah-cli/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Terminal design system: tokens, themes, output primitives, tables, panels, and markdown rendering.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
],
|
|
19
19
|
"sideEffects": false,
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@mudah-cli/terminal": "^0.
|
|
21
|
+
"@mudah-cli/terminal": "^0.3.0"
|
|
22
22
|
},
|
|
23
23
|
"publishConfig": {
|
|
24
24
|
"access": "public"
|