trix-ui 0.2.8 → 0.2.9

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 (204) hide show
  1. package/dist/__tests__/contracts/registry.test.d.ts +1 -0
  2. package/dist/__tests__/contracts/registry.test.js +42 -0
  3. package/dist/__tests__/contracts/registry.test.js.map +1 -0
  4. package/dist/__tests__/e2e/cli.test.d.ts +1 -0
  5. package/dist/__tests__/e2e/cli.test.js +67 -0
  6. package/dist/__tests__/e2e/cli.test.js.map +1 -0
  7. package/dist/__tests__/helpers/fs.d.ts +5 -0
  8. package/dist/__tests__/helpers/fs.js +26 -0
  9. package/dist/__tests__/helpers/fs.js.map +1 -0
  10. package/dist/__tests__/integration/commands.integration.test.d.ts +1 -0
  11. package/dist/__tests__/integration/commands.integration.test.js +184 -0
  12. package/dist/__tests__/integration/commands.integration.test.js.map +1 -0
  13. package/dist/commands/__tests__/add-composite.test.d.ts +2 -0
  14. package/dist/commands/__tests__/add-composite.test.js +171 -0
  15. package/dist/commands/__tests__/add-composite.test.js.map +1 -0
  16. package/dist/commands/__tests__/add-entry.mocks.d.ts +23 -0
  17. package/dist/commands/__tests__/add-entry.mocks.js +64 -0
  18. package/dist/commands/__tests__/add-entry.mocks.js.map +1 -0
  19. package/dist/commands/__tests__/add-section.test.d.ts +2 -0
  20. package/dist/commands/__tests__/add-section.test.js +191 -0
  21. package/dist/commands/__tests__/add-section.test.js.map +1 -0
  22. package/dist/commands/__tests__/add-wrapper.test.d.ts +2 -0
  23. package/dist/commands/__tests__/add-wrapper.test.js +171 -0
  24. package/dist/commands/__tests__/add-wrapper.test.js.map +1 -0
  25. package/dist/commands/__tests__/cli-mocks.d.ts +1 -0
  26. package/dist/commands/__tests__/cli-mocks.js +24 -0
  27. package/dist/commands/__tests__/cli-mocks.js.map +1 -0
  28. package/dist/commands/__tests__/doctor.mocks.d.ts +6 -0
  29. package/dist/commands/__tests__/doctor.mocks.js +20 -0
  30. package/dist/commands/__tests__/doctor.mocks.js.map +1 -0
  31. package/dist/commands/__tests__/doctor.test.d.ts +2 -0
  32. package/dist/commands/__tests__/doctor.test.js +80 -0
  33. package/dist/commands/__tests__/doctor.test.js.map +1 -0
  34. package/dist/commands/__tests__/list.mocks.d.ts +8 -0
  35. package/dist/commands/__tests__/list.mocks.js +20 -0
  36. package/dist/commands/__tests__/list.mocks.js.map +1 -0
  37. package/dist/commands/__tests__/list.test.d.ts +2 -0
  38. package/dist/commands/__tests__/list.test.js +60 -0
  39. package/dist/commands/__tests__/list.test.js.map +1 -0
  40. package/dist/commands/__tests__/remove.mocks.d.ts +9 -0
  41. package/dist/commands/__tests__/remove.mocks.js +26 -0
  42. package/dist/commands/__tests__/remove.mocks.js.map +1 -0
  43. package/dist/commands/__tests__/remove.test.d.ts +2 -0
  44. package/dist/commands/__tests__/remove.test.js +116 -0
  45. package/dist/commands/__tests__/remove.test.js.map +1 -0
  46. package/dist/commands/add/__tests__/add.mocks.d.ts +19 -19
  47. package/dist/commands/add/__tests__/add.mocks.js +59 -59
  48. package/dist/commands/add/__tests__/add.test.d.ts +2 -2
  49. package/dist/commands/add/__tests__/add.test.js +140 -140
  50. package/dist/commands/add/analysis.d.ts +4 -4
  51. package/dist/commands/add/analysis.js +56 -56
  52. package/dist/commands/add/command.d.ts +2 -2
  53. package/dist/commands/add/command.js +202 -202
  54. package/dist/commands/add/config.d.ts +2 -2
  55. package/dist/commands/add/config.js +11 -11
  56. package/dist/commands/add/install.d.ts +27 -27
  57. package/dist/commands/add/install.js +80 -80
  58. package/dist/commands/add/package-manager.d.ts +1 -1
  59. package/dist/commands/add/package-manager.js +4 -4
  60. package/dist/commands/add/project-files.d.ts +2 -2
  61. package/dist/commands/add/project-files.js +17 -17
  62. package/dist/commands/add/prompts.d.ts +3 -3
  63. package/dist/commands/add/prompts.js +28 -28
  64. package/dist/commands/add/registry.d.ts +4 -4
  65. package/dist/commands/add/registry.js +6 -6
  66. package/dist/commands/add/types.d.ts +33 -33
  67. package/dist/commands/add/types.js +1 -1
  68. package/dist/commands/add/ui.d.ts +4 -4
  69. package/dist/commands/add/ui.js +55 -55
  70. package/dist/commands/add/validation.d.ts +3 -3
  71. package/dist/commands/add/validation.js +30 -30
  72. package/dist/commands/add-collection.d.ts +1 -1
  73. package/dist/commands/add-collection.js +1 -1
  74. package/dist/commands/add-composite.d.ts +2 -2
  75. package/dist/commands/add-composite.js +201 -201
  76. package/dist/commands/add-section.d.ts +2 -2
  77. package/dist/commands/add-section.js +201 -201
  78. package/dist/commands/add-wrapper.d.ts +2 -2
  79. package/dist/commands/add-wrapper.js +201 -201
  80. package/dist/commands/add.d.ts +1 -1
  81. package/dist/commands/add.js +1 -1
  82. package/dist/commands/build.d.ts +2 -2
  83. package/dist/commands/doctor.d.ts +2 -2
  84. package/dist/commands/doctor.js +67 -67
  85. package/dist/commands/init/__tests__/init.mocks.d.ts +24 -0
  86. package/dist/commands/init/__tests__/init.mocks.js +84 -0
  87. package/dist/commands/init/__tests__/init.mocks.js.map +1 -0
  88. package/dist/commands/init/__tests__/init.test.d.ts +2 -0
  89. package/dist/commands/init/__tests__/init.test.js +283 -0
  90. package/dist/commands/init/__tests__/init.test.js.map +1 -0
  91. package/dist/commands/init/__tests__/tailwind.test.d.ts +1 -0
  92. package/dist/commands/init/__tests__/tailwind.test.js +56 -0
  93. package/dist/commands/init/__tests__/tailwind.test.js.map +1 -0
  94. package/dist/commands/init/__tests__/tsconfig.test.d.ts +1 -0
  95. package/dist/commands/init/__tests__/tsconfig.test.js +108 -0
  96. package/dist/commands/init/__tests__/tsconfig.test.js.map +1 -0
  97. package/dist/commands/init/__tests__/vite.test.d.ts +1 -0
  98. package/dist/commands/init/__tests__/vite.test.js +66 -0
  99. package/dist/commands/init/__tests__/vite.test.js.map +1 -0
  100. package/dist/commands/init/command.d.ts +2 -2
  101. package/dist/commands/init/command.js +114 -114
  102. package/dist/commands/init/config.d.ts +2 -2
  103. package/dist/commands/init/config.js +25 -25
  104. package/dist/commands/init/constants.d.ts +3 -3
  105. package/dist/commands/init/constants.js +105 -105
  106. package/dist/commands/init/dependencies.d.ts +5 -5
  107. package/dist/commands/init/dependencies.js +52 -52
  108. package/dist/commands/init/filesystem.d.ts +1 -1
  109. package/dist/commands/init/filesystem.js +10 -10
  110. package/dist/commands/init/lockfile.d.ts +1 -1
  111. package/dist/commands/init/lockfile.js +1 -1
  112. package/dist/commands/init/package-json.d.ts +6 -6
  113. package/dist/commands/init/package-json.js +18 -18
  114. package/dist/commands/init/project-files.d.ts +8 -0
  115. package/dist/commands/init/project-files.js +37 -0
  116. package/dist/commands/init/project-files.js.map +1 -0
  117. package/dist/commands/init/project.d.ts +3 -3
  118. package/dist/commands/init/project.js +97 -97
  119. package/dist/commands/init/style-imports.d.ts +9 -0
  120. package/dist/commands/init/style-imports.js +218 -0
  121. package/dist/commands/init/style-imports.js.map +1 -0
  122. package/dist/commands/init/tailwind.d.ts +3 -3
  123. package/dist/commands/init/tailwind.js +34 -34
  124. package/dist/commands/init/templates.d.ts +3 -3
  125. package/dist/commands/init/templates.js +15 -15
  126. package/dist/commands/init/tsconfig.d.ts +2 -2
  127. package/dist/commands/init/tsconfig.js +273 -273
  128. package/dist/commands/init/types.d.ts +33 -33
  129. package/dist/commands/init/types.js +1 -1
  130. package/dist/commands/init/ui.d.ts +3 -3
  131. package/dist/commands/init/ui.js +33 -33
  132. package/dist/commands/init/vite.d.ts +23 -0
  133. package/dist/commands/init/vite.js +347 -0
  134. package/dist/commands/init/vite.js.map +1 -0
  135. package/dist/commands/init.d.ts +1 -1
  136. package/dist/commands/init.js +1 -1
  137. package/dist/commands/list.d.ts +2 -2
  138. package/dist/commands/list.js +62 -62
  139. package/dist/commands/remove.d.ts +2 -2
  140. package/dist/commands/remove.js +93 -93
  141. package/dist/commands/shared/add-collection.d.ts +50 -50
  142. package/dist/commands/shared/add-collection.js +206 -206
  143. package/dist/commands/shared/list-entries.d.ts +6 -6
  144. package/dist/commands/shared/list-entries.js +12 -12
  145. package/dist/commands/shared/name-utils.d.ts +1 -1
  146. package/dist/commands/shared/name-utils.js +13 -13
  147. package/dist/commands/shared/remove-entries.d.ts +16 -16
  148. package/dist/commands/shared/remove-entries.js +41 -41
  149. package/dist/icons/index.d.ts +1 -1
  150. package/dist/icons/index.js +1 -1
  151. package/dist/icons/libraries.d.ts +37 -37
  152. package/dist/icons/libraries.js +34 -34
  153. package/dist/index.d.ts +2 -2
  154. package/dist/index.js +30 -30
  155. package/dist/lib/__tests__/config.test.d.ts +1 -0
  156. package/dist/lib/__tests__/config.test.js +49 -0
  157. package/dist/lib/__tests__/config.test.js.map +1 -0
  158. package/dist/lib/__tests__/install.test.d.ts +1 -0
  159. package/dist/lib/__tests__/install.test.js +149 -0
  160. package/dist/lib/__tests__/install.test.js.map +1 -0
  161. package/dist/lib/__tests__/lockfile.test.d.ts +1 -0
  162. package/dist/lib/__tests__/lockfile.test.js +89 -0
  163. package/dist/lib/__tests__/lockfile.test.js.map +1 -0
  164. package/dist/lib/__tests__/paths.test.d.ts +1 -0
  165. package/dist/lib/__tests__/paths.test.js +39 -0
  166. package/dist/lib/__tests__/paths.test.js.map +1 -0
  167. package/dist/lib/__tests__/registry.test.d.ts +1 -0
  168. package/dist/lib/__tests__/registry.test.js +76 -0
  169. package/dist/lib/__tests__/registry.test.js.map +1 -0
  170. package/dist/lib/config.d.ts +45 -45
  171. package/dist/lib/config.js +97 -97
  172. package/dist/lib/fs.d.ts +76 -76
  173. package/dist/lib/fs.js +302 -302
  174. package/dist/lib/highlighter.d.ts +6 -6
  175. package/dist/lib/highlighter.js +7 -7
  176. package/dist/lib/install.d.ts +19 -19
  177. package/dist/lib/install.js +55 -55
  178. package/dist/lib/lockfile.d.ts +63 -63
  179. package/dist/lib/lockfile.js +173 -173
  180. package/dist/lib/logger.d.ts +8 -8
  181. package/dist/lib/logger.js +41 -41
  182. package/dist/lib/paths.d.ts +14 -14
  183. package/dist/lib/paths.js +31 -31
  184. package/dist/lib/registry.d.ts +35 -35
  185. package/dist/lib/registry.js +180 -180
  186. package/dist/schema/index.d.ts +1128 -1128
  187. package/dist/schema/index.js +238 -238
  188. package/dist/styles/create-style-map.d.ts +4 -4
  189. package/dist/styles/create-style-map.js +68 -68
  190. package/dist/styles/transform-style-map.d.ts +3 -3
  191. package/dist/styles/transform-style-map.js +428 -428
  192. package/dist/styles/transform.d.ts +10 -10
  193. package/dist/styles/transform.js +15 -15
  194. package/dist/utils/index.d.ts +6 -6
  195. package/dist/utils/index.js +5 -5
  196. package/dist/utils/transformers/transform-icons.d.ts +2 -2
  197. package/dist/utils/transformers/transform-icons.js +164 -164
  198. package/dist/utils/transformers/transform-menu.d.ts +2 -2
  199. package/dist/utils/transformers/transform-menu.js +39 -39
  200. package/dist/utils/transformers/transform-render.d.ts +2 -2
  201. package/dist/utils/transformers/transform-render.js +97 -97
  202. package/dist/utils/transformers/types.d.ts +14 -14
  203. package/dist/utils/transformers/types.js +1 -1
  204. package/package.json +1 -1
