zard-cli 1.0.0-beta.99 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/README.md +98 -36
  2. package/commands/add/component-installer.d.ts +3 -0
  3. package/commands/add/component-installer.d.ts.map +1 -1
  4. package/commands/add/component-installer.js +31 -8
  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 +16 -11
  13. package/commands/add/dark-mode-setup.js.map +1 -1
  14. package/commands/add/dependency-resolver.d.ts +8 -1
  15. package/commands/add/dependency-resolver.d.ts.map +1 -1
  16. package/commands/add/dependency-resolver.js +87 -16
  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 +142 -96
  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 +65 -3
  30. package/commands/init/config-prompter.d.ts.map +1 -1
  31. package/commands/init/config-prompter.js +93 -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 +54 -24
  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 +175 -81
  39. package/commands/init/index.js.map +1 -1
  40. package/commands/init/library-peers.d.ts +28 -0
  41. package/commands/init/library-peers.d.ts.map +1 -0
  42. package/commands/init/library-peers.js +61 -0
  43. package/commands/init/library-peers.js.map +1 -0
  44. package/commands/init/project-kind.d.ts +82 -0
  45. package/commands/init/project-kind.d.ts.map +1 -0
  46. package/commands/init/project-kind.js +166 -0
  47. package/commands/init/project-kind.js.map +1 -0
  48. package/commands/init/steps.d.ts +15 -0
  49. package/commands/init/steps.d.ts.map +1 -0
  50. package/commands/init/steps.js +188 -0
  51. package/commands/init/steps.js.map +1 -0
  52. package/commands/init/tailwind-setup.d.ts +9 -2
  53. package/commands/init/tailwind-setup.d.ts.map +1 -1
  54. package/commands/init/tailwind-setup.js +47 -12
  55. package/commands/init/tailwind-setup.js.map +1 -1
  56. package/commands/init/tsconfig-updater.d.ts +8 -1
  57. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  58. package/commands/init/tsconfig-updater.js +30 -11
  59. package/commands/init/tsconfig-updater.js.map +1 -1
  60. package/commands/init/update-angular-config.d.ts.map +1 -1
  61. package/commands/init/update-angular-config.js +28 -50
  62. package/commands/init/update-angular-config.js.map +1 -1
  63. package/commands/init/vite-setup.d.ts +11 -0
  64. package/commands/init/vite-setup.d.ts.map +1 -0
  65. package/commands/init/vite-setup.js +61 -0
  66. package/commands/init/vite-setup.js.map +1 -0
  67. package/commands/init/wizard.d.ts +33 -0
  68. package/commands/init/wizard.d.ts.map +1 -0
  69. package/commands/init/wizard.js +561 -0
  70. package/commands/init/wizard.js.map +1 -0
  71. package/constants/app.constants.d.ts +17 -0
  72. package/constants/app.constants.d.ts.map +1 -1
  73. package/constants/app.constants.js +39 -16
  74. package/constants/app.constants.js.map +1 -1
  75. package/core/icons/families.d.ts +38 -0
  76. package/core/icons/families.d.ts.map +1 -0
  77. package/core/icons/families.js +26 -0
  78. package/core/icons/families.js.map +1 -0
  79. package/core/icons/icon-map.d.ts +24 -0
  80. package/core/icons/icon-map.d.ts.map +1 -0
  81. package/core/icons/icon-map.js +141 -0
  82. package/core/icons/icon-map.js.map +1 -0
  83. package/core/icons/index.d.ts +107 -0
  84. package/core/icons/index.d.ts.map +1 -0
  85. package/core/icons/index.js +183 -0
  86. package/core/icons/index.js.map +1 -0
  87. package/core/registry/registry-data.d.ts.map +1 -1
  88. package/core/registry/registry-data.js +498 -36
  89. package/core/registry/registry-data.js.map +1 -1
  90. package/core/themes/theme-definitions.d.ts.map +1 -1
  91. package/core/themes/theme-definitions.js +61 -72
  92. package/core/themes/theme-definitions.js.map +1 -1
  93. package/index.js +6 -3
  94. package/index.js.map +1 -1
  95. package/package.json +6 -11
  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 +29 -0
  221. package/utils/config.d.ts.map +1 -1
  222. package/utils/config.js +50 -4
  223. package/utils/config.js.map +1 -1
  224. package/utils/errors.d.ts +11 -0
  225. package/utils/errors.d.ts.map +1 -1
  226. package/utils/errors.js +14 -0
  227. package/utils/errors.js.map +1 -1
  228. package/utils/get-project-info.d.ts +29 -0
  229. package/utils/get-project-info.d.ts.map +1 -1
  230. package/utils/get-project-info.js +246 -1
  231. package/utils/get-project-info.js.map +1 -1
  232. package/utils/http-client.d.ts.map +1 -1
  233. package/utils/http-client.js +18 -3
  234. package/utils/http-client.js.map +1 -1
  235. package/utils/icon-catalog.d.ts +34 -0
  236. package/utils/icon-catalog.d.ts.map +1 -0
  237. package/utils/icon-catalog.js +63 -0
  238. package/utils/icon-catalog.js.map +1 -0
  239. package/utils/logger.d.ts +13 -1
  240. package/utils/logger.d.ts.map +1 -1
  241. package/utils/logger.js +95 -15
  242. package/utils/logger.js.map +1 -1
  243. package/utils/package-manager.d.ts +42 -1
  244. package/utils/package-manager.d.ts.map +1 -1
  245. package/utils/package-manager.js +204 -11
  246. package/utils/package-manager.js.map +1 -1
  247. package/utils/registry.d.ts +106 -2
  248. package/utils/registry.d.ts.map +1 -1
  249. package/utils/registry.js +155 -21
  250. package/utils/registry.js.map +1 -1
  251. package/utils/schema-version.d.ts +21 -0
  252. package/utils/schema-version.d.ts.map +1 -0
  253. package/utils/schema-version.js +28 -0
  254. package/utils/schema-version.js.map +1 -0
  255. package/utils/source-file.d.ts +40 -0
  256. package/utils/source-file.d.ts.map +1 -0
  257. package/utils/source-file.js +104 -0
  258. package/utils/source-file.js.map +1 -0
