zard-cli 1.0.0-beta.13 → 1.0.0-beta.130

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 (269) hide show
  1. package/README.md +39 -167
  2. package/commands/add/component-installer.d.ts +5 -1
  3. package/commands/add/component-installer.d.ts.map +1 -1
  4. package/commands/add/component-installer.js +34 -5
  5. package/commands/add/component-installer.js.map +1 -1
  6. package/commands/add/component-selector.d.ts +6 -0
  7. package/commands/add/component-selector.d.ts.map +1 -1
  8. package/commands/add/component-selector.js +9 -27
  9. package/commands/add/component-selector.js.map +1 -1
  10. package/commands/add/dark-mode-setup.d.ts +2 -0
  11. package/commands/add/dark-mode-setup.d.ts.map +1 -1
  12. package/commands/add/dark-mode-setup.js +5 -11
  13. package/commands/add/dark-mode-setup.js.map +1 -1
  14. package/commands/add/dependency-resolver.d.ts +9 -2
  15. package/commands/add/dependency-resolver.d.ts.map +1 -1
  16. package/commands/add/dependency-resolver.js +91 -21
  17. package/commands/add/dependency-resolver.js.map +1 -1
  18. package/commands/add/index.d.ts.map +1 -1
  19. package/commands/add/index.js +140 -86
  20. package/commands/add/index.js.map +1 -1
  21. package/commands/add/stylesheet-setup.d.ts +3 -0
  22. package/commands/add/stylesheet-setup.d.ts.map +1 -0
  23. package/commands/add/stylesheet-setup.js +92 -0
  24. package/commands/add/stylesheet-setup.js.map +1 -0
  25. package/commands/add/wizard.d.ts +35 -0
  26. package/commands/add/wizard.d.ts.map +1 -0
  27. package/commands/add/wizard.js +299 -0
  28. package/commands/add/wizard.js.map +1 -0
  29. package/commands/init/config-prompter.d.ts +67 -56
  30. package/commands/init/config-prompter.d.ts.map +1 -1
  31. package/commands/init/config-prompter.js +92 -74
  32. package/commands/init/config-prompter.js.map +1 -1
  33. package/commands/init/dependencies.d.ts +1 -8
  34. package/commands/init/dependencies.d.ts.map +1 -1
  35. package/commands/init/dependencies.js +51 -23
  36. package/commands/init/dependencies.js.map +1 -1
  37. package/commands/init/index.d.ts.map +1 -1
  38. package/commands/init/index.js +150 -86
  39. package/commands/init/index.js.map +1 -1
  40. package/commands/init/project-kind.d.ts +82 -0
  41. package/commands/init/project-kind.d.ts.map +1 -0
  42. package/commands/init/project-kind.js +166 -0
  43. package/commands/init/project-kind.js.map +1 -0
  44. package/commands/init/steps.d.ts +15 -0
  45. package/commands/init/steps.d.ts.map +1 -0
  46. package/commands/init/steps.js +154 -0
  47. package/commands/init/steps.js.map +1 -0
  48. package/commands/init/tailwind-setup.d.ts +9 -2
  49. package/commands/init/tailwind-setup.d.ts.map +1 -1
  50. package/commands/init/tailwind-setup.js +33 -9
  51. package/commands/init/tailwind-setup.js.map +1 -1
  52. package/commands/init/theme-loader.d.ts.map +1 -1
  53. package/commands/init/theme-loader.js +1 -3
  54. package/commands/init/theme-loader.js.map +1 -1
  55. package/commands/init/tsconfig-updater.d.ts +8 -1
  56. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  57. package/commands/init/tsconfig-updater.js +30 -11
  58. package/commands/init/tsconfig-updater.js.map +1 -1
  59. package/commands/init/update-angular-config.d.ts.map +1 -1
  60. package/commands/init/update-angular-config.js +28 -47
  61. package/commands/init/update-angular-config.js.map +1 -1
  62. package/commands/init/vite-setup.d.ts +11 -0
  63. package/commands/init/vite-setup.d.ts.map +1 -0
  64. package/commands/init/vite-setup.js +61 -0
  65. package/commands/init/vite-setup.js.map +1 -0
  66. package/commands/init/wizard.d.ts +30 -0
  67. package/commands/init/wizard.d.ts.map +1 -0
  68. package/commands/init/wizard.js +560 -0
  69. package/commands/init/wizard.js.map +1 -0
  70. package/constants/app.constants.d.ts +17 -0
  71. package/constants/app.constants.d.ts.map +1 -1
  72. package/constants/app.constants.js +39 -16
  73. package/constants/app.constants.js.map +1 -1
  74. package/core/icons/families.d.ts +38 -0
  75. package/core/icons/families.d.ts.map +1 -0
  76. package/core/icons/families.js +26 -0
  77. package/core/icons/families.js.map +1 -0
  78. package/core/icons/icon-map.d.ts +24 -0
  79. package/core/icons/icon-map.d.ts.map +1 -0
  80. package/core/icons/icon-map.js +141 -0
  81. package/core/icons/icon-map.js.map +1 -0
  82. package/core/icons/index.d.ts +107 -0
  83. package/core/icons/index.d.ts.map +1 -0
  84. package/core/icons/index.js +183 -0
  85. package/core/icons/index.js.map +1 -0
  86. package/core/registry/registry-data.d.ts.map +1 -1
  87. package/core/registry/registry-data.js +861 -108
  88. package/core/registry/registry-data.js.map +1 -1
  89. package/core/themes/theme-definitions.d.ts +5 -5
  90. package/core/themes/theme-definitions.d.ts.map +1 -1
  91. package/core/themes/theme-definitions.js +75 -82
  92. package/core/themes/theme-definitions.js.map +1 -1
  93. package/index.js +41 -4
  94. package/index.js.map +1 -1
  95. package/package.json +9 -14
  96. package/ui/blocks.d.ts +71 -0
  97. package/ui/blocks.d.ts.map +1 -0
  98. package/ui/blocks.js +116 -0
  99. package/ui/blocks.js.map +1 -0
  100. package/ui/brand.d.ts +14 -0
  101. package/ui/brand.d.ts.map +1 -0
  102. package/ui/brand.js +35 -0
  103. package/ui/brand.js.map +1 -0
  104. package/ui/engine/animation/index.d.ts +38 -0
  105. package/ui/engine/animation/index.d.ts.map +1 -0
  106. package/ui/engine/animation/index.js +102 -0
  107. package/ui/engine/animation/index.js.map +1 -0
  108. package/ui/engine/ansi/index.d.ts +51 -0
  109. package/ui/engine/ansi/index.d.ts.map +1 -0
  110. package/ui/engine/ansi/index.js +116 -0
  111. package/ui/engine/ansi/index.js.map +1 -0
  112. package/ui/engine/components/index.d.ts +211 -0
  113. package/ui/engine/components/index.d.ts.map +1 -0
  114. package/ui/engine/components/index.js +109 -0
  115. package/ui/engine/components/index.js.map +1 -0
  116. package/ui/engine/cursor/index.d.ts +16 -0
  117. package/ui/engine/cursor/index.d.ts.map +1 -0
  118. package/ui/engine/cursor/index.js +40 -0
  119. package/ui/engine/cursor/index.js.map +1 -0
  120. package/ui/engine/diff/index.d.ts +26 -0
  121. package/ui/engine/diff/index.d.ts.map +1 -0
  122. package/ui/engine/diff/index.js +56 -0
  123. package/ui/engine/diff/index.js.map +1 -0
  124. package/ui/engine/events/index.d.ts +24 -0
  125. package/ui/engine/events/index.d.ts.map +1 -0
  126. package/ui/engine/events/index.js +60 -0
  127. package/ui/engine/events/index.js.map +1 -0
  128. package/ui/engine/focus/index.d.ts +25 -0
  129. package/ui/engine/focus/index.d.ts.map +1 -0
  130. package/ui/engine/focus/index.js +77 -0
  131. package/ui/engine/focus/index.js.map +1 -0
  132. package/ui/engine/frame/index.d.ts +48 -0
  133. package/ui/engine/frame/index.d.ts.map +1 -0
  134. package/ui/engine/frame/index.js +0 -0
  135. package/ui/engine/frame/index.js.map +1 -0
  136. package/ui/engine/index.d.ts +28 -0
  137. package/ui/engine/index.d.ts.map +1 -0
  138. package/ui/engine/index.js +28 -0
  139. package/ui/engine/index.js.map +1 -0
  140. package/ui/engine/input/index.d.ts +36 -0
  141. package/ui/engine/input/index.d.ts.map +1 -0
  142. package/ui/engine/input/index.js +224 -0
  143. package/ui/engine/input/index.js.map +1 -0
  144. package/ui/engine/layout/index.d.ts +42 -0
  145. package/ui/engine/layout/index.d.ts.map +1 -0
  146. package/ui/engine/layout/index.js +241 -0
  147. package/ui/engine/layout/index.js.map +1 -0
  148. package/ui/engine/renderer/index.d.ts +43 -0
  149. package/ui/engine/renderer/index.d.ts.map +1 -0
  150. package/ui/engine/renderer/index.js +619 -0
  151. package/ui/engine/renderer/index.js.map +1 -0
  152. package/ui/engine/scheduler/index.d.ts +22 -0
  153. package/ui/engine/scheduler/index.d.ts.map +1 -0
  154. package/ui/engine/scheduler/index.js +77 -0
  155. package/ui/engine/scheduler/index.js.map +1 -0
  156. package/ui/engine/screen/index.d.ts +39 -0
  157. package/ui/engine/screen/index.d.ts.map +1 -0
  158. package/ui/engine/screen/index.js +255 -0
  159. package/ui/engine/screen/index.js.map +1 -0
  160. package/ui/engine/terminal/index.d.ts +84 -0
  161. package/ui/engine/terminal/index.d.ts.map +1 -0
  162. package/ui/engine/terminal/index.js +235 -0
  163. package/ui/engine/terminal/index.js.map +1 -0
  164. package/ui/engine/testing/index.d.ts +27 -0
  165. package/ui/engine/testing/index.d.ts.map +1 -0
  166. package/ui/engine/testing/index.js +63 -0
  167. package/ui/engine/testing/index.js.map +1 -0
  168. package/ui/engine/theme/index.d.ts +26 -0
  169. package/ui/engine/theme/index.d.ts.map +1 -0
  170. package/ui/engine/theme/index.js +128 -0
  171. package/ui/engine/theme/index.js.map +1 -0
  172. package/ui/engine/utils/index.d.ts +12 -0
  173. package/ui/engine/utils/index.d.ts.map +1 -0
  174. package/ui/engine/utils/index.js +143 -0
  175. package/ui/engine/utils/index.js.map +1 -0
  176. package/ui/gate.d.ts +19 -0
  177. package/ui/gate.d.ts.map +1 -0
  178. package/ui/gate.js +36 -0
  179. package/ui/gate.js.map +1 -0
  180. package/ui/index.d.ts +18 -0
  181. package/ui/index.d.ts.map +1 -0
  182. package/ui/index.js +18 -0
  183. package/ui/index.js.map +1 -0
  184. package/ui/log-sink.d.ts +24 -0
  185. package/ui/log-sink.d.ts.map +1 -0
  186. package/ui/log-sink.js +35 -0
  187. package/ui/log-sink.js.map +1 -0
  188. package/ui/output.d.ts +14 -0
  189. package/ui/output.d.ts.map +1 -0
  190. package/ui/output.js +28 -0
  191. package/ui/output.js.map +1 -0
  192. package/ui/report.d.ts +30 -0
  193. package/ui/report.d.ts.map +1 -0
  194. package/ui/report.js +45 -0
  195. package/ui/report.js.map +1 -0
  196. package/ui/runner.d.ts +66 -0
  197. package/ui/runner.d.ts.map +1 -0
  198. package/ui/runner.js +135 -0
  199. package/ui/runner.js.map +1 -0
  200. package/ui/style.d.ts +24 -0
  201. package/ui/style.d.ts.map +1 -0
  202. package/ui/style.js +44 -0
  203. package/ui/style.js.map +1 -0
  204. package/ui/testing/fake-tty.d.ts +26 -0
  205. package/ui/testing/fake-tty.d.ts.map +1 -0
  206. package/ui/testing/fake-tty.js +61 -0
  207. package/ui/testing/fake-tty.js.map +1 -0
  208. package/ui/text-input.d.ts +31 -0
  209. package/ui/text-input.d.ts.map +1 -0
  210. package/ui/text-input.js +89 -0
  211. package/ui/text-input.js.map +1 -0
  212. package/ui/theme.d.ts +10 -0
  213. package/ui/theme.d.ts.map +1 -0
  214. package/ui/theme.js +20 -0
  215. package/ui/theme.js.map +1 -0
  216. package/utils/angular-compat.d.ts +21 -0
  217. package/utils/angular-compat.d.ts.map +1 -0
  218. package/utils/angular-compat.js +52 -0
  219. package/utils/angular-compat.js.map +1 -0
  220. package/utils/config.d.ts +55 -69
  221. package/utils/config.d.ts.map +1 -1
  222. package/utils/config.js +66 -9
  223. package/utils/config.js.map +1 -1
  224. package/utils/errors.d.ts +27 -0
  225. package/utils/errors.d.ts.map +1 -0
  226. package/utils/errors.js +45 -0
  227. package/utils/errors.js.map +1 -0
  228. package/utils/get-package-info.js +4 -4
  229. package/utils/get-package-info.js.map +1 -1
  230. package/utils/get-project-info.d.ts +30 -0
  231. package/utils/get-project-info.d.ts.map +1 -1
  232. package/utils/get-project-info.js +195 -6
  233. package/utils/get-project-info.js.map +1 -1
  234. package/utils/http-client.d.ts +8 -0
  235. package/utils/http-client.d.ts.map +1 -0
  236. package/utils/http-client.js +83 -0
  237. package/utils/http-client.js.map +1 -0
  238. package/utils/icon-catalog.d.ts +34 -0
  239. package/utils/icon-catalog.d.ts.map +1 -0
  240. package/utils/icon-catalog.js +63 -0
  241. package/utils/icon-catalog.js.map +1 -0
  242. package/utils/logger.d.ts +16 -1
  243. package/utils/logger.d.ts.map +1 -1
  244. package/utils/logger.js +104 -12
  245. package/utils/logger.js.map +1 -1
  246. package/utils/package-manager.d.ts +44 -1
  247. package/utils/package-manager.d.ts.map +1 -1
  248. package/utils/package-manager.js +210 -14
  249. package/utils/package-manager.js.map +1 -1
  250. package/utils/registry.d.ts +86 -2
  251. package/utils/registry.d.ts.map +1 -1
  252. package/utils/registry.js +147 -31
  253. package/utils/registry.js.map +1 -1
  254. package/utils/schema-version.d.ts +21 -0
  255. package/utils/schema-version.d.ts.map +1 -0
  256. package/utils/schema-version.js +28 -0
  257. package/utils/schema-version.js.map +1 -0
  258. package/utils/source-file.d.ts +40 -0
  259. package/utils/source-file.d.ts.map +1 -0
  260. package/utils/source-file.js +104 -0
  261. package/utils/source-file.js.map +1 -0
  262. package/utils/theme-selector.d.ts +1 -1
  263. package/utils/theme-selector.d.ts.map +1 -1
  264. package/utils/theme-selector.js +6 -6
  265. package/utils/theme-selector.js.map +1 -1
  266. package/utils/fetch-component.d.ts +0 -3
  267. package/utils/fetch-component.d.ts.map +0 -1
  268. package/utils/fetch-component.js +0 -75
  269. package/utils/fetch-component.js.map +0 -1
