dcntui 0.1.1 → 0.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyFjD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmHjD"}
@@ -4,6 +4,7 @@ import fs from 'node:fs';
4
4
  import path from 'node:path';
5
5
  import { renderBanner } from '../utils/banner.js';
6
6
  import { detectFramework, FRAMEWORK_OPTIONS } from '../utils/detect-framework.js';
7
+ import { CSS_OPTIONS, detectCss } from '../utils/detect-css.js';
7
8
  const CONFIG_FILE = 'dcntui.config.json';
8
9
  export async function initCommand() {
9
10
  console.clear();
@@ -69,5 +70,26 @@ export async function initCommand() {
69
70
  fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
70
71
  const frameworkLabel = FRAMEWORK_OPTIONS.find((f) => f.value === framework).label;
71
72
  clack.log.success(chalk.green(`Framework set to ${chalk.bold(frameworkLabel)}.`));
73
+ const detectedCss = detectCss(cwd);
74
+ if (detectedCss) {
75
+ const detected = CSS_OPTIONS.find((c) => c.value === detectedCss);
76
+ clack.log.info(`Detected CSS strategy: ${chalk.cyan(detected.label)}`);
77
+ }
78
+ else {
79
+ clack.log.warn('Could not auto-detect a CSS strategy. Please select one manually.');
80
+ }
81
+ const css = await clack.select({
82
+ message: 'CSS strategy:',
83
+ options: CSS_OPTIONS,
84
+ initialValue: detectedCss ?? 'css'
85
+ });
86
+ if (clack.isCancel(css)) {
87
+ clack.outro(chalk.yellow('Initialization cancelled.'));
88
+ process.exit(0);
89
+ }
90
+ config['css'] = css;
91
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
92
+ const cssLabel = CSS_OPTIONS.find((c) => c.value === css).label;
93
+ clack.log.success(chalk.green(`CSS strategy set to ${chalk.bold(cssLabel)}.`));
72
94
  }
73
95
  //# 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,8 @@
1
+ export type CssStrategy = 'tailwind-v4' | 'tailwind-v3' | 'scss' | 'css';
2
+ export interface CssOption {
3
+ value: CssStrategy;
4
+ label: string;
5
+ }
6
+ export declare const CSS_OPTIONS: CssOption[];
7
+ export declare function detectCss(cwd: string): CssStrategy | null;
8
+ //# sourceMappingURL=detect-css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-css.d.ts","sourceRoot":"","sources":["../../src/utils/detect-css.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,EAKlC,CAAC;AAoCF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAgCzD"}
@@ -0,0 +1,67 @@
1
+ import fg from 'fast-glob';
2
+ import fs from 'node:fs';
3
+ import { fileExists, hasDep, readPackageJson } from './helpers.js';
4
+ export const CSS_OPTIONS = [
5
+ { value: 'tailwind-v4', label: 'Tailwind CSS v4' },
6
+ { value: 'tailwind-v3', label: 'Tailwind CSS v3' },
7
+ { value: 'scss', label: 'SASS / SCSS' },
8
+ { value: 'css', label: 'Plain CSS' }
9
+ ];
10
+ const IGNORE = ['**/node_modules/**', '**/.git/**', '**/dist/**', '**/.next/**', '**/.svelte-kit/**', '**/build/**'];
11
+ function hasTailwindV4Import(cwd) {
12
+ const cssFiles = fg.sync('**/*.css', { cwd, ignore: IGNORE, deep: 4, absolute: true });
13
+ const pattern = /@import\s+['"]tailwindcss['"]/;
14
+ for (const file of cssFiles) {
15
+ try {
16
+ if (pattern.test(fs.readFileSync(file, 'utf-8')))
17
+ return true;
18
+ }
19
+ catch {
20
+ // unreadable file — skip
21
+ }
22
+ }
23
+ return false;
24
+ }
25
+ function hasScssFiles(cwd) {
26
+ return fg.sync('**/*.scss', { cwd, ignore: IGNORE, deep: 4 }).length > 0;
27
+ }
28
+ function tailwindMajorVersion(pkg) {
29
+ const deps = {
30
+ ...pkg['dependencies'],
31
+ ...pkg['devDependencies']
32
+ };
33
+ const raw = deps['tailwindcss'];
34
+ if (!raw)
35
+ return null;
36
+ const match = raw.match(/(\d+)\./);
37
+ return match ? parseInt(match[1], 10) : null;
38
+ }
39
+ export function detectCss(cwd) {
40
+ const pkg = readPackageJson(cwd);
41
+ if (!pkg)
42
+ return null;
43
+ const hasConfigJs = fileExists(cwd, 'tailwind.config.js');
44
+ const hasConfigTs = fileExists(cwd, 'tailwind.config.ts');
45
+ const hasTailwindConfig = hasConfigJs || hasConfigTs;
46
+ if (!hasTailwindConfig && hasTailwindV4Import(cwd)) {
47
+ return 'tailwind-v4';
48
+ }
49
+ const twMajor = tailwindMajorVersion(pkg);
50
+ if (!hasTailwindConfig && twMajor !== null && twMajor >= 4) {
51
+ return 'tailwind-v4';
52
+ }
53
+ if (hasTailwindConfig) {
54
+ return 'tailwind-v3';
55
+ }
56
+ if (twMajor !== null && twMajor === 3) {
57
+ return 'tailwind-v3';
58
+ }
59
+ if (hasDep(pkg, 'sass') || hasDep(pkg, 'sass-embedded')) {
60
+ return 'scss';
61
+ }
62
+ if (hasScssFiles(cwd)) {
63
+ return 'scss';
64
+ }
65
+ return 'css';
66
+ }
67
+ //# sourceMappingURL=detect-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-css.js","sourceRoot":"","sources":["../../src/utils/detect-css.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect-framework.d.ts","sourceRoot":"","sources":["../../src/utils/detect-framework.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAM9C,CAAC;AAuBF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAwB7D"}
1
+ {"version":3,"file":"detect-framework.d.ts","sourceRoot":"","sources":["../../src/utils/detect-framework.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAM9C,CAAC;AAEF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAwB7D"}
@@ -1,5 +1,4 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
1
+ import { dirExists, hasDep, readPackageJson } from './helpers.js';
3
2
  export const FRAMEWORK_OPTIONS = [
4
3
  { value: 'next-app', label: 'Next.js App Router' },
5
4
  { value: 'next-pages', label: 'Next.js Pages Router' },
@@ -7,23 +6,6 @@ export const FRAMEWORK_OPTIONS = [
7
6
  { value: 'svelte', label: 'Svelte' },
8
7
  { value: 'react', label: 'React' }
9
8
  ];
10
- function readPackageJson(cwd) {
11
- try {
12
- const raw = fs.readFileSync(path.join(cwd, 'package.json'), 'utf-8');
13
- return JSON.parse(raw);
14
- }
15
- catch {
16
- return null;
17
- }
18
- }
19
- function hasDep(pkg, name) {
20
- const deps = (pkg['dependencies'] ?? {});
21
- const dev = (pkg['devDependencies'] ?? {});
22
- return name in deps || name in dev;
23
- }
24
- function dirExists(cwd, dir) {
25
- return fs.existsSync(path.join(cwd, dir));
26
- }
27
9
  export function detectFramework(cwd) {
28
10
  const pkg = readPackageJson(cwd);
29
11
  if (!pkg)
@@ -1 +1 @@
1
- {"version":3,"file":"detect-framework.js","sourceRoot":"","sources":["../../src/utils/detect-framework.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,oBAAoB,EAAE;IAClD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACtD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE;IAC3C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;CACnC,CAAC;AAEF,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,GAA4B,EAAE,IAAY;IACxD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAA2B,CAAC;IACnE,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAA2B,CAAC;IAErE,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW;IACzC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,IAAI,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC;QAAE,OAAO,YAAY,CAAC;IAEtD,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE3C,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAErE,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAE3E,IAAI,SAAS,IAAI,CAAC,WAAW;YAAE,OAAO,UAAU,CAAC;QACjD,IAAI,WAAW,IAAI,CAAC,SAAS;YAAE,OAAO,YAAY,CAAC;QAEnD,IAAI,SAAS,IAAI,WAAW;YAAE,OAAO,UAAU,CAAC;QAEhD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAEzC,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"detect-framework.js","sourceRoot":"","sources":["../../src/utils/detect-framework.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAUlE,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,oBAAoB,EAAE;IAClD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,sBAAsB,EAAE;IACtD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE;IAC3C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;CACnC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,IAAI,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC;QAAE,OAAO,YAAY,CAAC;IAEtD,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE3C,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAErE,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAE3E,IAAI,SAAS,IAAI,CAAC,WAAW;YAAE,OAAO,UAAU,CAAC;QACjD,IAAI,WAAW,IAAI,CAAC,SAAS;YAAE,OAAO,YAAY,CAAC;QAEnD,IAAI,SAAS,IAAI,WAAW;YAAE,OAAO,UAAU,CAAC;QAEhD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAEzC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function readPackageJson(cwd: string): Record<string, unknown> | null;
2
+ export declare function hasDep(pkg: Record<string, unknown>, name: string): boolean;
3
+ export declare function dirExists(cwd: string, dir: string): boolean;
4
+ export declare function fileExists(cwd: string, ...segments: string[]): boolean;
5
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQ3E;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAK1E;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAEtE"}
@@ -0,0 +1,23 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ export function readPackageJson(cwd) {
4
+ try {
5
+ const raw = fs.readFileSync(path.join(cwd, 'package.json'), 'utf-8');
6
+ return JSON.parse(raw);
7
+ }
8
+ catch {
9
+ return null;
10
+ }
11
+ }
12
+ export function hasDep(pkg, name) {
13
+ const deps = (pkg['dependencies'] ?? {});
14
+ const dev = (pkg['devDependencies'] ?? {});
15
+ return name in deps || name in dev;
16
+ }
17
+ export function dirExists(cwd, dir) {
18
+ return fs.existsSync(path.join(cwd, dir));
19
+ }
20
+ export function fileExists(cwd, ...segments) {
21
+ return fs.existsSync(path.join(cwd, ...segments));
22
+ }
23
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAA4B,EAAE,IAAY;IAC/D,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAA2B,CAAC;IACnE,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAA2B,CAAC;IAErE,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,GAAW;IAChD,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,GAAG,QAAkB;IAC3D,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AACpD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dcntui",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "CLI for initializing DCNT UI and adding components to projects",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -18,7 +18,8 @@
18
18
  "dependencies": {
19
19
  "@clack/prompts": "^0.7.0",
20
20
  "chalk": "^5.3.0",
21
- "commander": "^12.0.0"
21
+ "commander": "^12.0.0",
22
+ "fast-glob": "^3.3.3"
22
23
  },
23
24
  "devDependencies": {
24
25
  "@types/node": "^20.0.0",