zard-cli 1.0.0-beta.9 → 1.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +60 -188
  2. package/commands/add/component-installer.d.ts +4 -1
  3. package/commands/add/component-installer.d.ts.map +1 -1
  4. package/commands/add/component-installer.js +33 -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 +1 -1
  15. package/commands/add/dependency-resolver.d.ts.map +1 -1
  16. package/commands/add/dependency-resolver.js +5 -6
  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 +127 -85
  20. package/commands/add/index.js.map +1 -1
  21. package/commands/add/wizard.d.ts +31 -0
  22. package/commands/add/wizard.d.ts.map +1 -0
  23. package/commands/add/wizard.js +289 -0
  24. package/commands/add/wizard.js.map +1 -0
  25. package/commands/init/config-prompter.d.ts +59 -56
  26. package/commands/init/config-prompter.d.ts.map +1 -1
  27. package/commands/init/config-prompter.js +76 -74
  28. package/commands/init/config-prompter.js.map +1 -1
  29. package/commands/init/dependencies.d.ts +1 -8
  30. package/commands/init/dependencies.d.ts.map +1 -1
  31. package/commands/init/dependencies.js +36 -16
  32. package/commands/init/dependencies.js.map +1 -1
  33. package/commands/init/index.d.ts.map +1 -1
  34. package/commands/init/index.js +132 -86
  35. package/commands/init/index.js.map +1 -1
  36. package/commands/init/project-kind.d.ts +82 -0
  37. package/commands/init/project-kind.d.ts.map +1 -0
  38. package/commands/init/project-kind.js +166 -0
  39. package/commands/init/project-kind.js.map +1 -0
  40. package/commands/init/steps.d.ts +16 -0
  41. package/commands/init/steps.d.ts.map +1 -0
  42. package/commands/init/steps.js +151 -0
  43. package/commands/init/steps.js.map +1 -0
  44. package/commands/init/tailwind-setup.d.ts +9 -2
  45. package/commands/init/tailwind-setup.d.ts.map +1 -1
  46. package/commands/init/tailwind-setup.js +33 -9
  47. package/commands/init/tailwind-setup.js.map +1 -1
  48. package/commands/init/theme-loader.d.ts.map +1 -1
  49. package/commands/init/theme-loader.js +1 -3
  50. package/commands/init/theme-loader.js.map +1 -1
  51. package/commands/init/tsconfig-updater.d.ts +8 -1
  52. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  53. package/commands/init/tsconfig-updater.js +30 -11
  54. package/commands/init/tsconfig-updater.js.map +1 -1
  55. package/commands/init/update-angular-config.d.ts.map +1 -1
  56. package/commands/init/update-angular-config.js +28 -47
  57. package/commands/init/update-angular-config.js.map +1 -1
  58. package/commands/init/vite-setup.d.ts +10 -0
  59. package/commands/init/vite-setup.d.ts.map +1 -0
  60. package/commands/init/vite-setup.js +60 -0
  61. package/commands/init/vite-setup.js.map +1 -0
  62. package/commands/init/wizard.d.ts +30 -0
  63. package/commands/init/wizard.d.ts.map +1 -0
  64. package/commands/init/wizard.js +560 -0
  65. package/commands/init/wizard.js.map +1 -0
  66. package/core/registry/registry-data.d.ts.map +1 -1
  67. package/core/registry/registry-data.js +359 -61
  68. package/core/registry/registry-data.js.map +1 -1
  69. package/core/themes/theme-definitions.d.ts +5 -5
  70. package/core/themes/theme-definitions.d.ts.map +1 -1
  71. package/core/themes/theme-definitions.js +15 -11
  72. package/core/themes/theme-definitions.js.map +1 -1
  73. package/index.js +40 -4
  74. package/index.js.map +1 -1
  75. package/package.json +58 -61
  76. package/ui/blocks.d.ts +70 -0
  77. package/ui/blocks.d.ts.map +1 -0
  78. package/ui/blocks.js +116 -0
  79. package/ui/blocks.js.map +1 -0
  80. package/ui/brand.d.ts +14 -0
  81. package/ui/brand.d.ts.map +1 -0
  82. package/ui/brand.js +35 -0
  83. package/ui/brand.js.map +1 -0
  84. package/ui/engine/animation/index.d.ts +39 -0
  85. package/ui/engine/animation/index.d.ts.map +1 -0
  86. package/ui/engine/animation/index.js +103 -0
  87. package/ui/engine/animation/index.js.map +1 -0
  88. package/ui/engine/ansi/index.d.ts +52 -0
  89. package/ui/engine/ansi/index.d.ts.map +1 -0
  90. package/ui/engine/ansi/index.js +117 -0
  91. package/ui/engine/ansi/index.js.map +1 -0
  92. package/ui/engine/components/index.d.ts +211 -0
  93. package/ui/engine/components/index.d.ts.map +1 -0
  94. package/ui/engine/components/index.js +109 -0
  95. package/ui/engine/components/index.js.map +1 -0
  96. package/ui/engine/cursor/index.d.ts +17 -0
  97. package/ui/engine/cursor/index.d.ts.map +1 -0
  98. package/ui/engine/cursor/index.js +41 -0
  99. package/ui/engine/cursor/index.js.map +1 -0
  100. package/ui/engine/diff/index.d.ts +27 -0
  101. package/ui/engine/diff/index.d.ts.map +1 -0
  102. package/ui/engine/diff/index.js +57 -0
  103. package/ui/engine/diff/index.js.map +1 -0
  104. package/ui/engine/events/index.d.ts +24 -0
  105. package/ui/engine/events/index.d.ts.map +1 -0
  106. package/ui/engine/events/index.js +60 -0
  107. package/ui/engine/events/index.js.map +1 -0
  108. package/ui/engine/focus/index.d.ts +25 -0
  109. package/ui/engine/focus/index.d.ts.map +1 -0
  110. package/ui/engine/focus/index.js +77 -0
  111. package/ui/engine/focus/index.js.map +1 -0
  112. package/ui/engine/frame/index.d.ts +48 -0
  113. package/ui/engine/frame/index.d.ts.map +1 -0
  114. package/ui/engine/frame/index.js +0 -0
  115. package/ui/engine/frame/index.js.map +1 -0
  116. package/ui/engine/index.d.ts +28 -0
  117. package/ui/engine/index.d.ts.map +1 -0
  118. package/ui/engine/index.js +28 -0
  119. package/ui/engine/index.js.map +1 -0
  120. package/ui/engine/input/index.d.ts +36 -0
  121. package/ui/engine/input/index.d.ts.map +1 -0
  122. package/ui/engine/input/index.js +224 -0
  123. package/ui/engine/input/index.js.map +1 -0
  124. package/ui/engine/layout/index.d.ts +42 -0
  125. package/ui/engine/layout/index.d.ts.map +1 -0
  126. package/ui/engine/layout/index.js +241 -0
  127. package/ui/engine/layout/index.js.map +1 -0
  128. package/ui/engine/renderer/index.d.ts +43 -0
  129. package/ui/engine/renderer/index.d.ts.map +1 -0
  130. package/ui/engine/renderer/index.js +619 -0
  131. package/ui/engine/renderer/index.js.map +1 -0
  132. package/ui/engine/scheduler/index.d.ts +22 -0
  133. package/ui/engine/scheduler/index.d.ts.map +1 -0
  134. package/ui/engine/scheduler/index.js +77 -0
  135. package/ui/engine/scheduler/index.js.map +1 -0
  136. package/ui/engine/screen/index.d.ts +39 -0
  137. package/ui/engine/screen/index.d.ts.map +1 -0
  138. package/ui/engine/screen/index.js +255 -0
  139. package/ui/engine/screen/index.js.map +1 -0
  140. package/ui/engine/terminal/index.d.ts +38 -0
  141. package/ui/engine/terminal/index.d.ts.map +1 -0
  142. package/ui/engine/terminal/index.js +104 -0
  143. package/ui/engine/terminal/index.js.map +1 -0
  144. package/ui/engine/testing/index.d.ts +27 -0
  145. package/ui/engine/testing/index.d.ts.map +1 -0
  146. package/ui/engine/testing/index.js +63 -0
  147. package/ui/engine/testing/index.js.map +1 -0
  148. package/ui/engine/theme/index.d.ts +27 -0
  149. package/ui/engine/theme/index.d.ts.map +1 -0
  150. package/ui/engine/theme/index.js +129 -0
  151. package/ui/engine/theme/index.js.map +1 -0
  152. package/ui/engine/utils/index.d.ts +12 -0
  153. package/ui/engine/utils/index.d.ts.map +1 -0
  154. package/ui/engine/utils/index.js +143 -0
  155. package/ui/engine/utils/index.js.map +1 -0
  156. package/ui/gate.d.ts +19 -0
  157. package/ui/gate.d.ts.map +1 -0
  158. package/ui/gate.js +36 -0
  159. package/ui/gate.js.map +1 -0
  160. package/ui/index.d.ts +18 -0
  161. package/ui/index.d.ts.map +1 -0
  162. package/ui/index.js +18 -0
  163. package/ui/index.js.map +1 -0
  164. package/ui/log-sink.d.ts +24 -0
  165. package/ui/log-sink.d.ts.map +1 -0
  166. package/ui/log-sink.js +35 -0
  167. package/ui/log-sink.js.map +1 -0
  168. package/ui/output.d.ts +14 -0
  169. package/ui/output.d.ts.map +1 -0
  170. package/ui/output.js +28 -0
  171. package/ui/output.js.map +1 -0
  172. package/ui/report.d.ts +30 -0
  173. package/ui/report.d.ts.map +1 -0
  174. package/ui/report.js +45 -0
  175. package/ui/report.js.map +1 -0
  176. package/ui/runner.d.ts +57 -0
  177. package/ui/runner.d.ts.map +1 -0
  178. package/ui/runner.js +119 -0
  179. package/ui/runner.js.map +1 -0
  180. package/ui/style.d.ts +24 -0
  181. package/ui/style.d.ts.map +1 -0
  182. package/ui/style.js +44 -0
  183. package/ui/style.js.map +1 -0
  184. package/ui/testing/fake-tty.d.ts +26 -0
  185. package/ui/testing/fake-tty.d.ts.map +1 -0
  186. package/ui/testing/fake-tty.js +61 -0
  187. package/ui/testing/fake-tty.js.map +1 -0
  188. package/ui/text-input.d.ts +30 -0
  189. package/ui/text-input.d.ts.map +1 -0
  190. package/ui/text-input.js +87 -0
  191. package/ui/text-input.js.map +1 -0
  192. package/ui/theme.d.ts +10 -0
  193. package/ui/theme.d.ts.map +1 -0
  194. package/ui/theme.js +20 -0
  195. package/ui/theme.js.map +1 -0
  196. package/utils/config.d.ts +48 -69
  197. package/utils/config.d.ts.map +1 -1
  198. package/utils/config.js +43 -7
  199. package/utils/config.js.map +1 -1
  200. package/utils/errors.d.ts +16 -0
  201. package/utils/errors.d.ts.map +1 -0
  202. package/utils/errors.js +31 -0
  203. package/utils/errors.js.map +1 -0
  204. package/utils/get-package-info.js +4 -4
  205. package/utils/get-package-info.js.map +1 -1
  206. package/utils/get-project-info.d.ts +30 -0
  207. package/utils/get-project-info.d.ts.map +1 -1
  208. package/utils/get-project-info.js +195 -6
  209. package/utils/get-project-info.js.map +1 -1
  210. package/utils/http-client.d.ts +8 -0
  211. package/utils/http-client.d.ts.map +1 -0
  212. package/utils/http-client.js +68 -0
  213. package/utils/http-client.js.map +1 -0
  214. package/utils/logger.d.ts +16 -1
  215. package/utils/logger.d.ts.map +1 -1
  216. package/utils/logger.js +104 -12
  217. package/utils/logger.js.map +1 -1
  218. package/utils/package-manager.d.ts +44 -1
  219. package/utils/package-manager.d.ts.map +1 -1
  220. package/utils/package-manager.js +210 -14
  221. package/utils/package-manager.js.map +1 -1
  222. package/utils/registry.d.ts +14 -2
  223. package/utils/registry.d.ts.map +1 -1
  224. package/utils/registry.js +52 -24
  225. package/utils/registry.js.map +1 -1
  226. package/utils/source-file.d.ts +40 -0
  227. package/utils/source-file.d.ts.map +1 -0
  228. package/utils/source-file.js +104 -0
  229. package/utils/source-file.js.map +1 -0
  230. package/utils/theme-selector.d.ts +1 -1
  231. package/utils/theme-selector.d.ts.map +1 -1
  232. package/utils/theme-selector.js +6 -6
  233. package/utils/theme-selector.js.map +1 -1
  234. package/utils/fetch-component.d.ts +0 -3
  235. package/utils/fetch-component.d.ts.map +0 -1
  236. package/utils/fetch-component.js +0 -75
  237. package/utils/fetch-component.js.map +0 -1