@@ -0,0 +1,299 @@
1
+ import { answeredLine, checkList, commandHeader, confirmField, controls, createGate, editInput, hint, page, progress, question, resultPanel, runWizard, screen, spacer, startInput, taskHeader, taskList, text, textField, } from '../../ui/index.js';
2
+ const DARK_MODE = 'dark-mode';
3
+ const TYPESET = 'typeset';
4
+ const UTILITIES = 'utilities';
5
+ export async function runAddWizard(options) {
6
+ const state = {
7
+ phase: options.preselected.length ? 'resolving' : 'selecting',
8
+ names: [],
9
+ filter: '',
10
+ visible: [],
11
+ cursor: 0,
12
+ selected: new Set(),
13
+ componentCount: 0,
14
+ dependencyCount: 0,
15
+ confirmValue: true,
16
+ tasks: [],
17
+ tasksDone: 0,
18
+ taskStartedAt: 0,
19
+ indexHtml: startInput(options.defaultIndexHtml),
20
+ transcript: [],
21
+ failure: null,
22
+ installed: [],
23
+ };
24
+ const selection = createGate();
25
+ const confirmation = createGate();
26
+ const darkMode = createGate();
27
+ const finish = createGate();
28
+ const applyFilter = () => {
29
+ const term = state.filter.trim().toLowerCase();
30
+ state.visible = state.names
31
+ .map((_, index) => index)
32
+ .filter(index => !term || state.names[index].toLowerCase().includes(term));
33
+ state.cursor = Math.min(state.cursor, Math.max(0, state.visible.length - 1));
34
+ };
35
+ const onKey = (event, ctx) => {
36
+ if (state.phase === 'selecting') {
37
+ handleSelectionKey(event, state, applyFilter, selection);
38
+ return;
39
+ }
40
+ if (state.phase === 'confirming') {
41
+ if (event.key === 'left' || event.key === 'right')
42
+ state.confirmValue = !state.confirmValue;
43
+ else if (event.key === 'y' || event.key === 'Y')
44
+ confirmation.settle(true);
45
+ else if (event.key === 'n' || event.key === 'N' || event.key === 'escape')
46
+ confirmation.settle(false);
47
+ else if (event.key === 'enter')
48
+ confirmation.settle(state.confirmValue);
49
+ return;
50
+ }
51
+ if (state.phase === 'darkMode') {
52
+ if (event.key === 'enter') {
53
+ darkMode.settle(state.indexHtml.value.trim() || options.defaultIndexHtml);
54
+ return;
55
+ }
56
+ if (event.key === 'escape') {
57
+ darkMode.settle(null);
58
+ return;
59
+ }
60
+ const edited = editInput(state.indexHtml, event);
61
+ if (edited)
62
+ state.indexHtml = edited;
63
+ return;
64
+ }
65
+ if (state.phase === 'done' || state.phase === 'failed') {
66
+ if (event.key === 'enter')
67
+ finish.settle(undefined);
68
+ return;
69
+ }
70
+ void ctx;
71
+ };
72
+ const run = async (ctx) => {
73
+ let names;
74
+ if (options.preselected.length) {
75
+ names = [...options.preselected];
76
+ }
77
+ else {
78
+ state.names = await options.loadNames();
79
+ applyFilter();
80
+ ctx.refresh();
81
+ names = await selection.wait();
82
+ if (!names.length) {
83
+ ctx.cancel('No components selected.');
84
+ return;
85
+ }
86
+ state.transcript.push(['components', names.join(', ')]);
87
+ }
88
+ state.phase = 'resolving';
89
+ ctx.refresh();
90
+ const { components, dependencies } = await options.resolve(names);
91
+ if (components.length === 0) {
92
+ state.phase = 'done';
93
+ state.installed = [];
94
+ ctx.refresh();
95
+ await finish.wait();
96
+ ctx.done([]);
97
+ return;
98
+ }
99
+ state.componentCount = components.length;
100
+ state.dependencyCount = dependencies.length;
101
+ if (!options.skipConfirmation) {
102
+ state.phase = 'confirming';
103
+ ctx.refresh();
104
+ if (!(await confirmation.wait())) {
105
+ ctx.cancel();
106
+ return;
107
+ }
108
+ state.transcript.push(['install', `${components.length} component(s), ${dependencies.length} dependencies`]);
109
+ }
110
+ state.phase = 'installing';
111
+ state.tasks = [
112
+ ...(dependencies.length ? [{ label: 'dependencies', note: dependencies.join(', ') }] : []),
113
+ ...components.map(component => ({ label: component.name, note: 'component source' })),
114
+ ];
115
+ state.tasksDone = 0;
116
+ state.taskStartedAt = Date.now();
117
+ ctx.refresh();
118
+ if (dependencies.length) {
119
+ await options.installDependencies(dependencies);
120
+ state.tasksDone++;
121
+ state.taskStartedAt = Date.now();
122
+ ctx.refresh();
123
+ }
124
+ const failed = [];
125
+ for (const component of components) {
126
+ try {
127
+ await options.installComponent(component);
128
+ state.installed.push(component.name);
129
+ }
130
+ catch (error) {
131
+ failed.push(component.name);
132
+ state.failure = `${component.name}: ${error instanceof Error ? error.message : String(error)}`;
133
+ }
134
+ state.tasksDone++;
135
+ state.taskStartedAt = Date.now();
136
+ ctx.refresh();
137
+ }
138
+ // After the loop, and against what was actually written: injecting the
139
+ // import for a file whose install failed would point the CSS at nothing.
140
+ if (state.installed.includes(TYPESET)) {
141
+ await options.setupTypeset();
142
+ }
143
+ if (state.installed.includes(UTILITIES)) {
144
+ await options.setupUtilities();
145
+ }
146
+ if (components.some(component => component.name === DARK_MODE)) {
147
+ state.phase = 'darkMode';
148
+ ctx.refresh();
149
+ const indexHtml = await darkMode.wait();
150
+ if (indexHtml) {
151
+ state.transcript.push(['index.html', indexHtml]);
152
+ await options.setupDarkMode(indexHtml);
153
+ }
154
+ }
155
+ state.phase = failed.length ? 'failed' : 'done';
156
+ ctx.refresh();
157
+ await finish.wait();
158
+ ctx.done(state.installed);
159
+ };
160
+ const result = await runWizard({
161
+ view: () => buildView(state),
162
+ onKey,
163
+ run,
164
+ });
165
+ return { installed: result.value, logs: result.logs };
166
+ }
167
+ function handleSelectionKey(event, state, applyFilter, selection) {
168
+ const total = state.visible.length;
169
+ if (event.key === 'up') {
170
+ state.cursor = total ? (state.cursor - 1 + total) % total : 0;
171
+ return;
172
+ }
173
+ if (event.key === 'down') {
174
+ state.cursor = total ? (state.cursor + 1) % total : 0;
175
+ return;
176
+ }
177
+ if (event.key === ' ' || event.key === 'space') {
178
+ const index = state.visible[state.cursor];
179
+ if (index !== undefined) {
180
+ if (state.selected.has(index))
181
+ state.selected.delete(index);
182
+ else
183
+ state.selected.add(index);
184
+ }
185
+ return;
186
+ }
187
+ if (event.ctrl && event.key === 'a') {
188
+ // Toggles everything visible, honouring the current filter.
189
+ const allSelected = state.visible.every(index => state.selected.has(index));
190
+ for (const index of state.visible) {
191
+ if (allSelected)
192
+ state.selected.delete(index);
193
+ else
194
+ state.selected.add(index);
195
+ }
196
+ return;
197
+ }
198
+ if (event.key === 'enter') {
199
+ selection.settle([...state.selected].sort((a, b) => a - b).map(index => state.names[index]));
200
+ return;
201
+ }
202
+ if (event.key === 'backspace') {
203
+ state.filter = [...state.filter].slice(0, -1).join('');
204
+ applyFilter();
205
+ return;
206
+ }
207
+ if (event.key.length === 1 && !event.ctrl && !event.alt) {
208
+ state.filter += event.key;
209
+ applyFilter();
210
+ }
211
+ }
212
+ /** Sliding window over the list: keeps the cursor visible at all times. */
213
+ const VISIBLE_ROWS = 10;
214
+ function windowOf(state) {
215
+ if (state.visible.length <= VISIBLE_ROWS)
216
+ return { slice: state.visible, offset: 0 };
217
+ const half = Math.floor(VISIBLE_ROWS / 2);
218
+ const max = state.visible.length - VISIBLE_ROWS;
219
+ const offset = Math.max(0, Math.min(state.cursor - half, max));
220
+ return { slice: state.visible.slice(offset, offset + VISIBLE_ROWS), offset };
221
+ }
222
+ function buildView(state) {
223
+ const body = [commandHeader('add', 'Add components to your project'), text('')];
224
+ for (const [label, value] of state.transcript)
225
+ body.push(answeredLine(label, value));
226
+ if (state.transcript.length)
227
+ body.push(text(''));
228
+ if (state.phase === 'selecting') {
229
+ const { slice, offset } = windowOf(state);
230
+ const choices = slice.map(index => ({ label: state.names[index] }));
231
+ const localCursor = state.cursor - offset;
232
+ const localSelected = new Set(slice.map((index, position) => (state.selected.has(index) ? position : -1)).filter(position => position >= 0));
233
+ body.push(question('Which components would you like to add?'));
234
+ body.push(textField(state.filter));
235
+ if (choices.length) {
236
+ body.push(...checkList(choices, localCursor, localSelected));
237
+ }
238
+ else {
239
+ body.push(hint('No component matches this filter.'));
240
+ }
241
+ body.push(text(''));
242
+ body.push(hint(`${state.selected.size} selected · ${state.visible.length} of ${state.names.length} shown`));
243
+ body.push(spacer());
244
+ body.push(controls([
245
+ ['↑/↓', 'move'],
246
+ ['space', 'select'],
247
+ ['ctrl+a', 'toggle all'],
248
+ ['enter', 'confirm'],
249
+ ]));
250
+ }
251
+ else if (state.phase === 'resolving') {
252
+ body.push(taskHeader('Resolving components and dependencies…', false));
253
+ body.push(spacer());
254
+ }
255
+ else if (state.phase === 'confirming') {
256
+ body.push(question(`Ready to install ${state.componentCount} component(s) and ${state.dependencyCount} dependencies. Proceed?`));
257
+ body.push(confirmField(state.confirmValue));
258
+ body.push(hint('Existing files are kept unless you passed --overwrite.'));
259
+ body.push(spacer());
260
+ body.push(controls([
261
+ ['y/n · ←/→', 'toggle'],
262
+ ['enter', 'confirm'],
263
+ ]));
264
+ }
265
+ else if (state.phase === 'darkMode') {
266
+ body.push(question('Where is your index.html file?'));
267
+ body.push(textField(state.indexHtml.value, state.indexHtml.caret));
268
+ body.push(hint('Dark mode injects a small script there to apply the theme before first paint.'));
269
+ body.push(spacer());
270
+ body.push(controls([
271
+ ['enter', 'confirm'],
272
+ ['esc', 'skip'],
273
+ ]));
274
+ }
275
+ else {
276
+ body.push(...installBlock(state));
277
+ body.push(spacer());
278
+ body.push(controls([['enter', state.phase === 'failed' ? 'exit' : 'finish']]));
279
+ }
280
+ return screen(page(...body));
281
+ }
282
+ function installBlock(state) {
283
+ const allDone = state.tasksDone >= state.tasks.length;
284
+ const nodes = [];
285
+ if (state.tasks.length) {
286
+ nodes.push(taskHeader(state.phase === 'failed' ? 'Finished with errors' : 'Installing…', allDone), text(''), ...taskList(state.tasks, state.tasksDone, state.phase === 'installing' ? Date.now() - state.taskStartedAt : undefined), text(''), progress(state.tasksDone, state.tasks.length), text(''));
287
+ }
288
+ if (state.phase === 'failed') {
289
+ nodes.push(resultPanel('danger', state.failure ?? 'Some components could not be installed.'));
290
+ }
291
+ else if (state.installed.length) {
292
+ nodes.push(resultPanel('success', `Installed ${state.installed.length} component${state.installed.length > 1 ? 's' : ''}.`));
293
+ }
294
+ else {
295
+ nodes.push(resultPanel('success', 'All components are already installed.'));
296
+ }
297
+ return nodes;
298
+ }
299
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../src/commands/add/wizard.ts"],"names":[],"mappings":"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"}
@@ -1,71 +1,82 @@
1
- import { Config } from '../../utils/config.js';
2
- import { ProjectInfo } from '../../utils/get-project-info';
1
+ import { type ProjectKind } from '../../commands/init/project-kind.js';
2
+ import { type Config } from '../../utils/config.js';
3
+ import { type ProjectInfo } from '../../utils/get-project-info.js';
3
4
  import { z } from 'zod';
