zard-cli 1.0.0-beta.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 (110) hide show
  1. package/README.md +188 -0
  2. package/dist/commands/add/component-installer.d.ts +5 -0
  3. package/dist/commands/add/component-installer.d.ts.map +1 -0
  4. package/dist/commands/add/component-installer.js +17 -0
  5. package/dist/commands/add/component-installer.js.map +1 -0
  6. package/dist/commands/add/component-selector.d.ts +2 -0
  7. package/dist/commands/add/component-selector.d.ts.map +1 -0
  8. package/dist/commands/add/component-selector.js +31 -0
  9. package/dist/commands/add/component-selector.js.map +1 -0
  10. package/dist/commands/add/dark-mode-setup.d.ts +7 -0
  11. package/dist/commands/add/dark-mode-setup.d.ts.map +1 -0
  12. package/dist/commands/add/dark-mode-setup.js +43 -0
  13. package/dist/commands/add/dark-mode-setup.js.map +1 -0
  14. package/dist/commands/add/dependency-resolver.d.ts +27 -0
  15. package/dist/commands/add/dependency-resolver.d.ts.map +1 -0
  16. package/dist/commands/add/dependency-resolver.js +108 -0
  17. package/dist/commands/add/dependency-resolver.js.map +1 -0
  18. package/dist/commands/add/index.d.ts +3 -0
  19. package/dist/commands/add/index.d.ts.map +1 -0
  20. package/dist/commands/add/index.js +137 -0
  21. package/dist/commands/add/index.js.map +1 -0
  22. package/dist/commands/init/config-prompter.d.ts +71 -0
  23. package/dist/commands/init/config-prompter.d.ts.map +1 -0
  24. package/dist/commands/init/config-prompter.js +109 -0
  25. package/dist/commands/init/config-prompter.js.map +1 -0
  26. package/dist/commands/init/dependencies.d.ts +11 -0
  27. package/dist/commands/init/dependencies.d.ts.map +1 -0
  28. package/dist/commands/init/dependencies.js +33 -0
  29. package/dist/commands/init/dependencies.js.map +1 -0
  30. package/dist/commands/init/index.d.ts +3 -0
  31. package/dist/commands/init/index.d.ts.map +1 -0
  32. package/dist/commands/init/index.js +121 -0
  33. package/dist/commands/init/index.js.map +1 -0
  34. package/dist/commands/init/tailwind-setup.d.ts +5 -0
  35. package/dist/commands/init/tailwind-setup.d.ts.map +1 -0
  36. package/dist/commands/init/tailwind-setup.js +24 -0
  37. package/dist/commands/init/tailwind-setup.js.map +1 -0
  38. package/dist/commands/init/theme-loader.d.ts +2 -0
  39. package/dist/commands/init/theme-loader.d.ts.map +1 -0
  40. package/dist/commands/init/theme-loader.js +62 -0
  41. package/dist/commands/init/theme-loader.js.map +1 -0
  42. package/dist/commands/init/tsconfig-updater.d.ts +3 -0
  43. package/dist/commands/init/tsconfig-updater.d.ts.map +1 -0
  44. package/dist/commands/init/tsconfig-updater.js +49 -0
  45. package/dist/commands/init/tsconfig-updater.js.map +1 -0
  46. package/dist/commands/init/update-angular-config.d.ts +7 -0
  47. package/dist/commands/init/update-angular-config.d.ts.map +1 -0
  48. package/dist/commands/init/update-angular-config.js +81 -0
  49. package/dist/commands/init/update-angular-config.js.map +1 -0
  50. package/dist/config/registry-config.d.ts +2 -0
  51. package/dist/config/registry-config.d.ts.map +1 -0
  52. package/dist/config/registry-config.js +2 -0
  53. package/dist/config/registry-config.js.map +1 -0
  54. package/dist/constants/app.constants.d.ts +2 -0
  55. package/dist/constants/app.constants.d.ts.map +1 -0
  56. package/dist/constants/app.constants.js +24 -0
  57. package/dist/constants/app.constants.js.map +1 -0
  58. package/dist/core/registry/index.d.ts +6 -0
  59. package/dist/core/registry/index.d.ts.map +1 -0
  60. package/dist/core/registry/index.js +9 -0
  61. package/dist/core/registry/index.js.map +1 -0
  62. package/dist/core/registry/registry-data.d.ts +13 -0
  63. package/dist/core/registry/registry-data.d.ts.map +1 -0
  64. package/dist/core/registry/registry-data.js +854 -0
  65. package/dist/core/registry/registry-data.js.map +1 -0
  66. package/dist/core/themes/index.d.ts +3 -0
  67. package/dist/core/themes/index.d.ts.map +1 -0
  68. package/dist/core/themes/index.js +3 -0
  69. package/dist/core/themes/index.js.map +1 -0
  70. package/dist/core/themes/theme-definitions.d.ts +7 -0
  71. package/dist/core/themes/theme-definitions.d.ts.map +1 -0
  72. package/dist/core/themes/theme-definitions.js +465 -0
  73. package/dist/core/themes/theme-definitions.js.map +1 -0
  74. package/dist/index.d.ts +2 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +15 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/utils/config.d.ts +101 -0
  79. package/dist/utils/config.d.ts.map +1 -0
  80. package/dist/utils/config.js +87 -0
  81. package/dist/utils/config.js.map +1 -0
  82. package/dist/utils/fetch-component.d.ts +3 -0
  83. package/dist/utils/fetch-component.d.ts.map +1 -0
  84. package/dist/utils/fetch-component.js +75 -0
  85. package/dist/utils/fetch-component.js.map +1 -0
  86. package/dist/utils/get-package-info.d.ts +9 -0
  87. package/dist/utils/get-package-info.d.ts.map +1 -0
  88. package/dist/utils/get-package-info.js +52 -0
  89. package/dist/utils/get-package-info.js.map +1 -0
  90. package/dist/utils/get-project-info.d.ts +9 -0
  91. package/dist/utils/get-project-info.d.ts.map +1 -0
  92. package/dist/utils/get-project-info.js +43 -0
  93. package/dist/utils/get-project-info.js.map +1 -0
  94. package/dist/utils/logger.d.ts +9 -0
  95. package/dist/utils/logger.d.ts.map +1 -0
  96. package/dist/utils/logger.js +27 -0
  97. package/dist/utils/logger.js.map +1 -0
  98. package/dist/utils/package-manager.d.ts +5 -0
  99. package/dist/utils/package-manager.d.ts.map +1 -0
  100. package/dist/utils/package-manager.js +47 -0
  101. package/dist/utils/package-manager.js.map +1 -0
  102. package/dist/utils/registry.d.ts +36 -0
  103. package/dist/utils/registry.d.ts.map +1 -0
  104. package/dist/utils/registry.js +71 -0
  105. package/dist/utils/registry.js.map +1 -0
  106. package/dist/utils/theme-selector.d.ts +4 -0
  107. package/dist/utils/theme-selector.d.ts.map +1 -0
  108. package/dist/utils/theme-selector.js +33 -0
  109. package/dist/utils/theme-selector.js.map +1 -0
  110. package/package.json +61 -0
