dcntui 0.1.6 → 0.1.8

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 (80) hide show
  1. package/dist/commands/add.d.ts +2 -0
  2. package/dist/commands/add.d.ts.map +1 -0
  3. package/dist/commands/add.js +204 -0
  4. package/dist/commands/add.js.map +1 -0
  5. package/dist/commands/config.d.ts +2 -0
  6. package/dist/commands/config.d.ts.map +1 -0
  7. package/dist/commands/config.js +68 -0
  8. package/dist/commands/config.js.map +1 -0
  9. package/dist/commands/doctor.d.ts +2 -0
  10. package/dist/commands/doctor.d.ts.map +1 -0
  11. package/dist/commands/doctor.js +348 -0
  12. package/dist/commands/doctor.js.map +1 -0
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +10 -153
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/list.d.ts +6 -0
  17. package/dist/commands/list.d.ts.map +1 -0
  18. package/dist/commands/list.js +104 -0
  19. package/dist/commands/list.js.map +1 -0
  20. package/dist/commands/remove.d.ts +2 -0
  21. package/dist/commands/remove.d.ts.map +1 -0
  22. package/dist/commands/remove.js +87 -0
  23. package/dist/commands/remove.js.map +1 -0
  24. package/dist/commands/search.d.ts +2 -0
  25. package/dist/commands/search.d.ts.map +1 -0
  26. package/dist/commands/search.js +124 -0
  27. package/dist/commands/search.js.map +1 -0
  28. package/dist/commands/update.d.ts +6 -0
  29. package/dist/commands/update.d.ts.map +1 -0
  30. package/dist/commands/update.js +247 -0
  31. package/dist/commands/update.js.map +1 -0
  32. package/dist/constants.d.ts +4 -0
  33. package/dist/constants.d.ts.map +1 -0
  34. package/dist/constants.js +4 -0
  35. package/dist/constants.js.map +1 -0
  36. package/dist/index.js +27 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/utils/banner.d.ts.map +1 -1
  39. package/dist/utils/banner.js.map +1 -1
  40. package/dist/utils/config.d.ts +17 -0
  41. package/dist/utils/config.d.ts.map +1 -0
  42. package/dist/utils/config.js +41 -0
  43. package/dist/utils/config.js.map +1 -0
  44. package/dist/utils/detect-css.d.ts +6 -6
  45. package/dist/utils/detect-css.d.ts.map +1 -1
  46. package/dist/utils/detect-css.js +16 -12
  47. package/dist/utils/detect-css.js.map +1 -1
  48. package/dist/utils/detect-framework.d.ts +1 -1
  49. package/dist/utils/detect-framework.d.ts.map +1 -1
  50. package/dist/utils/detect-package-manager.d.ts +5 -0
  51. package/dist/utils/detect-package-manager.d.ts.map +1 -0
  52. package/dist/utils/detect-package-manager.js +40 -0
  53. package/dist/utils/detect-package-manager.js.map +1 -0
  54. package/dist/utils/detect-typescript.d.ts.map +1 -1
  55. package/dist/utils/detect-typescript.js.map +1 -1
  56. package/dist/utils/helpers.d.ts +1 -2
  57. package/dist/utils/helpers.d.ts.map +1 -1
  58. package/dist/utils/helpers.js +3 -13
  59. package/dist/utils/helpers.js.map +1 -1
  60. package/dist/utils/lock.d.ts +6 -0
  61. package/dist/utils/lock.d.ts.map +1 -0
  62. package/dist/utils/lock.js +30 -0
  63. package/dist/utils/lock.js.map +1 -0
  64. package/dist/utils/registry.d.ts +57 -0
  65. package/dist/utils/registry.d.ts.map +1 -0
  66. package/dist/utils/registry.js +158 -0
  67. package/dist/utils/registry.js.map +1 -0
  68. package/dist/utils/search.d.ts +21 -0
  69. package/dist/utils/search.d.ts.map +1 -0
  70. package/dist/utils/search.js +104 -0
  71. package/dist/utils/search.js.map +1 -0
  72. package/dist/utils/wizard.d.ts +12 -0
  73. package/dist/utils/wizard.d.ts.map +1 -0
  74. package/dist/utils/wizard.js +168 -0
  75. package/dist/utils/wizard.js.map +1 -0
  76. package/dist/utils/write-component.d.ts +13 -0
  77. package/dist/utils/write-component.d.ts.map +1 -0
  78. package/dist/utils/write-component.js +132 -0
  79. package/dist/utils/write-component.js.map +1 -0
  80. package/package.json +1 -1