@@ -0,0 +1,76 @@
1
+ import path from "node:path";
2
+ import { describe, expect, it } from "vitest";
3
+ import { createTempDir, removeDir, writeJson } from "../../__tests__/helpers/fs.js";
4
+ import { loadRegistry } from "../registry.js";
5
+ describe("registry", () => {
6
+ it("loads a valid local registry", async () => {
7
+ const cwd = await createTempDir("trix-ui-registry-");
8
+ try {
9
+ const registryPath = path.join(cwd, "registry", "index.json");
10
+ await writeJson(registryPath, {
11
+ version: 1,
12
+ components: [
13
+ {
14
+ name: "button",
15
+ description: "Button",
16
+ files: [
17
+ {
18
+ source: "components/ui/button.tsx",
19
+ target: "{{components}}/button.tsx"
20
+ }
21
+ ]
22
+ }
23
+ ]
24
+ });
25
+ const config = {
26
+ registry: {
27
+ type: "local",
28
+ path: "registry/index.json"
29
+ },
30
+ paths: {
31
+ components: "components/ui",
32
+ sections: "components/sections",
33
+ wrappers: "components/wrappers",
34
+ composites: "components/composites",
35
+ utils: "lib/utils.ts",
36
+ styles: "styles/globals.css"
37
+ }
38
+ };
39
+ const registry = await loadRegistry(config, cwd);
40
+ expect(registry.components).toHaveLength(1);
41
+ expect(registry.components[0].name).toBe("button");
42
+ }
43
+ finally {
44
+ await removeDir(cwd);
45
+ }
46
+ });
47
+ it("rejects invalid registry format", async () => {
48
+ const cwd = await createTempDir("trix-ui-registry-");
49
+ try {
50
+ const registryPath = path.join(cwd, "registry", "index.json");
51
+ await writeJson(registryPath, {
52
+ version: 1,
53
+ sections: []
54
+ });
55
+ const config = {
56
+ registry: {
57
+ type: "local",
58
+ path: "registry/index.json"
59
+ },
60
+ paths: {
61
+ components: "components/ui",
62
+ sections: "components/sections",
63
+ wrappers: "components/wrappers",
64
+ composites: "components/composites",
65
+ utils: "lib/utils.ts",
66
+ styles: "styles/globals.css"
67
+ }
68
+ };
69
+ await expect(loadRegistry(config, cwd)).rejects.toThrow(/missing 'components' array/i);
70
+ }
71
+ finally {
72
+ await removeDir(cwd);
73
+ }
74
+ });
75
+ });
76
+ //# sourceMappingURL=registry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/registry.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,CAAA;QACpD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;YAC7D,MAAM,SAAS,CAAC,YAAY,EAAE;gBAC5B,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE;oBACV;wBACE,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,QAAQ;wBACrB,KAAK,EAAE;4BACL;gCACE,MAAM,EAAE,0BAA0B;gCAClC,MAAM,EAAE,2BAA2B;6BACpC;yBACF;qBACF;iBACF;aACF,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,qBAAqB;iBAC5B;gBACD,KAAK,EAAE;oBACL,UAAU,EAAE,eAAe;oBAC3B,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,qBAAqB;oBAC/B,UAAU,EAAE,uBAAuB;oBACnC,KAAK,EAAE,cAAc;oBACrB,MAAM,EAAE,oBAAoB;iBAC7B;aACF,CAAA;YAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAChD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC3C,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpD,CAAC;gBAAS,CAAC;YACT,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,CAAA;QACpD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;YAC7D,MAAM,SAAS,CAAC,YAAY,EAAE;gBAC5B,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,EAAE;aACb,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,qBAAqB;iBAC5B;gBACD,KAAK,EAAE;oBACL,UAAU,EAAE,eAAe;oBAC3B,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,qBAAqB;oBAC/B,UAAU,EAAE,uBAAuB;oBACnC,KAAK,EAAE,cAAc;oBACrB,MAAM,EAAE,oBAAoB;iBAC7B;aACF,CAAA;YAED,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACrD,6BAA6B,CAC9B,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,45 +1,45 @@
1
- export type RegistryConfig = {
2
- type: "bundled";
3
- } | {
4
- type: "local";
5
- path: string;
6
- templates?: string;
7
- };
8
- export type RegistryConfigInput = RegistryConfig | string;
9
- export interface TrixUIConfig {
10
- $schema?: string;
11
- typescript: boolean;
12
- tailwind: boolean;
13
- framework: "next" | "react" | "vite" | "unknown";
14
- barrel: boolean;
15
- paths: {
16
- components: string;
17
- sections: string;
18
- wrappers: string;
19
- composites: string;
20
- utils: string;
21
- styles: string;
22
- };
23
- registry?: RegistryConfigInput;
24
- }
25
- export declare const DEFAULT_CONFIG: TrixUIConfig;
26
- /**
27
- * Get the config file path
28
- */
29
- export declare function getConfigPath(cwd: string): string;
30
- /**
31
- * Check if config file exists
32
- */
33
- export declare function configExists(cwd: string): Promise<boolean>;
34
- /**
35
- * Load config from file
36
- */
37
- export declare function loadConfig(cwd: string): Promise<TrixUIConfig>;
38
- /**
39
- * Write config to file
40
- */
41
- export declare function writeConfig(cwd: string, config: TrixUIConfig, force?: boolean): Promise<void>;
42
- /**
43
- * Update specific config fields
44
- */
45
- export declare function updateConfig(cwd: string, updates: Partial<TrixUIConfig>): Promise<void>;
1
+ export type RegistryConfig = {
2
+ type: "bundled";
3
+ } | {
4
+ type: "local";
5
+ path: string;
6
+ templates?: string;
7
+ };
8
+ export type RegistryConfigInput = RegistryConfig | string;
9
+ export interface TrixUIConfig {
10
+ $schema?: string;
11
+ typescript: boolean;
12
+ tailwind: boolean;
13
+ framework: "next" | "react" | "vite" | "unknown";
14
+ barrel: boolean;
15
+ paths: {
16
+ components: string;
17
+ sections: string;
18
+ wrappers: string;
19
+ composites: string;
20
+ utils: string;
21
+ styles: string;
22
+ };
23
+ registry?: RegistryConfigInput;
24
+ }
25
+ export declare const DEFAULT_CONFIG: TrixUIConfig;
26
+ /**
27
+ * Get the config file path
28
+ */
29
+ export declare function getConfigPath(cwd: string): string;
30
+ /**
31
+ * Check if config file exists
32
+ */
33
+ export declare function configExists(cwd: string): Promise<boolean>;
34
+ /**
35
+ * Load config from file
36
+ */
37
+ export declare function loadConfig(cwd: string): Promise<TrixUIConfig>;
38
+ /**
39
+ * Write config to file
40
+ */
41
+ export declare function writeConfig(cwd: string, config: TrixUIConfig, force?: boolean): Promise<void>;
42
+ /**
43
+ * Update specific config fields
44
+ */
45
+ export declare function updateConfig(cwd: string, updates: Partial<TrixUIConfig>): Promise<void>;
@@ -1,98 +1,98 @@
1
- import path from "node:path";
2
- import { fileExists, readJsonFile, writeJsonFile } from "./fs.js";
3
- export const DEFAULT_CONFIG = {
4
- typescript: true,
5
- tailwind: true,
6
- framework: "react",
7
- barrel: false,
8
- registry: {
9
- type: "bundled"
10
- },
11
- paths: {
12
- components: "components/ui",
13
- sections: "components/sections",
14
- wrappers: "components/wrappers",
15
- composites: "components/composites",
16
- utils: "lib/utils.ts",
17
- styles: "globals.css",
18
- },
19
- };
20
- const CONFIG_FILENAME = "trix-ui.json";
21
- /**
22
- * Get the config file path
23
- */
24
- export function getConfigPath(cwd) {
25
- return path.join(cwd, CONFIG_FILENAME);
26
- }
27
- /**
28
- * Check if config file exists
29
- */
30
- export async function configExists(cwd) {
31
- return fileExists(getConfigPath(cwd));
32
- }
33
- /**
34
- * Load config from file
35
- */
36
- export async function loadConfig(cwd) {
37
- const configPath = getConfigPath(cwd);
38
- if (!(await fileExists(configPath))) {
39
- throw new Error(`Config file not found: ${CONFIG_FILENAME}\n` +
40
- `Run 'trix-ui init' to initialize your project.`);
41
- }
42
- try {
43
- const config = await readJsonFile(configPath);
44
- // Validate required fields
45
- if (!config.paths) {
46
- throw new Error("Invalid config: missing 'paths' field");
47
- }
48
- if (!config.paths.components) {
49
- throw new Error("Invalid config: missing 'paths.components' field");
50
- }
51
- // Merge with defaults to ensure all fields exist
52
- return {
53
- ...DEFAULT_CONFIG,
54
- ...config,
55
- paths: {
56
- ...DEFAULT_CONFIG.paths,
57
- ...config.paths,
58
- },
59
- };
60
- }
61
- catch (error) {
62
- throw new Error(`Failed to load config: ${error.message}\n` +
63
- `Please check your ${CONFIG_FILENAME} file for syntax errors.`);
64
- }
65
- }
66
- /**
67
- * Write config to file
68
- */
69
- export async function writeConfig(cwd, config, force = false) {
70
- const configPath = getConfigPath(cwd);
71
- // Add schema for IDE support
72
- const configWithSchema = {
73
- $schema: "https://trix-ui.com/schema.json",
74
- ...config,
75
- };
76
- try {
77
- await writeJsonFile(configPath, configWithSchema, force);
78
- }
79
- catch (error) {
80
- throw new Error(`Failed to write config: ${error.message}`);
81
- }
82
- }
83
- /**
84
- * Update specific config fields
85
- */
86
- export async function updateConfig(cwd, updates) {
87
- const config = await loadConfig(cwd);
88
- const updatedConfig = {
89
- ...config,
90
- ...updates,
91
- paths: {
92
- ...config.paths,
93
- ...(updates.paths || {}),
94
- },
95
- };
96
- await writeConfig(cwd, updatedConfig, true);
97
- }
1
+ import path from "node:path";
2
+ import { fileExists, readJsonFile, writeJsonFile } from "./fs.js";
3
+ export const DEFAULT_CONFIG = {
4
+ typescript: true,
5
+ tailwind: true,
6
+ framework: "react",
7
+ barrel: false,
8
+ registry: {
9
+ type: "bundled"
10
+ },
11
+ paths: {
12
+ components: "components/ui",
13
+ sections: "components/sections",
14
+ wrappers: "components/wrappers",
15
+ composites: "components/composites",
16
+ utils: "lib/utils.ts",
17
+ styles: "globals.css",
18
+ },
19
+ };
20
+ const CONFIG_FILENAME = "trix-ui.json";
21
+ /**
22
+ * Get the config file path
23
+ */
24
+ export function getConfigPath(cwd) {
25
+ return path.join(cwd, CONFIG_FILENAME);
26
+ }
27
+ /**
28
+ * Check if config file exists
29
+ */
30
+ export async function configExists(cwd) {
31
+ return fileExists(getConfigPath(cwd));
32
+ }
33
+ /**
34
+ * Load config from file
35
+ */
36
+ export async function loadConfig(cwd) {
37
+ const configPath = getConfigPath(cwd);
38
+ if (!(await fileExists(configPath))) {
39
+ throw new Error(`Config file not found: ${CONFIG_FILENAME}\n` +
40
+ `Run 'trix-ui init' to initialize your project.`);
41
+ }
42
+ try {
43
+ const config = await readJsonFile(configPath);
44
+ // Validate required fields
45
+ if (!config.paths) {
46
+ throw new Error("Invalid config: missing 'paths' field");
47
+ }
48
+ if (!config.paths.components) {
49
+ throw new Error("Invalid config: missing 'paths.components' field");
50
+ }
51
+ // Merge with defaults to ensure all fields exist
52
+ return {
53
+ ...DEFAULT_CONFIG,
54
+ ...config,
55
+ paths: {
56
+ ...DEFAULT_CONFIG.paths,
57
+ ...config.paths,
58
+ },
59
+ };
60
+ }
61
+ catch (error) {
62
+ throw new Error(`Failed to load config: ${error.message}\n` +
63
+ `Please check your ${CONFIG_FILENAME} file for syntax errors.`);
64
+ }
65
+ }
66
+ /**
67
+ * Write config to file
68
+ */
69
+ export async function writeConfig(cwd, config, force = false) {
70
+ const configPath = getConfigPath(cwd);
71
+ // Add schema for IDE support
72
+ const configWithSchema = {
73
+ $schema: "https://trix-ui.com/schema.json",
74
+ ...config,
75
+ };
76
+ try {
77
+ await writeJsonFile(configPath, configWithSchema, force);
78
+ }
79
+ catch (error) {
80
+ throw new Error(`Failed to write config: ${error.message}`);
81
+ }
82
+ }
83
+ /**
84
+ * Update specific config fields
85
+ */
86
+ export async function updateConfig(cwd, updates) {
87
+ const config = await loadConfig(cwd);
88
+ const updatedConfig = {
89
+ ...config,
90
+ ...updates,
91
+ paths: {
92
+ ...config.paths,
93
+ ...(updates.paths || {}),
94
+ },
95
+ };
96
+ await writeConfig(cwd, updatedConfig, true);
97
+ }
98
98
  //# sourceMappingURL=config.js.map
