zard-cli 1.0.0-beta.103 → 1.0.0-beta.104

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 (234) hide show
  1. package/commands/add/component-installer.d.ts +2 -0
  2. package/commands/add/component-installer.d.ts.map +1 -1
  3. package/commands/add/component-installer.js +9 -4
  4. package/commands/add/component-installer.js.map +1 -1
  5. package/commands/add/component-selector.d.ts +6 -0
  6. package/commands/add/component-selector.d.ts.map +1 -1
  7. package/commands/add/component-selector.js +9 -27
  8. package/commands/add/component-selector.js.map +1 -1
  9. package/commands/add/dark-mode-setup.d.ts.map +1 -1
  10. package/commands/add/dark-mode-setup.js +2 -11
  11. package/commands/add/dark-mode-setup.js.map +1 -1
  12. package/commands/add/dependency-resolver.d.ts +2 -1
  13. package/commands/add/dependency-resolver.d.ts.map +1 -1
  14. package/commands/add/dependency-resolver.js +19 -4
  15. package/commands/add/dependency-resolver.js.map +1 -1
  16. package/commands/add/index.d.ts.map +1 -1
  17. package/commands/add/index.js +116 -86
  18. package/commands/add/index.js.map +1 -1
  19. package/commands/add/wizard.d.ts +31 -0
  20. package/commands/add/wizard.d.ts.map +1 -0
  21. package/commands/add/wizard.js +289 -0
  22. package/commands/add/wizard.js.map +1 -0
  23. package/commands/init/config-prompter.d.ts +49 -3
  24. package/commands/init/config-prompter.d.ts.map +1 -1
  25. package/commands/init/config-prompter.js +84 -74
  26. package/commands/init/config-prompter.js.map +1 -1
  27. package/commands/init/dependencies.d.ts +1 -8
  28. package/commands/init/dependencies.d.ts.map +1 -1
  29. package/commands/init/dependencies.js +47 -18
  30. package/commands/init/dependencies.js.map +1 -1
  31. package/commands/init/index.d.ts.map +1 -1
  32. package/commands/init/index.js +147 -81
  33. package/commands/init/index.js.map +1 -1
  34. package/commands/init/project-kind.d.ts +82 -0
  35. package/commands/init/project-kind.d.ts.map +1 -0
  36. package/commands/init/project-kind.js +166 -0
  37. package/commands/init/project-kind.js.map +1 -0
  38. package/commands/init/steps.d.ts +16 -0
  39. package/commands/init/steps.d.ts.map +1 -0
  40. package/commands/init/steps.js +153 -0
  41. package/commands/init/steps.js.map +1 -0
  42. package/commands/init/tailwind-setup.d.ts +9 -2
  43. package/commands/init/tailwind-setup.d.ts.map +1 -1
  44. package/commands/init/tailwind-setup.js +33 -12
  45. package/commands/init/tailwind-setup.js.map +1 -1
  46. package/commands/init/tsconfig-updater.d.ts +8 -1
  47. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  48. package/commands/init/tsconfig-updater.js +30 -11
  49. package/commands/init/tsconfig-updater.js.map +1 -1
  50. package/commands/init/update-angular-config.d.ts.map +1 -1
  51. package/commands/init/update-angular-config.js +28 -50
  52. package/commands/init/update-angular-config.js.map +1 -1
  53. package/commands/init/vite-setup.d.ts +10 -0
  54. package/commands/init/vite-setup.d.ts.map +1 -0
  55. package/commands/init/vite-setup.js +60 -0
  56. package/commands/init/vite-setup.js.map +1 -0
  57. package/commands/init/wizard.d.ts +30 -0
  58. package/commands/init/wizard.d.ts.map +1 -0
  59. package/commands/init/wizard.js +560 -0
  60. package/commands/init/wizard.js.map +1 -0
  61. package/core/icons/families.d.ts +38 -0
  62. package/core/icons/families.d.ts.map +1 -0
  63. package/core/icons/families.js +26 -0
  64. package/core/icons/families.js.map +1 -0
  65. package/core/icons/icon-map.d.ts +22 -0
  66. package/core/icons/icon-map.d.ts.map +1 -0
  67. package/core/icons/icon-map.js +125 -0
  68. package/core/icons/icon-map.js.map +1 -0
  69. package/core/icons/index.d.ts +107 -0
  70. package/core/icons/index.d.ts.map +1 -0
  71. package/core/icons/index.js +183 -0
  72. package/core/icons/index.js.map +1 -0
  73. package/core/registry/registry-data.d.ts.map +1 -1
  74. package/core/registry/registry-data.js +8 -0
  75. package/core/registry/registry-data.js.map +1 -1
  76. package/index.js +5 -3
  77. package/index.js.map +1 -1
  78. package/package.json +1 -4
  79. package/ui/blocks.d.ts +70 -0
  80. package/ui/blocks.d.ts.map +1 -0
  81. package/ui/blocks.js +116 -0
  82. package/ui/blocks.js.map +1 -0
  83. package/ui/brand.d.ts +14 -0
  84. package/ui/brand.d.ts.map +1 -0
  85. package/ui/brand.js +35 -0
  86. package/ui/brand.js.map +1 -0
  87. package/ui/engine/animation/index.d.ts +39 -0
  88. package/ui/engine/animation/index.d.ts.map +1 -0
  89. package/ui/engine/animation/index.js +103 -0
  90. package/ui/engine/animation/index.js.map +1 -0
  91. package/ui/engine/ansi/index.d.ts +52 -0
  92. package/ui/engine/ansi/index.d.ts.map +1 -0
  93. package/ui/engine/ansi/index.js +117 -0
  94. package/ui/engine/ansi/index.js.map +1 -0
  95. package/ui/engine/components/index.d.ts +211 -0
  96. package/ui/engine/components/index.d.ts.map +1 -0
  97. package/ui/engine/components/index.js +109 -0
  98. package/ui/engine/components/index.js.map +1 -0
  99. package/ui/engine/cursor/index.d.ts +17 -0
  100. package/ui/engine/cursor/index.d.ts.map +1 -0
  101. package/ui/engine/cursor/index.js +41 -0
  102. package/ui/engine/cursor/index.js.map +1 -0
  103. package/ui/engine/diff/index.d.ts +27 -0
  104. package/ui/engine/diff/index.d.ts.map +1 -0
  105. package/ui/engine/diff/index.js +57 -0
  106. package/ui/engine/diff/index.js.map +1 -0
  107. package/ui/engine/events/index.d.ts +24 -0
  108. package/ui/engine/events/index.d.ts.map +1 -0
  109. package/ui/engine/events/index.js +60 -0
  110. package/ui/engine/events/index.js.map +1 -0
  111. package/ui/engine/focus/index.d.ts +25 -0
  112. package/ui/engine/focus/index.d.ts.map +1 -0
  113. package/ui/engine/focus/index.js +77 -0
  114. package/ui/engine/focus/index.js.map +1 -0
  115. package/ui/engine/frame/index.d.ts +48 -0
  116. package/ui/engine/frame/index.d.ts.map +1 -0
  117. package/ui/engine/frame/index.js +0 -0
  118. package/ui/engine/frame/index.js.map +1 -0
  119. package/ui/engine/index.d.ts +28 -0
  120. package/ui/engine/index.d.ts.map +1 -0
  121. package/ui/engine/index.js +28 -0
  122. package/ui/engine/index.js.map +1 -0
  123. package/ui/engine/input/index.d.ts +36 -0
  124. package/ui/engine/input/index.d.ts.map +1 -0
  125. package/ui/engine/input/index.js +224 -0
  126. package/ui/engine/input/index.js.map +1 -0
  127. package/ui/engine/layout/index.d.ts +42 -0
  128. package/ui/engine/layout/index.d.ts.map +1 -0
  129. package/ui/engine/layout/index.js +241 -0
  130. package/ui/engine/layout/index.js.map +1 -0
  131. package/ui/engine/renderer/index.d.ts +43 -0
  132. package/ui/engine/renderer/index.d.ts.map +1 -0
  133. package/ui/engine/renderer/index.js +619 -0
  134. package/ui/engine/renderer/index.js.map +1 -0
  135. package/ui/engine/scheduler/index.d.ts +22 -0
  136. package/ui/engine/scheduler/index.d.ts.map +1 -0
  137. package/ui/engine/scheduler/index.js +77 -0
  138. package/ui/engine/scheduler/index.js.map +1 -0
  139. package/ui/engine/screen/index.d.ts +39 -0
  140. package/ui/engine/screen/index.d.ts.map +1 -0
  141. package/ui/engine/screen/index.js +255 -0
  142. package/ui/engine/screen/index.js.map +1 -0
  143. package/ui/engine/terminal/index.d.ts +84 -0
  144. package/ui/engine/terminal/index.d.ts.map +1 -0
  145. package/ui/engine/terminal/index.js +235 -0
  146. package/ui/engine/terminal/index.js.map +1 -0
  147. package/ui/engine/testing/index.d.ts +27 -0
  148. package/ui/engine/testing/index.d.ts.map +1 -0
  149. package/ui/engine/testing/index.js +63 -0
  150. package/ui/engine/testing/index.js.map +1 -0
  151. package/ui/engine/theme/index.d.ts +27 -0
  152. package/ui/engine/theme/index.d.ts.map +1 -0
  153. package/ui/engine/theme/index.js +129 -0
  154. package/ui/engine/theme/index.js.map +1 -0
  155. package/ui/engine/utils/index.d.ts +12 -0
  156. package/ui/engine/utils/index.d.ts.map +1 -0
  157. package/ui/engine/utils/index.js +143 -0
  158. package/ui/engine/utils/index.js.map +1 -0
  159. package/ui/gate.d.ts +19 -0
  160. package/ui/gate.d.ts.map +1 -0
  161. package/ui/gate.js +36 -0
  162. package/ui/gate.js.map +1 -0
  163. package/ui/index.d.ts +18 -0
  164. package/ui/index.d.ts.map +1 -0
  165. package/ui/index.js +18 -0
  166. package/ui/index.js.map +1 -0
  167. package/ui/log-sink.d.ts +24 -0
  168. package/ui/log-sink.d.ts.map +1 -0
  169. package/ui/log-sink.js +35 -0
  170. package/ui/log-sink.js.map +1 -0
  171. package/ui/output.d.ts +14 -0
  172. package/ui/output.d.ts.map +1 -0
  173. package/ui/output.js +28 -0
  174. package/ui/output.js.map +1 -0
  175. package/ui/report.d.ts +30 -0
  176. package/ui/report.d.ts.map +1 -0
  177. package/ui/report.js +45 -0
  178. package/ui/report.js.map +1 -0
  179. package/ui/runner.d.ts +66 -0
  180. package/ui/runner.d.ts.map +1 -0
  181. package/ui/runner.js +135 -0
  182. package/ui/runner.js.map +1 -0
  183. package/ui/style.d.ts +24 -0
  184. package/ui/style.d.ts.map +1 -0
  185. package/ui/style.js +44 -0
  186. package/ui/style.js.map +1 -0
  187. package/ui/testing/fake-tty.d.ts +26 -0
  188. package/ui/testing/fake-tty.d.ts.map +1 -0
  189. package/ui/testing/fake-tty.js +61 -0
  190. package/ui/testing/fake-tty.js.map +1 -0
  191. package/ui/text-input.d.ts +30 -0
  192. package/ui/text-input.d.ts.map +1 -0
  193. package/ui/text-input.js +87 -0
  194. package/ui/text-input.js.map +1 -0
  195. package/ui/theme.d.ts +10 -0
  196. package/ui/theme.d.ts.map +1 -0
  197. package/ui/theme.js +20 -0
  198. package/ui/theme.js.map +1 -0
  199. package/utils/config.d.ts +26 -0
  200. package/utils/config.d.ts.map +1 -1
  201. package/utils/config.js +41 -1
  202. package/utils/config.js.map +1 -1
  203. package/utils/errors.d.ts +11 -0
  204. package/utils/errors.d.ts.map +1 -1
  205. package/utils/errors.js +14 -0
  206. package/utils/errors.js.map +1 -1
  207. package/utils/get-project-info.d.ts +29 -0
  208. package/utils/get-project-info.d.ts.map +1 -1
  209. package/utils/get-project-info.js +176 -1
  210. package/utils/get-project-info.js.map +1 -1
  211. package/utils/icon-catalog.d.ts +33 -0
  212. package/utils/icon-catalog.d.ts.map +1 -0
  213. package/utils/icon-catalog.js +62 -0
  214. package/utils/icon-catalog.js.map +1 -0
  215. package/utils/logger.d.ts +13 -1
  216. package/utils/logger.d.ts.map +1 -1
  217. package/utils/logger.js +95 -15
  218. package/utils/logger.js.map +1 -1
  219. package/utils/package-manager.d.ts +42 -1
  220. package/utils/package-manager.d.ts.map +1 -1
  221. package/utils/package-manager.js +204 -11
  222. package/utils/package-manager.js.map +1 -1
  223. package/utils/registry.d.ts +42 -2
  224. package/utils/registry.d.ts.map +1 -1
  225. package/utils/registry.js +51 -9
  226. package/utils/registry.js.map +1 -1
  227. package/utils/schema-version.d.ts +20 -0
  228. package/utils/schema-version.d.ts.map +1 -0
  229. package/utils/schema-version.js +27 -0
  230. package/utils/schema-version.js.map +1 -0
  231. package/utils/source-file.d.ts +40 -0
  232. package/utils/source-file.d.ts.map +1 -0
  233. package/utils/source-file.js +104 -0
  234. package/utils/source-file.js.map +1 -0
