nx-factory-cli 2.0.1 → 2.0.2

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 (61) hide show
  1. package/dist/commands/add-app.d.ts +15 -0
  2. package/dist/commands/add-app.d.ts.map +1 -0
  3. package/dist/commands/add-app.js +365 -0
  4. package/dist/commands/add-app.js.map +1 -0
  5. package/dist/commands/add-component.d.ts +2 -0
  6. package/dist/commands/add-component.d.ts.map +1 -0
  7. package/dist/commands/add-component.js +110 -0
  8. package/dist/commands/add-component.js.map +1 -0
  9. package/dist/commands/add-lib.d.ts +9 -0
  10. package/dist/commands/add-lib.d.ts.map +1 -0
  11. package/dist/commands/add-lib.js +190 -0
  12. package/dist/commands/add-lib.js.map +1 -0
  13. package/dist/commands/add-storybook.d.ts +6 -0
  14. package/dist/commands/add-storybook.d.ts.map +1 -0
  15. package/dist/commands/add-storybook.js +181 -0
  16. package/dist/commands/add-storybook.js.map +1 -0
  17. package/dist/commands/doctor.d.ts +2 -0
  18. package/dist/commands/doctor.d.ts.map +1 -0
  19. package/dist/commands/doctor.js +230 -0
  20. package/dist/commands/doctor.js.map +1 -0
  21. package/dist/commands/init.d.ts +9 -0
  22. package/dist/commands/init.d.ts.map +1 -0
  23. package/dist/commands/init.js +505 -0
  24. package/dist/commands/init.js.map +1 -0
  25. package/dist/commands/list.d.ts +2 -0
  26. package/dist/commands/list.d.ts.map +1 -0
  27. package/dist/commands/list.js +130 -0
  28. package/dist/commands/list.js.map +1 -0
  29. package/dist/commands/publish.d.ts +8 -0
  30. package/dist/commands/publish.d.ts.map +1 -0
  31. package/dist/commands/publish.js +179 -0
  32. package/dist/commands/publish.js.map +1 -0
  33. package/dist/commands/remove-component.d.ts +5 -0
  34. package/dist/commands/remove-component.d.ts.map +1 -0
  35. package/dist/commands/remove-component.js +172 -0
  36. package/dist/commands/remove-component.js.map +1 -0
  37. package/dist/commands/update.d.ts +5 -0
  38. package/dist/commands/update.d.ts.map +1 -0
  39. package/dist/commands/update.js +126 -0
  40. package/dist/commands/update.js.map +1 -0
  41. package/dist/config.d.ts +14 -0
  42. package/dist/config.d.ts.map +1 -0
  43. package/dist/config.js +35 -0
  44. package/dist/config.js.map +1 -0
  45. package/dist/exec.d.ts +25 -0
  46. package/dist/exec.d.ts.map +1 -0
  47. package/dist/exec.js +80 -0
  48. package/dist/exec.js.map +1 -0
  49. package/dist/files.d.ts +7 -0
  50. package/dist/files.d.ts.map +1 -0
  51. package/dist/files.js +23 -0
  52. package/dist/files.js.map +1 -0
  53. package/dist/index.d.ts +3 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +85 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/ui.d.ts +44 -0
  58. package/dist/ui.d.ts.map +1 -0
  59. package/dist/ui.js +149 -0
  60. package/dist/ui.js.map +1 -0
  61. package/package.json +1 -1