@@ -0,0 +1,561 @@
1
+ import { buildConfig, defaultAnswers, inspectCssFile, withPresets, } from '../../commands/init/config-prompter.js';
2
+ import { candidateProjects, isLibraryKind, PROJECT_KINDS } from '../../commands/init/project-kind.js';
3
+ import { answeredLine, brandBanner, choiceList, commandHeader, confirmField, controls, hint, page, progress, question, resultPanel, editInput, runWizard, screen, spacer, startInput, taskHeader, taskList, text, textField, warning, } from '../../ui/index.js';
4
+ import { getAvailableThemes, getThemeDisplayName } from '../../utils/theme-selector.js';
5
+ const OVERWRITE_STEP = {
6
+ id: 'overwriteCss',
7
+ kind: 'confirm',
8
+ prompt: 'Your CSS file already has content. This will overwrite everything with zard/ui theme configuration. Continue?',
9
+ label: 'overwrite CSS',
10
+ detail: 'The theme tokens must live in your global CSS, or the components will not render.',
11
+ confirmDefault: true,
12
+ danger: 'Choosing No cancels the installation. This step is essential for zard/ui to work.',
13
+ };
14
+ function themeStep() {
15
+ const themes = getAvailableThemes();
16
+ return {
17
+ id: 'theme',
18
+ kind: 'select',
19
+ prompt: 'Choose a theme for your components:',
20
+ label: 'theme',
21
+ detail: 'Defines the base color palette, exposed as CSS variables on :root.',
22
+ choices: themes.map(theme => ({ label: getThemeDisplayName(theme) })),
23
+ values: themes,
24
+ };
25
+ }
26
+ /**
27
+ * The header line, saying where the install will land.
28
+ *
29
+ * Before the first answer there is no target to announce — the type is the
30
+ * user's choice, and pre-empting it here would suggest the CLI already decided.
31
+ * With a single compatible project the wizard does not ask which one either, so
32
+ * this is where its name appears, to keep the choice from being implicit.
33
+ */
34
+ function targetDescription(state, options) {
35
+ if (!state.kindChosen)
36
+ return 'Setting up zard/ui in your project…';
37
+ const label = PROJECT_KINDS.find(option => option.value === state.answers.kind)?.label ?? 'Angular';
38
+ const project = candidateProjects(state.answers.kind, options.projectInfo).find(candidate => candidate.root === state.answers.projectRoot);
39
+ if (project)
40
+ return `Setting up zard/ui in ${project.name} (${label})…`;
41
+ return `Setting up zard/ui in your ${label} project…`;
42
+ }
43
+ /**
44
+ * The first question, always.
45
+ *
46
+ * The user decides the type: the list opens in full, in menu order, with no
47
+ * preselection derived from what is in the directory. Everything that comes
48
+ * after — the suggested paths, the steps that run — follows from this answer.
49
+ */
50
+ function kindStep() {
51
+ return {
52
+ id: 'kind',
53
+ kind: 'select',
54
+ prompt: 'What are you setting up?',
55
+ label: 'project type',
56
+ detail: 'Decides where the components live and what init has to configure.',
57
+ choices: PROJECT_KINDS.map(option => ({ label: option.label, hint: option.detail, color: option.color })),
58
+ values: PROJECT_KINDS.map(option => option.value),
59
+ };
60
+ }
61
+ /**
62
+ * Project choice, only when more than one is compatible.
63
+ *
64
+ * With a single candidate the question would have no alternative answer; the
65
+ * name appears in the header and the user goes straight to the next step.
66
+ */
67
+ function projectStep(projects, kind) {
68
+ const library = isLibraryKind(kind);
69
+ return {
70
+ id: 'projectRoot',
71
+ kind: 'select',
72
+ prompt: library ? 'Which library should receive the components?' : 'Which app should receive the components?',
73
+ label: library ? 'library' : 'app',
74
+ detail: library
75
+ ? 'The components become part of this library and ship with it.'
76
+ : 'Its app.config.ts and global CSS are the ones init configures.',
77
+ choices: projects.map(project => ({ label: project.name, hint: project.root || '.' })),
78
+ values: projects.map(project => project.root),
79
+ };
80
+ }
81
+ function baseSteps(projectInfo, kind) {
82
+ const candidates = candidateProjects(kind, projectInfo);
83
+ const chooseProject = candidates.length > 1 ? [projectStep(candidates, kind)] : [];
84
+ if (isLibraryKind(kind)) {
85
+ return [
86
+ kindStep(),
87
+ ...chooseProject,
88
+ themeStep(),
89
+ {
90
+ id: 'globalCss',
91
+ kind: 'text',
92
+ prompt: 'Where should the theme tokens live?',
93
+ label: 'theme CSS',
94
+ detail: 'Created inside the library and shipped with it, for the consuming app to import.',
95
+ },
96
+ {
97
+ id: 'componentsAlias',
98
+ kind: 'text',
99
+ prompt: 'Configure the import alias for components:',
100
+ label: 'components alias',
101
+ detail: 'Where `add` generates component source; also written to tsconfig paths.',
102
+ },
103
+ {
104
+ id: 'utilsAlias',
105
+ kind: 'text',
106
+ prompt: 'Configure the import alias for utils:',
107
+ label: 'utils alias',
108
+ detail: 'Home of the class-merging helpers shared by every component.',
109
+ },
110
+ ];
111
+ }
112
+ return [
113
+ kindStep(),
114
+ ...chooseProject,
115
+ {
116
+ id: 'appConfig',
117
+ kind: 'text',
118
+ prompt: 'Where is your app.config.ts file?',
119
+ label: 'app.config.ts',
120
+ detail: 'zard/ui registers its global providers in this file.',
121
+ },
122
+ themeStep(),
123
+ {
124
+ id: 'globalCss',
125
+ kind: 'text',
126
+ prompt: 'Where is your global CSS file?',
127
+ label: 'global CSS',
128
+ detail: 'zard/ui writes its design tokens and the base layer into this file.',
129
+ },
130
+ {
131
+ id: 'componentsAlias',
132
+ kind: 'text',
133
+ prompt: 'Configure the import alias for components:',
134
+ label: 'components alias',
135
+ detail: 'Where `add` generates component source; also written to tsconfig paths.',
136
+ },
137
+ {
138
+ id: 'utilsAlias',
139
+ kind: 'text',
140
+ prompt: 'Configure the import alias for utils:',
141
+ label: 'utils alias',
142
+ detail: 'Home of the class-merging helpers shared by every component.',
143
+ },
144
+ ];
145
+ }
146
+ export async function runInitWizard(options) {
147
+ // The menu opens on the first type in the list, not on what the directory
148
+ // suggests: the choice is the user's, and a cursor already parked on another
149
+ // item would turn a CLI guess into the answer they confirm without reading.
150
+ const firstKind = options.presetKind ?? PROJECT_KINDS[0].value;
151
+ const defaultsFor = (kind, projectRoot) => withPresets(defaultAnswers(options.projectInfo, kind, projectRoot), options.presetAnswers);
152
+ const answers = defaultsFor(firstKind, options.presetProjectRoot);
153
+ const state = {
154
+ // Re-initializing overwrites existing configuration: the confirmation comes
155
+ // before any question and is not skipped by --yes.
156
+ phase: options.isReInitializing ? 'reinit' : 'prompting',
157
+ steps: baseSteps(options.projectInfo, firstKind),
158
+ stepIndex: 0,
159
+ answers,
160
+ kindChosen: false,
161
+ input: startInput(answers.appConfig),
162
+ choiceIndex: 0,
163
+ confirmValue: true,
164
+ error: null,
165
+ checking: false,
166
+ tasks: [],
167
+ tasksDone: 0,
168
+ taskStartedAt: 0,
169
+ failure: null,
170
+ };
171
+ let config = null;
172
+ const currentStep = () => state.steps[state.stepIndex];
173
+ const answerOf = (step) => {
174
+ if (step.id === 'overwriteCss')
175
+ return 'yes';
176
+ return state.answers[step.id];
177
+ };
178
+ /** Prepares the input fields for the step that has just become active. */
179
+ const enterStep = () => {
180
+ const step = currentStep();
181
+ state.error = null;
182
+ if (step.kind === 'text') {
183
+ state.input = startInput(answerOf(step));
184
+ }
185
+ else if (step.kind === 'select') {
186
+ const values = step.values ?? [];
187
+ state.choiceIndex = Math.max(0, values.indexOf(answerOf(step)));
188
+ }
189
+ else {
190
+ state.confirmValue = step.confirmDefault ?? true;
191
+ }
192
+ };
193
+ // The first step needs its fields prepared too: without this the menu opens
194
+ // with the cursor at the top instead of on the type detection suggested.
195
+ enterStep();
196
+ const startExecution = (ctx) => {
197
+ const resolved = buildConfig(state.answers, options.packageManager);
198
+ config = resolved;
199
+ const steps = options.buildSteps(resolved);
200
+ state.phase = 'running';
201
+ state.tasks = steps.map(step => ({ label: step.label, note: step.note }));
202
+ state.tasksDone = 0;
203
+ state.taskStartedAt = Date.now();
204
+ ctx.refresh();
205
+ void (async () => {
206
+ for (const step of steps) {
207
+ state.taskStartedAt = Date.now();
208
+ try {
209
+ await step.run();
210
+ }
211
+ catch (error) {
212
+ state.phase = 'failed';
213
+ state.failure = `${step.label}: ${error instanceof Error ? error.message : String(error)}`;
214
+ ctx.refresh();
215
+ return;
216
+ }
217
+ state.tasksDone++;
218
+ ctx.refresh();
219
+ }
220
+ state.phase = 'done';
221
+ ctx.refresh();
222
+ })();
223
+ };
224
+ const advance = (ctx) => {
225
+ if (state.stepIndex < state.steps.length - 1) {
226
+ state.stepIndex++;
227
+ enterStep();
228
+ return;
229
+ }
230
+ if (options.skipConfirmation) {
231
+ startExecution(ctx);
232
+ return;
233
+ }
234
+ state.phase = 'confirming';
235
+ state.confirmValue = true;
236
+ };
237
+ const goBack = (ctx) => {
238
+ if (state.phase === 'confirming') {
239
+ state.phase = 'prompting';
240
+ enterStep();
241
+ return;
242
+ }
243
+ if (state.stepIndex === 0) {
244
+ ctx.cancel();
245
+ return;
246
+ }
247
+ state.stepIndex--;
248
+ enterStep();
249
+ };
250
+ /** Insere ou remove o passo de sobrescrita conforme o CSS informado. */
251
+ const syncOverwriteStep = (needed) => {
252
+ const index = state.steps.findIndex(step => step.id === 'overwriteCss');
253
+ if (needed && index === -1) {
254
+ state.steps.splice(state.stepIndex + 1, 0, OVERWRITE_STEP);
255
+ }
256
+ else if (!needed && index !== -1) {
257
+ state.steps.splice(index, 1);
258
+ }
259
+ };
260
+ const commit = (ctx, value) => {
261
+ const step = currentStep();
262
+ if (step.id === 'overwriteCss') {
263
+ if (value === 'no') {
264
+ state.phase = 'aborted';
265
+ return;
266
+ }
267
+ advance(ctx);
268
+ return;
269
+ }
270
+ // Changing the project type changes the following questions and the defaults
271
+ // that depend on it — the CSS path, for one, stops being the app's. The theme
272
+ // is preserved because it does not depend on the type.
273
+ if (step.id === 'kind') {
274
+ const kind = value;
275
+ state.answers = { ...defaultsFor(kind), theme: state.answers.theme };
276
+ state.steps = baseSteps(options.projectInfo, kind);
277
+ state.kindChosen = true;
278
+ advance(ctx);
279
+ return;
280
+ }
281
+ // Changing the target project moves app.config and the global CSS with it:
282
+ // those are that project's paths, and leaving them pointing at the previous
283
+ // one would make init write into the wrong app.
284
+ if (step.id === 'projectRoot') {
285
+ state.answers = {
286
+ ...defaultsFor(state.answers.kind, value),
287
+ theme: state.answers.theme,
288
+ };
289
+ advance(ctx);
290
+ return;
291
+ }
292
+ state.answers[step.id] = value;
293
+ if (step.id !== 'globalCss') {
294
+ advance(ctx);
295
+ return;
296
+ }
297
+ // The CSS path is the only one that has to exist before going on: it is what
298
+ // receives the theme tokens. A library has no pre-existing global CSS — init
299
+ // creates the file, so "does not exist" is the expected case.
300
+ state.checking = true;
301
+ ctx.refresh();
302
+ void inspectCssFile(options.cwd, value).then(result => {
303
+ state.checking = false;
304
+ if (result === 'missing' && !isLibraryKind(state.answers.kind)) {
305
+ state.error = 'File not found. Check the path and try again.';
306
+ }
307
+ else {
308
+ syncOverwriteStep(result === 'has-content');
309
+ advance(ctx);
310
+ }
311
+ ctx.refresh();
312
+ }, error => {
313
+ state.checking = false;
314
+ state.error = error instanceof Error ? error.message : String(error);
315
+ ctx.refresh();
316
+ });
317
+ };
318
+ const onKey = (event, ctx) => {
319
+ if (state.checking || state.phase === 'running')
320
+ return;
321
+ if (state.phase === 'done') {
322
+ if (event.key === 'enter' && config)
323
+ ctx.done(config);
324
+ return;
325
+ }
326
+ if (state.phase === 'failed') {
327
+ if (event.key === 'enter')
328
+ ctx.cancel(state.failure ?? 'Initialization failed.');
329
+ return;
330
+ }
331
+ if (state.phase === 'aborted') {
332
+ if (event.key === 'escape') {
333
+ state.phase = 'prompting';
334
+ state.confirmValue = true;
335
+ return;
336
+ }
337
+ if (event.key === 'enter')
338
+ ctx.cancel('Installation cancelled.');
339
+ return;
340
+ }
341
+ if (state.phase === 'reinit') {
342
+ if (event.key === 'left' || event.key === 'right')
343
+ state.confirmValue = !state.confirmValue;
344
+ else if (event.key === 'y' || event.key === 'Y')
345
+ state.phase = 'prompting';
346
+ else if (event.key === 'n' || event.key === 'N' || event.key === 'escape') {
347
+ ctx.cancel('Re-initialization cancelled.');
348
+ }
349
+ else if (event.key === 'enter') {
350
+ if (state.confirmValue)
351
+ state.phase = 'prompting';
352
+ else
353
+ ctx.cancel('Re-initialization cancelled.');
354
+ }
355
+ return;
356
+ }
357
+ if (state.phase === 'confirming') {
358
+ if (event.key === 'escape')
359
+ goBack(ctx);
360
+ else if (event.key === 'left' || event.key === 'right')
361
+ state.confirmValue = !state.confirmValue;
362
+ else if (event.key === 'y' || event.key === 'Y')
363
+ startExecution(ctx);
364
+ else if (event.key === 'n' || event.key === 'N')
365
+ ctx.cancel();
366
+ else if (event.key === 'enter') {
367
+ if (state.confirmValue)
368
+ startExecution(ctx);
369
+ else
370
+ ctx.cancel();
371
+ }
372
+ return;
373
+ }
374
+ const step = currentStep();
375
+ if (event.key === 'escape') {
376
+ goBack(ctx);
377
+ return;
378
+ }
379
+ if (step.kind === 'text') {
380
+ if (event.key === 'enter') {
381
+ commit(ctx, state.input.value.trim() || answerOf(step));
382
+ return;
383
+ }
384
+ const edited = editInput(state.input, event);
385
+ if (edited) {
386
+ state.input = edited;
387
+ state.error = null;
388
+ }
389
+ return;
390
+ }
391
+ if (step.kind === 'select') {
392
+ const values = step.values ?? [];
393
+ if (event.key === 'up')
394
+ state.choiceIndex = (state.choiceIndex - 1 + values.length) % values.length;
395
+ else if (event.key === 'down')
396
+ state.choiceIndex = (state.choiceIndex + 1) % values.length;
397
+ else if (event.key === 'enter')
398
+ commit(ctx, values[state.choiceIndex] ?? '');
399
+ return;
400
+ }
401
+ if (event.key === 'y' || event.key === 'Y')
402
+ commit(ctx, 'yes');
403
+ else if (event.key === 'n' || event.key === 'N')
404
+ commit(ctx, 'no');
405
+ else if (event.key === 'left' || event.key === 'right')
406
+ state.confirmValue = !state.confirmValue;
407
+ else if (event.key === 'enter')
408
+ commit(ctx, state.confirmValue ? 'yes' : 'no');
409
+ };
410
+ const view = (rows) => {
411
+ const body = [
412
+ ...brandBanner(rows),
413
+ text(''),
414
+ commandHeader(options.isReInitializing ? 're-initialize' : 'initialize', targetDescription(state, options)),
415
+ text(''),
416
+ ];
417
+ if (state.phase === 'prompting' || state.phase === 'confirming' || state.phase === 'aborted') {
418
+ const answered = state.phase === 'confirming' ? state.steps.length : state.stepIndex;
419
+ for (let index = 0; index < answered; index++) {
420
+ const step = state.steps[index];
421
+ body.push(answeredLine(step.label, displayValue(step, state)));
422
+ }
423
+ if (answered > 0)
424
+ body.push(text(''));
425
+ }
426
+ if (state.phase === 'reinit') {
427
+ body.push(question('zard/ui is already initialized. Re-initialize this project?'));
428
+ body.push(confirmField(state.confirmValue));
429
+ body.push(hint('This overwrites your existing components.json, theme tokens and shared utils.'));
430
+ body.push(spacer());
431
+ body.push(controls([
432
+ ['y/n · ←/→', 'toggle'],
433
+ ['enter', 'confirm'],
434
+ ]));
435
+ return screen(page(...body));
436
+ }
437
+ if (state.phase === 'prompting') {
438
+ body.push(...activeStep(state));
439
+ body.push(spacer());
440
+ body.push(controls(hintsFor(currentStep())));
441
+ }
442
+ else if (state.phase === 'confirming') {
443
+ body.push(question('Write configuration to components.json?'));
444
+ body.push(confirmField(state.confirmValue));
445
+ body.push(hint('Nothing has been written yet — this is the last step before zard/ui touches your project.'));
446
+ body.push(spacer());
447
+ body.push(controls([
448
+ ['y/n · ←/→', 'toggle'],
449
+ ['enter', 'confirm'],
450
+ ['esc', 'back'],
451
+ ]));
452
+ }
453
+ else if (state.phase === 'running' || state.phase === 'done' || state.phase === 'failed') {
454
+ body.push(...executionBlock(state));
455
+ body.push(spacer());
456
+ if (state.phase === 'done')
457
+ body.push(controls([['enter', 'finish']]));
458
+ else if (state.phase === 'failed')
459
+ body.push(controls([['enter', 'exit']]));
460
+ }
461
+ else {
462
+ body.push(...abortBlock());
463
+ body.push(spacer());
464
+ body.push(controls([
465
+ ['esc', 'go back'],
466
+ ['enter', 'exit'],
467
+ ]));
468
+ }
469
+ return screen(page(...body));
470
+ };
471
+ const result = await runWizard({
472
+ view: () => view(process.stdout.rows ?? 24),
473
+ onKey,
474
+ });
475
+ return { config: result.value, logs: result.logs };
476
+ }
477
+ function displayValue(step, state) {
478
+ if (step.id === 'overwriteCss')
479
+ return 'yes';
480
+ const value = state.answers[step.id];
481
+ if (step.kind === 'select') {
482
+ const index = (step.values ?? []).indexOf(value);
483
+ return step.choices?.[index]?.label ?? value;
484
+ }
485
+ return value;
486
+ }
487
+ function activeStep(state) {
488
+ const step = state.steps[state.stepIndex];
489
+ const nodes = [question(step.prompt)];
490
+ if (step.kind === 'text') {
491
+ nodes.push(textField(state.input.value, state.input.caret));
492
+ }
493
+ else if (step.kind === 'select') {
494
+ nodes.push(...choiceList(step.choices ?? [], state.choiceIndex));
495
+ }
496
+ else {
497
+ nodes.push(confirmField(state.confirmValue));
498
+ }
499
+ if (state.error)
500
+ nodes.push(text(` ✖ ${state.error}`, { color: 'danger', bold: true }));
501
+ else if (state.checking)
502
+ nodes.push(hint('Checking…'));
503
+ else
504
+ nodes.push(hint(step.detail));
505
+ if (step.danger)
506
+ nodes.push(warning(step.danger));
507
+ return nodes;
508
+ }
509
+ function hintsFor(step) {
510
+ if (step.kind === 'text') {
511
+ return [
512
+ ['enter', 'confirm'],
513
+ ['⌫', 'edit'],
514
+ ['esc', 'back'],
515
+ ];
516
+ }
517
+ if (step.kind === 'select') {
518
+ return [
519
+ ['↑/↓', 'choose'],
520
+ ['enter', 'confirm'],
521
+ ['esc', 'back'],
522
+ ];
523
+ }
524
+ return [
525
+ ['y/n · ←/→', 'toggle'],
526
+ ['enter', 'confirm'],
527
+ ['esc', 'back'],
528
+ ];
529
+ }
530
+ function executionBlock(state) {
531
+ const allDone = state.tasksDone >= state.tasks.length;
532
+ const nodes = [
533
+ taskHeader(state.phase === 'failed' ? 'Initialization failed' : 'Writing configuration…', allDone),
534
+ text(''),
535
+ ...taskList(state.tasks, state.tasksDone, state.phase === 'running' ? Date.now() - state.taskStartedAt : undefined),
536
+ text(''),
537
+ progress(state.tasksDone, state.tasks.length),
538
+ ];
539
+ if (state.phase === 'failed') {
540
+ nodes.push(text(''));
541
+ nodes.push(resultPanel('danger', state.failure ?? 'Something went wrong.'));
542
+ return nodes;
543
+ }
544
+ if (state.phase === 'done') {
545
+ nodes.push(text(''));
546
+ nodes.push(resultPanel('success', 'zard/ui has been initialized successfully!'));
547
+ }
548
+ return nodes;
549
+ }
550
+ function abortBlock() {
551
+ return [
552
+ resultPanel('danger', 'Installation stopped'),
553
+ text(''),
554
+ text(' zard/ui must write its theme configuration into your global CSS.', { color: 'foreground' }),
555
+ text(' Without it, the components will not render correctly.', { color: 'muted' }),
556
+ text(''),
557
+ text(' Nothing was changed. Run init again and accept that step, or move', { color: 'muted', dim: true }),
558
+ text(' your existing styles elsewhere first.', { color: 'muted', dim: true }),
559
+ ];
560
+ }
561
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../src/commands/init/wizard.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,19 @@
1
+ /**
2
+ * Reads the CLI version from the package.json that ships with the binary.
3
+ *
4
+ * The build copies package.json next to the compiled entrypoint, so from
5
+ * `constants/` it is always one level up — both in `dist/` and in the published
6
+ * package, whose root *is* `dist/`. Going up two levels instead used to land on
7
+ * `packages/cli/package.json` inside the monorepo, which hid the bug during
8
+ * development, and on `node_modules/package.json` once installed, which is why
9
+ * `zard-cli --version` printed `0.0.0` for users.
10
+ *
11
+ * The second candidate covers running straight from `src/`, and the name check
12
+ * keeps an unrelated package.json further up the tree from being picked up.
13
+ *
14
+ * Exported for testing: the directory is a parameter so both layouts can be
15
+ * exercised without depending on where the test file itself lives.
16
+ */
17
+ export declare function resolveAppVersion(fromDir: string): string;
1
18
  export declare const APP_VERSION: string;
2
19
  //# sourceMappingURL=app.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.constants.d.ts","sourceRoot":"","sources":["../../src/constants/app.constants.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,WAAW,QAAkB,CAAC"}
1
+ {"version":3,"file":"app.constants.d.ts","sourceRoot":"","sources":["../../src/constants/app.constants.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAwBzD;AAED,eAAO,MAAM,WAAW,QAA+B,CAAC"}