benflux-ui 0.1.4 → 0.1.6
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.
- package/dist/bin/benflux-ui.js +44 -28
- package/dist/index.js +44 -28
- package/dist/index.mjs +44 -28
- package/package.json +2 -1
package/dist/bin/benflux-ui.js
CHANGED
|
@@ -35,8 +35,8 @@ var import_path2 = __toESM(require("path"));
|
|
|
35
35
|
var import_picocolors = __toESM(require("picocolors"));
|
|
36
36
|
|
|
37
37
|
// src/utils/detect-framework.ts
|
|
38
|
-
var import_path = __toESM(require("path"));
|
|
39
38
|
var import_fs_extra = __toESM(require("fs-extra"));
|
|
39
|
+
var import_path = __toESM(require("path"));
|
|
40
40
|
async function detectFramework(cwd) {
|
|
41
41
|
const pkgPath = import_path.default.join(cwd, "package.json");
|
|
42
42
|
if (!await import_fs_extra.default.pathExists(pkgPath)) return "unknown";
|
|
@@ -214,6 +214,7 @@ export function cn(...inputs: ClassValue[]) {
|
|
|
214
214
|
|
|
215
215
|
// src/commands/add.ts
|
|
216
216
|
var clack2 = __toESM(require("@clack/prompts"));
|
|
217
|
+
var import_checkbox = __toESM(require("@inquirer/checkbox"));
|
|
217
218
|
var import_execa2 = require("execa");
|
|
218
219
|
var import_fs_extra3 = __toESM(require("fs-extra"));
|
|
219
220
|
var import_path3 = __toESM(require("path"));
|
|
@@ -808,6 +809,16 @@ function getComponent(name) {
|
|
|
808
809
|
}
|
|
809
810
|
|
|
810
811
|
// src/commands/add.ts
|
|
812
|
+
var CATEGORY_ORDER = ["layout", "inputs", "navigation", "feedback", "data-display", "ai", "wow"];
|
|
813
|
+
var CATEGORY_LABEL = {
|
|
814
|
+
layout: "Layout",
|
|
815
|
+
inputs: "Inputs",
|
|
816
|
+
navigation: "Navigation",
|
|
817
|
+
feedback: "Feedback",
|
|
818
|
+
"data-display": "Data Display",
|
|
819
|
+
ai: "AI",
|
|
820
|
+
wow: "WOW Effects"
|
|
821
|
+
};
|
|
811
822
|
async function addCommand(components, options) {
|
|
812
823
|
const cwd = process.cwd();
|
|
813
824
|
clack2.intro(import_picocolors2.default.bgCyan(import_picocolors2.default.black(" Benflux UI \u2014 Add Components ")));
|
|
@@ -819,28 +830,29 @@ async function addCommand(components, options) {
|
|
|
819
830
|
const defaultDir = options.path ?? await getComponentsPath(cwd);
|
|
820
831
|
let selectedComponents = components;
|
|
821
832
|
if (selectedComponents.length === 0) {
|
|
822
|
-
const
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
(
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
833
|
+
const byCategory = /* @__PURE__ */ new Map();
|
|
834
|
+
for (const c of REGISTRY) {
|
|
835
|
+
const list = byCategory.get(c.category) ?? [];
|
|
836
|
+
list.push(c);
|
|
837
|
+
byCategory.set(c.category, list);
|
|
838
|
+
}
|
|
839
|
+
const choices = [];
|
|
840
|
+
for (const cat of CATEGORY_ORDER) {
|
|
841
|
+
const items = byCategory.get(cat);
|
|
842
|
+
if (!items?.length) continue;
|
|
843
|
+
choices.push(new import_checkbox.Separator(`\u2500\u2500 ${CATEGORY_LABEL[cat] ?? cat} \u2500\u2500`));
|
|
844
|
+
for (const c of items.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
845
|
+
choices.push({ name: c.name, value: c.name, description: c.description });
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
const selected = await (0, import_checkbox.default)({
|
|
849
|
+
message: "Which components would you like to add?",
|
|
850
|
+
choices,
|
|
851
|
+
pageSize: 16,
|
|
852
|
+
loop: false
|
|
841
853
|
});
|
|
842
|
-
if (
|
|
843
|
-
clack2.cancel("
|
|
854
|
+
if (!selected.length) {
|
|
855
|
+
clack2.cancel("No components selected.");
|
|
844
856
|
process.exit(0);
|
|
845
857
|
}
|
|
846
858
|
selectedComponents = selected;
|
|
@@ -896,14 +908,13 @@ async function addCommand(components, options) {
|
|
|
896
908
|
for (const component of validComponents) {
|
|
897
909
|
if (!component) continue;
|
|
898
910
|
spinner3.start(`Adding ${import_picocolors2.default.cyan(component.name)}...`);
|
|
911
|
+
let skipped = true;
|
|
899
912
|
for (const file of component.files) {
|
|
900
913
|
const targetPath = import_path3.default.join(cwd, defaultDir, import_path3.default.basename(file));
|
|
901
|
-
if (await import_fs_extra3.default.pathExists(targetPath)
|
|
902
|
-
|
|
903
|
-
`${import_picocolors2.default.yellow("skipped")} ${component.name} (already exists \u2014 use --overwrite to replace)`
|
|
904
|
-
);
|
|
905
|
-
continue;
|
|
914
|
+
if (await import_fs_extra3.default.pathExists(targetPath)) {
|
|
915
|
+
if (!options.overwrite) continue;
|
|
906
916
|
}
|
|
917
|
+
skipped = false;
|
|
907
918
|
await import_fs_extra3.default.ensureDir(import_path3.default.dirname(targetPath));
|
|
908
919
|
const localSrc = import_path3.default.join(cwd, "node_modules/@benflux-ui/react/src", file);
|
|
909
920
|
if (await import_fs_extra3.default.pathExists(localSrc)) {
|
|
@@ -918,10 +929,15 @@ async function addCommand(components, options) {
|
|
|
918
929
|
} catch (err) {
|
|
919
930
|
spinner3.stop(import_picocolors2.default.red(`Failed to fetch ${file}: ${err.message}`));
|
|
920
931
|
clack2.log.warn(`Download manually from: ${url}`);
|
|
932
|
+
continue;
|
|
921
933
|
}
|
|
922
934
|
}
|
|
923
935
|
}
|
|
924
|
-
|
|
936
|
+
if (skipped) {
|
|
937
|
+
spinner3.stop(`${import_picocolors2.default.yellow("skipped")} ${component.name} \u2014 already exists (use --overwrite to replace)`);
|
|
938
|
+
} else {
|
|
939
|
+
spinner3.stop(`${import_picocolors2.default.green("\u2713")} Added ${component.name}`);
|
|
940
|
+
}
|
|
925
941
|
}
|
|
926
942
|
clack2.outro(
|
|
927
943
|
[
|
package/dist/index.js
CHANGED
|
@@ -53,8 +53,8 @@ var import_path2 = __toESM(require("path"));
|
|
|
53
53
|
var import_picocolors = __toESM(require("picocolors"));
|
|
54
54
|
|
|
55
55
|
// src/utils/detect-framework.ts
|
|
56
|
-
var import_path = __toESM(require("path"));
|
|
57
56
|
var import_fs_extra = __toESM(require("fs-extra"));
|
|
57
|
+
var import_path = __toESM(require("path"));
|
|
58
58
|
async function detectFramework(cwd) {
|
|
59
59
|
const pkgPath = import_path.default.join(cwd, "package.json");
|
|
60
60
|
if (!await import_fs_extra.default.pathExists(pkgPath)) return "unknown";
|
|
@@ -232,6 +232,7 @@ export function cn(...inputs: ClassValue[]) {
|
|
|
232
232
|
|
|
233
233
|
// src/commands/add.ts
|
|
234
234
|
var clack2 = __toESM(require("@clack/prompts"));
|
|
235
|
+
var import_checkbox = __toESM(require("@inquirer/checkbox"));
|
|
235
236
|
var import_execa2 = require("execa");
|
|
236
237
|
var import_fs_extra3 = __toESM(require("fs-extra"));
|
|
237
238
|
var import_path3 = __toESM(require("path"));
|
|
@@ -835,6 +836,16 @@ function searchComponents(query) {
|
|
|
835
836
|
}
|
|
836
837
|
|
|
837
838
|
// src/commands/add.ts
|
|
839
|
+
var CATEGORY_ORDER = ["layout", "inputs", "navigation", "feedback", "data-display", "ai", "wow"];
|
|
840
|
+
var CATEGORY_LABEL = {
|
|
841
|
+
layout: "Layout",
|
|
842
|
+
inputs: "Inputs",
|
|
843
|
+
navigation: "Navigation",
|
|
844
|
+
feedback: "Feedback",
|
|
845
|
+
"data-display": "Data Display",
|
|
846
|
+
ai: "AI",
|
|
847
|
+
wow: "WOW Effects"
|
|
848
|
+
};
|
|
838
849
|
async function addCommand(components, options) {
|
|
839
850
|
const cwd = process.cwd();
|
|
840
851
|
clack2.intro(import_picocolors2.default.bgCyan(import_picocolors2.default.black(" Benflux UI \u2014 Add Components ")));
|
|
@@ -846,28 +857,29 @@ async function addCommand(components, options) {
|
|
|
846
857
|
const defaultDir = options.path ?? await getComponentsPath(cwd);
|
|
847
858
|
let selectedComponents = components;
|
|
848
859
|
if (selectedComponents.length === 0) {
|
|
849
|
-
const
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
(
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
860
|
+
const byCategory = /* @__PURE__ */ new Map();
|
|
861
|
+
for (const c of REGISTRY) {
|
|
862
|
+
const list = byCategory.get(c.category) ?? [];
|
|
863
|
+
list.push(c);
|
|
864
|
+
byCategory.set(c.category, list);
|
|
865
|
+
}
|
|
866
|
+
const choices = [];
|
|
867
|
+
for (const cat of CATEGORY_ORDER) {
|
|
868
|
+
const items = byCategory.get(cat);
|
|
869
|
+
if (!items?.length) continue;
|
|
870
|
+
choices.push(new import_checkbox.Separator(`\u2500\u2500 ${CATEGORY_LABEL[cat] ?? cat} \u2500\u2500`));
|
|
871
|
+
for (const c of items.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
872
|
+
choices.push({ name: c.name, value: c.name, description: c.description });
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
const selected = await (0, import_checkbox.default)({
|
|
876
|
+
message: "Which components would you like to add?",
|
|
877
|
+
choices,
|
|
878
|
+
pageSize: 16,
|
|
879
|
+
loop: false
|
|
868
880
|
});
|
|
869
|
-
if (
|
|
870
|
-
clack2.cancel("
|
|
881
|
+
if (!selected.length) {
|
|
882
|
+
clack2.cancel("No components selected.");
|
|
871
883
|
process.exit(0);
|
|
872
884
|
}
|
|
873
885
|
selectedComponents = selected;
|
|
@@ -923,14 +935,13 @@ async function addCommand(components, options) {
|
|
|
923
935
|
for (const component of validComponents) {
|
|
924
936
|
if (!component) continue;
|
|
925
937
|
spinner3.start(`Adding ${import_picocolors2.default.cyan(component.name)}...`);
|
|
938
|
+
let skipped = true;
|
|
926
939
|
for (const file of component.files) {
|
|
927
940
|
const targetPath = import_path3.default.join(cwd, defaultDir, import_path3.default.basename(file));
|
|
928
|
-
if (await import_fs_extra3.default.pathExists(targetPath)
|
|
929
|
-
|
|
930
|
-
`${import_picocolors2.default.yellow("skipped")} ${component.name} (already exists \u2014 use --overwrite to replace)`
|
|
931
|
-
);
|
|
932
|
-
continue;
|
|
941
|
+
if (await import_fs_extra3.default.pathExists(targetPath)) {
|
|
942
|
+
if (!options.overwrite) continue;
|
|
933
943
|
}
|
|
944
|
+
skipped = false;
|
|
934
945
|
await import_fs_extra3.default.ensureDir(import_path3.default.dirname(targetPath));
|
|
935
946
|
const localSrc = import_path3.default.join(cwd, "node_modules/@benflux-ui/react/src", file);
|
|
936
947
|
if (await import_fs_extra3.default.pathExists(localSrc)) {
|
|
@@ -945,10 +956,15 @@ async function addCommand(components, options) {
|
|
|
945
956
|
} catch (err) {
|
|
946
957
|
spinner3.stop(import_picocolors2.default.red(`Failed to fetch ${file}: ${err.message}`));
|
|
947
958
|
clack2.log.warn(`Download manually from: ${url}`);
|
|
959
|
+
continue;
|
|
948
960
|
}
|
|
949
961
|
}
|
|
950
962
|
}
|
|
951
|
-
|
|
963
|
+
if (skipped) {
|
|
964
|
+
spinner3.stop(`${import_picocolors2.default.yellow("skipped")} ${component.name} \u2014 already exists (use --overwrite to replace)`);
|
|
965
|
+
} else {
|
|
966
|
+
spinner3.stop(`${import_picocolors2.default.green("\u2713")} Added ${component.name}`);
|
|
967
|
+
}
|
|
952
968
|
}
|
|
953
969
|
clack2.outro(
|
|
954
970
|
[
|
package/dist/index.mjs
CHANGED
|
@@ -6,8 +6,8 @@ import path2 from "path";
|
|
|
6
6
|
import pc from "picocolors";
|
|
7
7
|
|
|
8
8
|
// src/utils/detect-framework.ts
|
|
9
|
-
import path from "path";
|
|
10
9
|
import fs from "fs-extra";
|
|
10
|
+
import path from "path";
|
|
11
11
|
async function detectFramework(cwd) {
|
|
12
12
|
const pkgPath = path.join(cwd, "package.json");
|
|
13
13
|
if (!await fs.pathExists(pkgPath)) return "unknown";
|
|
@@ -185,6 +185,7 @@ export function cn(...inputs: ClassValue[]) {
|
|
|
185
185
|
|
|
186
186
|
// src/commands/add.ts
|
|
187
187
|
import * as clack2 from "@clack/prompts";
|
|
188
|
+
import checkbox, { Separator } from "@inquirer/checkbox";
|
|
188
189
|
import { execa as execa2 } from "execa";
|
|
189
190
|
import fs3 from "fs-extra";
|
|
190
191
|
import path3 from "path";
|
|
@@ -788,6 +789,16 @@ function searchComponents(query) {
|
|
|
788
789
|
}
|
|
789
790
|
|
|
790
791
|
// src/commands/add.ts
|
|
792
|
+
var CATEGORY_ORDER = ["layout", "inputs", "navigation", "feedback", "data-display", "ai", "wow"];
|
|
793
|
+
var CATEGORY_LABEL = {
|
|
794
|
+
layout: "Layout",
|
|
795
|
+
inputs: "Inputs",
|
|
796
|
+
navigation: "Navigation",
|
|
797
|
+
feedback: "Feedback",
|
|
798
|
+
"data-display": "Data Display",
|
|
799
|
+
ai: "AI",
|
|
800
|
+
wow: "WOW Effects"
|
|
801
|
+
};
|
|
791
802
|
async function addCommand(components, options) {
|
|
792
803
|
const cwd = process.cwd();
|
|
793
804
|
clack2.intro(pc2.bgCyan(pc2.black(" Benflux UI \u2014 Add Components ")));
|
|
@@ -799,28 +810,29 @@ async function addCommand(components, options) {
|
|
|
799
810
|
const defaultDir = options.path ?? await getComponentsPath(cwd);
|
|
800
811
|
let selectedComponents = components;
|
|
801
812
|
if (selectedComponents.length === 0) {
|
|
802
|
-
const
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
(
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
813
|
+
const byCategory = /* @__PURE__ */ new Map();
|
|
814
|
+
for (const c of REGISTRY) {
|
|
815
|
+
const list = byCategory.get(c.category) ?? [];
|
|
816
|
+
list.push(c);
|
|
817
|
+
byCategory.set(c.category, list);
|
|
818
|
+
}
|
|
819
|
+
const choices = [];
|
|
820
|
+
for (const cat of CATEGORY_ORDER) {
|
|
821
|
+
const items = byCategory.get(cat);
|
|
822
|
+
if (!items?.length) continue;
|
|
823
|
+
choices.push(new Separator(`\u2500\u2500 ${CATEGORY_LABEL[cat] ?? cat} \u2500\u2500`));
|
|
824
|
+
for (const c of items.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
825
|
+
choices.push({ name: c.name, value: c.name, description: c.description });
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
const selected = await checkbox({
|
|
829
|
+
message: "Which components would you like to add?",
|
|
830
|
+
choices,
|
|
831
|
+
pageSize: 16,
|
|
832
|
+
loop: false
|
|
821
833
|
});
|
|
822
|
-
if (
|
|
823
|
-
clack2.cancel("
|
|
834
|
+
if (!selected.length) {
|
|
835
|
+
clack2.cancel("No components selected.");
|
|
824
836
|
process.exit(0);
|
|
825
837
|
}
|
|
826
838
|
selectedComponents = selected;
|
|
@@ -876,14 +888,13 @@ async function addCommand(components, options) {
|
|
|
876
888
|
for (const component of validComponents) {
|
|
877
889
|
if (!component) continue;
|
|
878
890
|
spinner3.start(`Adding ${pc2.cyan(component.name)}...`);
|
|
891
|
+
let skipped = true;
|
|
879
892
|
for (const file of component.files) {
|
|
880
893
|
const targetPath = path3.join(cwd, defaultDir, path3.basename(file));
|
|
881
|
-
if (await fs3.pathExists(targetPath)
|
|
882
|
-
|
|
883
|
-
`${pc2.yellow("skipped")} ${component.name} (already exists \u2014 use --overwrite to replace)`
|
|
884
|
-
);
|
|
885
|
-
continue;
|
|
894
|
+
if (await fs3.pathExists(targetPath)) {
|
|
895
|
+
if (!options.overwrite) continue;
|
|
886
896
|
}
|
|
897
|
+
skipped = false;
|
|
887
898
|
await fs3.ensureDir(path3.dirname(targetPath));
|
|
888
899
|
const localSrc = path3.join(cwd, "node_modules/@benflux-ui/react/src", file);
|
|
889
900
|
if (await fs3.pathExists(localSrc)) {
|
|
@@ -898,10 +909,15 @@ async function addCommand(components, options) {
|
|
|
898
909
|
} catch (err) {
|
|
899
910
|
spinner3.stop(pc2.red(`Failed to fetch ${file}: ${err.message}`));
|
|
900
911
|
clack2.log.warn(`Download manually from: ${url}`);
|
|
912
|
+
continue;
|
|
901
913
|
}
|
|
902
914
|
}
|
|
903
915
|
}
|
|
904
|
-
|
|
916
|
+
if (skipped) {
|
|
917
|
+
spinner3.stop(`${pc2.yellow("skipped")} ${component.name} \u2014 already exists (use --overwrite to replace)`);
|
|
918
|
+
} else {
|
|
919
|
+
spinner3.stop(`${pc2.green("\u2713")} Added ${component.name}`);
|
|
920
|
+
}
|
|
905
921
|
}
|
|
906
922
|
clack2.outro(
|
|
907
923
|
[
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "benflux-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "CLI for adding Benflux UI components to your project",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"benflux-ui",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@clack/prompts": "^0.7.0",
|
|
38
|
+
"@inquirer/checkbox": "^5.2.0",
|
|
38
39
|
"chalk": "^5.3.0",
|
|
39
40
|
"commander": "^12.1.0",
|
|
40
41
|
"execa": "^9.2.0",
|