@@ -0,0 +1,15 @@
1
+ interface AddAppOptions {
2
+ name?: string;
3
+ framework?: string;
4
+ yes?: boolean;
5
+ dryRun?: boolean;
6
+ }
7
+ export declare function addAppCommand(options: AddAppOptions): Promise<void>;
8
+ /**
9
+ * Called by init.ts to scaffold the optional example Next.js app.
10
+ * Runs create-next-app@latest inside <workspaceRoot>/apps/, then
11
+ * wires the shared UI package in exactly the same way add-app does.
12
+ */
13
+ export declare function scaffoldExampleApp(workspaceRoot: string, appName: string, uiPkgName: string, pm: string): Promise<void>;
14
+ export {};
15
+ //# sourceMappingURL=add-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-app.d.ts","sourceRoot":"","sources":["../../src/commands/add-app.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAO,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAQ,OAAO,CAAC;IACpB,MAAM,CAAC,EAAK,OAAO,CAAC;CACrB;AAOD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkIzE;AA8SD;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAQ,MAAM,EACrB,SAAS,EAAM,MAAM,EACrB,EAAE,EAAa,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAOf"}
@@ -0,0 +1,365 @@
1
+ import inquirer from "inquirer";
2
+ import path from "path";
3
+ import { pathExists, writeFile, readJson } from "../files.js";
4
+ import { pmWorkspaceProtocol, detectPackageManager, pmx, pmxArgs, runInteractive } from "../exec.js";
5
+ import { loadConfig } from "../config.js";
6
+ import { q, detected, createStepRunner, printSection, printSuccess, printError, c } from "../ui.js";
7
+ export async function addAppCommand(options) {
8
+ const pkgJsonPath = path.join(process.cwd(), "package.json");
9
+ if (!(await pathExists(pkgJsonPath))) {
10
+ printError({
11
+ title: "No package.json found",
12
+ detail: "Run this command from the monorepo root.",
13
+ recovery: [{ label: "", cmd: "cd my-monorepo && nx-factory add-app" }],
14
+ });
15
+ process.exit(1);
16
+ return;
17
+ }
18
+ await readJson(pkgJsonPath);
19
+ const cfg = await loadConfig();
20
+ const packagesDir = path.join(process.cwd(), "packages");
21
+ let detectedUiPkg = cfg?.uiPackage ?? "ui";
22
+ if (!cfg && await pathExists(packagesDir)) {
23
+ const { default: fs } = await import("fs-extra");
24
+ const pkgs = await fs.readdir(packagesDir);
25
+ if (pkgs.length > 0)
26
+ detectedUiPkg = pkgs[0];
27
+ }
28
+ const detectedPm = await detectPackageManager();
29
+ const defaults = {
30
+ appName: options.name ?? "my-app",
31
+ framework: options.framework ?? "nextjs",
32
+ uiPkgName: detectedUiPkg,
33
+ pkgManager: detectedPm ?? cfg?.pkgManager ?? "pnpm",
34
+ };
35
+ const answers = options.yes
36
+ ? defaults
37
+ : await inquirer.prompt([
38
+ {
39
+ type: "input",
40
+ name: "appName",
41
+ message: q("App name", "lowercase letters, numbers, dashes only"),
42
+ default: defaults.appName,
43
+ validate: (v) => /^[a-z0-9-]+$/.test(v) || c.red("Only lowercase letters, numbers, and dashes"),
44
+ },
45
+ {
46
+ type: "list",
47
+ name: "framework",
48
+ message: q("Framework"),
49
+ choices: [
50
+ { name: "Next.js — create-next-app@latest", value: "nextjs" },
51
+ { name: "Vite — create-vite@latest", value: "vite" },
52
+ { name: "Remix — create-remix@latest", value: "remix" },
53
+ { name: "Expo — create-expo-app@latest", value: "expo" },
54
+ ],
55
+ default: defaults.framework,
56
+ when: !options.framework,
57
+ },
58
+ {
59
+ type: "input",
60
+ name: "uiPkgName",
61
+ message: q("Shared UI package name"),
62
+ default: defaults.uiPkgName,
63
+ },
64
+ {
65
+ type: "list",
66
+ name: "pkgManager",
67
+ message: q("Package manager"),
68
+ choices: ["pnpm", "npm", "yarn", "bun"],
69
+ default: detectedPm ? detected(detectedPm) : defaults.pkgManager,
70
+ when: !detectedPm,
71
+ },
72
+ ]);
73
+ const appName = (answers.appName ?? defaults.appName);
74
+ const framework = (answers.framework ?? defaults.framework);
75
+ const uiPkgName = (answers.uiPkgName ?? defaults.uiPkgName);
76
+ const pm = (answers.pkgManager ?? detectedPm ?? defaults.pkgManager);
77
+ const appsDir = path.join(process.cwd(), "apps");
78
+ const appDir = path.join(appsDir, appName);
79
+ if (await pathExists(appDir)) {
80
+ printError({
81
+ title: `apps/${appName} already exists`,
82
+ recovery: [{ label: "Choose a different name or delete the existing directory:", cmd: `rm -rf apps/${appName}` }],
83
+ });
84
+ process.exit(1);
85
+ return;
86
+ }
87
+ // ─── Dry run ────────────────────────────────────────────────────────────────
88
+ if (options.dryRun) {
89
+ printSection(`[dry run] Scaffolding ${framework} app → apps/${appName}`);
90
+ const step = createStepRunner(3, true);
91
+ await step(`Run ${frameworkCliName(framework)}`, async () => { });
92
+ await step(`Add @workspace/${uiPkgName} dependency`, async () => { });
93
+ await step("Patch framework config for shared UI styles", async () => { });
94
+ printSuccess({
95
+ title: `apps/${appName} ready (dry run — nothing written)`,
96
+ commands: [
97
+ { cmd: `${pm} install` },
98
+ { cmd: devCmd(framework, pm, appName), comment: "start the app" },
99
+ ],
100
+ });
101
+ return;
102
+ }
103
+ // ─── Real scaffold ──────────────────────────────────────────────────────────
104
+ printSection(`Scaffolding ${framework} app → apps/${appName}`);
105
+ const step = createStepRunner(3);
106
+ await step(`Run ${frameworkCliName(framework)}`, async () => {
107
+ await scaffoldViaCli(framework, appName, appsDir, pm);
108
+ });
109
+ await step(`Add @workspace/${uiPkgName} dependency`, async () => {
110
+ await addUiDependency(appDir, uiPkgName, pm);
111
+ });
112
+ await step("Patch config for shared UI styles", async () => {
113
+ await patchConfig(framework, appDir, uiPkgName, appName);
114
+ });
115
+ printSuccess({
116
+ title: `apps/${appName} created`,
117
+ commands: [
118
+ { cmd: `${pm} install`, comment: "install workspace deps" },
119
+ { cmd: devCmd(framework, pm, appName), comment: framework === "expo" ? "start Expo dev server" : "start the app" },
120
+ ],
121
+ ...(framework === "expo" ? {
122
+ tips: [{ label: "Note:", cmd: "Expo uses NativeWind — shadcn components are web-only" }],
123
+ } : {}),
124
+ });
125
+ }
126
+ // ─── CLI runner ───────────────────────────────────────────────────────────────
127
+ async function scaffoldViaCli(framework, appName, appsDir, pm) {
128
+ const { default: fs } = await import("fs-extra");
129
+ await fs.ensureDir(appsDir);
130
+ switch (framework) {
131
+ case "nextjs":
132
+ await runInteractive(pmx(pm), pmxArgs(pm, "create-next-app@latest", [
133
+ appName,
134
+ "--ts",
135
+ "--tailwind",
136
+ "--eslint",
137
+ "--app",
138
+ "--src-dir",
139
+ "--no-import-alias",
140
+ `--use-${pm === "bun" ? "bun" : pm === "yarn" ? "yarn" : pm === "npm" ? "npm" : "pnpm"}`,
141
+ ]), { cwd: appsDir });
142
+ break;
143
+ case "vite":
144
+ await runInteractive(pmx(pm), pmxArgs(pm, "create-vite@latest", [
145
+ appName,
146
+ "--template", "react-ts",
147
+ ]), { cwd: appsDir });
148
+ break;
149
+ case "remix":
150
+ await runInteractive(pmx(pm), pmxArgs(pm, "create-remix@latest", [
151
+ appName,
152
+ "--yes",
153
+ ]), { cwd: appsDir });
154
+ break;
155
+ case "expo":
156
+ await runInteractive(pmx(pm), pmxArgs(pm, "create-expo-app@latest", [
157
+ appName,
158
+ "--template", "blank-typescript",
159
+ "--no-install",
160
+ ]), { cwd: appsDir });
161
+ break;
162
+ }
163
+ }
164
+ // ─── Add UI package dep ───────────────────────────────────────────────────────
165
+ async function addUiDependency(appDir, uiPkgName, pm) {
166
+ const pkgJsonPath = path.join(appDir, "package.json");
167
+ const { default: fs } = await import("fs-extra");
168
+ if (!(await pathExists(pkgJsonPath))) {
169
+ throw new Error(`package.json not found in ${appDir} — did the CLI scaffold succeed?`);
170
+ }
171
+ const pkgJson = await fs.readJson(pkgJsonPath);
172
+ pkgJson.dependencies = {
173
+ ...pkgJson.dependencies,
174
+ [`@workspace/${uiPkgName}`]: pmWorkspaceProtocol(pm),
175
+ };
176
+ await fs.writeJson(pkgJsonPath, pkgJson, { spaces: 2 });
177
+ }
178
+ // ─── Config patching ──────────────────────────────────────────────────────────
179
+ async function patchConfig(framework, appDir, uiPkgName, appName) {
180
+ switch (framework) {
181
+ case "nextjs":
182
+ await patchNextConfig(appDir, uiPkgName);
183
+ break;
184
+ case "vite":
185
+ await patchViteConfig(appDir, uiPkgName);
186
+ break;
187
+ case "remix":
188
+ await patchRemixConfig(appDir, uiPkgName);
189
+ break;
190
+ case "expo":
191
+ await patchExpoConfig(appDir, uiPkgName);
192
+ break;
193
+ }
194
+ }
195
+ // ── Next.js ───────────────────────────────────────────────────────────────────
196
+ async function patchNextConfig(appDir, uiPkgName) {
197
+ const { default: fs } = await import("fs-extra");
198
+ for (const cfgFile of ["next.config.ts", "next.config.js", "next.config.mjs"]) {
199
+ const cfgPath = path.join(appDir, cfgFile);
200
+ if (!(await pathExists(cfgPath)))
201
+ continue;
202
+ let src = await fs.readFile(cfgPath, "utf-8");
203
+ if (src.includes("transpilePackages")) {
204
+ if (!src.includes(`@workspace/${uiPkgName}`)) {
205
+ src = src.replace(/transpilePackages:\s*\[/, `transpilePackages: ["@workspace/${uiPkgName}", `);
206
+ }
207
+ }
208
+ else {
209
+ // create-next-app writes: const nextConfig: NextConfig = {};
210
+ src = src.replace(/(const nextConfig[^=]*=\s*\{)/, `$1\n transpilePackages: ["@workspace/${uiPkgName}"],`);
211
+ }
212
+ await fs.writeFile(cfgPath, src, "utf-8");
213
+ break;
214
+ }
215
+ // Inject shared styles import into layout.tsx
216
+ for (const layoutRel of ["src/app/layout.tsx", "app/layout.tsx", "src/app/layout.jsx"]) {
217
+ const layoutPath = path.join(appDir, layoutRel);
218
+ if (!(await pathExists(layoutPath)))
219
+ continue;
220
+ let src = await fs.readFile(layoutPath, "utf-8");
221
+ if (!src.includes(`@workspace/${uiPkgName}`)) {
222
+ // Insert after the last consecutive import line
223
+ src = src.replace(/((?:^import[^\n]+\n)+)/m, `$1import "@workspace/${uiPkgName}/styles";\n`);
224
+ await fs.writeFile(layoutPath, src, "utf-8");
225
+ }
226
+ break;
227
+ }
228
+ }
229
+ // ── Vite ──────────────────────────────────────────────────────────────────────
230
+ async function patchViteConfig(appDir, uiPkgName) {
231
+ const { default: fs } = await import("fs-extra");
232
+ for (const cfgFile of ["vite.config.ts", "vite.config.js"]) {
233
+ const cfgPath = path.join(appDir, cfgFile);
234
+ if (!(await pathExists(cfgPath)))
235
+ continue;
236
+ let src = await fs.readFile(cfgPath, "utf-8");
237
+ if (!src.includes("@tailwindcss/vite") && !src.includes("tailwindcss")) {
238
+ src = `import tailwindcss from "@tailwindcss/vite";\n${src}`;
239
+ src = src.replace(/plugins:\s*\[/, `plugins: [tailwindcss(), `);
240
+ await fs.writeFile(cfgPath, src, "utf-8");
241
+ }
242
+ break;
243
+ }
244
+ // Add @tailwindcss/vite devDependency
245
+ const pkgPath = path.join(appDir, "package.json");
246
+ if (await pathExists(pkgPath)) {
247
+ const pkg = await fs.readJson(pkgPath);
248
+ pkg.devDependencies = { ...pkg.devDependencies, "@tailwindcss/vite": "^4.0.0" };
249
+ await fs.writeJson(pkgPath, pkg, { spaces: 2 });
250
+ }
251
+ // Inject shared styles import into main entry
252
+ for (const mainRel of ["src/main.tsx", "src/main.jsx", "src/main.ts"]) {
253
+ const mainPath = path.join(appDir, mainRel);
254
+ if (!(await pathExists(mainPath)))
255
+ continue;
256
+ let src = await fs.readFile(mainPath, "utf-8");
257
+ if (!src.includes(`@workspace/${uiPkgName}`)) {
258
+ src = `import "@workspace/${uiPkgName}/styles";\n${src}`;
259
+ await fs.writeFile(mainPath, src, "utf-8");
260
+ }
261
+ break;
262
+ }
263
+ }
264
+ // ── Remix ─────────────────────────────────────────────────────────────────────
265
+ async function patchRemixConfig(appDir, uiPkgName) {
266
+ const { default: fs } = await import("fs-extra");
267
+ for (const cfgFile of ["vite.config.ts", "vite.config.js"]) {
268
+ const cfgPath = path.join(appDir, cfgFile);
269
+ if (!(await pathExists(cfgPath)))
270
+ continue;
271
+ let src = await fs.readFile(cfgPath, "utf-8");
272
+ if (!src.includes("@tailwindcss/vite") && !src.includes("tailwindcss")) {
273
+ src = `import tailwindcss from "@tailwindcss/vite";\n${src}`;
274
+ src = src.replace(/plugins:\s*\[/, `plugins: [tailwindcss(), `);
275
+ await fs.writeFile(cfgPath, src, "utf-8");
276
+ }
277
+ break;
278
+ }
279
+ const pkgPath = path.join(appDir, "package.json");
280
+ if (await pathExists(pkgPath)) {
281
+ const pkg = await fs.readJson(pkgPath);
282
+ pkg.devDependencies = { ...pkg.devDependencies, "@tailwindcss/vite": "^4.0.0" };
283
+ await fs.writeJson(pkgPath, pkg, { spaces: 2 });
284
+ }
285
+ for (const rootRel of ["app/root.tsx", "app/root.jsx"]) {
286
+ const rootPath = path.join(appDir, rootRel);
287
+ if (!(await pathExists(rootPath)))
288
+ continue;
289
+ let src = await fs.readFile(rootPath, "utf-8");
290
+ if (!src.includes(`@workspace/${uiPkgName}`)) {
291
+ src = src.replace(/((?:^import[^\n]+\n)+)/m, `$1import "@workspace/${uiPkgName}/styles";\n`);
292
+ await fs.writeFile(rootPath, src, "utf-8");
293
+ }
294
+ break;
295
+ }
296
+ }
297
+ // ── Expo ──────────────────────────────────────────────────────────────────────
298
+ async function patchExpoConfig(appDir, uiPkgName) {
299
+ const { default: fs } = await import("fs-extra");
300
+ const pkgPath = path.join(appDir, "package.json");
301
+ if (await pathExists(pkgPath)) {
302
+ const pkg = await fs.readJson(pkgPath);
303
+ pkg.dependencies = { ...pkg.dependencies, nativewind: "^4.0.1", tailwindcss: "^3.4.0" };
304
+ pkg.devDependencies = { ...pkg.devDependencies, "babel-preset-expo": "~12.0.0" };
305
+ await fs.writeJson(pkgPath, pkg, { spaces: 2 });
306
+ }
307
+ await writeFile(path.join(appDir, "tailwind.config.js"), `/** @type {import('tailwindcss').Config} */
308
+ module.exports = {
309
+ content: ["./app/**/*.{js,jsx,ts,tsx}", "./components/**/*.{js,jsx,ts,tsx}"],
310
+ presets: [require("nativewind/preset")],
311
+ theme: { extend: {} },
312
+ plugins: [],
313
+ };
314
+ `);
315
+ await writeFile(path.join(appDir, "global.css"), `@tailwind base;\n@tailwind components;\n@tailwind utilities;\n`);
316
+ await writeFile(path.join(appDir, "babel.config.js"), `module.exports = function (api) {
317
+ api.cache(true);
318
+ return {
319
+ presets: [
320
+ ["babel-preset-expo", { jsxImportSource: "nativewind" }],
321
+ "nativewind/babel",
322
+ ],
323
+ };
324
+ };
325
+ `);
326
+ for (const layoutRel of ["app/_layout.tsx", "app/_layout.jsx"]) {
327
+ const layoutPath = path.join(appDir, layoutRel);
328
+ if (!(await pathExists(layoutPath)))
329
+ continue;
330
+ let src = await fs.readFile(layoutPath, "utf-8");
331
+ if (!src.includes("global.css")) {
332
+ src = `import "../global.css";\n${src}`;
333
+ await fs.writeFile(layoutPath, src, "utf-8");
334
+ }
335
+ break;
336
+ }
337
+ }
338
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
339
+ function frameworkCliName(framework) {
340
+ switch (framework) {
341
+ case "nextjs": return "create-next-app@latest";
342
+ case "vite": return "create-vite@latest";
343
+ case "remix": return "create-remix@latest";
344
+ case "expo": return "create-expo-app@latest";
345
+ default: return `create-${framework}@latest`;
346
+ }
347
+ }
348
+ function devCmd(framework, pm, appName) {
349
+ if (framework === "expo")
350
+ return `cd apps/${appName} && ${pm} start`;
351
+ return `${pm} dev --filter=${appName}`;
352
+ }
353
+ /**
354
+ * Called by init.ts to scaffold the optional example Next.js app.
355
+ * Runs create-next-app@latest inside <workspaceRoot>/apps/, then
356
+ * wires the shared UI package in exactly the same way add-app does.
357
+ */
358
+ export async function scaffoldExampleApp(workspaceRoot, appName, uiPkgName, pm) {
359
+ const appsDir = path.join(workspaceRoot, "apps");
360
+ const appDir = path.join(appsDir, appName);
361
+ await scaffoldViaCli("nextjs", appName, appsDir, pm);
362
+ await addUiDependency(appDir, uiPkgName, pm);
363
+ await patchNextConfig(appDir, uiPkgName);
364
+ }
365
+ //# sourceMappingURL=add-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-app.js","sourceRoot":"","sources":["../../src/commands/add-app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function addComponentCommand(components: string[]): Promise<void>;
2
+ //# sourceMappingURL=add-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-component.d.ts","sourceRoot":"","sources":["../../src/commands/add-component.ts"],"names":[],"mappings":"AAkBA,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D7E"}
@@ -0,0 +1,110 @@
1
+ import inquirer from "inquirer";
2
+ import path from "path";
3
+ import { pathExists, writeFile } from "../files.js";
4
+ import { run, pmx, pmxArgs, detectPackageManager } from "../exec.js";
5
+ import { q, c, printSuccess, printError } from "../ui.js";
6
+ const ALL_SHADCN_COMPONENTS = [
7
+ "accordion", "alert", "alert-dialog", "aspect-ratio", "avatar",
8
+ "badge", "breadcrumb", "button", "calendar", "card", "carousel",
9
+ "chart", "checkbox", "collapsible", "command", "context-menu",
10
+ "dialog", "drawer", "dropdown-menu", "form", "hover-card",
11
+ "input", "input-otp", "label", "menubar", "navigation-menu",
12
+ "pagination", "popover", "progress", "radio-group", "resizable",
13
+ "scroll-area", "select", "separator", "sheet", "sidebar",
14
+ "skeleton", "slider", "sonner", "switch", "table", "tabs",
15
+ "textarea", "toast", "toggle", "toggle-group", "tooltip",
16
+ ];
17
+ export async function addComponentCommand(components) {
18
+ const uiPkgDir = await detectUiPackageDir();
19
+ if (!uiPkgDir) {
20
+ printError({
21
+ title: "UI package not found",
22
+ detail: "Run from the monorepo root or packages/ui directory.",
23
+ recovery: [
24
+ { label: "From monorepo root:", cmd: "nx-factory add-component button" },
25
+ { label: "Or from the UI package:", cmd: "cd packages/ui && nx-factory add-component button" },
26
+ ],
27
+ });
28
+ process.exit(1);
29
+ return;
30
+ }
31
+ let selectedComponents = components;
32
+ if (selectedComponents.length === 0) {
33
+ const answers = await inquirer.prompt({
34
+ type: "checkbox",
35
+ name: "components",
36
+ message: q("Which shadcn components do you want to add?", "space to toggle · enter to confirm"),
37
+ choices: ALL_SHADCN_COMPONENTS,
38
+ validate: (v) => v.length > 0 || c.red("Select at least one component"),
39
+ });
40
+ selectedComponents = answers.components;
41
+ }
42
+ const pm = (await detectPackageManager()) ?? "npm";
43
+ const pkgName = path.basename(uiPkgDir);
44
+ console.log(`\n ${c.dim("─".repeat(36))}`);
45
+ console.log(` ${c.dim(`Adding to @workspace/${pkgName}: ${selectedComponents.join(", ")}`)}`);
46
+ console.log(` ${c.dim("─".repeat(36))}\n`);
47
+ try {
48
+ await run(pmx(pm), pmxArgs(pm, "shadcn@latest", ["add", "--yes", ...selectedComponents]), { cwd: uiPkgDir });
49
+ await updateBarrelExports(uiPkgDir, selectedComponents);
50
+ const importLine = `import { ${selectedComponents.map(toComponentName).join(", ")} } from "@workspace/${pkgName}";`;
51
+ printSuccess({
52
+ title: `${selectedComponents.length} component${selectedComponents.length > 1 ? "s" : ""} added`,
53
+ commands: [{ cmd: importLine, comment: "use in any app" }],
54
+ });
55
+ }
56
+ catch (err) {
57
+ printError({
58
+ title: "Failed to add components",
59
+ detail: String(err).split("\n")[0],
60
+ recovery: selectedComponents.map((comp) => ({
61
+ label: "",
62
+ cmd: `${pmx(pm)} ${pmxArgs(pm, "shadcn@latest", ["add", comp]).join(" ")}`,
63
+ })),
64
+ });
65
+ process.exit(1);
66
+ return;
67
+ }
68
+ }
69
+ async function detectUiPackageDir() {
70
+ if (await pathExists(path.join(process.cwd(), "components.json"))) {
71
+ return process.cwd();
72
+ }
73
+ const packagesDir = path.join(process.cwd(), "packages");
74
+ if (await pathExists(packagesDir)) {
75
+ const { default: fs } = await import("fs-extra");
76
+ const dirs = await fs.readdir(packagesDir);
77
+ for (const d of dirs) {
78
+ const candidate = path.join(packagesDir, d);
79
+ if (await pathExists(path.join(candidate, "components.json"))) {
80
+ return candidate;
81
+ }
82
+ }
83
+ }
84
+ return null;
85
+ }
86
+ async function updateBarrelExports(uiPkgDir, components) {
87
+ const indexPath = path.join(uiPkgDir, "src/index.ts");
88
+ const { default: fs } = await import("fs-extra");
89
+ let existing = "";
90
+ if (await pathExists(indexPath)) {
91
+ existing = await fs.readFile(indexPath, "utf-8");
92
+ }
93
+ const newExports = components
94
+ .filter((comp) => !existing.includes(`./components/ui/${comp}`))
95
+ .map((comp) => `export * from "./components/ui/${comp}";`)
96
+ .join("\n");
97
+ if (newExports) {
98
+ if (existing && !existing.endsWith("\n"))
99
+ existing += "\n";
100
+ await writeFile(indexPath, existing + newExports + "\n");
101
+ console.log(` ${c.dim("✓")} ${c.dim("barrel exports updated in src/index.ts")}`);
102
+ }
103
+ }
104
+ function toComponentName(kebab) {
105
+ return kebab
106
+ .split("-")
107
+ .map((p) => p.charAt(0).toUpperCase() + p.slice(1))
108
+ .join("");
109
+ }
110
+ //# sourceMappingURL=add-component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-component.js","sourceRoot":"","sources":["../../src/commands/add-component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface AddLibOptions {
2
+ name?: string;
3
+ type?: string;
4
+ yes?: boolean;
5
+ dryRun?: boolean;
6
+ }
7
+ export declare function addLibCommand(options: AddLibOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=add-lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-lib.d.ts","sourceRoot":"","sources":["../../src/commands/add-lib.ts"],"names":[],"mappings":"AAUA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAK,MAAM,CAAC;IACjB,IAAI,CAAC,EAAK,MAAM,CAAC;IACjB,GAAG,CAAC,EAAM,OAAO,CAAC;IAClB,MAAM,CAAC,EAAG,OAAO,CAAC;CACnB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4JzE"}