package/dist/lib/fs.d.ts CHANGED
@@ -1,76 +1,76 @@
1
- import { Stats } from "node:fs";
2
- /**
3
- * Check if a file exists
4
- */
5
- export declare function fileExists(filePath: string): Promise<boolean>;
6
- /**
7
- * Check if a directory exists
8
- */
9
- export declare function directoryExists(dirPath: string): Promise<boolean>;
10
- /**
11
- * Ensure a directory exists, create if it doesn't
12
- */
13
- export declare function ensureDir(dirPath: string): Promise<void>;
14
- /**
15
- * Read a file as a string with proper encoding and BOM handling
16
- */
17
- export declare function readFile(filePath: string): Promise<string>;
18
- /**
19
- * Read and parse a JSON file with comprehensive error handling
20
- */
21
- export declare function readJsonFile<T = any>(filePath: string): Promise<T>;
22
- /**
23
- * Write content to a file
24
- */
25
- export declare function writeFile(filePath: string, content: string): Promise<void>;
26
- /**
27
- * Write content to a file only if it doesn't exist or force is true
28
- */
29
- export declare function writeFileSafe(filePath: string, content: string, force?: boolean): Promise<boolean>;
30
- /**
31
- * Write JSON to a file with pretty formatting
32
- */
33
- export declare function writeJsonFile(filePath: string, data: any, force?: boolean): Promise<void>;
34
- /**
35
- * Copy a file from source to destination
36
- */
37
- export declare function copyFile(src: string, dest: string): Promise<void>;
38
- /**
39
- * Copy a file only if destination doesn't exist or force is true
40
- */
41
- export declare function copyFileSafe(src: string, dest: string, force?: boolean): Promise<boolean>;
42
- /**
43
- * Delete a file
44
- */
45
- export declare function deleteFile(filePath: string): Promise<void>;
46
- /**
47
- * Delete a directory recursively
48
- */
49
- export declare function deleteDirectory(dirPath: string): Promise<void>;
50
- /**
51
- * List files in a directory
52
- */
53
- export declare function listFiles(dirPath: string, options?: {
54
- recursive?: boolean;
55
- extension?: string;
56
- }): Promise<string[]>;
57
- /**
58
- * Get file stats
59
- */
60
- export declare function getFileStats(filePath: string): Promise<Stats | null>;
61
- /**
62
- * Check if path is a file
63
- */
64
- export declare function isFile(filePath: string): Promise<boolean>;
65
- /**
66
- * Check if path is a directory
67
- */
68
- export declare function isDirectory(dirPath: string): Promise<boolean>;
69
- /**
70
- * Read package.json with validation
71
- */
72
- export declare function readPackageJson(cwd: string): Promise<any>;
73
- /**
74
- * Update package.json dependencies
75
- */
76
- export declare function updatePackageJsonDependencies(cwd: string, dependencies: Record<string, string>, dev?: boolean): Promise<void>;
1
+ import { Stats } from "node:fs";
2
+ /**
3
+ * Check if a file exists
4
+ */
5
+ export declare function fileExists(filePath: string): Promise<boolean>;
6
+ /**
7
+ * Check if a directory exists
8
+ */
9
+ export declare function directoryExists(dirPath: string): Promise<boolean>;
10
+ /**
11
+ * Ensure a directory exists, create if it doesn't
12
+ */
13
+ export declare function ensureDir(dirPath: string): Promise<void>;
14
+ /**
15
+ * Read a file as a string with proper encoding and BOM handling
16
+ */
17
+ export declare function readFile(filePath: string): Promise<string>;
18
+ /**
19
+ * Read and parse a JSON file with comprehensive error handling
20
+ */
21
+ export declare function readJsonFile<T = any>(filePath: string): Promise<T>;
22
+ /**
23
+ * Write content to a file
24
+ */
25
+ export declare function writeFile(filePath: string, content: string): Promise<void>;
26
+ /**
27
+ * Write content to a file only if it doesn't exist or force is true
28
+ */
29
+ export declare function writeFileSafe(filePath: string, content: string, force?: boolean): Promise<boolean>;
30
+ /**
31
+ * Write JSON to a file with pretty formatting
32
+ */
33
+ export declare function writeJsonFile(filePath: string, data: any, force?: boolean): Promise<void>;
34
+ /**
35
+ * Copy a file from source to destination
36
+ */
37
+ export declare function copyFile(src: string, dest: string): Promise<void>;
38
+ /**
39
+ * Copy a file only if destination doesn't exist or force is true
40
+ */
41
+ export declare function copyFileSafe(src: string, dest: string, force?: boolean): Promise<boolean>;
42
+ /**
43
+ * Delete a file
44
+ */
45
+ export declare function deleteFile(filePath: string): Promise<void>;
46
+ /**
47
+ * Delete a directory recursively
48
+ */
49
+ export declare function deleteDirectory(dirPath: string): Promise<void>;
50
+ /**
51
+ * List files in a directory
52
+ */
53
+ export declare function listFiles(dirPath: string, options?: {
54
+ recursive?: boolean;
55
+ extension?: string;
56
+ }): Promise<string[]>;
57
+ /**
58
+ * Get file stats
59
+ */
60
+ export declare function getFileStats(filePath: string): Promise<Stats | null>;
61
+ /**
62
+ * Check if path is a file
63
+ */
64
+ export declare function isFile(filePath: string): Promise<boolean>;
65
+ /**
66
+ * Check if path is a directory
67
+ */
68
+ export declare function isDirectory(dirPath: string): Promise<boolean>;
69
+ /**
70
+ * Read package.json with validation
71
+ */
72
+ export declare function readPackageJson(cwd: string): Promise<any>;
73
+ /**
74
+ * Update package.json dependencies
75
+ */
76
+ export declare function updatePackageJsonDependencies(cwd: string, dependencies: Record<string, string>, dev?: boolean): Promise<void>;