4
5
  export declare const SCHEMA_URL = "https://zardui.com/schema.json";
5
6
  export declare const configSchema: z.ZodObject<{
6
7
  $schema: z.ZodString;
7
- style: z.ZodEnum<["css"]>;
8
+ style: z.ZodEnum<{
9
+ css: "css";
10
+ }>;
11
+ icons: z.ZodString;
12
+ rtl: z.ZodBoolean;
13
+ projectType: z.ZodEnum<{
14
+ angular: "angular";
15
+ "angular-library": "angular-library";
16
+ nx: "nx";
17
+ "nx-library": "nx-library";
18
+ analog: "analog";
19
+ }>;
8
20
  appConfigFile: z.ZodString;
9
- packageManager: z.ZodEnum<["npm", "yarn", "pnpm", "bun"]>;
21
+ packageManager: z.ZodEnum<{
22
+ npm: "npm";
23
+ yarn: "yarn";
24
+ pnpm: "pnpm";
25
+ bun: "bun";
26
+ }>;
10
27
  tailwind: z.ZodObject<{
11
28
  css: z.ZodString;
12
29
  baseColor: z.ZodString;
13
- }, "strip", z.ZodTypeAny, {
14
- css?: string;
15
- baseColor?: string;
16
- }, {
17
- css?: string;
18
- baseColor?: string;
19
- }>;
30
+ }, z.core.$strip>;
20
31
  baseUrl: z.ZodString;