@@ -2,5 +2,7 @@ import { Config } from '../../utils/config';
2
2
  export declare function validateTargetPath(targetDir: string, projectRoot: string): void;
3
3
  export declare function installComponent(componentName: string, targetDir: string, config: Config & {
4
4
  resolvedPaths: any;
5
+ }, options?: {
6
+ customPath?: boolean;
5
7
  }): Promise<void>;
6
8
  //# sourceMappingURL=component-installer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-installer.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3C,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAK/E;AAED,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,GACtC,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
1
+ {"version":3,"file":"component-installer.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3C,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAS/E;AAED,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EACvC,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -4,13 +4,18 @@ import { fetchComponent } from '../../utils/registry.js';
4
4
  import { promises as fs } from 'node:fs';
5
5
  import * as path from 'node:path';
6
6
  export function validateTargetPath(targetDir, projectRoot) {
7
- const resolved = path.resolve(targetDir);
8
- if (!resolved.startsWith(projectRoot)) {
7
+ // Comparar prefixo de string deixava passar o diretório vizinho: `/proj-evil`
8
+ // começa com `/proj` sem estar dentro dele. O caminho relativo responde a
9
+ // pergunta certa — está contido? — e ainda normaliza os `..` do meio.
10
+ const relative = path.relative(path.resolve(projectRoot), path.resolve(targetDir));
11
+ if (relative.startsWith('..') || path.isAbsolute(relative)) {
9
12
  throw new CliError('Target path must be within the project directory', 'INVALID_PATH');
10
13
  }
11
14
  }
12
- export async function installComponent(componentName, targetDir, config) {
13
- const component = await fetchComponent(componentName, config);
15
+ export async function installComponent(componentName, targetDir, config, options = {}) {
16
+ const component = await fetchComponent(componentName, config, undefined, {
17
+ siblingComponents: options.customPath,
18
+ });
14
19
  await fs.mkdir(targetDir, { recursive: true });
15
20
  const writtenFiles = [];
16
21
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"component-installer.js","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAgB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,WAAmB;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,QAAQ,CAAC,kDAAkD,EAAE,cAAc,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAqB,EACrB,SAAiB,EACjB,MAAuC;IAEvC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE9D,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7D,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qCAAqC;QACrC,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,2BAA2B;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,eAAe,YAAY,CAAC,MAAM,2BAA2B,aAAa,GAAG,CAAC,CAAC;QAE5F,MAAM,IAAI,YAAY,CACpB,gCAAgC,aAAa,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EACnG,aAAa,CACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAA8B,EAAE,SAAiB;IACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"component-installer.js","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAgB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,WAAmB;IACvE,8EAA8E;IAC9E,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnF,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,QAAQ,CAAC,kDAAkD,EAAE,cAAc,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAqB,EACrB,SAAiB,EACjB,MAAuC,EACvC,UAAoC,EAAE;IAEtC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE;QACvE,iBAAiB,EAAE,OAAO,CAAC,UAAU;KACtC,CAAC,CAAC;IAEH,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7D,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qCAAqC;QACrC,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,2BAA2B;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,eAAe,YAAY,CAAC,MAAM,2BAA2B,aAAa,GAAG,CAAC,CAAC;QAE5F,MAAM,IAAI,YAAY,CACpB,gCAAgC,aAAa,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EACnG,aAAa,CACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAA8B,EAAE,SAAiB;IACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,2 +1,8 @@
1
+ /**
2
+ * Resolve quais componentes o comando deve instalar a partir dos argumentos.
3
+ *
4
+ * Devolve uma lista vazia quando não há nada informado: nesse caso quem escolhe
5
+ * é o wizard (ou, sem terminal interativo, o comando falha pedindo os nomes).
6
+ */
1
7
  export declare function selectComponents(components: string[], allFlag: boolean): Promise<string[]>;
2
8
  //# sourceMappingURL=component-selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-selector.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-selector.ts"],"names":[],"mappings":"AAKA,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUhG"}
1
+ {"version":3,"file":"component-selector.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-selector.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGhG"}
@@ -1,31 +1,13 @@
1
- import { logger } from '../../utils/logger.js';
2
- import prompts from 'prompts';
3
- import { getAllComponentNames } from './dependency-resolver.js';
1
+ import { getAllComponentNames } from '../../commands/add/dependency-resolver.js';
2
+ /**
3
+ * Resolve quais componentes o comando deve instalar a partir dos argumentos.
4
+ *
5
+ * Devolve uma lista vazia quando não há nada informado: nesse caso quem escolhe
6
+ * é o wizard (ou, sem terminal interativo, o comando falha pedindo os nomes).
7
+ */
4
8
  export async function selectComponents(components, allFlag) {
5
- if (allFlag) {
9
+ if (allFlag)
6
10
  return getAllComponentNames();
7
- }
8
- if (!components?.length) {
9
- return await promptForComponents();
10
- }
11
- return components;
12
- }
13
- async function promptForComponents() {
14
- const allNames = await getAllComponentNames();
15
- const { components: selected } = await prompts({
16
- type: 'multiselect',
17
- name: 'components',
18
- message: 'Which components would you like to add?',
19
- hint: 'Space to select. A to toggle all. Enter to submit.',
20
- choices: allNames.map(name => ({
21
- title: name,
22
- value: name,
23
- })),
24
- });
25
- if (!selected?.length) {
26
- logger.warn('No components selected. Exiting.');
27
- process.exit(0);
28
- }
29
- return selected;
11
+ return components ?? [];
30
12
  }
31
13
  //# sourceMappingURL=component-selector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-selector.js","sourceRoot":"","sources":["../../../src/commands/add/component-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAoB,EAAE,OAAgB;IAC3E,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QACxB,OAAO,MAAM,mBAAmB,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAE9C,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC;QAC7C,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,yCAAyC;QAClD,IAAI,EAAE,oDAAoD;QAC1D,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7B,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"component-selector.js","sourceRoot":"","sources":["../../../src/commands/add/component-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAoB,EAAE,OAAgB;IAC3E,IAAI,OAAO;QAAE,OAAO,oBAAoB,EAAE,CAAC;IAC3C,OAAO,UAAU,IAAI,EAAE,CAAC;AAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dark-mode-setup.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dark-mode-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAYnD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,MAAM,EACX,cAAc,EAAE;IAAE,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;CAAE,GACjG,OAAO,CAAC,IAAI,CAAC,CAoDf"}
1
+ {"version":3,"file":"dark-mode-setup.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dark-mode-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAanD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,MAAM,EACX,cAAc,EAAE;IAAE,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;CAAE,GACjG,OAAO,CAAC,IAAI,CAAC,CAwCf"}
@@ -1,4 +1,5 @@
1
1
  import { logger } from '../../utils/logger.js';
2
+ import { withImport } from '../../utils/source-file.js';
2
3
  import { existsSync } from 'fs';
3
4
  import * as fsPromises from 'fs/promises';
4
5
  import * as path from 'path';
@@ -23,17 +24,7 @@ export async function updateProvideZardWithDarkMode(cwd, resolvedConfig) {
23
24
  if (!content.includes('provideAppInitializer')) {
24
25
  content = content.replace(/import \{ (.*) \} from '@angular\/core';/, "import { $1, provideAppInitializer } from '@angular/core';");
25
26
  }
26
- const importRegex = /^import .* from '.*';\n?/gm;
27
- let lastImportMatch = null;
28
- let match;
29
- while ((match = importRegex.exec(content)) !== null) {
30
- lastImportMatch = match;
31
- }
32
- if (lastImportMatch) {
33
- const insertionIndex = lastImportMatch.index + lastImportMatch[0].length;
34
- const darkModeImport = getDarkModeImport(resolvedConfig.aliases?.services);
35
- content = content.slice(0, insertionIndex) + darkModeImport + '\n' + content.slice(insertionIndex);
36
- }
27
+ content = withImport(content, getDarkModeImport(resolvedConfig.aliases?.services));
37
28
  content = content.replace(/return makeEnvironmentProviders\(\[(.*?)\]\);/s, (match, providers) => {
38
29
  const trimmedProviders = providers.trim();
39
30
  if (trimmedProviders) {
@@ -1 +1 @@
1
- {"version":3,"file":"dark-mode-setup.js","sourceRoot":"","sources":["../../../src/commands/add/dark-mode-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,SAAS,iBAAiB,CAAC,aAAsB;IAC/C,OAAO,iCAAiC,aAAa,IAAI,mBAAmB,cAAc,CAAC;AAC7F,CAAC;AAED,MAAM,qBAAqB,GAAG,0DAA0D,CAAC;AAEzF,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAW,EACX,cAAkG;IAElG,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAEhG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,0CAA0C,EAC1C,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/C,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,0CAA0C,EAC1C,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,4BAA4B,CAAC;IACjD,IAAI,eAAe,GAA4B,IAAI,CAAC;IACpD,IAAI,KAA8B,CAAC;IAEnC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,eAAe,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,cAAc,GAAG,iBAAiB,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3E,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrG,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gDAAgD,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QAC/F,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,oCAAoC,qBAAqB,KAAK,gBAAgB,KAAK,CAAC;QAC7F,CAAC;QACD,OAAO,oCAAoC,qBAAqB,KAAK,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"dark-mode-setup.js","sourceRoot":"","sources":["../../../src/commands/add/dark-mode-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,SAAS,iBAAiB,CAAC,aAAsB;IAC/C,OAAO,iCAAiC,aAAa,IAAI,mBAAmB,cAAc,CAAC;AAC7F,CAAC;AAED,MAAM,qBAAqB,GAAG,0DAA0D,CAAC;AAEzF,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAW,EACX,cAAkG;IAElG,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAEhG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,0CAA0C,EAC1C,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/C,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,0CAA0C,EAC1C,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEnF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gDAAgD,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QAC/F,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,oCAAoC,qBAAqB,KAAK,gBAAgB,KAAK,CAAC;QAC7F,CAAC;QACD,OAAO,oCAAoC,qBAAqB,KAAK,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Config } from '../../utils/config.js';
2
- import { type RegistryIndex } from '../../utils/registry.js';
2
+ import { type RegistryIcons, type RegistryIndex } from '../../utils/registry.js';
3
3
  export declare function getTargetDir(component: ComponentMeta, resolvedConfig: Config & {
4
4
  resolvedPaths: any;
5
5
  }, cwd: string, customPath?: string): string;
@@ -9,6 +9,7 @@ export interface ComponentMeta {
9
9
  dependencies?: string[];
10
10
  devDependencies?: string[];
11
11
  registryDependencies?: string[];
12
+ icons?: RegistryIcons;
12
13
  }
13
14
  export interface ResolvedDependencies {
14
15
  componentsToInstall: ComponentMeta[];
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAA+C,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAa1G,wBAAgB,YAAY,CAC1B,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EAC/C,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAoBR;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,aAAa,EAAE,CAAC;IACrC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,wBAAsB,gBAAgB,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAKnF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAYvF;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG9D;AAED,wBAAsB,mBAAmB,CACvC,kBAAkB,EAAE,MAAM,EAAE,EAC5B,cAAc,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EAC/C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,OAAO,CAAC,oBAAoB,CAAC,CA4C/B"}
1
+ {"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AAajC,wBAAgB,YAAY,CAC1B,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EAC/C,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAoBR;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,aAAa,EAAE,CAAC;IACrC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,wBAAsB,gBAAgB,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAKnF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAavF;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG9D;AAED,wBAAsB,mBAAmB,CACvC,kBAAkB,EAAE,MAAM,EAAE,EAC5B,cAAc,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EAC/C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,OAAO,CAAC,oBAAoB,CAAC,CA4C/B"}
@@ -1,7 +1,9 @@
1
1
  import { existsSync, readdirSync } from 'fs';
2
2
  import * as path from 'path';
3
+ import { iconPackagesFor } from '../../core/icons/index.js';
4
+ import { iconCatalog } from '../../utils/icon-catalog.js';
3
5
  import { logger } from '../../utils/logger.js';
4
- import { fetchRegistryIndex, invalidateRegistryCache } from '../../utils/registry.js';
6
+ import { fetchRegistryIndex, invalidateRegistryCache, } from '../../utils/registry.js';
5
7
  function isComponentInstalled(dir) {
6
8
  if (!existsSync(dir))
7
9
  return false;
@@ -46,6 +48,7 @@ export async function getComponentMeta(name) {
46
48
  dependencies: item.dependencies,
47
49
  devDependencies: item.devDependencies,
48
50
  registryDependencies: item.registryDependencies,
51
+ icons: item.icons,
49
52
  };
50
53
  }
51
54
  export async function getAllComponentNames() {
@@ -72,7 +75,7 @@ export async function resolveDependencies(selectedComponents, resolvedConfig, cw
72
75
  continue;
73
76
  }
74
77
  componentsToInstall.push(component);
75
- addComponentDependencies(component, dependenciesToInstall);
78
+ addComponentDependencies(component, dependenciesToInstall, resolvedConfig.icons);
76
79
  if (component.registryDependencies && !options.all) {
77
80
  await resolveRegistryDependencies(component, componentsToInstall, dependenciesToInstall, resolvedConfig, cwd, options);
78
81
  }
@@ -82,8 +85,20 @@ export async function resolveDependencies(selectedComponents, resolvedConfig, cw
82
85
  dependenciesToInstall,
83
86
  };
84
87
  }
85
- function addComponentDependencies(component, dependenciesToInstall) {
88
+ /**
89
+ * As dependências npm que o componente exige.
90
+ *
91
+ * Além das declaradas, quem desenha ícones precisa do ng-icons e do pacote da
92
+ * família configurada. Isso não vem do registry: o registry publica QUAIS
93
+ * ícones o componente usa, e de que família eles saem é decisão do projeto que
94
+ * está instalando. Instalar dentro do `add` também cobre quem escolheu outra
95
+ * família depois do init.
96
+ */
97
+ function addComponentDependencies(component, dependenciesToInstall, iconFamily) {
86
98
  component.dependencies?.forEach(dep => dependenciesToInstall.add(dep));
99
+ if (component.icons?.symbols?.length) {
100
+ iconPackagesFor(iconFamily, iconCatalog()).forEach(pkg => dependenciesToInstall.add(pkg));
101
+ }
87
102
  }
88
103
  async function resolveRegistryDependencies(component, componentsToInstall, dependenciesToInstall, resolvedConfig, cwd, options) {
89
104
  if (!component.registryDependencies)
@@ -97,7 +112,7 @@ async function resolveRegistryDependencies(component, componentsToInstall, depen
97
112
  const depTargetDir = getTargetDir(depComponent, resolvedConfig, cwd, options.path);
98
113
  if (!isComponentInstalled(depTargetDir) || options.overwrite) {
99
114
  componentsToInstall.push(depComponent);
100
- addComponentDependencies(depComponent, dependenciesToInstall);
115
+ addComponentDependencies(depComponent, dependenciesToInstall, resolvedConfig.icons);
101
116
  if (depComponent.registryDependencies) {
102
117
  await resolveRegistryDependencies(depComponent, componentsToInstall, dependenciesToInstall, resolvedConfig, cwd, options);
103
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,GAAG,SA+DZ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,GAAG,SAmFZ,CAAC"}
@@ -1,18 +1,21 @@
1
1
  import { installComponent, validateTargetPath } from '../../commands/add/component-installer.js';
2
2
  import { selectComponents } from '../../commands/add/component-selector.js';
3
3
  import { updateProvideZardWithDarkMode } from '../../commands/add/dark-mode-setup.js';
4
- import { resolveDependencies, getTargetDir } from '../../commands/add/dependency-resolver.js';
4
+ import { getAllComponentNames, getTargetDir, resolveDependencies, } from '../../commands/add/dependency-resolver.js';
5
+ import { runAddWizard } from '../../commands/add/wizard.js';
6
+ import { indexHtmlFor } from '../../commands/init/project-kind.js';
5
7
  import { injectThemeScript } from '../../commands/init/theme-loader.js';
8
+ import { isInteractive, printReport, WizardCancelledError } from '../../ui/index.js';
6
9
  import { getConfig, resolveConfigPaths } from '../../utils/config.js';
7
10
  import { CliError } from '../../utils/errors.js';
8
11
  import { getProjectInfo } from '../../utils/get-project-info.js';
12
+ import { assertIconFamily, loadIconCatalog } from '../../utils/icon-catalog.js';
9
13
  import { logger, spinner } from '../../utils/logger.js';
10
- import { installPackages } from '../../utils/package-manager.js';
11
- import chalk from 'chalk';
14
+ import { filterInstalledPackages, installPackagesWithRetry } from '../../utils/package-manager.js';
15
+ import { getRegistryUrl } from '../../utils/registry.js';
12
16
  import { Command } from 'commander';
13
17
  import { existsSync } from 'node:fs';
14
18
  import * as path from 'node:path';
15
- import prompts from 'prompts';
16
19
  export const add = new Command()
17
20
  .name('add')
18
21
  .description('add a component to your project')
@@ -31,33 +34,112 @@ export const add = new Command()
31
34
  const config = await loadConfiguration(cwd);
32
35
  const projectInfo = await validateProject(cwd);
33
36
  const resolvedConfig = await resolveConfigPaths(cwd, config);
34
- const selectedComponents = await selectComponents(components, options.all);
35
- const addSpinner = spinner('Resolving components...').start();
36
- const { componentsToInstall, dependenciesToInstall } = await resolveDependencies(selectedComponents, resolvedConfig, cwd, options);
37
- addSpinner.stop();
38
- if (componentsToInstall.length === 0) {
39
- logger.info('All components already installed.');
37
+ // O catálogo decide se `icons` é um valor válido e como traduzir os símbolos
38
+ // na instalação, então vem antes de resolver componente nenhum.
39
+ await loadIconCatalog(getRegistryUrl(config));
40
+ assertIconFamily(config.icons);
41
+ const preselected = await selectComponents(components, options.all);
42
+ warnOnPrereleaseAngular(projectInfo.angularVersionRaw);
43
+ const actions = {
44
+ loadNames: () => getAllComponentNames(),
45
+ resolve: async (names) => {
46
+ const { componentsToInstall, dependenciesToInstall } = await resolveDependencies(names, resolvedConfig, cwd, options);
47
+ return {
48
+ components: componentsToInstall,
49
+ dependencies: resolveCompatibleVersions(dependenciesToInstall, projectInfo.angularVersion),
50
+ };
51
+ },
52
+ installDependencies: (packages) => installDependencies(packages, cwd, config.packageManager),
53
+ installComponent: (component) => installComponent(component.name, getTargetDir(component, resolvedConfig, cwd, options.path), resolvedConfig, {
54
+ customPath: Boolean(options.path),
55
+ }),
56
+ setupDarkMode: async (indexHtml) => {
57
+ await injectThemeScript(cwd, indexHtml);
58
+ await updateProvideZardWithDarkMode(cwd, resolvedConfig);
59
+ },
60
+ defaultIndexHtml: indexHtmlFor(config.projectType, config.baseUrl),
61
+ };
62
+ if (!isInteractive()) {
63
+ // Ver a nota em `init`: sem isto, sair em modo texto é indistinguível de
64
+ // a interface não existir.
65
+ logger.debug(`No terminal to draw on (stdin TTY: ${Boolean(process.stdin.isTTY)}, ` +
66
+ `stdout TTY: ${Boolean(process.stdout.isTTY)}, controlling terminal: unreachable) — running headless.`);
67
+ await runHeadless(preselected, options, actions);
40
68
  return;
41
69
  }
42
- const resolvedDeps = resolveCompatibleVersions(dependenciesToInstall, projectInfo.angularVersion);
43
- if (projectInfo.angularVersionRaw && /-(rc|next|canary)/.test(projectInfo.angularVersionRaw)) {
44
- logger.warn(`You are using a pre-release version of Angular (${projectInfo.angularVersionRaw}). Some dependencies may have compatibility issues.`);
70
+ try {
71
+ const { installed, logs } = await runAddWizard({
72
+ preselected,
73
+ skipConfirmation: options.yes,
74
+ ...actions,
75
+ });
76
+ reportSuccess(installed, logs);
45
77
  }
46
- if (!options.yes) {
47
- const shouldProceed = await confirmInstallation(componentsToInstall.length, resolvedDeps.length);
48
- if (!shouldProceed) {
78
+ catch (error) {
79
+ if (error instanceof WizardCancelledError) {
80
+ printReport({ status: 'cancelled', headline: error.message, notes: ['No files were written.'] });
49
81
  process.exit(0);
50
82
  }
83
+ throw error;
51
84
  }
52
- await installDependencies(resolvedDeps, cwd, config.packageManager);
53
- await installComponents(componentsToInstall, cwd, resolvedConfig, options);
54
- const isDarkModeBeingInstalled = componentsToInstall.some(c => c.name === 'dark-mode');
55
- if (isDarkModeBeingInstalled) {
56
- await setupDarkMode(cwd, resolvedConfig);
57
- }
58
- logger.break();
59
- logger.success('Done!');
60
85
  });
86
+ /**
87
+ * Caminho sem UI — CI, pipes e terminais não interativos.
88
+ *
89
+ * Sem alguém para escolher na lista, os componentes precisam vir por argumento
90
+ * ou via `--all`; a confirmação é dispensada porque não há como respondê-la.
91
+ */
92
+ async function runHeadless(preselected, options, actions) {
93
+ if (!preselected.length) {
94
+ throw new CliError('No components specified. Pass the component names or --all when running without an interactive terminal.', 'NO_COMPONENTS');
95
+ }
96
+ const resolveSpinner = spinner('Resolving components...').start();
97
+ const { components, dependencies } = await actions.resolve(preselected);
98
+ resolveSpinner.stop();
99
+ if (components.length === 0) {
100
+ logger.info('All components already installed.');
101
+ return;
102
+ }
103
+ if (dependencies.length) {
104
+ const depsSpinner = spinner('Installing dependencies...').start();
105
+ await actions.installDependencies(dependencies);
106
+ depsSpinner.succeed('Dependencies installed');
107
+ }
108
+ const installed = [];
109
+ const failed = [];
110
+ for (const component of components) {
111
+ const componentSpinner = spinner(`Installing ${component.name}...`).start();
112
+ try {
113
+ await actions.installComponent(component);
114
+ installed.push(component.name);
115
+ componentSpinner.succeed(component.name);
116
+ }
117
+ catch (error) {
118
+ failed.push(component.name);
119
+ componentSpinner.fail(component.name);
120
+ logger.debug(`Failed to install ${component.name}: ${error instanceof Error ? error.message : error}`);
121
+ }
122
+ }
123
+ if (components.some(component => component.name === 'dark-mode')) {
124
+ logger.warn('Dark mode needs an index.html path; run `zard-cli add dark-mode` interactively to configure it.');
125
+ }
126
+ if (failed.length) {
127
+ throw new CliError(`Failed to install: ${failed.join(', ')}`, 'INSTALL_FAILED');
128
+ }
129
+ reportSuccess(installed, []);
130
+ }
131
+ function reportSuccess(installed, logs) {
132
+ if (!installed.length) {
133
+ printReport({ status: 'success', headline: 'All components are already installed.', logs });
134
+ return;
135
+ }
136
+ printReport({
137
+ status: 'success',
138
+ headline: `Installed ${installed.length} component${installed.length > 1 ? 's' : ''}.`,
139
+ items: [...installed],
140
+ logs,
141
+ });
142
+ }
61
143
  function validateWorkingDirectory(cwd) {
62
144
  if (!existsSync(cwd)) {
63
145
  throw new CliError(`The path ${cwd} does not exist. Please try again.`, 'INVALID_CWD');
@@ -77,14 +159,10 @@ async function validateProject(cwd) {
77
159
  }
78
160
  return projectInfo;
79
161
  }
80
- async function confirmInstallation(componentsCount, depsCount) {
81
- const { proceed } = await prompts({
82
- type: 'confirm',
83
- name: 'proceed',
84
- message: `Ready to install ${componentsCount} component(s) and ${depsCount} dependencies. Proceed?`,
85
- initial: true,
86
- });
87
- return proceed;
162
+ function warnOnPrereleaseAngular(angularVersionRaw) {
163
+ if (angularVersionRaw && /-(rc|next|canary)/.test(angularVersionRaw)) {
164
+ logger.warn(`You are using a pre-release version of Angular (${angularVersionRaw}). Some dependencies may have compatibility issues.`);
165
+ }
88
166
  }
89
167
  const ANGULAR_VERSION_PACKAGES = ['embla-carousel-angular'];
90
168
  function resolveCompatibleVersions(dependencies, angularVersion) {
@@ -99,61 +177,13 @@ function resolveCompatibleVersions(dependencies, angularVersion) {
99
177
  async function installDependencies(packages, cwd, packageManager) {
100
178
  if (packages.length === 0)
101
179
  return;
102
- const depsSpinner = spinner('Installing dependencies...').start();
103
- try {
104
- await installPackages(packages, cwd, packageManager, false);
105
- }
106
- catch {
107
- depsSpinner.text = 'Retrying with --legacy-peer-deps...';
108
- await installPackages(packages, cwd, packageManager, false, true);
109
- }
110
- depsSpinner.succeed('Dependencies installed');
111
- }
112
- async function installComponents(componentsToInstall, cwd, resolvedConfig, options) {
113
- const installSpinner = spinner('Installing components...').start();
114
- const installed = [];
115
- const failed = [];
116
- for (const component of componentsToInstall) {
117
- try {
118
- installSpinner.text = `Installing ${component.name}...`;
119
- const targetDir = getTargetDir(component, resolvedConfig, cwd, options.path);
120
- await installComponent(component.name, targetDir, resolvedConfig);
121
- installed.push(component.name);
122
- }
123
- catch (error) {
124
- failed.push(component.name);
125
- logger.debug(`Failed to install ${component.name}: ${error instanceof Error ? error.message : error}`);
126
- }
127
- }
128
- if (failed.length > 0) {
129
- installSpinner.fail(`Failed to install: ${failed.join(', ')}`);
130
- }
131
- else {
132
- installSpinner.succeed(`Installed ${installed.length} component${installed.length > 1 ? 's' : ''}`);
133
- }
134
- }
135
- async function setupDarkMode(cwd, resolvedConfig) {
136
- logger.break();
137
- logger.info('Dark mode requires additional configuration.');
138
- const { indexFile } = await prompts({
139
- type: 'text',
140
- name: 'indexFile',
141
- message: `Where is your ${chalk.cyan('index.html')} file?`,
142
- initial: 'src/index.html',
143
- });
144
- if (!indexFile) {
145
- logger.warn('Skipping dark mode script injection.');
180
+ // Um projeto já inicializado costuma ter todas elas: sem o filtro, cada `add`
181
+ // pagaria uma revalidação completa da árvore para não instalar nada.
182
+ const missing = await filterInstalledPackages(packages, cwd);
183
+ if (missing.length === 0) {
184
+ logger.debug(`Dependencies already installed: ${packages.join(', ')}`);
146
185
  return;
147
186
  }
148
- const darkModeSpinner = spinner('Configuring dark mode...').start();
149
- try {
150
- await injectThemeScript(cwd, indexFile);
151
- await updateProvideZardWithDarkMode(cwd, resolvedConfig);
152
- darkModeSpinner.succeed('Dark mode configured');
153
- }
154
- catch (error) {
155
- darkModeSpinner.fail('Failed to configure dark mode');
156
- logger.debug(`Dark mode error: ${error instanceof Error ? error.message : error}`);
157
- }
187
+ await installPackagesWithRetry(missing, cwd, packageManager, false);
158
188
  }
159
189
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type ComponentMeta } from '../../commands/add/dependency-resolver.js';
2
+ import { type LogRecord } from '../../ui/index.js';
3
+ export interface AddWizardOptions {
4
+ /** Componentes já informados na linha de comando — pulam a seleção. */
5
+ readonly preselected: readonly string[];
6
+ /** Carrega os nomes disponíveis; só é chamado quando há seleção a fazer. */
7
+ loadNames(): Promise<string[]>;
8
+ resolve(names: string[]): Promise<{
9
+ components: ComponentMeta[];
10
+ dependencies: string[];
11
+ }>;
12
+ /** Pula a confirmação (`--yes`). */
13
+ readonly skipConfirmation: boolean;
14
+ installDependencies(packages: string[]): Promise<void>;
15
+ installComponent(component: ComponentMeta): Promise<void>;
16
+ /** Só é chamado quando dark-mode entra na instalação. */
17
+ setupDarkMode(indexHtml: string): Promise<void>;
18
+ /**
19
+ * Onde o index.html deve estar, segundo o tipo de projeto configurado.
20
+ *
21
+ * Um `src/index.html` fixo só existe no app Angular único: num workspace ele
22
+ * está sob `apps/<app>/`, e no Analog é a página de entrada do Vite, na raiz.
23
+ */
24
+ readonly defaultIndexHtml: string;
25
+ }
26
+ export interface AddWizardResult {
27
+ readonly installed: readonly string[];
28
+ readonly logs: readonly LogRecord[];
29
+ }
30
+ export declare function runAddWizard(options: AddWizardOptions): Promise<AddWizardResult>;
31
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../../src/commands/add/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAuBL,KAAK,SAAS,EAKf,MAAM,kBAAkB,CAAC;AA6B1B,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,4EAA4E;IAC5E,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3F,oCAAoC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,yDAAyD;IACzD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;CACrC;AAID,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwKtF"}