package/ui/brand.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Identidade visual da CLI — o banner e os cabeçalhos de comando.
3
+ *
4
+ * O banner só aparece quando há altura sobrando: em terminais baixos ele cede
5
+ * lugar ao conteúdo, que é o que o usuário precisa ver para responder.
6
+ */
7
+ import { type Node } from './engine/index.js';
8
+ /** O nome da marca como ela se escreve — a barra faz parte dele. */
9
+ export declare const BRAND = "zard/ui";
10
+ export declare const ZARDUI_BANNER: string[];
11
+ export declare function brandBanner(rows: number): Node[];
12
+ /** Cabeçalho compacto de um comando: `◇ zard/ui · initialize`. */
13
+ export declare function commandHeader(command: string, description?: string): Node;
14
+ //# sourceMappingURL=brand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/ui/brand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA6B,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzE,oEAAoE;AACpE,eAAO,MAAM,KAAK,YAAY,CAAC;AAE/B,eAAO,MAAM,aAAa,UAOzB,CAAC;AAQF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,CAKhD;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAUzE"}
package/ui/brand.js ADDED
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Identidade visual da CLI — o banner e os cabeçalhos de comando.
3
+ *
4
+ * O banner só aparece quando há altura sobrando: em terminais baixos ele cede
5
+ * lugar ao conteúdo, que é o que o usuário precisa ver para responder.
6
+ */
7
+ import { banner, column, row, text } from './engine/index.js';
8
+ /** O nome da marca como ela se escreve — a barra faz parte dele. */
9
+ export const BRAND = 'zard/ui';
10
+ export const ZARDUI_BANNER = [
11
+ '███████╗ █████╗ ██████╗ ██████╗ ██╗██╗ ██╗██╗',
12
+ '╚══███╔╝██╔══██╗██╔══██╗██╔══██╗ ██╔╝██║ ██║██║',
13
+ ' ███╔╝ ███████║██████╔╝██║ ██║ ██╔╝ ██║ ██║██║',
14
+ ' ███╔╝ ██╔══██║██╔══██╗██║ ██║ ██╔╝ ██║ ██║██║',
15
+ '███████╗██║ ██║██║ ██║██████╔╝██╔╝ ╚██████╔╝██║',
16
+ '╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═════╝ ╚═╝',
17
+ ];
18
+ const BANNER_COLOR = '#fafafa';
19
+ const TAGLINE = 'The Angular component toolkit · beautiful components in seconds';
20
+ /** Altura mínima para o banner caber sem espremer as perguntas. */
21
+ const BANNER_MIN_ROWS = 24;
22
+ export function brandBanner(rows) {
23
+ if (rows < BANNER_MIN_ROWS) {
24
+ return [row({ gap: 1 }, text('◇', { color: 'primary' }), text(BRAND, { color: 'foreground', bold: true }))];
25
+ }
26
+ return [banner({ lines: ZARDUI_BANNER, colors: [BANNER_COLOR] }), text(TAGLINE, { color: 'muted', dim: true })];
27
+ }
28
+ /** Cabeçalho compacto de um comando: `◇ zard/ui · initialize`. */
29
+ export function commandHeader(command, description) {
30
+ const head = row({ gap: 1 }, text('◇', { color: 'success' }), text(BRAND, { color: 'foreground', bold: true }), text(`· ${command}`, { color: 'muted' }));
31
+ if (!description)
32
+ return head;
33
+ return column({}, head, text(description, { color: 'muted', dim: true }));
34
+ }
35
+ //# sourceMappingURL=brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/ui/brand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAa,MAAM,mBAAmB,CAAC;AAEzE,oEAAoE;AACpE,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAE/B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,qDAAqD;IACrD,qDAAqD;IACrD,qDAAqD;IACrD,qDAAqD;IACrD,qDAAqD;IACrD,qDAAqD;CACtD,CAAC;AAEF,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,OAAO,GAAG,iEAAiE,CAAC;AAElF,mEAAmE;AACnE,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,GAAG,eAAe,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAClH,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,WAAoB;IACjE,MAAM,IAAI,GAAG,GAAG,CACd,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAC/B,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAChD,IAAI,CAAC,KAAK,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CACzC,CAAC;IAEF,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * animation — tweens independentes de FPS (usam dt real), easing e um clock
3
+ * keyed que sobrevive ao re-render. Base de spinner/progress/fade/typing/pulse.
4
+ * (Implementação real.)
5
+ */
6
+ export type Easing = (t: number) => number;
7
+ export declare const Easing: {
8
+ readonly linear: Easing;
9
+ readonly easeIn: Easing;
10
+ readonly easeOut: Easing;
11
+ readonly easeInOut: Easing;
12
+ readonly spring: Easing;
13
+ };
14
+ export interface TweenOptions {
15
+ readonly from: number;
16
+ readonly to: number;
17
+ readonly duration: number;
18
+ readonly easing?: Easing;
19
+ readonly loop?: boolean | 'pingpong';
20
+ }
21
+ export interface Tween {
22
+ readonly value: number;
23
+ readonly done: boolean;
24
+ update(dtMs: number): void;
25
+ reset(): void;
26
+ }
27
+ export declare function tween(options: TweenOptions): Tween;
28
+ export interface AnimationClock {
29
+ register(key: string, tween: Tween): void;
30
+ has(key: string): boolean;
31
+ phase(key: string): number;
32
+ remove(key: string): void;
33
+ tick(dtMs: number): void;
34
+ readonly active: boolean;
35
+ }
36
+ export declare function createAnimationClock(): AnimationClock;
37
+ /** Frames de spinner nomeados (dots, line, arc, bounce, pulse). */
38
+ export declare const spinnerFrames: Readonly<Record<string, readonly string[]>>;
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/animation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAI3C,eAAO,MAAM,MAAM,EAAE;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAmBzB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CACtC;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,KAAK,CAyClD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC1C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAuBrD;AAED,mEAAmE;AACnE,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAMrE,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * animation — tweens independentes de FPS (usam dt real), easing e um clock
3
+ * keyed que sobrevive ao re-render. Base de spinner/progress/fade/typing/pulse.
4
+ * (Implementação real.)
5
+ */
6
+ const clamp01 = (t) => (t < 0 ? 0 : t > 1 ? 1 : t);
7
+ export const Easing = {
8
+ linear: t => clamp01(t),
9
+ easeIn: t => {
10
+ t = clamp01(t);
11
+ return t * t;
12
+ },
13
+ easeOut: t => {
14
+ t = clamp01(t);
15
+ return 1 - (1 - t) * (1 - t);
16
+ },
17
+ easeInOut: t => {
18
+ t = clamp01(t);
19
+ return t < 0.5 ? 2 * t * t : 1 - (-2 * t + 2) ** 2 / 2;
20
+ },
21
+ spring: t => {
22
+ t = clamp01(t);
23
+ return 1 - Math.cos(t * Math.PI * 1.5) * (1 - t);
24
+ },
25
+ };
26
+ export function tween(options) {
27
+ const easing = options.easing ?? Easing.linear;
28
+ const dur = Math.max(1, options.duration);
29
+ let elapsed = 0;
30
+ let dir = 1;
31
+ const compute = () => {
32
+ let t = elapsed / dur;
33
+ let done = false;
34
+ if (options.loop === 'pingpong') {
35
+ t = clamp01(t);
36
+ }
37
+ else if (options.loop) {
38
+ t = t % 1;
39
+ }
40
+ else if (t >= 1) {
41
+ t = 1;
42
+ done = true;
43
+ }
44
+ const eased = easing(t);
45
+ const value = options.from + (options.to - options.from) * (dir < 0 ? 1 - eased : eased);
46
+ return { value, done };
47
+ };
48
+ return {
49
+ get value() {
50
+ return compute().value;
51
+ },
52
+ get done() {
53
+ return compute().done;
54
+ },
55
+ update(dtMs) {
56
+ elapsed += dtMs;
57
+ if (options.loop === 'pingpong' && elapsed >= dur) {
58
+ elapsed = elapsed % dur;
59
+ dir *= -1;
60
+ }
61
+ },
62
+ reset() {
63
+ elapsed = 0;
64
+ dir = 1;
65
+ },
66
+ };
67
+ }
68
+ export function createAnimationClock() {
69
+ const tweens = new Map();
70
+ return {
71
+ register(key, t) {
72
+ tweens.set(key, t);
73
+ },
74
+ has(key) {
75
+ return tweens.has(key);
76
+ },
77
+ phase(key) {
78
+ return tweens.get(key)?.value ?? 0;
79
+ },
80
+ remove(key) {
81
+ tweens.delete(key);
82
+ },
83
+ tick(dtMs) {
84
+ for (const t of tweens.values())
85
+ t.update(dtMs);
86
+ },
87
+ get active() {
88
+ for (const t of tweens.values())
89
+ if (!t.done)
90
+ return true;
91
+ return false;
92
+ },
93
+ };
94
+ }
95
+ /** Frames de spinner nomeados (dots, line, arc, bounce, pulse). */
96
+ export const spinnerFrames = {
97
+ dots: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],
98
+ line: ['-', '\\', '|', '/'],
99
+ arc: ['◜', '◠', '◝', '◞', '◡', '◟'],
100
+ bounce: ['⠁', '⠂', '⠄', '⠂'],
101
+ pulse: ['•', '●', '◉', '●'],
102
+ };
103
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/animation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * ansi — geração de sequências de escape (CSI/SGR) e o vocabulário de cor.
3
+ * Nível mais baixo que "conhece" o protocolo do terminal. Sem I/O.
4
+ * (Fatia vertical / PoC: implementação real.)
5
+ */
6
+ /** Nível de cor que o terminal suporta (ver TerminalCapabilities). */
7
+ export type ColorLevel = 'truecolor' | 'ansi256' | 'ansi16' | 'none';
8
+ /** Cor concreta já resolvida para um nível — pronta para virar bytes SGR. */
9
+ export type AnsiColor = {
10
+ readonly kind: 'rgb';
11
+ readonly r: number;
12
+ readonly g: number;
13
+ readonly b: number;
14
+ } | {
15
+ readonly kind: 'ansi256';
16
+ readonly index: number;
17
+ } | {
18
+ readonly kind: 'ansi16';
19
+ readonly index: number;
20
+ } | {
21
+ readonly kind: 'default';
22
+ };
23
+ /**
24
+ * Atributos de texto como bitmask (comparável por valor, barato de diffar).
25
+ * Objeto const (não `const enum`) para ser compatível com `isolatedModules`.
26
+ */
27
+ export declare const Attr: {
28
+ readonly None: 0;
29
+ readonly Bold: number;
30
+ readonly Dim: number;
31
+ readonly Italic: number;
32
+ readonly Underline: number;
33
+ readonly Inverse: number;
34
+ readonly Strike: number;
35
+ readonly Blink: number;
36
+ };
37
+ /** Valor de bitmask de atributos (combinável com OR bit-a-bit). */
38
+ export type Attr = number;
39
+ export declare const ESC = "\u001B";
40
+ /** Monta uma sequência CSI (`ESC [ … `). Ex.: csi("2J"), csi(`${y};${x}H`). */
41
+ export declare function csi(body: string): string;
42
+ /**
43
+ * Builder incremental de SGR que emite APENAS o delta em relação ao estado
44
+ * corrente — chave para minimizar bytes no encoder (ARCHITECTURE §17).
45
+ */
46
+ export interface SgrBuilder {
47
+ transition(fg: AnsiColor, bg: AnsiColor, attrs: Attr): string;
48
+ reset(): string;
49
+ clear(): void;
50
+ }
51
+ export declare function createSgrBuilder(): SgrBuilder;
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/ansi/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,sEAAsE;AACtE,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErE,6EAA6E;AAC7E,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,IAAI;;;;;;;;;CASP,CAAC;AACX,mEAAmE;AACnE,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAE1B,eAAO,MAAM,GAAG,WAAS,CAAC;AAE1B,+EAA+E;AAC/E,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExC;AAsCD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9D,KAAK,IAAI,MAAM,CAAC;IAChB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CA8C7C"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * ansi — geração de sequências de escape (CSI/SGR) e o vocabulário de cor.
3
+ * Nível mais baixo que "conhece" o protocolo do terminal. Sem I/O.
4
+ * (Fatia vertical / PoC: implementação real.)
5
+ */
6
+ /**
7
+ * Atributos de texto como bitmask (comparável por valor, barato de diffar).
8
+ * Objeto const (não `const enum`) para ser compatível com `isolatedModules`.
9
+ */
10
+ export const Attr = {
11
+ None: 0,
12
+ Bold: 1 << 0,
13
+ Dim: 1 << 1,
14
+ Italic: 1 << 2,
15
+ Underline: 1 << 3,
16
+ Inverse: 1 << 4,
17
+ Strike: 1 << 5,
18
+ Blink: 1 << 6,
19
+ };
20
+ export const ESC = '\x1b';
21
+ /** Monta uma sequência CSI (`ESC [ … `). Ex.: csi("2J"), csi(`${y};${x}H`). */
22
+ export function csi(body) {
23
+ return ESC + '[' + body;
24
+ }
25
+ const DEFAULT_COLOR = { kind: 'default' };
26
+ function sameColor(a, b) {
27
+ if (a.kind !== b.kind)
28
+ return false;
29
+ if (a.kind === 'rgb' && b.kind === 'rgb')
30
+ return a.r === b.r && a.g === b.g && a.b === b.b;
31
+ if (a.kind === 'ansi256' && b.kind === 'ansi256')
32
+ return a.index === b.index;
33
+ if (a.kind === 'ansi16' && b.kind === 'ansi16')
34
+ return a.index === b.index;
35
+ return a.kind === b.kind; // default
36
+ }
37
+ function colorCodes(c, fg) {
38
+ const base = fg ? 38 : 48;
39
+ switch (c.kind) {
40
+ case 'rgb':
41
+ return [base, 2, c.r, c.g, c.b];
42
+ case 'ansi256':
43
+ return [base, 5, c.index];
44
+ case 'ansi16':
45
+ return c.index < 8 ? [(fg ? 30 : 40) + c.index] : [(fg ? 90 : 100) + (c.index - 8)];
46
+ case 'default':
47
+ return [fg ? 39 : 49];
48
+ }
49
+ }
50
+ function attrCodes(mask) {
51
+ const out = [];
52
+ if (mask & Attr.Bold)
53
+ out.push(1);
54
+ if (mask & Attr.Dim)
55
+ out.push(2);
56
+ if (mask & Attr.Italic)
57
+ out.push(3);
58
+ if (mask & Attr.Underline)
59
+ out.push(4);
60
+ if (mask & Attr.Blink)
61
+ out.push(5);
62
+ if (mask & Attr.Inverse)
63
+ out.push(7);
64
+ if (mask & Attr.Strike)
65
+ out.push(9);
66
+ return out;
67
+ }
68
+ export function createSgrBuilder() {
69
+ let curFg = DEFAULT_COLOR;
70
+ let curBg = DEFAULT_COLOR;
71
+ let curAttrs = 0;
72
+ return {
73
+ transition(fg, bg, attrs) {
74
+ const removingAttr = (curAttrs & ~attrs) !== 0;
75
+ const fgToDefault = fg.kind === 'default' && curFg.kind !== 'default';
76
+ const bgToDefault = bg.kind === 'default' && curBg.kind !== 'default';
77
+ if (removingAttr || fgToDefault || bgToDefault) {
78
+ // Não dá para "desligar" seletivamente de forma barata → reset e reconstrói.
79
+ const codes = [0, ...attrCodes(attrs)];
80
+ if (fg.kind !== 'default')
81
+ codes.push(...colorCodes(fg, true));
82
+ if (bg.kind !== 'default')
83
+ codes.push(...colorCodes(bg, false));
84
+ curFg = fg;
85
+ curBg = bg;
86
+ curAttrs = attrs;
87
+ return csi(codes.join(';') + 'm');
88
+ }
89
+ const codes = [];
90
+ const addedAttrs = attrs & ~curAttrs;
91
+ if (addedAttrs)
92
+ codes.push(...attrCodes(addedAttrs));
93
+ if (!sameColor(fg, curFg))
94
+ codes.push(...colorCodes(fg, true));
95
+ if (!sameColor(bg, curBg))
96
+ codes.push(...colorCodes(bg, false));
97
+ curFg = fg;
98
+ curBg = bg;
99
+ curAttrs = attrs;
100
+ if (codes.length === 0)
101
+ return '';
102
+ return csi(codes.join(';') + 'm');
103
+ },
104
+ reset() {
105
+ curFg = DEFAULT_COLOR;
106
+ curBg = DEFAULT_COLOR;
107
+ curAttrs = 0;
108
+ return csi('0m');
109
+ },
110
+ clear() {
111
+ curFg = DEFAULT_COLOR;
112
+ curBg = DEFAULT_COLOR;
113
+ curAttrs = 0;
114
+ },
115
+ };
116
+ }
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/ansi/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * components — fábricas puras que retornam `Node` imutável (immediate-mode
3
+ * declarativo, ADR-0002). Sem JSX, sem classes, sem estado oculto.
4
+ * (Fatia vertical / PoC: fábricas reais. A pintura de cada tipo vive no renderer.)
5
+ */
6
+ import type { Attr } from '../ansi/index.js';
7
+ import type { ColorRef } from '../frame/index.js';
8
+ import type { LayoutProps } from '../layout/index.js';
9
+ export interface Node {
10
+ readonly type: string;
11
+ readonly props: Readonly<Record<string, unknown>>;
12
+ readonly children: readonly Node[];
13
+ readonly key?: string;
14
+ }
15
+ export interface TextStyle {
16
+ readonly color?: ColorRef;
17
+ readonly background?: ColorRef;
18
+ readonly attrs?: Attr;
19
+ readonly bold?: boolean;
20
+ readonly dim?: boolean;
21
+ readonly italic?: boolean;
22
+ readonly underline?: boolean;
23
+ readonly inverse?: boolean;
24
+ readonly wrap?: boolean;
25
+ readonly align?: 'left' | 'center' | 'right';
26
+ }
27
+ export type BorderStyle = 'none' | 'single' | 'double' | 'round' | 'bold' | 'ascii';
28
+ export interface BoxProps extends LayoutProps {
29
+ readonly border?: BorderStyle;
30
+ readonly borderColor?: ColorRef;
31
+ readonly title?: string;
32
+ readonly background?: ColorRef;
33
+ }
34
+ export interface PanelProps extends BoxProps {
35
+ readonly footer?: string;
36
+ }
37
+ export interface CardProps extends BoxProps {
38
+ readonly subtitle?: string;
39
+ }
40
+ export interface SeparatorProps {
41
+ readonly orientation?: 'horizontal' | 'vertical';
42
+ readonly char?: string;
43
+ readonly color?: ColorRef;
44
+ readonly label?: string;
45
+ }
46
+ export interface HeaderProps {
47
+ readonly title: string;
48
+ readonly subtitle?: string;
49
+ readonly badge?: string;
50
+ readonly align?: 'left' | 'center' | 'right';
51
+ }
52
+ export interface FooterProps {
53
+ readonly items: readonly string[];
54
+ readonly color?: ColorRef;
55
+ }
56
+ export interface EmptyStateProps {
57
+ readonly icon?: string;
58
+ readonly title: string;
59
+ readonly description?: string;
60
+ readonly hint?: string;
61
+ }
62
+ export interface BannerProps {
63
+ readonly lines: readonly string[];
64
+ readonly colors?: readonly string[];
65
+ readonly align?: 'left' | 'center';
66
+ }
67
+ export interface GradientTextProps {
68
+ readonly content: string;
69
+ readonly colors?: readonly string[];
70
+ readonly align?: 'left' | 'center' | 'right';
71
+ readonly bold?: boolean;
72
+ }
73
+ export interface SpinnerProps {
74
+ readonly variant?: 'dots' | 'line' | 'arc' | 'bounce';
75
+ readonly label?: string;
76
+ readonly color?: ColorRef;
77
+ readonly frame?: number;
78
+ readonly glyph?: string;
79
+ readonly key?: string;
80
+ }
81
+ export interface ProgressProps {
82
+ readonly value: number;
83
+ readonly width?: number;
84
+ readonly label?: string;
85
+ readonly showPercent?: boolean;
86
+ readonly color?: ColorRef;
87
+ }
88
+ export type StatusKind = 'ok' | 'warn' | 'error' | 'info' | 'pending';
89
+ export interface BadgeProps {
90
+ readonly text: string;
91
+ readonly kind?: StatusKind;
92
+ readonly color?: ColorRef;
93
+ }
94
+ export interface StatusProps {
95
+ readonly kind: StatusKind;
96
+ readonly label: string;
97
+ }
98
+ export interface LogEntry {
99
+ readonly level?: 'debug' | 'info' | 'warn' | 'error';
100
+ readonly text: string;
101
+ }
102
+ export interface LogsProps {
103
+ readonly source: readonly LogEntry[] | readonly string[];
104
+ readonly max?: number;
105
+ readonly follow?: boolean;
106
+ }
107
+ export interface TreeNodeData {
108
+ readonly label: string;
109
+ readonly children?: readonly TreeNodeData[];
110
+ readonly expanded?: boolean;
111
+ }
112
+ export interface TreeProps {
113
+ readonly root: TreeNodeData;
114
+ readonly indent?: number;
115
+ }
116
+ export interface TableColumn {
117
+ readonly header: string;
118
+ readonly width?: number;
119
+ readonly align?: 'left' | 'center' | 'right';
120
+ }
121
+ export interface TableProps {
122
+ readonly columns: readonly TableColumn[];
123
+ readonly rows: readonly (readonly string[])[];
124
+ readonly border?: BorderStyle;
125
+ }
126
+ export interface ListProps {
127
+ readonly items: readonly string[];
128
+ readonly bullet?: string;
129
+ readonly ordered?: boolean;
130
+ }
131
+ export interface InputProps {
132
+ readonly key: string;
133
+ readonly value: string;
134
+ readonly placeholder?: string;
135
+ readonly label?: string;
136
+ readonly onChange?: (value: string) => void;
137
+ readonly onSubmit?: (value: string) => void;
138
+ }
139
+ export interface PasswordProps extends InputProps {
140
+ readonly mask?: string;
141
+ }
142
+ export interface SelectOption {
143
+ readonly label: string;
144
+ readonly value: string;
145
+ readonly disabled?: boolean;
146
+ }
147
+ export interface SelectProps {
148
+ readonly key: string;
149
+ readonly options: readonly SelectOption[];
150
+ readonly value?: string;
151
+ readonly label?: string;
152
+ readonly onChange?: (value: string) => void;
153
+ }
154
+ export interface ConfirmProps {
155
+ readonly key: string;
156
+ readonly message: string;
157
+ readonly value?: boolean;
158
+ readonly onChange?: (value: boolean) => void;
159
+ }
160
+ export interface CheckboxProps {
161
+ readonly key: string;
162
+ readonly label: string;
163
+ readonly checked: boolean;
164
+ readonly onChange?: (checked: boolean) => void;
165
+ }
166
+ export interface TextareaProps {
167
+ readonly key: string;
168
+ readonly value: string;
169
+ readonly rows?: number;
170
+ readonly placeholder?: string;
171
+ readonly onChange?: (value: string) => void;
172
+ }
173
+ export declare function text(content: string, style?: TextStyle): Node;
174
+ export declare function box(props?: BoxProps, ...children: Node[]): Node;
175
+ export declare function panel(props?: PanelProps, ...children: Node[]): Node;
176
+ export declare function card(props?: CardProps, ...children: Node[]): Node;
177
+ export declare function separator(props?: SeparatorProps): Node;
178
+ export declare function header(props: HeaderProps): Node;
179
+ export declare function footer(props: FooterProps): Node;
180
+ export declare function emptyState(props: EmptyStateProps): Node;
181
+ export declare function banner(props: BannerProps): Node;
182
+ export declare function gradientText(content: string, colors?: readonly string[], opts?: {
183
+ align?: 'left' | 'center' | 'right';
184
+ bold?: boolean;
185
+ }): Node;
186
+ export declare function stack(props?: LayoutProps, ...children: Node[]): Node;
187
+ export declare function row(props?: LayoutProps, ...children: Node[]): Node;
188
+ export declare function column(props?: LayoutProps, ...children: Node[]): Node;
189
+ export declare function center(props?: LayoutProps, ...children: Node[]): Node;
190
+ export declare function spacer(props?: {
191
+ readonly flexGrow?: number;
192
+ }): Node;
193
+ export declare function grid(props?: LayoutProps & {
194
+ readonly columns: number;
195
+ }, ...children: Node[]): Node;
196
+ export declare function spinner(props?: SpinnerProps): Node;
197
+ export declare function progressBar(props: ProgressProps): Node;
198
+ export declare function badge(props: BadgeProps): Node;
199
+ export declare function status(props: StatusProps): Node;
200
+ export declare function logs(props: LogsProps): Node;
201
+ export declare function tree(props: TreeProps): Node;
202
+ export declare function table(props: TableProps): Node;
203
+ export declare function list(props: ListProps): Node;
204
+ export declare function input(props: InputProps): Node;
205
+ export declare function password(props: PasswordProps): Node;
206
+ export declare function select(props: SelectProps): Node;
207
+ export declare function confirm(props: ConfirmProps): Node;
208
+ export declare function checkbox(props: CheckboxProps): Node;
209
+ export declare function textarea(props: TextareaProps): Node;
210
+ export declare function screen(...children: Node[]): Node;
211
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/components/index.ts"],"names":[],"mappings":"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"}