21
32
  aliases: z.ZodObject<{
22
33
  components: z.ZodString;
23
34
  utils: z.ZodString;
24
35
  core: z.ZodString;
25
36
  services: z.ZodString;
26
- }, "strip", z.ZodTypeAny, {
27
- components?: string;
28
- utils?: string;
29
- core?: string;
30
- services?: string;
31
- }, {
32
- components?: string;
33
- utils?: string;
34
- core?: string;
35
- services?: string;
36
- }>;
37
- }, "strip", z.ZodTypeAny, {
38
- $schema?: string;
39
- appConfigFile?: string;
40
- style?: "css";
41
- packageManager?: "npm" | "yarn" | "pnpm" | "bun";
42
- tailwind?: {
43
- css?: string;
44
- baseColor?: string;
45
- };
46
- baseUrl?: string;
47
- aliases?: {
48
- components?: string;
49
- utils?: string;
50
- core?: string;
51
- services?: string;
52
- };
53
- }, {
54
- $schema?: string;
55
- appConfigFile?: string;
56
- style?: "css";
57
- packageManager?: "npm" | "yarn" | "pnpm" | "bun";
58
- tailwind?: {
59
- css?: string;
60
- baseColor?: string;
61
- };
62
- baseUrl?: string;
63
- aliases?: {
64
- components?: string;
65
- utils?: string;
66
- core?: string;
67
- services?: string;
68
- };
69
- }>;
70
- export declare function promptForConfig(cwd: string, projectInfo: ProjectInfo, packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun'): Promise<Config>;
37
+ blocks: z.ZodString;
38
+ }, z.core.$strip>;
39
+ }, z.core.$strip>;
40
+ /** As respostas do wizard, antes de virarem um `components.json`. */
41
+ export interface InitAnswers {
42
+ kind: ProjectKind;
43
+ /** Root of the chosen project, relative to the workspace; empty for a single app. */
44
+ projectRoot: string;
45
+ appConfig: string;
46
+ theme: string;
47
+ globalCss: string;
48
+ componentsAlias: string;
49
+ utilsAlias: string;
50
+ }
51
+ /**
52
+ * The paths suggested for the type the user chose.
53
+ *
54
+ * They come from the project declared in the workspace whenever there is one —
55
+ * the build target's `styles` is where the global CSS actually lives, and
56
+ * guessing it was what made init suggest paths that did not exist in monorepo
57
+ * layouts.
58
+ */
59
+ export declare function defaultAnswers(projectInfo: ProjectInfo, kind?: ProjectKind, projectRoot?: string): InitAnswers;
60
+ /**
61
+ * Where the components are written, derived from `app.config.ts`.
62
+ *
63
+ * Hardcoding `src/app` broke every layout that was not a single app at the root:
64
+ * in a workspace the app.config lives in `apps/<app>/src/app`, and the components
65
+ * ended up in a root `src/app` that belongs to no project. The directory holding
66
+ * app.config is exactly the root of the app's code.
67
+ *
68
+ * Separators are normalized before `dirname`, not after: on POSIX `path.dirname`
69
+ * does not treat `\` as a separator, so a Windows-style path collapsed to `.`
70
+ * and silently fell back to `src/app`.
71
+ */
72
+ export declare function deriveBaseUrl(appConfigFile: string): string;
73
+ export declare function buildConfig(answers: InitAnswers, packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun'): Config;
74
+ /**
75
+ * State of the global CSS file the user pointed at.
76
+ *
77
+ * init overwrites that file with the theme tokens, so the wizard has to know,
78
+ * before going on, whether it exists and whether there is content to lose.
79
+ */
80
+ export type CssFileState = 'missing' | 'empty' | 'has-content';
81
+ export declare function inspectCssFile(cwd: string, relativePath: string): Promise<CssFileState>;
71
82
  //# sourceMappingURL=config-prompter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-prompter.d.ts","sourceRoot":"","sources":["../../../src/commands/init/config-prompter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAQ1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,mCAAmC,CAAC;AAE3D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBvB,CAAC;AAEH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAC9C,OAAO,CAAC,MAAM,CAAC,CAiEjB"}
1
+ {"version":3,"file":"config-prompter.d.ts","sourceRoot":"","sources":["../../../src/commands/init/config-prompter.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,gCAAgC,CAAC;AAIzF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,mCAAmC,CAAC;AAE3D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoBvB,CAAC;AAEH,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,qFAAqF;IACrF,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,WAAW,EACxB,IAAI,cAAiC,EACrC,WAAW,CAAC,EAAE,MAAM,GACnB,WAAW,CA4Bb;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAG3D;AAOD,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CA2BzG;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC;AAE/D,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAO7F"}