@@ -0,0 +1,348 @@
1
+ import * as clack from '@clack/prompts';
2
+ import chalk from 'chalk';
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+ import { readConfig, ConfigError } from '../utils/config.js';
6
+ import { detectFramework, FRAMEWORK_OPTIONS } from '../utils/detect-framework.js';
7
+ import { detectCss } from '../utils/detect-css.js';
8
+ import { detectTypeScript } from '../utils/detect-typescript.js';
9
+ import { verifyPremiumToken } from '../utils/registry.js';
10
+ import { readLock } from '../utils/lock.js';
11
+ import { detectPackageManager, getPackageRunner } from '../utils/detect-package-manager.js';
12
+ const ICONS = {
13
+ pass: chalk.green('✔'),
14
+ warn: chalk.yellow('⚠'),
15
+ fail: chalk.red('✖')
16
+ };
17
+ function renderCheck(result) {
18
+ const icon = ICONS[result.status];
19
+ const label = result.status === 'pass'
20
+ ? chalk.white(result.label)
21
+ : result.status === 'warn'
22
+ ? chalk.yellow(result.label)
23
+ : chalk.red(result.label);
24
+ console.log(` ${icon} ${label}`);
25
+ if (result.detail) {
26
+ const lines = result.detail.split('\n');
27
+ for (const line of lines) {
28
+ console.log(` ${chalk.gray(line)}`);
29
+ }
30
+ }
31
+ }
32
+ function checkConfig(cwd) {
33
+ try {
34
+ const config = readConfig(cwd);
35
+ return {
36
+ result: { label: 'Config valid', status: 'pass' },
37
+ config
38
+ };
39
+ }
40
+ catch (err) {
41
+ return {
42
+ result: {
43
+ label: 'Config valid',
44
+ status: 'fail',
45
+ detail: err instanceof ConfigError ? err.message : 'Unexpected error reading dcntui.config.json.'
46
+ },
47
+ config: null
48
+ };
49
+ }
50
+ }
51
+ function checkFrameworkConsistency(cwd, config) {
52
+ const detected = detectFramework(cwd);
53
+ const configured = config.framework;
54
+ const pm = detectPackageManager(cwd);
55
+ const packageRunner = getPackageRunner(pm);
56
+ if (detected === null) {
57
+ return {
58
+ label: 'Framework consistency',
59
+ status: 'warn',
60
+ detail: `Config says: ${chalk.cyan(configured)}\n` +
61
+ `Detected: ${chalk.yellow('none')}\n` +
62
+ 'Could not detect a framework from package.json. Config may be from a different directory.'
63
+ };
64
+ }
65
+ if (detected !== configured) {
66
+ const detectedLabel = FRAMEWORK_OPTIONS.find((f) => f.value === detected)?.label ?? detected;
67
+ const configuredLabel = FRAMEWORK_OPTIONS.find((f) => f.value === configured)?.label ?? configured;
68
+ return {
69
+ label: 'Framework consistency',
70
+ status: 'warn',
71
+ detail: `Config says: ${chalk.cyan(configuredLabel)}\n` +
72
+ `Detected: ${chalk.yellow(detectedLabel)}\n` +
73
+ `Run ${chalk.cyan(`${packageRunner} dcntui init`)} to update your config if your framework has changed.`
74
+ };
75
+ }
76
+ const label = FRAMEWORK_OPTIONS.find((f) => f.value === configured)?.label ?? configured;
77
+ return {
78
+ label: `Framework: ${label}`,
79
+ status: 'pass'
80
+ };
81
+ }
82
+ function checkCssIntegration(cwd, config) {
83
+ const detected = detectCss(cwd);
84
+ const pm = detectPackageManager(cwd);
85
+ const packageRunner = getPackageRunner(pm);
86
+ if (detected !== config.css) {
87
+ return {
88
+ label: 'CSS integration',
89
+ status: 'warn',
90
+ detail: `Config says: ${chalk.cyan(config.css)}\n` +
91
+ `Detected: ${chalk.yellow(detected ?? 'none')}\n` +
92
+ `Run ${chalk.cyan(`${packageRunner} dcntui init`)} to update your config if your CSS strategy has changed.`
93
+ };
94
+ }
95
+ const stylesPath = path.join(cwd, config.stylesFile);
96
+ if (!fs.existsSync(stylesPath)) {
97
+ return {
98
+ label: 'CSS integration',
99
+ status: 'warn',
100
+ detail: `Styles file not found: ${chalk.yellow(config.stylesFile)}\n` +
101
+ `Create it or update ${chalk.cyan('stylesFile')} in dcntui.config.json.`
102
+ };
103
+ }
104
+ if (config.css === 'tailwind-v4') {
105
+ const content = fs.readFileSync(stylesPath, 'utf-8');
106
+ if (!/@import\s+['"]tailwindcss['"]/.test(content)) {
107
+ return {
108
+ label: 'Tailwind v4 integration',
109
+ status: 'warn',
110
+ detail: `${config.stylesFile} is missing ${chalk.cyan('@import "tailwindcss"')}.\n` +
111
+ 'Add it to the top of your base styles file to enable Tailwind v4.'
112
+ };
113
+ }
114
+ return { label: 'Tailwind v4 integration', status: 'pass' };
115
+ }
116
+ if (config.css === 'tailwind-v3') {
117
+ const hasConfig = fs.existsSync(path.join(cwd, 'tailwind.config.js')) || fs.existsSync(path.join(cwd, 'tailwind.config.ts'));
118
+ if (!hasConfig) {
119
+ return {
120
+ label: 'Tailwind v3 integration',
121
+ status: 'warn',
122
+ detail: 'No tailwind.config.js or tailwind.config.ts found.\n' + 'Create one to enable Tailwind v3.'
123
+ };
124
+ }
125
+ return { label: 'Tailwind v3 integration', status: 'pass' };
126
+ }
127
+ return { label: `CSS: ${config.css}`, status: 'pass' };
128
+ }
129
+ function checkTypeScriptConsistency(cwd, config) {
130
+ const detected = detectTypeScript(cwd);
131
+ const pm = detectPackageManager(cwd);
132
+ const packageRunner = getPackageRunner(pm);
133
+ if (detected && !config.typescript) {
134
+ return {
135
+ label: 'TypeScript consistency',
136
+ status: 'warn',
137
+ detail: `TypeScript detected in the project but config says ${chalk.yellow('false')}.\n` +
138
+ `Run ${chalk.cyan(`${packageRunner} dcntui init`)} to update your config.`
139
+ };
140
+ }
141
+ if (!detected && config.typescript) {
142
+ return {
143
+ label: 'TypeScript consistency',
144
+ status: 'warn',
145
+ detail: `Config says TypeScript but no tsconfig.json or typescript dep found.\n` +
146
+ `Run ${chalk.cyan(`${packageRunner} dcntui init`)} to update your config.`
147
+ };
148
+ }
149
+ return {
150
+ label: `Language: ${config.typescript ? 'TypeScript' : 'JavaScript'}`,
151
+ status: 'pass'
152
+ };
153
+ }
154
+ function checkDependencies(cwd) {
155
+ const lock = readLock(cwd);
156
+ const installed = Object.keys(lock);
157
+ const pm = detectPackageManager(cwd);
158
+ const packageRunner = getPackageRunner(pm);
159
+ if (installed.length === 0) {
160
+ return {
161
+ label: 'Component dependencies',
162
+ status: 'pass',
163
+ detail: 'No components installed yet.'
164
+ };
165
+ }
166
+ const missing = [];
167
+ const nodeModulesPath = path.join(cwd, 'node_modules');
168
+ if (!fs.existsSync(nodeModulesPath)) {
169
+ return {
170
+ label: 'Component dependencies',
171
+ status: 'fail',
172
+ detail: 'node_modules directory not found.\n' + 'Run your package manager install command first.'
173
+ };
174
+ }
175
+ for (const componentName of installed) {
176
+ const metaPath = path.join(cwd, '.dcntui', `${componentName}.json`);
177
+ if (!fs.existsSync(metaPath))
178
+ continue;
179
+ try {
180
+ const meta = JSON.parse(fs.readFileSync(metaPath, 'utf-8'));
181
+ for (const dep of meta.dependencies ?? []) {
182
+ const depPath = path.join(nodeModulesPath, dep);
183
+ if (!fs.existsSync(depPath)) {
184
+ missing.push(`${dep} (required by ${componentName})`);
185
+ }
186
+ }
187
+ }
188
+ catch { }
189
+ }
190
+ if (missing.length > 0) {
191
+ return {
192
+ label: 'Component dependencies',
193
+ status: 'fail',
194
+ detail: `Missing packages:\n` +
195
+ missing.map((m) => ` ${chalk.red(m)}`).join('\n') +
196
+ '\n' +
197
+ `Run ${chalk.cyan(`${packageRunner} dcntui doctor --fix`)} or install them manually.`
198
+ };
199
+ }
200
+ return {
201
+ label: `Component dependencies (${installed.length} component${installed.length === 1 ? '' : 's'} installed)`,
202
+ status: 'pass'
203
+ };
204
+ }
205
+ function checkGitIgnore(cwd, config) {
206
+ const token = process.env['DCNTUI_TOKEN'] || config.premiumToken;
207
+ if (!token || !config.premiumToken)
208
+ return null;
209
+ const pm = detectPackageManager(cwd);
210
+ const packageRunner = getPackageRunner(pm);
211
+ const gitignorePath = path.join(cwd, '.gitignore');
212
+ if (!fs.existsSync(gitignorePath)) {
213
+ return {
214
+ label: 'Premium token security',
215
+ status: 'warn',
216
+ detail: 'premiumToken is set in dcntui.config.json but no .gitignore found.\n' +
217
+ 'Your token could be accidentally committed.\n' +
218
+ `Recommended: use ${chalk.cyan('DCNTUI_TOKEN=<token>')} environment variable instead.`
219
+ };
220
+ }
221
+ const gitignore = fs.readFileSync(gitignorePath, 'utf-8');
222
+ const isIgnored = gitignore.split('\n').some((line) => {
223
+ const trimmed = line.trim();
224
+ return trimmed === 'dcntui.config.json' || trimmed === '/dcntui.config.json';
225
+ });
226
+ if (!isIgnored) {
227
+ return {
228
+ label: 'Premium token security',
229
+ status: 'warn',
230
+ detail: 'premiumToken is set in dcntui.config.json which is not in .gitignore.\n' +
231
+ 'Your token could be accidentally committed to version control.\n\n' +
232
+ `Add to .gitignore: ${chalk.cyan('dcntui.config.json')}\n` +
233
+ `Or use instead: ${chalk.cyan(`DCNTUI_TOKEN=<token> ${packageRunner} dcntui add <component>`)}`
234
+ };
235
+ }
236
+ return { label: 'Premium token security', status: 'pass' };
237
+ }
238
+ async function checkPremiumToken(config) {
239
+ const token = process.env['DCNTUI_TOKEN'] || config.premiumToken;
240
+ if (!token)
241
+ return null;
242
+ const spinner = clack.spinner();
243
+ spinner.start('Verifying premium token…');
244
+ const valid = await verifyPremiumToken(config.registry, token);
245
+ spinner.stop('');
246
+ if (!valid) {
247
+ return {
248
+ label: 'Premium token',
249
+ status: 'fail',
250
+ detail: 'Token is invalid or expired.\n' + `Manage your subscription at ${chalk.underline.cyan('https://dcntui.com')}`
251
+ };
252
+ }
253
+ return { label: 'Premium token valid', status: 'pass' };
254
+ }
255
+ async function checkRegistryConnectivity(config) {
256
+ const base = config.registry.replace(/\/$/, '');
257
+ const url = `${base}/catalog.json`;
258
+ const spinner = clack.spinner();
259
+ spinner.start('Checking registry connectivity…');
260
+ try {
261
+ const res = await fetch(url, {
262
+ method: 'HEAD',
263
+ headers: { 'User-Agent': 'dcntui-cli' },
264
+ signal: AbortSignal.timeout(8000)
265
+ });
266
+ spinner.stop('');
267
+ if (!res.ok) {
268
+ return {
269
+ label: 'Registry connectivity',
270
+ status: 'warn',
271
+ detail: `Registry responded with HTTP ${res.status}.\nURL: ${url}`
272
+ };
273
+ }
274
+ return {
275
+ label: `Registry reachable (${config.registry})`,
276
+ status: 'pass'
277
+ };
278
+ }
279
+ catch {
280
+ spinner.stop('');
281
+ return {
282
+ label: 'Registry connectivity',
283
+ status: 'fail',
284
+ detail: `Could not reach ${url}\n` + 'Check your internet connection or verify the registry URL in dcntui.config.json.'
285
+ };
286
+ }
287
+ }
288
+ export async function doctorCommand() {
289
+ console.clear();
290
+ clack.intro(chalk.bgCyan.black(' DCNT UI DOCTOR '));
291
+ const cwd = process.cwd();
292
+ const results = [];
293
+ console.log();
294
+ const { result: configResult, config } = checkConfig(cwd);
295
+ results.push(configResult);
296
+ renderCheck(configResult);
297
+ if (!config) {
298
+ console.log();
299
+ clack.outro(chalk.red('Fix the config issues above before re-running dcntui doctor.'));
300
+ process.exit(1);
301
+ }
302
+ const frameworkResult = checkFrameworkConsistency(cwd, config);
303
+ results.push(frameworkResult);
304
+ renderCheck(frameworkResult);
305
+ const cssResult = checkCssIntegration(cwd, config);
306
+ results.push(cssResult);
307
+ renderCheck(cssResult);
308
+ const tsResult = checkTypeScriptConsistency(cwd, config);
309
+ results.push(tsResult);
310
+ renderCheck(tsResult);
311
+ const depsResult = checkDependencies(cwd);
312
+ results.push(depsResult);
313
+ renderCheck(depsResult);
314
+ const gitignoreResult = checkGitIgnore(cwd, config);
315
+ if (gitignoreResult) {
316
+ results.push(gitignoreResult);
317
+ renderCheck(gitignoreResult);
318
+ }
319
+ const tokenResult = await checkPremiumToken(config);
320
+ if (tokenResult) {
321
+ results.push(tokenResult);
322
+ renderCheck(tokenResult);
323
+ }
324
+ const registryResult = await checkRegistryConnectivity(config);
325
+ results.push(registryResult);
326
+ renderCheck(registryResult);
327
+ console.log();
328
+ const passes = results.filter((r) => r.status === 'pass').length;
329
+ const warns = results.filter((r) => r.status === 'warn').length;
330
+ const fails = results.filter((r) => r.status === 'fail').length;
331
+ const summaryParts = [];
332
+ if (passes > 0)
333
+ summaryParts.push(chalk.green(`${passes} passed`));
334
+ if (warns > 0)
335
+ summaryParts.push(chalk.yellow(`${warns} warning${warns === 1 ? '' : 's'}`));
336
+ if (fails > 0)
337
+ summaryParts.push(chalk.red(`${fails} failed`));
338
+ if (fails > 0) {
339
+ clack.outro(chalk.red('Issues found: ') + summaryParts.join(' · '));
340
+ process.exit(1);
341
+ }
342
+ if (warns > 0) {
343
+ clack.outro(chalk.yellow('Warnings found: ') + summaryParts.join(' · '));
344
+ return;
345
+ }
346
+ clack.outro(chalk.green('Everything looks good! ') + summaryParts.join(' · '));
347
+ }
348
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAYA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA6OjD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAkEjD"}
@@ -3,21 +3,17 @@ import chalk from 'chalk';
3
3
  import fs from 'node:fs';
4
4
  import path from 'node:path';
5
5
  import { renderBanner } from '../utils/banner.js';
6
- import { detectFramework, FRAMEWORK_OPTIONS } from '../utils/detect-framework.js';
7
- import { detectCss, detectBaseStylesFile, CSS_OPTIONS } from '../utils/detect-css.js';
8
- import { detectTypeScript } from '../utils/detect-typescript.js';
9
- import { detectPackageManager } from '../utils/helpers.js';
10
- const CONFIG_FILE = 'dcntui.config.json';
6
+ import { runConfigWizard } from '../utils/wizard.js';
7
+ import { CONFIG_FILE } from '../constants.js';
8
+ import { detectPackageManager, getPackageRunner } from '../utils/detect-package-manager.js';
11
9
  export async function initCommand() {
12
10
  console.clear();
13
- // Banner
14
11
  renderBanner();
15
- // Intro
16
- clack.intro(chalk.bgCyan.black(' DCNTUI INIT '));
17
- // Verify project root
12
+ clack.intro(chalk.bgCyan.black(' DCNT UI INIT '));
18
13
  const cwd = process.cwd();
19
- const packageJsonPath = path.join(cwd, 'package.json');
20
- if (!fs.existsSync(packageJsonPath)) {
14
+ const pm = detectPackageManager(cwd);
15
+ const packageRunner = getPackageRunner(pm);
16
+ if (!fs.existsSync(path.join(cwd, 'package.json'))) {
21
17
  clack.log.error(chalk.red('No package.json found in the current directory.\n\n' +
22
18
  'dcntui init must be run from the root of your project — ' +
23
19
  'the same folder that contains your package.json.'));
@@ -25,7 +21,6 @@ export async function initCommand() {
25
21
  process.exit(1);
26
22
  }
27
23
  clack.log.success(chalk.green("package.json found — you're in the right place."));
28
- // Detect existing config
29
24
  clack.log.info('Checking existing configuration…\n');
30
25
  const configPath = path.join(cwd, CONFIG_FILE);
31
26
  if (fs.existsSync(configPath)) {
@@ -44,151 +39,13 @@ export async function initCommand() {
44
39
  process.exit(0);
45
40
  }
46
41
  }
47
- // Framework detection
48
- const detectedFramework = detectFramework(cwd);
49
- if (detectedFramework) {
50
- const detected = FRAMEWORK_OPTIONS.find((f) => f.value === detectedFramework);
51
- clack.log.info(`Detected framework: ${chalk.cyan(detected.label)}`);
52
- }
53
- else {
54
- clack.log.warn('No supported framework detected.\n\n' +
55
- ' Supported: Next.js, React, Svelte, SvelteKit.\n' +
56
- ' Select your framework manually, or choose None to exit.');
57
- }
58
- const framework = await clack.select({
59
- message: 'Framework:',
60
- options: FRAMEWORK_OPTIONS,
61
- initialValue: detectedFramework
62
- });
63
- if (clack.isCancel(framework)) {
64
- clack.outro(chalk.yellow('Initialization cancelled.'));
65
- process.exit(0);
66
- }
67
- if (framework === null) {
68
- clack.log.error(chalk.red('DCNT UI requires a supported framework to function correctly.\n\n' +
69
- ' Supported frameworks: Next.js (App Router & Pages Router), React, Svelte, SvelteKit.\n'));
70
- clack.outro(chalk.red('Initialization aborted. Please set up a supported framework first.'));
71
- process.exit(1);
72
- }
73
- // Write / patch dcntui.config.json
74
- let config = {};
75
- if (fs.existsSync(configPath)) {
76
- try {
77
- config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
78
- }
79
- catch {
80
- config = {};
81
- }
82
- }
83
- config['version'] ?? (config['version'] = 1);
84
- config['registry'] ?? (config['registry'] = 'https://registry.dcntui.com');
85
- config['framework'] = framework;
86
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
87
- const frameworkLabel = FRAMEWORK_OPTIONS.find((f) => f.value === framework).label;
88
- clack.log.success(chalk.green(`Framework set to ${chalk.bold(frameworkLabel)}.`));
89
- // CSS strategy detection
90
- const detectedCss = detectCss(cwd);
91
- if (detectedCss) {
92
- const detected = CSS_OPTIONS.find((c) => c.value === detectedCss);
93
- clack.log.info(`Detected CSS strategy: ${chalk.cyan(detected.label)}`);
94
- }
95
- else {
96
- clack.log.warn('Could not auto-detect a CSS strategy. Please select one manually.');
97
- }
98
- const css = await clack.select({
99
- message: 'CSS strategy:',
100
- options: CSS_OPTIONS,
101
- initialValue: detectedCss ?? 'css'
102
- });
103
- if (clack.isCancel(css)) {
104
- clack.outro(chalk.yellow('Initialization cancelled.'));
105
- process.exit(0);
106
- }
107
- config['css'] = css;
108
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
109
- const cssLabel = CSS_OPTIONS.find((c) => c.value === css).label;
110
- clack.log.success(chalk.green(`CSS strategy set to ${chalk.bold(cssLabel)}.`));
111
- // Base styles file
112
- const detectedStylesFile = detectBaseStylesFile(cwd, css);
113
- if (detectedStylesFile) {
114
- clack.log.info(`Detected base styles file: ${chalk.cyan(detectedStylesFile)}`);
115
- }
116
- else {
117
- clack.log.warn('Could not find a base styles file. Please enter the path manually.');
118
- }
119
- const defaultStylesExt = css === 'scss' ? '.scss' : '.css';
120
- const defaultStylesFile = detectedStylesFile ?? `src/index${defaultStylesExt}`;
121
- const stylesFile = await clack.text({
122
- message: 'Base styles file:',
123
- placeholder: defaultStylesFile,
124
- defaultValue: defaultStylesFile,
125
- validate(value) {
126
- const trimmed = value.trim();
127
- if (trimmed.length === 0)
128
- return 'Styles file path cannot be empty.';
129
- if (path.isAbsolute(trimmed))
130
- return 'Please use a relative path (e.g. src/index.css).';
131
- if (trimmed.includes('..'))
132
- return 'Path must not traverse outside the project root.';
133
- const ext = path.extname(trimmed).toLowerCase();
134
- if (!['.css', '.scss'].includes(ext))
135
- return 'File must have a .css or .scss extension.';
136
- }
137
- });
138
- if (clack.isCancel(stylesFile)) {
139
- clack.outro(chalk.yellow('Initialization cancelled.'));
140
- process.exit(0);
141
- }
142
- config['stylesFile'] = stylesFile.trim();
143
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
144
- clack.log.success(chalk.green(`Base styles file set to ${chalk.bold(stylesFile.trim())}.`));
145
- // TypeScript detection
146
- const detectedTypeScript = detectTypeScript(cwd);
147
- clack.log.info(`Detected language: ${chalk.cyan(detectedTypeScript ? 'TypeScript' : 'JavaScript')}`);
148
- const typescript = await clack.confirm({
149
- message: 'Use TypeScript?',
150
- initialValue: detectedTypeScript
151
- });
152
- if (clack.isCancel(typescript)) {
153
- clack.outro(chalk.yellow('Initialization cancelled.'));
154
- process.exit(0);
155
- }
156
- config['typescript'] = typescript;
157
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
158
- clack.log.success(chalk.green(`Language set to ${chalk.bold(typescript ? 'TypeScript' : 'JavaScript')}.`));
159
- // Components directory
160
- const defaultComponentsDir = fs.existsSync(path.join(cwd, 'src')) ? 'src/components/ui' : 'components/ui';
161
- const componentsDir = await clack.text({
162
- message: 'Components directory:',
163
- placeholder: defaultComponentsDir,
164
- defaultValue: defaultComponentsDir,
165
- validate(value) {
166
- const trimmed = value.trim();
167
- if (trimmed.length === 0)
168
- return 'Directory path cannot be empty.';
169
- if (path.isAbsolute(trimmed))
170
- return 'Please use a relative path (e.g. src/components/ui).';
171
- if (trimmed.includes('..'))
172
- return 'Path must not traverse outside the project root.';
173
- }
174
- });
175
- if (clack.isCancel(componentsDir)) {
176
- clack.outro(chalk.yellow('Initialization cancelled.'));
177
- process.exit(0);
178
- }
179
- config['componentsDir'] = componentsDir.trim();
180
- config['premiumToken'] ?? (config['premiumToken'] = '');
181
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
182
- clack.log.success(chalk.green(`Components directory set to ${chalk.bold(componentsDir.trim())}.`));
183
- // Outro
184
- const pm = detectPackageManager(cwd);
185
- const pmCommand = pm === 'bun' ? 'bunx' : pm === 'pnpm' ? 'pnpm dlx' : pm === 'yarn' ? 'yarn dlx' : 'npx';
42
+ await runConfigWizard(cwd);
186
43
  clack.outro(chalk.cyan('DCNT UI initialized successfully!') +
187
44
  '\n\n ' +
188
45
  chalk.gray('Next steps:') +
189
46
  '\n ' +
190
- chalk.white(` Run ${chalk.cyan(`'${pmCommand} dcntui add <component>'`)} to install your first component.`) +
47
+ chalk.white(` Run ${chalk.cyan(`${packageRunner} dcntui add <component>`)} to install your first component.`) +
191
48
  '\n ' +
192
- chalk.white(` Run ${chalk.cyan(`'${pmCommand} dcntui list'`)} to browse available components.`));
49
+ chalk.white(` Run ${chalk.cyan(`${packageRunner} dcntui list`)} to browse available components.`));
193
50
  }
194
51
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface ListOptions {
2
+ installed: boolean;
3
+ }
4
+ export declare function listCommand(options: ListOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0HrE"}