zard-cli 1.1.0-alpha.0 → 1.1.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/README.md +122 -60
- package/commands/add/component-installer.d.ts +2 -1
- package/commands/add/component-installer.d.ts.map +1 -1
- package/commands/add/component-installer.js +25 -7
- package/commands/add/component-installer.js.map +1 -1
- package/commands/add/component-selector.d.ts +3 -3
- package/commands/add/component-selector.js +4 -4
- package/commands/add/dark-mode-setup.d.ts +2 -0
- package/commands/add/dark-mode-setup.d.ts.map +1 -1
- package/commands/add/dark-mode-setup.js +15 -1
- package/commands/add/dark-mode-setup.js.map +1 -1
- package/commands/add/dependency-resolver.d.ts +8 -1
- package/commands/add/dependency-resolver.d.ts.map +1 -1
- package/commands/add/dependency-resolver.js +87 -16
- package/commands/add/dependency-resolver.js.map +1 -1
- package/commands/add/index.d.ts.map +1 -1
- package/commands/add/index.js +55 -29
- package/commands/add/index.js.map +1 -1
- package/commands/add/stylesheet-setup.d.ts +3 -0
- package/commands/add/stylesheet-setup.d.ts.map +1 -0
- package/commands/add/stylesheet-setup.js +92 -0
- package/commands/add/stylesheet-setup.js.map +1 -0
- package/commands/add/wizard.d.ts +12 -8
- package/commands/add/wizard.d.ts.map +1 -1
- package/commands/add/wizard.js +12 -2
- package/commands/add/wizard.js.map +1 -1
- package/commands/init/config-prompter.d.ts +36 -16
- package/commands/init/config-prompter.d.ts.map +1 -1
- package/commands/init/config-prompter.js +37 -17
- package/commands/init/config-prompter.js.map +1 -1
- package/commands/init/dependencies.d.ts.map +1 -1
- package/commands/init/dependencies.js +35 -23
- package/commands/init/dependencies.js.map +1 -1
- package/commands/init/index.d.ts.map +1 -1
- package/commands/init/index.js +74 -23
- package/commands/init/index.js.map +1 -1
- package/commands/init/library-peers.d.ts +28 -0
- package/commands/init/library-peers.d.ts.map +1 -0
- package/commands/init/library-peers.js +61 -0
- package/commands/init/library-peers.js.map +1 -0
- package/commands/init/project-kind.d.ts +39 -39
- package/commands/init/project-kind.d.ts.map +1 -1
- package/commands/init/project-kind.js +45 -45
- package/commands/init/project-kind.js.map +1 -1
- package/commands/init/rtl-setup.d.ts +12 -0
- package/commands/init/rtl-setup.d.ts.map +1 -0
- package/commands/init/rtl-setup.js +42 -0
- package/commands/init/rtl-setup.js.map +1 -0
- package/commands/init/steps.d.ts +3 -4
- package/commands/init/steps.d.ts.map +1 -1
- package/commands/init/steps.js +100 -39
- package/commands/init/steps.js.map +1 -1
- package/commands/init/tailwind-setup.d.ts +5 -5
- package/commands/init/tailwind-setup.d.ts.map +1 -1
- package/commands/init/tailwind-setup.js +29 -15
- package/commands/init/tailwind-setup.js.map +1 -1
- package/commands/init/tsconfig-updater.d.ts +4 -4
- package/commands/init/tsconfig-updater.js +12 -12
- package/commands/init/tsconfig-updater.js.map +1 -1
- package/commands/init/update-angular-config.js +4 -4
- package/commands/init/vite-setup.d.ts +5 -4
- package/commands/init/vite-setup.d.ts.map +1 -1
- package/commands/init/vite-setup.js +11 -10
- package/commands/init/vite-setup.js.map +1 -1
- package/commands/init/wizard.d.ts +10 -7
- package/commands/init/wizard.d.ts.map +1 -1
- package/commands/init/wizard.js +73 -46
- package/commands/init/wizard.js.map +1 -1
- package/constants/app.constants.d.ts +17 -0
- package/constants/app.constants.d.ts.map +1 -1
- package/constants/app.constants.js +39 -16
- package/constants/app.constants.js.map +1 -1
- package/core/icons/families.d.ts +38 -0
- package/core/icons/families.d.ts.map +1 -0
- package/core/icons/families.js +26 -0
- package/core/icons/families.js.map +1 -0
- package/core/icons/icon-map.d.ts +24 -0
- package/core/icons/icon-map.d.ts.map +1 -0
- package/core/icons/icon-map.js +150 -0
- package/core/icons/icon-map.js.map +1 -0
- package/core/icons/index.d.ts +107 -0
- package/core/icons/index.d.ts.map +1 -0
- package/core/icons/index.js +183 -0
- package/core/icons/index.js.map +1 -0
- package/core/registry/registry-data.d.ts.map +1 -1
- package/core/registry/registry-data.js +545 -63
- package/core/registry/registry-data.js.map +1 -1
- package/core/themes/index.d.ts +1 -1
- package/core/themes/index.js +1 -1
- package/core/themes/theme-definitions.d.ts.map +1 -1
- package/core/themes/theme-definitions.js +61 -72
- package/core/themes/theme-definitions.js.map +1 -1
- package/index.js +3 -2
- package/index.js.map +1 -1
- package/package.json +56 -58
- package/ui/blocks.d.ts +29 -28
- package/ui/blocks.d.ts.map +1 -1
- package/ui/blocks.js +27 -27
- package/ui/blocks.js.map +1 -1
- package/ui/brand.d.ts +5 -5
- package/ui/brand.d.ts.map +1 -1
- package/ui/brand.js +6 -6
- package/ui/brand.js.map +1 -1
- package/ui/engine/animation/index.d.ts +2 -3
- package/ui/engine/animation/index.d.ts.map +1 -1
- package/ui/engine/animation/index.js +2 -3
- package/ui/engine/animation/index.js.map +1 -1
- package/ui/engine/ansi/index.d.ts +10 -11
- package/ui/engine/ansi/index.d.ts.map +1 -1
- package/ui/engine/ansi/index.js +6 -7
- package/ui/engine/ansi/index.js.map +1 -1
- package/ui/engine/components/index.d.ts +3 -3
- package/ui/engine/components/index.js +4 -4
- package/ui/engine/cursor/index.d.ts +3 -4
- package/ui/engine/cursor/index.d.ts.map +1 -1
- package/ui/engine/cursor/index.js +2 -3
- package/ui/engine/cursor/index.js.map +1 -1
- package/ui/engine/diff/index.d.ts +2 -3
- package/ui/engine/diff/index.d.ts.map +1 -1
- package/ui/engine/diff/index.js +5 -6
- package/ui/engine/diff/index.js.map +1 -1
- package/ui/engine/events/index.d.ts +2 -2
- package/ui/engine/events/index.js +3 -3
- package/ui/engine/events/index.js.map +1 -1
- package/ui/engine/focus/index.d.ts +2 -2
- package/ui/engine/focus/index.js +2 -2
- package/ui/engine/frame/index.d.ts +4 -4
- package/ui/engine/frame/index.js +0 -0
- package/ui/engine/index.d.ts +7 -7
- package/ui/engine/index.js +7 -7
- package/ui/engine/input/index.d.ts +2 -2
- package/ui/engine/input/index.js +11 -11
- package/ui/engine/input/index.js.map +1 -1
- package/ui/engine/layout/index.d.ts +3 -3
- package/ui/engine/layout/index.js +7 -7
- package/ui/engine/layout/index.js.map +1 -1
- package/ui/engine/renderer/index.d.ts +4 -4
- package/ui/engine/renderer/index.d.ts.map +1 -1
- package/ui/engine/renderer/index.js +3 -3
- package/ui/engine/scheduler/index.d.ts +3 -3
- package/ui/engine/scheduler/index.js +5 -5
- package/ui/engine/scheduler/index.js.map +1 -1
- package/ui/engine/screen/index.d.ts +5 -5
- package/ui/engine/screen/index.d.ts.map +1 -1
- package/ui/engine/screen/index.js +7 -7
- package/ui/engine/screen/index.js.map +1 -1
- package/ui/engine/terminal/index.d.ts +49 -3
- package/ui/engine/terminal/index.d.ts.map +1 -1
- package/ui/engine/terminal/index.js +149 -18
- package/ui/engine/terminal/index.js.map +1 -1
- package/ui/engine/testing/index.d.ts +4 -4
- package/ui/engine/testing/index.d.ts.map +1 -1
- package/ui/engine/testing/index.js +2 -2
- package/ui/engine/theme/index.d.ts +2 -3
- package/ui/engine/theme/index.d.ts.map +1 -1
- package/ui/engine/theme/index.js +3 -4
- package/ui/engine/theme/index.js.map +1 -1
- package/ui/engine/utils/index.d.ts +2 -2
- package/ui/engine/utils/index.js +4 -4
- package/ui/engine/utils/index.js.map +1 -1
- package/ui/gate.d.ts +7 -7
- package/ui/gate.d.ts.map +1 -1
- package/ui/gate.js +5 -5
- package/ui/index.d.ts +3 -3
- package/ui/index.js +3 -3
- package/ui/log-sink.d.ts +9 -9
- package/ui/log-sink.d.ts.map +1 -1
- package/ui/log-sink.js +9 -9
- package/ui/log-sink.js.map +1 -1
- package/ui/output.d.ts +6 -6
- package/ui/output.d.ts.map +1 -1
- package/ui/output.js +6 -6
- package/ui/output.js.map +1 -1
- package/ui/report.d.ts +8 -8
- package/ui/report.d.ts.map +1 -1
- package/ui/report.js +7 -7
- package/ui/report.js.map +1 -1
- package/ui/runner.d.ts +31 -22
- package/ui/runner.d.ts.map +1 -1
- package/ui/runner.js +41 -25
- package/ui/runner.js.map +1 -1
- package/ui/style.d.ts +7 -7
- package/ui/style.d.ts.map +1 -1
- package/ui/style.js +8 -8
- package/ui/style.js.map +1 -1
- package/ui/testing/fake-tty.d.ts +4 -4
- package/ui/testing/fake-tty.js +4 -4
- package/ui/text-input.d.ts +15 -14
- package/ui/text-input.d.ts.map +1 -1
- package/ui/text-input.js +15 -13
- package/ui/text-input.js.map +1 -1
- package/ui/theme.d.ts +4 -4
- package/ui/theme.js +4 -4
- package/utils/angular-compat.d.ts +21 -0
- package/utils/angular-compat.d.ts.map +1 -0
- package/utils/angular-compat.js +52 -0
- package/utils/angular-compat.js.map +1 -0
- package/utils/config.d.ts +16 -9
- package/utils/config.d.ts.map +1 -1
- package/utils/config.js +35 -13
- package/utils/config.js.map +1 -1
- package/utils/errors.d.ts +11 -0
- package/utils/errors.d.ts.map +1 -1
- package/utils/errors.js +14 -0
- package/utils/errors.js.map +1 -1
- package/utils/get-project-info.d.ts +6 -6
- package/utils/get-project-info.d.ts.map +1 -1
- package/utils/get-project-info.js +106 -36
- package/utils/get-project-info.js.map +1 -1
- package/utils/http-client.d.ts.map +1 -1
- package/utils/http-client.js +20 -5
- package/utils/http-client.js.map +1 -1
- package/utils/icon-catalog.d.ts +34 -0
- package/utils/icon-catalog.d.ts.map +1 -0
- package/utils/icon-catalog.js +63 -0
- package/utils/icon-catalog.js.map +1 -0
- package/utils/logger.d.ts +3 -3
- package/utils/logger.js +9 -9
- package/utils/logger.js.map +1 -1
- package/utils/package-manager.d.ts +25 -25
- package/utils/package-manager.js +50 -50
- package/utils/package-manager.js.map +1 -1
- package/utils/registry.d.ts +100 -6
- package/utils/registry.d.ts.map +1 -1
- package/utils/registry.js +141 -22
- package/utils/registry.js.map +1 -1
- package/utils/schema-version.d.ts +21 -0
- package/utils/schema-version.d.ts.map +1 -0
- package/utils/schema-version.js +28 -0
- package/utils/schema-version.js.map +1 -0
- package/utils/source-file.d.ts +21 -21
- package/utils/source-file.d.ts.map +1 -1
- package/utils/source-file.js +24 -24
- package/utils/source-file.js.map +1 -1
package/ui/blocks.d.ts
CHANGED
|
@@ -1,70 +1,71 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* View blocks shared by the wizards.
|
|
3
3
|
*
|
|
4
|
-
* `init`
|
|
5
|
-
* CLI
|
|
6
|
-
*
|
|
4
|
+
* `init` and `add` are different flows, but the user should recognise the same
|
|
5
|
+
* CLI in both: the transcript of answers, the shortcut bar in the footer and the
|
|
6
|
+
* result panels live here so they cannot diverge.
|
|
7
7
|
*/
|
|
8
8
|
import { type Node } from './engine/index.js';
|
|
9
|
-
/**
|
|
9
|
+
/** The footer's shortcut bar: `↑/↓ navigate enter confirm`. */
|
|
10
10
|
export declare function controls(pairs: readonly (readonly [string, string])[]): Node;
|
|
11
|
-
/**
|
|
11
|
+
/** A transcript line: one question already answered. */
|
|
12
12
|
export declare function answeredLine(label: string, value: string): Node;
|
|
13
13
|
/** Enunciado do passo ativo. */
|
|
14
14
|
export declare function question(prompt: string): Node;
|
|
15
|
-
/**
|
|
15
|
+
/** Text field with a block cursor. */
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Text field with the cursor where it actually is.
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
19
|
+
* Always drawing the cursor at the end hid the fact that it can move — and
|
|
20
|
+
* without seeing the position there is no editing the middle of a value with any
|
|
21
|
+
* confidence. The character under the cursor is inverted; at the end of the line
|
|
22
|
+
* that gives the same solid block as before.
|
|
23
23
|
*/
|
|
24
24
|
export declare function textField(value: string, caret?: number): Node;
|
|
25
25
|
export interface Choice {
|
|
26
26
|
readonly label: string;
|
|
27
27
|
readonly hint?: string;
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
29
|
+
* The item's own colour, when it stands for something that already has an
|
|
30
|
+
* identity — a framework, say. Without it the label follows the state (active
|
|
31
|
+
* or not).
|
|
31
32
|
*/
|
|
32
33
|
readonly color?: string;
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
|
-
*
|
|
36
|
+
* Single-choice list, with the active item marked by `❯`.
|
|
36
37
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
38
|
+
* A coloured item keeps its colour whether active or not: the colour is what
|
|
39
|
+
* identifies it. State stays legible through the marker and the weight — bold on
|
|
40
|
+
* the active one, dimmed on the rest.
|
|
40
41
|
*/
|
|
41
42
|
export declare function choiceList(choices: readonly Choice[], activeIndex: number): Node[];
|
|
42
|
-
/**
|
|
43
|
+
/** Multiple-choice list, with a mark per item. */
|
|
43
44
|
export declare function checkList(choices: readonly Choice[], activeIndex: number, selected: ReadonlySet<number>): Node[];
|
|
44
45
|
/** Par Yes/No com o lado ativo destacado. */
|
|
45
46
|
export declare function confirmField(value: boolean): Node;
|
|
46
|
-
/**
|
|
47
|
+
/** Explanation of the active step, in secondary text. */
|
|
47
48
|
export declare function hint(content: string): Node;
|
|
48
|
-
/**
|
|
49
|
+
/** A highlighted warning — used when declining the step aborts the flow. */
|
|
49
50
|
export declare function warning(content: string): Node;
|
|
50
51
|
export interface TaskLine {
|
|
51
52
|
readonly label: string;
|
|
52
53
|
readonly note?: string;
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
56
|
+
* The list of running tasks: done ones with ✔, the current one with a spinner and
|
|
57
|
+
* the pending ones dimmed — the same vocabulary as the transcript.
|
|
57
58
|
*
|
|
58
|
-
* `elapsedMs`
|
|
59
|
-
*
|
|
60
|
-
*
|
|
59
|
+
* `elapsedMs` is the current step's runtime: past a threshold, the counter shows
|
|
60
|
+
* next to it. Installing dependencies can take minutes, and without that signal a
|
|
61
|
+
* spinning spinner is indistinguishable from a hung process.
|
|
61
62
|
*/
|
|
62
63
|
export declare function taskList(tasks: readonly TaskLine[], doneCount: number, elapsedMs?: number): Node[];
|
|
63
|
-
/**
|
|
64
|
+
/** Header for the execution phase, with a spinner while work is pending. */
|
|
64
65
|
export declare function taskHeader(label: string, allDone: boolean): Node;
|
|
65
66
|
export declare function progress(done: number, total: number): Node;
|
|
66
67
|
/** Painel de desfecho — sucesso, cancelamento ou falha. */
|
|
67
68
|
export declare function resultPanel(kind: 'success' | 'danger', message: string): Node;
|
|
68
|
-
/**
|
|
69
|
+
/** A screen's standard frame: breathing room at the sides, content in a column. */
|
|
69
70
|
export declare function page(...children: Node[]): Node;
|
|
70
71
|
//# sourceMappingURL=blocks.d.ts.map
|
package/ui/blocks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/ui/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAkD,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9F,
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/ui/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAkD,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9F,kEAAkE;AAClE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,CAO5E;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ/D;AAED,gCAAgC;AAChC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAM7C;AAED,sCAAsC;AACtC;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAoB,GAAG,IAAI,CAWxE;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,CAclF;AAED,kDAAkD;AAClD,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAYhH;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAMjD;AAED,yDAAyD;AACzD,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,4EAA4E;AAC5E,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAKD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAuBlG;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAMhE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAS7E;AAED,mFAAmF;AACnF,wBAAgB,IAAI,CAAC,GAAG,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAE9C"}
|
package/ui/blocks.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* View blocks shared by the wizards.
|
|
3
3
|
*
|
|
4
|
-
* `init`
|
|
5
|
-
* CLI
|
|
6
|
-
*
|
|
4
|
+
* `init` and `add` are different flows, but the user should recognise the same
|
|
5
|
+
* CLI in both: the transcript of answers, the shortcut bar in the footer and the
|
|
6
|
+
* result panels live here so they cannot diverge.
|
|
7
7
|
*/
|
|
8
8
|
import { column, panel, progressBar, row, spinner, text } from './engine/index.js';
|
|
9
|
-
/**
|
|
9
|
+
/** The footer's shortcut bar: `↑/↓ navigate enter confirm`. */
|
|
10
10
|
export function controls(pairs) {
|
|
11
11
|
const segments = [];
|
|
12
12
|
pairs.forEach(([key, label], index) => {
|
|
@@ -15,7 +15,7 @@ export function controls(pairs) {
|
|
|
15
15
|
});
|
|
16
16
|
return row({}, ...segments);
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
18
|
+
/** A transcript line: one question already answered. */
|
|
19
19
|
export function answeredLine(label, value) {
|
|
20
20
|
return row({ gap: 0 }, text('✔ ', { color: 'success' }), text(label, { color: 'muted' }), text(' … ', { color: 'muted', dim: true }), text(value, { color: 'foreground' }));
|
|
21
21
|
}
|
|
@@ -23,14 +23,14 @@ export function answeredLine(label, value) {
|
|
|
23
23
|
export function question(prompt) {
|
|
24
24
|
return row({ gap: 0 }, text('◆ ', { color: 'primary' }), text(prompt, { color: 'foreground', bold: true, wrap: true }));
|
|
25
25
|
}
|
|
26
|
-
/**
|
|
26
|
+
/** Text field with a block cursor. */
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* Text field with the cursor where it actually is.
|
|
29
29
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
30
|
+
* Always drawing the cursor at the end hid the fact that it can move — and
|
|
31
|
+
* without seeing the position there is no editing the middle of a value with any
|
|
32
|
+
* confidence. The character under the cursor is inverted; at the end of the line
|
|
33
|
+
* that gives the same solid block as before.
|
|
34
34
|
*/
|
|
35
35
|
export function textField(value, caret = [...value].length) {
|
|
36
36
|
const chars = [...value];
|
|
@@ -38,11 +38,11 @@ export function textField(value, caret = [...value].length) {
|
|
|
38
38
|
return row({ gap: 0 }, text(' › ', { color: 'muted' }), text(chars.slice(0, position).join(''), { color: 'foreground' }), text(chars[position] ?? ' ', { color: 'foreground', inverse: true }), text(chars.slice(position + 1).join(''), { color: 'foreground' }));
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
41
|
+
* Single-choice list, with the active item marked by `❯`.
|
|
42
42
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
43
|
+
* A coloured item keeps its colour whether active or not: the colour is what
|
|
44
|
+
* identifies it. State stays legible through the marker and the weight — bold on
|
|
45
|
+
* the active one, dimmed on the rest.
|
|
46
46
|
*/
|
|
47
47
|
export function choiceList(choices, activeIndex) {
|
|
48
48
|
return choices.map((choice, index) => {
|
|
@@ -54,7 +54,7 @@ export function choiceList(choices, activeIndex) {
|
|
|
54
54
|
}), ...(choice.hint ? [text(` ${choice.hint}`, { color: 'muted', dim: true })] : []));
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
-
/**
|
|
57
|
+
/** Multiple-choice list, with a mark per item. */
|
|
58
58
|
export function checkList(choices, activeIndex, selected) {
|
|
59
59
|
return choices.map((choice, index) => {
|
|
60
60
|
const active = index === activeIndex;
|
|
@@ -66,23 +66,23 @@ export function checkList(choices, activeIndex, selected) {
|
|
|
66
66
|
export function confirmField(value) {
|
|
67
67
|
return row({ gap: 4 }, text(` ${value ? '❯ ' : ' '}Yes`, { color: value ? 'success' : 'muted', bold: value }), text(`${!value ? '❯ ' : ' '}No`, { color: !value ? 'danger' : 'muted', bold: !value }));
|
|
68
68
|
}
|
|
69
|
-
/**
|
|
69
|
+
/** Explanation of the active step, in secondary text. */
|
|
70
70
|
export function hint(content) {
|
|
71
71
|
return text(` ${content}`, { color: 'muted', dim: true });
|
|
72
72
|
}
|
|
73
|
-
/**
|
|
73
|
+
/** A highlighted warning — used when declining the step aborts the flow. */
|
|
74
74
|
export function warning(content) {
|
|
75
75
|
return text(` ⚠ ${content}`, { color: 'warning', bold: true });
|
|
76
76
|
}
|
|
77
|
-
/**
|
|
77
|
+
/** Past this point the current step starts showing how long it has been running. */
|
|
78
78
|
const SLOW_TASK_MS = 3000;
|
|
79
79
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
80
|
+
* The list of running tasks: done ones with ✔, the current one with a spinner and
|
|
81
|
+
* the pending ones dimmed — the same vocabulary as the transcript.
|
|
82
82
|
*
|
|
83
|
-
* `elapsedMs`
|
|
84
|
-
*
|
|
85
|
-
*
|
|
83
|
+
* `elapsedMs` is the current step's runtime: past a threshold, the counter shows
|
|
84
|
+
* next to it. Installing dependencies can take minutes, and without that signal a
|
|
85
|
+
* spinning spinner is indistinguishable from a hung process.
|
|
86
86
|
*/
|
|
87
87
|
export function taskList(tasks, doneCount, elapsedMs) {
|
|
88
88
|
const allDone = doneCount >= tasks.length;
|
|
@@ -98,7 +98,7 @@ export function taskList(tasks, doneCount, elapsedMs) {
|
|
|
98
98
|
return row({ gap: 0 }, text(' '), mark, text(` ${task.label}`, { color: done || current ? 'foreground' : 'muted' }), ...(task.note ? [text(` — ${task.note}`, { color: 'muted', dim: true })] : []), ...(showElapsed ? [text(` ${Math.round(elapsedMs / 1000)}s`, { color: 'primary', dim: true })] : []));
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
|
-
/**
|
|
101
|
+
/** Header for the execution phase, with a spinner while work is pending. */
|
|
102
102
|
export function taskHeader(label, allDone) {
|
|
103
103
|
return row({ gap: 0 }, allDone ? text('✔', { color: 'success' }) : spinner({ variant: 'dots', color: 'primary' }), text(` ${label}`, { color: 'foreground', bold: true }));
|
|
104
104
|
}
|
|
@@ -109,7 +109,7 @@ export function progress(done, total) {
|
|
|
109
109
|
export function resultPanel(kind, message) {
|
|
110
110
|
return panel({ border: 'round', borderColor: kind, padding: { top: 0, right: 1, bottom: 0, left: 1 } }, row({ gap: 0 }, text(kind === 'success' ? '✔ ' : '✖ ', { color: kind, bold: true }), text(message, { color: 'foreground', bold: true })));
|
|
111
111
|
}
|
|
112
|
-
/**
|
|
112
|
+
/** A screen's standard frame: breathing room at the sides, content in a column. */
|
|
113
113
|
export function page(...children) {
|
|
114
114
|
return column({ flexGrow: 1, padding: { top: 1, right: 3, bottom: 1, left: 3 }, gap: 0 }, ...children);
|
|
115
115
|
}
|
package/ui/blocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/ui/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAa,MAAM,mBAAmB,CAAC;AAE9F,
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/ui/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAa,MAAM,mBAAmB,CAAC;AAE9F,kEAAkE;AAClE,MAAM,UAAU,QAAQ,CAAC,KAA6C;IACpE,MAAM,QAAQ,GAAW,EAAE,CAAC;IAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;QACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,KAAa;IACvD,OAAO,GAAG,CACR,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EACjC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAC/B,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAC5C,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,GAAG,CACR,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EACjC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED,sCAAsC;AACtC;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM;IAChE,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5D,OAAO,GAAG,CACR,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAChE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EACpE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAClE,CAAC;AACJ,CAAC;AAaD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B,EAAE,WAAmB;IACxE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,KAAK,KAAK,WAAW,CAAC;QACrC,OAAO,GAAG,CACR,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EACtE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;YACxD,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,CAAC,MAAM;SACb,CAAC,EACF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACnF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,SAAS,CAAC,OAA0B,EAAE,WAAmB,EAAE,QAA6B;IACtG,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,KAAK,KAAK,WAAW,CAAC;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,GAAG,CACR,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EACpE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,EACpF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EACrG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACnF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,GAAG,CACR,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAC3F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAC1F,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,IAAI,CAAC,MAAM,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,IAAI,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC;AAOD,oFAAoF;AACpF,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,KAA0B,EAAE,SAAiB,EAAE,SAAkB;IACxF,MAAM,OAAO,GAAG,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;IAE1C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;QAC/B,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI;YACf,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YACjC,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;gBAChD,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,WAAW,GAAG,OAAO,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,YAAY,CAAC;QAEpF,OAAO,GAAG,CACR,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,KAAK,CAAC,EACX,IAAI,EACJ,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAC5E,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAChF,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAE,SAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAClH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,OAAgB;IACxD,OAAO,GAAG,CACR,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAC1F,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CACxD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAa;IAClD,OAAO,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1G,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,WAAW,CAAC,IAA0B,EAAE,OAAe;IACrE,OAAO,KAAK,CACV,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EACzF,GAAG,CACD,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EACrE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CACnD,CACF,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,IAAI,CAAC,GAAG,QAAgB;IACtC,OAAO,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AACzG,CAAC"}
|
package/ui/brand.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The CLI's visual identity — the banner and the command headers.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The banner only appears when there is height to spare: in short terminals it
|
|
5
|
+
* gives way to the content, which is what the user needs to see to answer.
|
|
6
6
|
*/
|
|
7
7
|
import { type Node } from './engine/index.js';
|
|
8
|
-
/**
|
|
8
|
+
/** The brand name as it is written — the slash is part of it. */
|
|
9
9
|
export declare const BRAND = "zard/ui";
|
|
10
10
|
export declare const ZARDUI_BANNER: string[];
|
|
11
11
|
export declare function brandBanner(rows: number): Node[];
|
|
12
|
-
/**
|
|
12
|
+
/** A command's compact header: `◇ zard/ui · initialize`. */
|
|
13
13
|
export declare function commandHeader(command: string, description?: string): Node;
|
|
14
14
|
//# sourceMappingURL=brand.d.ts.map
|
package/ui/brand.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/ui/brand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA6B,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzE,
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/ui/brand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA6B,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzE,iEAAiE;AACjE,eAAO,MAAM,KAAK,YAAY,CAAC;AAE/B,eAAO,MAAM,aAAa,UAOzB,CAAC;AAQF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,CAKhD;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAUzE"}
|
package/ui/brand.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The CLI's visual identity — the banner and the command headers.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The banner only appears when there is height to spare: in short terminals it
|
|
5
|
+
* gives way to the content, which is what the user needs to see to answer.
|
|
6
6
|
*/
|
|
7
7
|
import { banner, column, row, text } from './engine/index.js';
|
|
8
|
-
/**
|
|
8
|
+
/** The brand name as it is written — the slash is part of it. */
|
|
9
9
|
export const BRAND = 'zard/ui';
|
|
10
10
|
export const ZARDUI_BANNER = [
|
|
11
11
|
'███████╗ █████╗ ██████╗ ██████╗ ██╗██╗ ██╗██╗',
|
|
@@ -17,7 +17,7 @@ export const ZARDUI_BANNER = [
|
|
|
17
17
|
];
|
|
18
18
|
const BANNER_COLOR = '#fafafa';
|
|
19
19
|
const TAGLINE = 'The Angular component toolkit · beautiful components in seconds';
|
|
20
|
-
/**
|
|
20
|
+
/** Minimum height for the banner to fit without squeezing the questions. */
|
|
21
21
|
const BANNER_MIN_ROWS = 24;
|
|
22
22
|
export function brandBanner(rows) {
|
|
23
23
|
if (rows < BANNER_MIN_ROWS) {
|
|
@@ -25,7 +25,7 @@ export function brandBanner(rows) {
|
|
|
25
25
|
}
|
|
26
26
|
return [banner({ lines: ZARDUI_BANNER, colors: [BANNER_COLOR] }), text(TAGLINE, { color: 'muted', dim: true })];
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
28
|
+
/** A command's compact header: `◇ zard/ui · initialize`. */
|
|
29
29
|
export function commandHeader(command, description) {
|
|
30
30
|
const head = row({ gap: 1 }, text('◇', { color: 'success' }), text(BRAND, { color: 'foreground', bold: true }), text(`· ${command}`, { color: 'muted' }));
|
|
31
31
|
if (!description)
|
package/ui/brand.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/ui/brand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAa,MAAM,mBAAmB,CAAC;AAEzE,
|
|
1
|
+
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/ui/brand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAa,MAAM,mBAAmB,CAAC;AAEzE,iEAAiE;AACjE,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAE/B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,qDAAqD;IACrD,qDAAqD;IACrD,qDAAqD;IACrD,qDAAqD;IACrD,qDAAqD;IACrD,qDAAqD;CACtD,CAAC;AAEF,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,OAAO,GAAG,iEAAiE,CAAC;AAElF,4EAA4E;AAC5E,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,GAAG,eAAe,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAClH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,WAAoB;IACjE,MAAM,IAAI,GAAG,GAAG,CACd,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAC/B,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAChD,IAAI,CAAC,KAAK,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CACzC,CAAC;IAEF,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* animation — tweens
|
|
3
|
-
*
|
|
4
|
-
* (Implementação real.)
|
|
2
|
+
* animation — FPS-independent tweens (they use real dt), easing, and a keyed
|
|
3
|
+
* clock that survives a re-render. The basis of spinner/progress/fade/typing/pulse.
|
|
5
4
|
*/
|
|
6
5
|
export type Easing = (t: number) => number;
|
|
7
6
|
export declare const Easing: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/animation/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/animation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAI3C,eAAO,MAAM,MAAM,EAAE;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAmBzB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CACtC;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,KAAK,CAyClD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC1C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAuBrD;AAED,mEAAmE;AACnE,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAMrE,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* animation — tweens
|
|
3
|
-
*
|
|
4
|
-
* (Implementação real.)
|
|
2
|
+
* animation — FPS-independent tweens (they use real dt), easing, and a keyed
|
|
3
|
+
* clock that survives a re-render. The basis of spinner/progress/fade/typing/pulse.
|
|
5
4
|
*/
|
|
6
5
|
const clamp01 = (t) => (t < 0 ? 0 : t > 1 ? 1 : t);
|
|
7
6
|
export const Easing = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/animation/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/animation/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ansi —
|
|
3
|
-
*
|
|
4
|
-
* (Fatia vertical / PoC: implementação real.)
|
|
2
|
+
* ansi — generates escape sequences (CSI/SGR) and defines the colour vocabulary.
|
|
3
|
+
* The lowest level that "knows" the terminal protocol. No I/O.
|
|
5
4
|
*/
|
|
6
|
-
/**
|
|
5
|
+
/** The colour depth the terminal supports (see TerminalCapabilities). */
|
|
7
6
|
export type ColorLevel = 'truecolor' | 'ansi256' | 'ansi16' | 'none';
|
|
8
|
-
/**
|
|
7
|
+
/** A concrete colour already resolved for a depth — ready to become SGR bytes. */
|
|
9
8
|
export type AnsiColor = {
|
|
10
9
|
readonly kind: 'rgb';
|
|
11
10
|
readonly r: number;
|
|
@@ -21,8 +20,8 @@ export type AnsiColor = {
|
|
|
21
20
|
readonly kind: 'default';
|
|
22
21
|
};
|
|
23
22
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
23
|
+
* Text attributes as a bitmask (comparable by value, cheap to diff).
|
|
24
|
+
* A const object, not a `const enum`, to stay compatible with `isolatedModules`.
|
|
26
25
|
*/
|
|
27
26
|
export declare const Attr: {
|
|
28
27
|
readonly None: 0;
|
|
@@ -34,14 +33,14 @@ export declare const Attr: {
|
|
|
34
33
|
readonly Strike: number;
|
|
35
34
|
readonly Blink: number;
|
|
36
35
|
};
|
|
37
|
-
/**
|
|
36
|
+
/** An attribute bitmask value (combinable with bitwise OR). */
|
|
38
37
|
export type Attr = number;
|
|
39
38
|
export declare const ESC = "\u001B";
|
|
40
|
-
/**
|
|
39
|
+
/** Builds a CSI sequence (`ESC [ … `). e.g. csi("2J"), csi(`${y};${x}H`). */
|
|
41
40
|
export declare function csi(body: string): string;
|
|
42
41
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
42
|
+
* Incremental SGR builder that emits ONLY the delta against the current state —
|
|
43
|
+
* the key to minimizing bytes in the encoder (ARCHITECTURE §17).
|
|
45
44
|
*/
|
|
46
45
|
export interface SgrBuilder {
|
|
47
46
|
transition(fg: AnsiColor, bg: AnsiColor, attrs: Attr): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/ansi/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/ansi/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErE,kFAAkF;AAClF,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,IAAI;;;;;;;;;CASP,CAAC;AACX,+DAA+D;AAC/D,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAE1B,eAAO,MAAM,GAAG,WAAS,CAAC;AAE1B,6EAA6E;AAC7E,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExC;AAsCD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9D,KAAK,IAAI,MAAM,CAAC;IAChB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CA8C7C"}
|
package/ui/engine/ansi/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ansi —
|
|
3
|
-
*
|
|
4
|
-
* (Fatia vertical / PoC: implementação real.)
|
|
2
|
+
* ansi — generates escape sequences (CSI/SGR) and defines the colour vocabulary.
|
|
3
|
+
* The lowest level that "knows" the terminal protocol. No I/O.
|
|
5
4
|
*/
|
|
6
5
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Text attributes as a bitmask (comparable by value, cheap to diff).
|
|
7
|
+
* A const object, not a `const enum`, to stay compatible with `isolatedModules`.
|
|
9
8
|
*/
|
|
10
9
|
export const Attr = {
|
|
11
10
|
None: 0,
|
|
@@ -18,7 +17,7 @@ export const Attr = {
|
|
|
18
17
|
Blink: 1 << 6,
|
|
19
18
|
};
|
|
20
19
|
export const ESC = '\x1b';
|
|
21
|
-
/**
|
|
20
|
+
/** Builds a CSI sequence (`ESC [ … `). e.g. csi("2J"), csi(`${y};${x}H`). */
|
|
22
21
|
export function csi(body) {
|
|
23
22
|
return ESC + '[' + body;
|
|
24
23
|
}
|
|
@@ -75,7 +74,7 @@ export function createSgrBuilder() {
|
|
|
75
74
|
const fgToDefault = fg.kind === 'default' && curFg.kind !== 'default';
|
|
76
75
|
const bgToDefault = bg.kind === 'default' && curBg.kind !== 'default';
|
|
77
76
|
if (removingAttr || fgToDefault || bgToDefault) {
|
|
78
|
-
//
|
|
77
|
+
// There is no cheap way to turn attributes off selectively → reset and rebuild.
|
|
79
78
|
const codes = [0, ...attrCodes(attrs)];
|
|
80
79
|
if (fg.kind !== 'default')
|
|
81
80
|
codes.push(...colorCodes(fg, true));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/ansi/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/ansi/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* components —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* components — pure factories returning an immutable `Node` (declarative
|
|
3
|
+
* immediate mode, ADR-0002). No JSX, no classes, no hidden state. Painting each
|
|
4
|
+
* type lives in the renderer.
|
|
5
5
|
*/
|
|
6
6
|
import type { Attr } from '../ansi/index.js';
|
|
7
7
|
import type { ColorRef } from '../frame/index.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* components —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* components — pure factories returning an immutable `Node` (declarative
|
|
3
|
+
* immediate mode, ADR-0002). No JSX, no classes, no hidden state. Painting each
|
|
4
|
+
* type lives in the renderer.
|
|
5
5
|
*/
|
|
6
6
|
function node(type, props = {}, children = [], key) {
|
|
7
7
|
const p = props;
|
|
8
8
|
return key === undefined ? { type, props: p, children } : { type, props: p, children, key };
|
|
9
9
|
}
|
|
10
|
-
//
|
|
10
|
+
// text and containers
|
|
11
11
|
export function text(content, style = {}) {
|
|
12
12
|
return node('text', { content, ...style });
|
|
13
13
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* cursor —
|
|
3
|
-
*
|
|
4
|
-
* (Fatia vertical / PoC: implementação real.)
|
|
2
|
+
* cursor — generates cursor positioning and visibility sequences.
|
|
3
|
+
* Pure functions returning bytes; `terminal` is what writes them.
|
|
5
4
|
*/
|
|
6
|
-
/**
|
|
5
|
+
/** Cursor sequence factory. Coordinates are 0-based in the API, 1-based in CSI. */
|
|
7
6
|
export interface Cursor {
|
|
8
7
|
moveTo(x: number, y: number): string;
|
|
9
8
|
moveBy(dx: number, dy: number): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/cursor/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/cursor/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,mFAAmF;AACnF,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,IAAI,IAAI,MAAM,CAAC;IACf,IAAI,IAAI,MAAM,CAAC;IACf,IAAI,IAAI,MAAM,CAAC;IACf,OAAO,IAAI,MAAM,CAAC;IAClB,aAAa,IAAI,MAAM,CAAC;CACzB;AAED,wBAAgB,YAAY,IAAI,MAAM,CA6BrC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* cursor —
|
|
3
|
-
*
|
|
4
|
-
* (Fatia vertical / PoC: implementação real.)
|
|
2
|
+
* cursor — generates cursor positioning and visibility sequences.
|
|
3
|
+
* Pure functions returning bytes; `terminal` is what writes them.
|
|
5
4
|
*/
|
|
6
5
|
import { csi } from '../ansi/index.js';
|
|
7
6
|
export function createCursor() {
|