@@ -0,0 +1,71 @@
1
+ import { DEFAULT_REGISTRY_URL as BUILD_REGISTRY_URL } from '../config/registry-config.js';
2
+ import { execa } from 'execa';
3
+ export const DEFAULT_REGISTRY_URL = process.env['ZARD_REGISTRY_URL'] ||
4
+ (BUILD_REGISTRY_URL !== '__REGISTRY_URL__' ? BUILD_REGISTRY_URL : 'https://zardui.com/r');
5
+ export function getRegistryUrl(config) {
6
+ return config?.registryUrl || DEFAULT_REGISTRY_URL;
7
+ }
8
+ async function fetchJson(url) {
9
+ try {
10
+ const { stdout } = await execa('curl', [
11
+ '-s',
12
+ '-H',
13
+ 'Accept: application/json',
14
+ '-H',
15
+ 'User-Agent: ngzard-cli',
16
+ '--max-time',
17
+ '30',
18
+ url,
19
+ ]);
20
+ if (!stdout || stdout.includes('<!DOCTYPE') || stdout.includes('<html')) {
21
+ throw new Error(`Invalid response from registry: ${url}`);
22
+ }
23
+ return JSON.parse(stdout);
24
+ }
25
+ catch (error) {
26
+ if (error instanceof SyntaxError) {
27
+ throw new Error(`Invalid JSON response from registry: ${url}`);
28
+ }
29
+ throw new Error(`Failed to fetch from registry: ${url} - ${error}`);
30
+ }
31
+ }
32
+ export async function fetchRegistryIndex(registryUrl) {
33
+ const baseUrl = registryUrl || DEFAULT_REGISTRY_URL;
34
+ const url = `${baseUrl}/registry.json`;
35
+ return fetchJson(url);
36
+ }
37
+ export async function fetchComponentFromRegistry(componentName, registryUrl) {
38
+ const baseUrl = registryUrl || DEFAULT_REGISTRY_URL;
39
+ const url = `${baseUrl}/${componentName}.json`;
40
+ return fetchJson(url);
41
+ }
42
+ export async function getAvailableComponents(registryUrl) {
43
+ const index = await fetchRegistryIndex(registryUrl);
44
+ return index.items.map(item => item.name);
45
+ }
46
+ export function transformContent(content, config) {
47
+ let transformed = content;
48
+ const { aliases } = config;
49
+ // Replace utils imports
50
+ transformed = transformed.replace(/from ['"]\.\.\/\.\.\/shared\/utils\/utils['"]/g, `from '${aliases.utils}/merge-classes'`);
51
+ transformed = transformed.replace(/from ['"]\.\.\/\.\.\/shared\/utils\/number['"]/g, `from '${aliases.utils}/number'`);
52
+ // Replace relative component imports with aliased imports
53
+ const componentImportRegex = /from ['"]\.\.\/([\w-/.]+)['"]/g;
54
+ transformed = transformed.replace(componentImportRegex, `from '${aliases.components}/$1'`);
55
+ // Replace ClassValue imports
56
+ transformed = transformed.replace(/import \{ ClassValue \} from ['"]class-variance-authority\/dist\/types['"]/g, `import { ClassValue } from 'clsx'`);
57
+ transformed = transformed.replace(/import \{ ClassValue \} from ['"]class-variance-authority['"]/g, `import { ClassValue } from 'clsx'`);
58
+ return transformed;
59
+ }
60
+ export async function fetchComponent(componentName, config, registryUrl) {
61
+ const item = await fetchComponentFromRegistry(componentName, registryUrl);
62
+ const transformedFiles = item.files.map(file => ({
63
+ name: file.name,
64
+ content: transformContent(file.content, config),
65
+ }));
66
+ return {
67
+ ...item,
68
+ files: transformedFiles,
69
+ };
70
+ }
71
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function getAvailableThemes(): string[];
2
+ export declare function getThemeContent(themeName: string): string;
3
+ export declare function getThemeDisplayName(themeName: string): string;
4
+ //# sourceMappingURL=theme-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-selector.d.ts","sourceRoot":"","sources":["../../src/utils/theme-selector.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBzD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS7D"}
@@ -0,0 +1,33 @@
1
+ import * as themes from '../core/themes/theme-definitions.js';
2
+ export function getAvailableThemes() {
3
+ return themes.availableThemes;
4
+ }
5
+ export function getThemeContent(themeName) {
6
+ const content = (() => {
7
+ switch (themeName) {
8
+ case 'stone':
9
+ return themes.stone;
10
+ case 'zinc':
11
+ return themes.zinc;
12
+ case 'gray':
13
+ return themes.gray;
14
+ case 'slate':
15
+ return themes.slate;
16
+ case 'neutral':
17
+ default:
18
+ return themes.neutral;
19
+ }
20
+ })();
21
+ return content.trim();
22
+ }
23
+ export function getThemeDisplayName(themeName) {
24
+ const names = {
25
+ neutral: 'Neutral (Default)',
26
+ stone: 'Stone',
27
+ zinc: 'Zinc',
28
+ gray: 'Gray',
29
+ slate: 'Slate',
30
+ };
31
+ return names[themeName] ?? themeName;
32
+ }
33
+ //# sourceMappingURL=theme-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-selector.js","sourceRoot":"","sources":["../../src/utils/theme-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uCAAuC,CAAC;AAEhE,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,eAAe,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;QACpB,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,KAAK,CAAC;YACtB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,KAAK,CAAC;YACtB,KAAK,SAAS,CAAC;YACf;gBACE,OAAO,MAAM,CAAC,OAAO,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,KAAK,GAA2B;QACpC,OAAO,EAAE,mBAAmB;QAC5B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO;KACf,CAAC;IACF,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AACvC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "zard-cli",
3
+ "version": "1.0.0-beta.1",
4
+ "description": "An alternative to shadcn/ui for angular",
5
+ "type": "module",
6
+ "main": "index.js",
7
+ "bin": {
8
+ "ngzard": "./dist/index.js"
9
+ },
10
+ "keywords": [
11
+ "ngzard",
12
+ "zard",
13
+ "zard-ui",
14
+ "shadcn/ui-angular",
15
+ "angular",
16
+ "components",
17
+ "ui",
18
+ "tailwindcss",
19
+ "tailwind",
20
+ "cli",
21
+ "design-system",
22
+ "typescript"
23
+ ],
24
+ "author": "ZardUI Team",
25
+ "license": "MIT",
26
+ "homepage": "https://zardui.com/",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/zard-ui/zardui.git",
30
+ "directory": "packages/cli"
31
+ },
32
+ "bugs": {
33
+ "url": "https://github.com/zard-ui/zardui/issues"
34
+ },
35
+ "engines": {
36
+ "node": ">=20"
37
+ },
38
+ "files": [
39
+ "**/*.js",
40
+ "**/*.d.ts",
41
+ "**/*.js.map",
42
+ "**/*.d.ts.map",
43
+ "!**/*.spec.js",
44
+ "!**/*.test.js"
45
+ ],
46
+ "dependencies": {
47
+ "@antfu/ni": "^0.23.2",
48
+ "chalk": "^5.3.0",
49
+ "class-variance-authority": "^0.7.1",
50
+ "clsx": "^2.1.1",
51
+ "commander": "^12.1.0",
52
+ "comment-json": "^4.2.5",
53
+ "execa": "^9.5.2",
54
+ "ora": "^8.1.1",
55
+ "prompts": "^2.4.2",
56
+ "zod": "^3.24.1"
57
+ },
58
+ "devDependencies": {
59
+ "tsc-alias": "^1.8.16"
60
+ }
61
+ }