bitboss-ui 3.0.0-beta.21 → 3.0.0-beta.22
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/README.md +55 -3
- package/bin/bitboss-ui-mcp.mjs +419 -9
- package/bin/bitboss-ui.mjs +293 -22
- package/dist/ai/BbAccordion.md +21 -23
- package/dist/ai/BbAlert.md +6 -12
- package/dist/ai/BbAvatar.md +60 -24
- package/dist/ai/BbBadge.md +12 -20
- package/dist/ai/BbBaseButton.md +14 -16
- package/dist/ai/BbBaseCheckboxIcon.md +6 -10
- package/dist/ai/BbBaseRadioIcon.md +6 -10
- package/dist/ai/BbBaseSwitchIcon.md +5 -9
- package/dist/ai/BbBreadcrumbs.md +23 -34
- package/dist/ai/BbButton.md +35 -47
- package/dist/ai/BbCheckbox.md +21 -37
- package/dist/ai/BbCheckboxGroup.md +13 -13
- package/dist/ai/BbCollapsible.md +14 -26
- package/dist/ai/BbColorInput.md +13 -23
- package/dist/ai/BbColorPalette.md +23 -35
- package/dist/ai/BbConfirm.md +17 -32
- package/dist/ai/BbDatePickerInput.md +15 -21
- package/dist/ai/BbDialog.md +159 -62
- package/dist/ai/BbDropdown.md +21 -25
- package/dist/ai/BbDropdownButton.md +13 -30
- package/dist/ai/BbDropzone.md +9 -11
- package/dist/ai/BbIcon.md +44 -33
- package/dist/ai/BbIndicator.md +2 -2
- package/dist/ai/BbNumberInput.md +18 -20
- package/dist/ai/BbOffCanvas.md +42 -42
- package/dist/ai/BbPagination.md +21 -23
- package/dist/ai/BbPopover.md +15 -17
- package/dist/ai/BbProgress.md +40 -51
- package/dist/ai/BbRadio.md +9 -9
- package/dist/ai/BbRadioGroup.md +7 -11
- package/dist/ai/BbRating.md +8 -12
- package/dist/ai/BbSelect.md +32 -36
- package/dist/ai/BbSelectPopover.md +19 -31
- package/dist/ai/BbSlider.md +15 -19
- package/dist/ai/BbSmoothHeight.md +16 -31
- package/dist/ai/BbSpinner.md +118 -74
- package/dist/ai/BbSwitch.md +25 -18
- package/dist/ai/BbSwitchGroup.md +9 -14
- package/dist/ai/BbTable.md +102 -55
- package/dist/ai/BbTabs.md +59 -82
- package/dist/ai/BbTag.md +12 -23
- package/dist/ai/BbTextInput.md +20 -26
- package/dist/ai/BbTextarea.md +28 -34
- package/dist/ai/BbToast.md +14 -34
- package/dist/ai/BbTooltip.md +22 -20
- package/dist/ai/BbTree.md +46 -72
- package/dist/ai/changelog.json +169 -62
- package/dist/ai/components.json +1467 -9
- package/dist/ai/composables/useConfirm.md +5 -2
- package/dist/ai/composables/useToast.md +4 -2
- package/dist/ai/guides/agent-contract.md +7 -4
- package/dist/ai/guides/ai-router.md +37 -22
- package/dist/ai/guides/component-picker.md +23 -18
- package/dist/ai/guides/design-language.md +141 -13
- package/dist/ai/guides/design-tokens.md +29 -4
- package/dist/ai/guides/icons-policy.md +46 -21
- package/dist/ai/guides/installation-and-plugin-setup.md +253 -17
- package/dist/ai/guides/migration/components/bb-rating.md +26 -1
- package/dist/ai/guides/migration/components/bb-tooltip.md +18 -0
- package/dist/ai/guides/migration/v2-to-v3.md +50 -23
- package/dist/ai/index.md +1 -1
- package/dist/ai/recipes/inertia/approvals-inbox.md +3 -3
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/inertia/onboarding.md +2 -2
- package/dist/ai/recipes/inertia/ownership-atlas.md +6 -6
- package/dist/ai/recipes/inertia/record-form.md +5 -5
- package/dist/ai/recipes/inertia/records-workspace.md +4 -4
- package/dist/ai/recipes/inertia/upload-center.md +6 -6
- package/dist/ai/recipes/inertia/wizard-form.md +5 -5
- package/dist/ai/recipes/nuxt/approvals-inbox.md +3 -3
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/nuxt/onboarding.md +2 -2
- package/dist/ai/recipes/nuxt/record-form.md +5 -5
- package/dist/ai/recipes/nuxt/records-workspace.md +4 -4
- package/dist/ai/recipes/nuxt/upload-center.md +6 -6
- package/dist/ai/recipes/nuxt/wizard-form.md +5 -5
- package/dist/ai/recipes/vue/approvals-inbox.md +3 -3
- package/dist/ai/recipes/vue/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/vue/onboarding.md +2 -2
- package/dist/ai/recipes/vue/record-form.md +10 -10
- package/dist/ai/recipes/vue/records-workspace.md +4 -4
- package/dist/ai/recipes/vue/upload-center.md +6 -6
- package/dist/ai/recipes/vue/wizard-form.md +5 -5
- package/dist/ai/source/BbBadge.md +1 -1
- package/dist/ai/source/BbBaseCheckbox.md +1 -1
- package/dist/ai/source/BbBaseDatePicker.md +5 -5
- package/dist/ai/source/BbBaseDatePickerInput.md +2 -2
- package/dist/ai/source/BbBaseRadio.md +1 -1
- package/dist/ai/source/BbBaseRating.md +5 -5
- package/dist/ai/source/BbBaseSelect.md +1 -1
- package/dist/ai/source/BbBaseSlider.md +5 -5
- package/dist/ai/source/BbBaseSwitch.md +1 -1
- package/dist/ai/source/BbBaseTimePickerInput.md +1 -1
- package/dist/ai/source/BbBreadcrumbs.md +20 -1
- package/dist/ai/source/BbButton.md +2 -2
- package/dist/ai/source/BbDialog.md +39 -8
- package/dist/ai/source/BbDropdown.md +1 -1
- package/dist/ai/source/BbDropzone.md +5 -5
- package/dist/ai/source/BbIcon.md +23 -10
- package/dist/ai/source/BbOffCanvas.md +50 -28
- package/dist/ai/source/BbPagination.md +2 -2
- package/dist/ai/source/BbPopover.md +12 -1
- package/dist/ai/source/BbSelectPopover.md +45 -7
- package/dist/ai/source/BbSpinner.md +2 -2
- package/dist/ai/source/BbTable.md +11 -11
- package/dist/ai/source/BbTooltip.md +57 -10
- package/dist/ai/source/ChipsBox.md +1 -1
- package/dist/ai/source/CommaBox.md +1 -1
- package/dist/ai/source/GuidesComponent.md +14 -7
- package/dist/ai/source/OptionsContainer.md +1 -1
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +1 -1
- package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +71 -71
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +102 -97
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +58 -58
- package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +33 -35
- package/dist/components/BbIcon/iconCache.d.ts +30 -0
- package/dist/components/BbIcon/iconCache.js +21 -3
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +57 -56
- package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +138 -138
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +43 -43
- package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbSpinner/types.d.ts +1 -1
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/BbTable/BbTableDataRow.js +2 -2
- package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +62 -62
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +81 -78
- package/dist/components/BbTooltip/types.d.ts +8 -1
- package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/composables/useConfirm.d.ts +22 -0
- package/dist/composables/useConfirm.js +43 -40
- package/dist/composables/useSafeAreaInternal.js +1 -1
- package/dist/composables/useToast.d.ts +16 -0
- package/dist/composables/useToast.js +20 -16
- package/dist/composables/useViewportWidth.d.ts +20 -6
- package/dist/composables/useViewportWidth.js +8 -7
- package/dist/icon-scan.d.ts +276 -0
- package/dist/icon-scan.js +485 -0
- package/dist/icons-whitelist.d.ts +5 -4
- package/dist/llms-full.txt +1979 -1527
- package/dist/llms-medium.txt +461 -74
- package/dist/llms.txt +1 -1
- package/dist/nuxt.js +10 -7
- package/dist/plugin.js +1 -0
- package/dist/runtime/nuxt-plugin.js +2 -1
- package/dist/styles.css +1 -1
- package/dist/types/Config.d.ts +18 -0
- package/dist/utils/cssLayers.d.ts +91 -0
- package/dist/utils/cssLayers.js +43 -0
- package/dist/utils/injectLibraryStyles.d.ts +3 -1
- package/dist/utils/injectLibraryStyles.js +24 -23
- package/dist/vite-plugin.d.ts +74 -11
- package/dist/vite.js +292 -253
- package/llms.txt +1 -1
- package/package.json +7 -5
- package/scripts/lib/ensure-manifest.mjs +28 -5
- package/scripts/lib/eslint-plugin.d.ts +35 -0
- package/scripts/lib/eslint-plugin.mjs +299 -3
- package/scripts/lib/hand-roll-hints.mjs +50 -6
- package/scripts/lib/html-attributes.mjs +42 -0
- package/scripts/lib/mcp-config.mjs +38 -34
- package/scripts/lib/public-type-exports.mjs +246 -0
- package/scripts/lib/validate-bb-markup.mjs +205 -12
package/dist/vite.js
CHANGED
|
@@ -1,167 +1,148 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { BB_LAYERS as e, TAILWIND_V4_LAYERS as t, validateCssLayers as n } from "./utils/cssLayers.js";
|
|
2
|
+
import { DEFAULT_MAX_FILE_SIZE as r, IconScanner as i, extractIconCandidates as a, globToRegExp as o, hasGlobMagic as s, iconLiteralRegExp as c, iconScanCacheFile as l } from "./icon-scan.js";
|
|
3
|
+
import { BUILTIN_LOCALE_KEYS as u } from "./i18n/index.js";
|
|
4
|
+
import { existsSync as d, mkdirSync as f, readFileSync as p, readdirSync as m, writeFileSync as h } from "node:fs";
|
|
5
|
+
import { basename as g, dirname as _, join as v, relative as ee, resolve as y } from "node:path";
|
|
6
|
+
import { fileURLToPath as b } from "node:url";
|
|
7
|
+
import { createRequire as x } from "node:module";
|
|
8
|
+
import { convertParsedSVG as S, getIconData as C, iconToHTML as te, iconToSVG as w, parseSVGContent as T, stringToIcon as ne } from "@iconify/utils";
|
|
8
9
|
//#region src/vite-plugin.ts
|
|
9
|
-
function
|
|
10
|
-
|
|
10
|
+
function E(e, t) {
|
|
11
|
+
d(e) && p(e, "utf-8") === t || (f(_(e), { recursive: !0 }), h(e, t, "utf-8"));
|
|
11
12
|
}
|
|
12
|
-
function
|
|
13
|
-
let t =
|
|
13
|
+
function re(e) {
|
|
14
|
+
let t = w(e, {
|
|
14
15
|
width: "unset",
|
|
15
16
|
height: "unset"
|
|
16
17
|
});
|
|
17
|
-
return
|
|
18
|
+
return te(t.body, t.attributes);
|
|
18
19
|
}
|
|
19
|
-
function
|
|
20
|
+
function D(e, t) {
|
|
20
21
|
try {
|
|
21
|
-
let n =
|
|
22
|
-
return JSON.parse(
|
|
22
|
+
let n = x(v(e, "package.json"));
|
|
23
|
+
return JSON.parse(p(n.resolve(`${t}/icons.json`), "utf-8"));
|
|
23
24
|
} catch {
|
|
24
25
|
return null;
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
|
-
function
|
|
28
|
+
function ie(e, t) {
|
|
28
29
|
return e !== "heroicons" || !/-(?:20|16)-/.test(t);
|
|
29
30
|
}
|
|
30
|
-
function
|
|
31
|
-
let
|
|
31
|
+
function O(e) {
|
|
32
|
+
let t = y(e);
|
|
32
33
|
for (;;) {
|
|
33
|
-
let e =
|
|
34
|
-
if (
|
|
35
|
-
let
|
|
36
|
-
if (
|
|
37
|
-
|
|
34
|
+
let e = v(t, "node_modules", "@iconify-json");
|
|
35
|
+
if (d(e)) return e;
|
|
36
|
+
let n = _(t);
|
|
37
|
+
if (n === t) return null;
|
|
38
|
+
t = n;
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
|
-
function
|
|
41
|
+
function ae(e) {
|
|
41
42
|
try {
|
|
42
|
-
let t =
|
|
43
|
+
let t = O(e);
|
|
43
44
|
if (!t) return [];
|
|
44
|
-
let n =
|
|
45
|
-
return
|
|
46
|
-
let r =
|
|
45
|
+
let n = _(_(t));
|
|
46
|
+
return m(t, { encoding: "utf-8" }).flatMap((t) => {
|
|
47
|
+
let r = D(n, `@iconify-json/${t}`) ?? D(e, `@iconify-json/${t}`);
|
|
47
48
|
return r ? [r] : [];
|
|
48
49
|
});
|
|
49
50
|
} catch {
|
|
50
51
|
return [];
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
|
-
function
|
|
54
|
+
function oe(e) {
|
|
54
55
|
try {
|
|
55
|
-
let t =
|
|
56
|
+
let t = x(v(e, "package.json")), n = JSON.parse(p(t.resolve("@iconify/collections/collections.json"), "utf-8"));
|
|
56
57
|
return new Set(Object.keys(n));
|
|
57
58
|
} catch {
|
|
58
59
|
return /* @__PURE__ */ new Set();
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
|
-
var
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
62
|
+
var se = "(key, loaded, known, all, ip) => {\n const c = key.indexOf(':'); const p = key.slice(0, c); const n = key.slice(c + 1);\n if (p === 'local' || !/^[a-z][a-z0-9-]*$/.test(p) || !/^[a-z0-9][a-z0-9-]*$/.test(n)) return null;\n const installed = loaded.size ? `installed sets: ${[...loaded].join(', ')}` : 'no @iconify-json/* set is installed';\n const fix = `If the name is composed at runtime or comes from a database, add it to the plugin's \\`iconWhitelist\\``;\n if (loaded.has(p)) {\n const set = all(p);\n if (set && set.includes(n)) return `[bitboss-ui] icon \"${key}\" exists in the ${p} icon set but is not bundled: no scanned source file contains the literal \"${key}\" and it is not in \\`iconWhitelist\\`. Write it as a literal, or — if the name is composed at runtime or comes from a database — add it to the plugin's \\`iconWhitelist\\`.`;\n const names = set ?? known(p);\n const sq = n.replace(/-/g, '');\n const sug = names.find((x) => x.replace(/-/g, '') === sq) ?? (n.length >= 3 ? names.find((x) => x.includes(n) || (x.length >= 3 && n.includes(x))) : undefined);\n const hint = sug ? ` — did you mean \"${p}:${sug}\"?` : '';\n if (set) return `[bitboss-ui] icon \"${key}\" does not exist in the ${p} icon set${hint}`;\n return `[bitboss-ui] icon \"${key}\" is not bundled: it is not among the ${p} names found as literals in scanned source, nor in \\`iconWhitelist\\`${hint}. ${fix}; if it is a typo, fix the name.`;\n }\n const pkg = `@iconify-json/${p}`; const cmd = `run: npm install -D ${pkg}`;\n if (ip.has(p)) return `[bitboss-ui] \"${key}\" requires \"${pkg}\" — ${cmd} (${installed})`;\n if (ip.size) return `[bitboss-ui] \"${key}\" — \"${p}\" is neither an installed icon set nor a known Iconify prefix (${installed})`;\n return `[bitboss-ui] \"${key}\" — no installed icon set has the prefix \"${p}\" (${installed}). If \"${p}\" is an Iconify set, ${cmd}`;\n}", k = Function(`return ${se};`)();
|
|
63
|
+
function A(e, t) {
|
|
64
|
+
return [...Object.keys(e.icons), ...Object.keys(e.aliases ?? {})].filter((n) => (!t || t(n)) && C(e, n) !== null);
|
|
65
|
+
}
|
|
66
|
+
function j(e, t, n, r) {
|
|
67
|
+
let i = /* @__PURE__ */ new Set(), a = [], c = new Set(t.keys()), l = /* @__PURE__ */ new Map(), u = (e) => {
|
|
68
|
+
let r = l.get(e);
|
|
69
|
+
if (!r) {
|
|
70
|
+
let i = t.get(e);
|
|
71
|
+
r = i ? A(i, n.get(e)) : [], l.set(e, r);
|
|
72
|
+
}
|
|
73
|
+
return r;
|
|
74
|
+
};
|
|
75
|
+
for (let l of e) {
|
|
76
|
+
let e = l.trim(), d = e.indexOf(":"), f = d === -1 ? "" : e.slice(0, d), p = e.slice(d + 1);
|
|
77
|
+
if (d === -1 || !f || !p) {
|
|
78
|
+
a.push(`[bitboss-ui] iconWhitelist entry "${l}" is not a \`prefix:name\` icon name`);
|
|
79
|
+
continue;
|
|
76
80
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
if (f === "local") {
|
|
82
|
+
a.push(`[bitboss-ui] iconWhitelist entry "${l}" — every \`local:\` icon in iconDir is always bundled; the whitelist is for provider icons only`);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (!c.has(f)) {
|
|
86
|
+
a.push(k(e, c, u, (e) => c.has(e) ? u(e) : null, new Set(r)) ?? `[bitboss-ui] iconWhitelist entry "${l}" does not resolve`);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (s(p)) {
|
|
90
|
+
let t = o(p), n = u(f).filter((e) => t.test(e));
|
|
91
|
+
if (n.length === 0) {
|
|
92
|
+
a.push(`[bitboss-ui] iconWhitelist glob "${e}" matches no icon in the ${f} icon set`);
|
|
93
|
+
continue;
|
|
86
94
|
}
|
|
95
|
+
for (let e of n) i.add(`${f}:${e}`);
|
|
96
|
+
continue;
|
|
87
97
|
}
|
|
98
|
+
let m = t.get(f), h = n.get(f);
|
|
99
|
+
if (C(m, p) && (!h || h(p))) {
|
|
100
|
+
i.add(e);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
a.push(k(e, c, u, u, new Set(r)) ?? `[bitboss-ui] iconWhitelist entry "${l}" does not resolve`);
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
icons: [...i],
|
|
107
|
+
errors: a
|
|
88
108
|
};
|
|
89
|
-
return n(e, ""), t;
|
|
90
109
|
}
|
|
91
|
-
|
|
92
|
-
let d = Array.from(i.keys());
|
|
93
|
-
if (d.length === 0) return /* @__PURE__ */ new Set();
|
|
94
|
-
let f = d.map((e) => `${e}:[a-z0-9][a-z0-9-]*`).join("|"), p = RegExp(`['"\`](${f})['"\`]`, "g"), m;
|
|
110
|
+
function ce(e) {
|
|
95
111
|
try {
|
|
96
|
-
|
|
112
|
+
return JSON.parse(p(v(e, "..", "package.json"), "utf-8")).version ?? "0";
|
|
97
113
|
} catch {
|
|
98
|
-
return
|
|
114
|
+
return "0";
|
|
99
115
|
}
|
|
100
|
-
let h = u(e, "node_modules/.cache/bitboss-ui/icon-scan.json"), _ = {
|
|
101
|
-
version: C,
|
|
102
|
-
configKey: t,
|
|
103
|
-
entries: {}
|
|
104
|
-
};
|
|
105
|
-
try {
|
|
106
|
-
let e = JSON.parse(r(h, "utf-8"));
|
|
107
|
-
e.version === C && e.configKey === t && (_ = e);
|
|
108
|
-
} catch {}
|
|
109
|
-
let v = await Promise.all(m.map(async (t) => {
|
|
110
|
-
try {
|
|
111
|
-
let { mtimeMs: n } = await s(u(e, t)), r = _.entries[t];
|
|
112
|
-
if (r?.mtime === n) return r.icons;
|
|
113
|
-
let a = await o(u(e, t), "utf-8"), l = [];
|
|
114
|
-
for (let e of a.matchAll(p)) {
|
|
115
|
-
let t = e[1], n = b(t);
|
|
116
|
-
if (!n) continue;
|
|
117
|
-
let { prefix: r, name: a } = n, o = c.get(r), s = i.get(r);
|
|
118
|
-
s && g(s, a) && (!o || o(a)) && l.push(t);
|
|
119
|
-
}
|
|
120
|
-
return _.entries[t] = {
|
|
121
|
-
mtime: n,
|
|
122
|
-
icons: l
|
|
123
|
-
}, l;
|
|
124
|
-
} catch {
|
|
125
|
-
return [];
|
|
126
|
-
}
|
|
127
|
-
})), y = new Set(m);
|
|
128
|
-
for (let e of Object.keys(_.entries)) y.has(e) || delete _.entries[e];
|
|
129
|
-
try {
|
|
130
|
-
n(l(h), { recursive: !0 }), a(h, JSON.stringify(_), "utf-8");
|
|
131
|
-
} catch {}
|
|
132
|
-
let x = /* @__PURE__ */ new Set();
|
|
133
|
-
for (let e of v) for (let t of e) x.add(t);
|
|
134
|
-
return x;
|
|
135
116
|
}
|
|
136
|
-
var
|
|
117
|
+
var M = _(b(import.meta.url)), N = M.includes("node_modules"), le = v(M, "button-variants.d.ts"), ue = v(M, "alert-variants.d.ts"), de = v(M, "badge-variants.d.ts"), fe = v(M, "confirm-variants.d.ts"), pe = v(M, "dropdown-item-variants.d.ts"), me = v(M, "tooltip-variants.d.ts"), he = v(M, "toast-variants.d.ts"), ge = v(M, "indicator-variants.d.ts"), _e = v(M, "locale-registry.d.ts"), ve = N ? "bitboss-ui" : "./types/ButtonVariant", ye = N ? "bitboss-ui" : "./types/AlertVariant", be = N ? "bitboss-ui" : "./types/BadgeVariant", xe = N ? "bitboss-ui" : "./types/ConfirmVariant", Se = N ? "bitboss-ui" : "./types/DropdownItemVariant", Ce = N ? "bitboss-ui" : "./types/TooltipVariant", we = N ? "bitboss-ui" : "./types/ToastVariant", Te = N ? "bitboss-ui" : "./types/IndicatorVariant", Ee = N ? "bitboss-ui" : "./i18n", De = v(M, "i18n", "locales"), P = {
|
|
137
118
|
pt: "pt-br",
|
|
138
119
|
en: null
|
|
139
120
|
};
|
|
140
|
-
function
|
|
141
|
-
let
|
|
142
|
-
for (let
|
|
121
|
+
function F(e) {
|
|
122
|
+
let t = u, n = e.customLocaleKeys ?? [], r = e.locale && t.includes(e.locale) ? e.locale : e.locale && n.includes(e.locale) ? "en" : "it", i = [], a = /* @__PURE__ */ new Set([r, "en"]);
|
|
123
|
+
for (let r of e.enabledLocales ?? []) t.includes(r) ? a.add(r) : n.includes(r) || i.push(`[bitboss-ui] \`enabledLocales\` entry '${r}' is not a built-in locale — ignored.`);
|
|
143
124
|
return {
|
|
144
|
-
enabled: [...
|
|
145
|
-
defaultLocale:
|
|
146
|
-
warnings:
|
|
125
|
+
enabled: [...a].sort(),
|
|
126
|
+
defaultLocale: r,
|
|
127
|
+
warnings: i
|
|
147
128
|
};
|
|
148
129
|
}
|
|
149
|
-
function
|
|
130
|
+
function I(e) {
|
|
150
131
|
let t = [];
|
|
151
132
|
for (let n of e) {
|
|
152
|
-
let e =
|
|
133
|
+
let e = p(v(De, `${n}.json`), "utf-8");
|
|
153
134
|
t.push(`\t${JSON.stringify(n)}: ${e.trim()},`);
|
|
154
135
|
}
|
|
155
136
|
return `export const locales = {\n${t.join("\n")}\n};\n`;
|
|
156
137
|
}
|
|
157
|
-
function
|
|
138
|
+
function L(e, t) {
|
|
158
139
|
let n = e.map((e) => `\t\t${JSON.stringify(e)}: true;`).join("\n");
|
|
159
140
|
return Ve + `\nimport ${JSON.stringify(t)};\n\ndeclare module ${JSON.stringify(t)} {\n\tinterface LocaleRegistry {\n` + (n ? `${n}\n` : "") + " }\n}\n";
|
|
160
141
|
}
|
|
161
|
-
function
|
|
162
|
-
let t =
|
|
142
|
+
function R(e) {
|
|
143
|
+
let t = x(import.meta.url), n = [], r = [];
|
|
163
144
|
for (let i of e) {
|
|
164
|
-
let e = i in
|
|
145
|
+
let e = i in P ? P[i] : i;
|
|
165
146
|
if (e !== null) try {
|
|
166
147
|
t.resolve(`dayjs/locale/${e}.js`), n.push({
|
|
167
148
|
key: i,
|
|
@@ -176,27 +157,27 @@ function j(e) {
|
|
|
176
157
|
missing: r
|
|
177
158
|
};
|
|
178
159
|
}
|
|
179
|
-
function
|
|
160
|
+
function z(e) {
|
|
180
161
|
return `${e.map(({ pack: e }, t) => `import l${t} from ${JSON.stringify(`dayjs/locale/${e}`)};`).join("\n")}\nexport const dayjsLocales = {\n${e.map(({ key: e }, t) => `\t${JSON.stringify(e)}: l${t},`).join("\n")}\n};\n`;
|
|
181
162
|
}
|
|
182
|
-
var
|
|
163
|
+
var B = "@inertiajs/vue3", Oe = [
|
|
183
164
|
"dependencies",
|
|
184
165
|
"devDependencies",
|
|
185
166
|
"peerDependencies",
|
|
186
167
|
"optionalDependencies"
|
|
187
168
|
];
|
|
188
169
|
function ke(e) {
|
|
189
|
-
let
|
|
170
|
+
let t = y(e);
|
|
190
171
|
for (;;) {
|
|
191
|
-
let e =
|
|
192
|
-
if (
|
|
193
|
-
return JSON.parse(
|
|
172
|
+
let e = v(t, "package.json");
|
|
173
|
+
if (d(e)) try {
|
|
174
|
+
return JSON.parse(p(e, "utf-8"));
|
|
194
175
|
} catch {
|
|
195
176
|
return null;
|
|
196
177
|
}
|
|
197
|
-
let
|
|
198
|
-
if (
|
|
199
|
-
|
|
178
|
+
let n = _(t);
|
|
179
|
+
if (n === t) return null;
|
|
180
|
+
t = n;
|
|
200
181
|
}
|
|
201
182
|
}
|
|
202
183
|
function Ae(e, t) {
|
|
@@ -205,20 +186,20 @@ function Ae(e, t) {
|
|
|
205
186
|
return typeof r == "object" && !!r && t in r;
|
|
206
187
|
});
|
|
207
188
|
}
|
|
208
|
-
function je(e,
|
|
209
|
-
let
|
|
189
|
+
function je(e, t) {
|
|
190
|
+
let n = t.split("/"), r = y(e);
|
|
210
191
|
for (;;) {
|
|
211
|
-
if (
|
|
212
|
-
let e =
|
|
213
|
-
if (e ===
|
|
214
|
-
|
|
192
|
+
if (d(v(r, "node_modules", ...n))) return !0;
|
|
193
|
+
let e = _(r);
|
|
194
|
+
if (e === r) return !1;
|
|
195
|
+
r = e;
|
|
215
196
|
}
|
|
216
197
|
}
|
|
217
|
-
function
|
|
198
|
+
function V(e) {
|
|
218
199
|
let t = ke(e);
|
|
219
|
-
return !t || !Ae(t,
|
|
200
|
+
return !t || !Ae(t, B) ? !1 : je(e, B);
|
|
220
201
|
}
|
|
221
|
-
function
|
|
202
|
+
function H(e) {
|
|
222
203
|
return e ? "export { Link as InertiaLink } from '@inertiajs/vue3';\n" : "export const InertiaLink = null;\n";
|
|
223
204
|
}
|
|
224
205
|
var Me = [
|
|
@@ -256,7 +237,7 @@ function Be(e, t) {
|
|
|
256
237
|
return [.../* @__PURE__ */ new Set([...e, ...n])];
|
|
257
238
|
}
|
|
258
239
|
var Ve = "// Auto-generated by bitboss-ui — do not edit manually.\n//\n// SCOPE: this file mirrors the plugin config of the project that LAST ran\n// the bitboss-ui plugin in this folder — it is regenerated by every build,\n// dev server, or test process that loads the plugin. It is authoritative\n// for THAT project only. Another project's registry is whatever its own\n// plugin config declares (e.g. bitbossUi({ badgeVariants: [...] })) — do\n// not read names out of a different checkout's copy of this file.\n";
|
|
259
|
-
function
|
|
240
|
+
function U(e, t, n) {
|
|
260
241
|
let r = e.map((e) => `\t\t${JSON.stringify(e)}: never;`).join("\n");
|
|
261
242
|
return `// Auto-generated by bitboss-ui — do not edit manually.
|
|
262
243
|
//
|
|
@@ -269,7 +250,7 @@ function I(e, t, n) {
|
|
|
269
250
|
|
|
270
251
|
import ${JSON.stringify(t)};\n\ndeclare module ${JSON.stringify(t)} {\n\tinterface ${n} {\n` + (r ? `${r}\n` : "") + " }\n}\n";
|
|
271
252
|
}
|
|
272
|
-
var
|
|
253
|
+
var W = [
|
|
273
254
|
"@floating-ui/vue",
|
|
274
255
|
"@tanstack/vue-virtual",
|
|
275
256
|
"@vueuse/core",
|
|
@@ -284,32 +265,32 @@ var L = [
|
|
|
284
265
|
"maska/vue",
|
|
285
266
|
"mime",
|
|
286
267
|
"object-code"
|
|
287
|
-
],
|
|
288
|
-
function
|
|
289
|
-
let e =
|
|
290
|
-
return
|
|
291
|
-
let
|
|
292
|
-
return t
|
|
268
|
+
], G = ["bitboss-ui"], He = B, Ue = "virtual:bitboss-ui/icons", K = "\0virtual:bitboss-ui/icons", We = "virtual:bitboss-ui/config", q = "\0virtual:bitboss-ui/config", Ge = "virtual:bitboss-ui/dayjs-locales", J = "\0virtual:bitboss-ui/dayjs-locales", Ke = "virtual:bitboss-ui/locales", Y = "\0virtual:bitboss-ui/locales", qe = "virtual:bitboss-ui/styles", X = "\0virtual:bitboss-ui/styles", Je = "virtual:bitboss-ui/link", Ye = "\0virtual:bitboss-ui/link";
|
|
269
|
+
function Xe() {
|
|
270
|
+
let e = v(M, "styles.css");
|
|
271
|
+
return d(e) ? p(e, "utf-8") : ["main.css", "variables.css"].map((e) => {
|
|
272
|
+
let t = v(M, "assets/css", e);
|
|
273
|
+
return d(t) ? p(t, "utf-8") : "";
|
|
293
274
|
}).join("\n");
|
|
294
275
|
}
|
|
295
|
-
var
|
|
296
|
-
function
|
|
276
|
+
var Ze = "local";
|
|
277
|
+
function Qe(e) {
|
|
297
278
|
let t = {};
|
|
298
279
|
try {
|
|
299
|
-
let n =
|
|
280
|
+
let n = m(e, {
|
|
300
281
|
recursive: !0,
|
|
301
282
|
encoding: "utf-8"
|
|
302
283
|
}).filter((e) => e.endsWith(".svg"));
|
|
303
|
-
for (let
|
|
304
|
-
let n =
|
|
284
|
+
for (let r of n) {
|
|
285
|
+
let n = g(r, ".svg");
|
|
305
286
|
try {
|
|
306
|
-
let
|
|
307
|
-
|
|
287
|
+
let i = T(p(v(e, r), "utf-8")), a = i && S(i);
|
|
288
|
+
a && (t[n] = a);
|
|
308
289
|
} catch {}
|
|
309
290
|
}
|
|
310
291
|
} catch {}
|
|
311
292
|
return {
|
|
312
|
-
prefix:
|
|
293
|
+
prefix: Ze,
|
|
313
294
|
info: {
|
|
314
295
|
name: "Local",
|
|
315
296
|
author: { name: "Icons automatically inferred from the icons installed locally" },
|
|
@@ -318,12 +299,12 @@ function Ze(e) {
|
|
|
318
299
|
icons: t
|
|
319
300
|
};
|
|
320
301
|
}
|
|
321
|
-
var
|
|
322
|
-
function
|
|
323
|
-
let
|
|
324
|
-
n
|
|
302
|
+
var Z = "./node_modules/.bitboss-ui/local-icons.json", Q = "iconify.customCollectionJsonPaths";
|
|
303
|
+
function $e(e, t) {
|
|
304
|
+
let n = v(t, "node_modules", ".bitboss-ui");
|
|
305
|
+
f(n, { recursive: !0 }), h(v(n, "local-icons.json"), JSON.stringify(Qe(e)), "utf-8");
|
|
325
306
|
}
|
|
326
|
-
function
|
|
307
|
+
function et(e) {
|
|
327
308
|
let t = "", n = !1, r = !1, i = !1;
|
|
328
309
|
for (let a = 0; a < e.length; a++) {
|
|
329
310
|
let o = e[a], s = e[a + 1];
|
|
@@ -355,8 +336,8 @@ function J(e) {
|
|
|
355
336
|
}
|
|
356
337
|
return t;
|
|
357
338
|
}
|
|
358
|
-
var
|
|
359
|
-
function
|
|
339
|
+
var $ = (e) => e === " " || e === " " || e === "\n" || e === "\r";
|
|
340
|
+
function tt(e, t) {
|
|
360
341
|
let n = !1, r = !1;
|
|
361
342
|
for (let i = t; i < e.length; i++) {
|
|
362
343
|
let t = e[i], a = e[i + 1];
|
|
@@ -376,11 +357,11 @@ function X(e, t) {
|
|
|
376
357
|
r = !0, i++;
|
|
377
358
|
continue;
|
|
378
359
|
}
|
|
379
|
-
if (
|
|
360
|
+
if (!$(t)) return i;
|
|
380
361
|
}
|
|
381
362
|
return -1;
|
|
382
363
|
}
|
|
383
|
-
function
|
|
364
|
+
function nt(e, t) {
|
|
384
365
|
let n = !1, r = !1, i = !1, a = -1, o = 0, s = null;
|
|
385
366
|
for (let c = 0; c < e.length; c++) {
|
|
386
367
|
let l = e[c], u = e[c + 1];
|
|
@@ -412,19 +393,19 @@ function Qe(e, t) {
|
|
|
412
393
|
i = !0, a = c;
|
|
413
394
|
continue;
|
|
414
395
|
}
|
|
415
|
-
if (
|
|
396
|
+
if (!$(l)) {
|
|
416
397
|
if (l === ":" && s !== null) {
|
|
417
398
|
let n = s === t;
|
|
418
399
|
if (s = null, !n) continue;
|
|
419
|
-
let r =
|
|
420
|
-
return r === -1 || e[r] !== "[" ? null :
|
|
400
|
+
let r = tt(e, c + 1);
|
|
401
|
+
return r === -1 || e[r] !== "[" ? null : rt(e, r);
|
|
421
402
|
}
|
|
422
403
|
s = null, l === "{" || l === "[" ? o++ : (l === "}" || l === "]") && o--;
|
|
423
404
|
}
|
|
424
405
|
}
|
|
425
406
|
return null;
|
|
426
407
|
}
|
|
427
|
-
function
|
|
408
|
+
function rt(e, t) {
|
|
428
409
|
let n = !1, r = !1, i = !1, a = 0, o = -1;
|
|
429
410
|
for (let s = t; s < e.length; s++) {
|
|
430
411
|
let c = e[s], l = e[s + 1];
|
|
@@ -456,7 +437,7 @@ function $e(e, t) {
|
|
|
456
437
|
i = !0, o = s + 1;
|
|
457
438
|
continue;
|
|
458
439
|
}
|
|
459
|
-
if (
|
|
440
|
+
if (!$(c)) {
|
|
460
441
|
if (c === "[" || c === "{") {
|
|
461
442
|
a++, s > t && (o = s + 1);
|
|
462
443
|
continue;
|
|
@@ -475,57 +456,57 @@ function $e(e, t) {
|
|
|
475
456
|
}
|
|
476
457
|
return null;
|
|
477
458
|
}
|
|
478
|
-
function
|
|
479
|
-
let
|
|
459
|
+
function it(e, t) {
|
|
460
|
+
let n = v(e, ".vscode"), r = v(n, "settings.json"), i = "";
|
|
480
461
|
try {
|
|
481
|
-
|
|
462
|
+
i = p(r, "utf-8");
|
|
482
463
|
} catch {}
|
|
483
|
-
if (
|
|
484
|
-
let
|
|
485
|
-
if (!
|
|
486
|
-
n
|
|
464
|
+
if (i.includes(Z)) return;
|
|
465
|
+
let a = `add "${Q}": ["${Z}"] manually to enable Iconify previews for local icons`, o = `[bitboss-ui] .vscode/settings.json: added "${Z}" to "${Q}" (Iconify previews for local icons). Set \`vscodeSettings: false\` in the plugin options to disable this write.`;
|
|
466
|
+
if (!i.trim()) {
|
|
467
|
+
f(n, { recursive: !0 }), h(r, JSON.stringify({ [Q]: [Z] }, null, " "), "utf-8"), t.info(o);
|
|
487
468
|
return;
|
|
488
469
|
}
|
|
489
|
-
let
|
|
470
|
+
let s;
|
|
490
471
|
try {
|
|
491
|
-
|
|
472
|
+
s = JSON.parse(et(i));
|
|
492
473
|
} catch {
|
|
493
|
-
t.warn(`[bitboss-ui] Could not parse .vscode/settings.json — ${
|
|
474
|
+
t.warn(`[bitboss-ui] Could not parse .vscode/settings.json — ${a}.`);
|
|
494
475
|
return;
|
|
495
476
|
}
|
|
496
|
-
let
|
|
497
|
-
if (
|
|
498
|
-
if (!Array.isArray(
|
|
499
|
-
t.warn(`[bitboss-ui] .vscode/settings.json has a non-array "${
|
|
477
|
+
let c = JSON.stringify(Z), l;
|
|
478
|
+
if (Q in s) {
|
|
479
|
+
if (!Array.isArray(s[Q])) {
|
|
480
|
+
t.warn(`[bitboss-ui] .vscode/settings.json has a non-array "${Q}" — ${a}.`);
|
|
500
481
|
return;
|
|
501
482
|
}
|
|
502
|
-
let e =
|
|
483
|
+
let e = nt(i, Q);
|
|
503
484
|
if (!e) {
|
|
504
|
-
t.warn(`[bitboss-ui] Could not locate "${
|
|
485
|
+
t.warn(`[bitboss-ui] Could not locate "${Q}" in .vscode/settings.json — ${a}.`);
|
|
505
486
|
return;
|
|
506
487
|
}
|
|
507
|
-
if (e.lastSignificantEnd === -1)
|
|
508
|
-
else if (
|
|
509
|
-
let t =
|
|
510
|
-
|
|
511
|
-
} else
|
|
488
|
+
if (e.lastSignificantEnd === -1) l = i.slice(0, e.close) + c + i.slice(e.close);
|
|
489
|
+
else if (i.slice(e.open + 1, e.close).includes("\n")) {
|
|
490
|
+
let t = i.lastIndexOf("\n", e.lastSignificantEnd - 1) + 1, n = /^[\t ]*/.exec(i.slice(t))?.[0] ?? " ";
|
|
491
|
+
l = i.slice(0, e.lastSignificantEnd) + `,\n${n}${c}` + i.slice(e.lastSignificantEnd);
|
|
492
|
+
} else l = i.slice(0, e.lastSignificantEnd) + `, ${c}` + i.slice(e.lastSignificantEnd);
|
|
512
493
|
} else {
|
|
513
|
-
let e =
|
|
514
|
-
if (e === -1 ||
|
|
515
|
-
t.warn(`[bitboss-ui] .vscode/settings.json is not a JSON object — ${
|
|
494
|
+
let e = tt(i, 0);
|
|
495
|
+
if (e === -1 || i[e] !== "{") {
|
|
496
|
+
t.warn(`[bitboss-ui] .vscode/settings.json is not a JSON object — ${a}.`);
|
|
516
497
|
return;
|
|
517
498
|
}
|
|
518
|
-
let n = Object.keys(
|
|
519
|
-
|
|
499
|
+
let n = Object.keys(s).length > 0;
|
|
500
|
+
l = i.slice(0, e + 1) + `\n\t${JSON.stringify(Q)}: [${c}]${n ? "," : "\n"}` + i.slice(e + 1);
|
|
520
501
|
}
|
|
521
|
-
|
|
502
|
+
h(r, l, "utf-8"), t.info(o);
|
|
522
503
|
}
|
|
523
|
-
var
|
|
524
|
-
async function
|
|
504
|
+
var at = "virtual:bb-icon/", ot = "\0virtual:bb-icon/";
|
|
505
|
+
async function st(e, t) {
|
|
525
506
|
try {
|
|
526
507
|
let { ensureMcpConfigs: n, missingMcpPeers: r } = await import(
|
|
527
508
|
/* @vite-ignore */
|
|
528
|
-
new URL("data:text/javascript;base64,
|
|
509
|
+
new URL("data:text/javascript;base64,LyoqCiAqIFNoYXJlZCB3cml0ZXJzIHRoYXQgcmVnaXN0ZXIgdGhlIGJpdGJvc3MtdWkgTUNQIHNlcnZlciBpbiBlYWNoIGFnZW50CiAqIGhhcm5lc3MncyBjb25maWcgZmlsZS4gVXNlZCBieSBgYml0Ym9zcy11aSBhaS1pbml0IC0tbWNwYCAoYmluKSBhbmQsIG9wdC1pbiwKICogYnkgdGhlIGRldiBzZXJ2ZXIgKHZpdGUvbnV4dCBwbHVnaW4gYG1jcDogdHJ1ZWApLgogKgogKiBFdmVyeSB3cml0ZXIgaXMgbWVyZ2Utc2FmZSAobmV2ZXIgZGlzdHVyYnMgb3RoZXIgc2VydmVycyksIGlkZW1wb3RlbnQKICogKHJldHVybnMgYHVuY2hhbmdlZGAgd2hlbiB0aGUgZW50cnkgYWxyZWFkeSBtYXRjaGVzKSwgYW5kIHJlcG9ydHMgd2hhdCBpdAogKiBkaWQgc28gY2FsbGVycyBjYW4gbG9nIGl0LiBIYXJuZXNzIGNvbmZpZyBzaGFwZXMgZGlmZmVyOgogKiAgIC0gQ2xhdWRlIENvZGUgLyBDdXJzb3IgLyBXaW5kc3VyZiDihpIgYHsgbWNwU2VydmVyczogeyBuYW1lOiB7IGNvbW1hbmQsIGFyZ3MgfSB9IH1gCiAqICAgLSBWUyBDb2RlIC8gQ29waWxvdCAgICAgICAgICAgICAgIOKGkiBgeyBzZXJ2ZXJzOiB7IG5hbWU6IHsgdHlwZTogJ3N0ZGlvJywg4oCmIH0gfSB9YAogKiAoVlMgQ29kZSBrZXlzIHRoZSBjb250YWluZXIgYHNlcnZlcnNgIGFuZCByZXF1aXJlcyBhbiBleHBsaWNpdCBgdHlwZWAuKQogKi8KCmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcyc7CmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJzsKaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7CgpleHBvcnQgY29uc3QgTUNQX1NFUlZFUl9OQU1FID0gJ2JpdGJvc3MtdWknOwpjb25zdCBDT01NQU5EID0gJ25vZGUnOwoKLyoqCiAqIFBhdGggdG8gdGhlIGluc3RhbGxlZCBDTEksIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuCiAqCiAqIFJlbGF0aXZlIG9uIHB1cnBvc2U6IGhhcm5lc3NlcyBzcGF3biBhIHN0ZGlvIHNlcnZlciB3aXRoIHRoZSBwcm9qZWN0IHJvb3QgYXMKICogaXRzIHdvcmtpbmcgZGlyZWN0b3J5LCBhbmQgYSByZWxhdGl2ZSBwYXRoIGlzIHdoYXQgbGV0cyBhIGNvbW1pdHRlZAogKiBgLm1jcC5qc29uYCB3b3JrIG9uIGEgdGVhbW1hdGUncyBtYWNoaW5lLiBBbiBhYnNvbHV0ZSBwYXRoIHdvdWxkIHBpbiB0aGUKICogY29uZmlnIHRvIHdob2V2ZXIgcmFuIGBhaS1pbml0YC4KICoKICogRm9yd2FyZCBzbGFzaGVzIGV2ZW4gb24gV2luZG93cyDigJQgTm9kZSBhY2NlcHRzIHRoZW0sIGFuZCBKU09OIGNvbmZpZ3MgYXJlCiAqIHNoYXJlZCBhY3Jvc3MgcGxhdGZvcm1zLgogKi8KZXhwb3J0IGNvbnN0IE1DUF9CSU5fUEFUSCA9ICdub2RlX21vZHVsZXMvYml0Ym9zcy11aS9iaW4vYml0Ym9zcy11aS5tanMnOwoKLyoqCiAqIFRoZSBNQ1Agc2VydmVyJ3Mgb3duIHJ1bnRpbWUgbmVlZHMsIGRlY2xhcmVkIGFzIE9QVElPTkFMIHBlZXJzIHJhdGhlciB0aGFuCiAqIGRlcGVuZGVuY2llczogdG9nZXRoZXIgdGhleSBhcmUgfjEyIE1CIOKAlCBtb3JlIHRoYW4gZXZlcnkgcnVudGltZSBkZXBlbmRlbmN5CiAqIG9mIHRoZSBjb21wb25lbnQgbGlicmFyeSBjb21iaW5lZCDigJQgYW5kIG5vdGhpbmcgYnV0IGBiaXRib3NzLXVpIG1jcGAgbG9hZHMKICogdGhlbS4KICovCmV4cG9ydCBjb25zdCBNQ1BfUEVFUlMgPSBbJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsnLCAnem9kJ107CgovKioKICogRGlyZWN0b3J5IHByb2JlLCB3YWxraW5nIHVwIGZyb20gYGRpcmAuIERlbGliZXJhdGVseSBOT1QgYHJlcXVpcmUucmVzb2x2ZWA6CiAqIGFuIEVTTS1vbmx5IHBhY2thZ2Ugd2hvc2UgYGV4cG9ydHNgIG1hcCBkZWNsYXJlcyBubyBgcmVxdWlyZWAgY29uZGl0aW9uCiAqIHRocm93cyBFUlJfUEFDS0FHRV9QQVRIX05PVF9FWFBPUlRFRCBvbiBhIHBlcmZlY3RseSBnb29kIGluc3RhbGwg4oCUIHRoZSBzYW1lCiAqIHRyYXAgZG9jdW1lbnRlZCBvbiBgaGFzSW5lcnRpYWAgaW4gdGhlIFZpdGUgcGx1Z2luLiBBIGRpcmVjdG9yeSBjaGVjayBpcwogKiBleHBvcnRzLW1hcC1hZ25vc3RpYy4KICovCmZ1bmN0aW9uIGlzSW5zdGFsbGVkRnJvbShkaXIsIG5hbWUpIHsKCWNvbnN0IHNlZ21lbnRzID0gbmFtZS5zcGxpdCgnLycpOwoJbGV0IGN1cnJlbnQgPSByZXNvbHZlKGRpcik7Cglmb3IgKDs7KSB7CgkJaWYgKGV4aXN0c1N5bmMoam9pbihjdXJyZW50LCAnbm9kZV9tb2R1bGVzJywgLi4uc2VnbWVudHMpKSkgcmV0dXJuIHRydWU7CgkJY29uc3QgcGFyZW50ID0gZGlybmFtZShjdXJyZW50KTsKCQlpZiAocGFyZW50ID09PSBjdXJyZW50KSByZXR1cm4gZmFsc2U7CgkJY3VycmVudCA9IHBhcmVudDsKCX0KfQoKLyoqCiAqIFdoaWNoIE1DUCBwZWVycyB0aGUgcHJvamVjdCBpcyBtaXNzaW5nLCBzbyBhIGNhbGxlciByZWdpc3RlcmluZyB0aGUgc2VydmVyCiAqIGNhbiBzYXkgc28gTk9XIHJhdGhlciB0aGFuIGxldCB0aGUgaGFybmVzcyBkaXNjb3ZlciBpdCBvbiBmaXJzdCBsYXVuY2gg4oCUIHRoZQogKiBjb25maWcgaXMgd3JpdHRlbiBieSBgYWktaW5pdCAtLW1jcGAgLyB0aGUgZGV2IHNlcnZlciwgYnV0IHRoZSBmYWlsdXJlIHdvdWxkCiAqIHN1cmZhY2UgbXVjaCBsYXRlciwgaW5zaWRlIGFuIGFnZW50LCBhcyBhIHNlcnZlciB0aGF0IHdvdWxkIG5vdCBzdGFydC4KICoKICogUmV0dXJucyBgW11gIHdoZW4gZXZlcnl0aGluZyBuZWVkZWQgaXMgcHJlc2VudC4KICovCmV4cG9ydCBmdW5jdGlvbiBtaXNzaW5nTWNwUGVlcnMocm9vdCkgewoJcmV0dXJuIE1DUF9QRUVSUy5maWx0ZXIoKG5hbWUpID0+ICFpc0luc3RhbGxlZEZyb20ocm9vdCwgbmFtZSkpOwp9CgovKioKICogSW52b2tlIHRoZSBJTlNUQUxMRUQgYmluYXJ5IGRpcmVjdGx5LCBuZXZlciBgbnB4YCAoMjAyNi0wOS0wOSwgc3VwZXJzZWRpbmcKICogdGhlIDIwMjYtMDgtMDYgcGlubmVkLW5weCBydWxpbmcg4oCUIHNlZSBiZWxvdykuCiAqCiAqIFRoZSAyMDI2LTA4LTA2IHJldmlldyBwaW5uZWQgdGhlIHNwZWMgdG8gdGhpcyBwYWNrYWdlJ3Mgb3duIHZlcnNpb24gYmVjYXVzZQogKiBNQ1AgaG9zdHMgc3Bhd24gdGhlIGVudHJ5IHdpdGggbm9uLVRUWSBzdGRpbywgd2hlcmUgYG5weGAgaW5zdGFsbHMgd2l0aG91dAogKiBwcm9tcHRpbmc6IGFuIHVucGlubmVkIGBucHggYml0Ym9zcy11aSBtY3BgIHdvdWxkIHNpbGVudGx5IGRvd25sb2FkIGFuZAogKiBleGVjdXRlIHdoYXRldmVyIGBiaXRib3NzLXVpQGxhdGVzdGAgcmVzb2x2ZWQgdG8sIGFuZCBhbnN3ZXIgZnJvbSBhCiAqIGRpZmZlcmVudCB2ZXJzaW9uJ3Mga25vd2xlZGdlIGJhc2UgdGhhbiB0aGUgcHJvamVjdCB1c2VzLgogKgogKiBUaGUgcGluIGZpeGVkIHRoYXQgYW5kIGJyb2tlIHRoZSBzZXJ2ZXIgb3V0cmlnaHQuIGBucHggYml0Ym9zcy11aUB4LnkueiBtY3BgCiAqIHJ1bnMgdGhlIHBhY2thZ2UgT1VUIE9GIFRIRSBOUFggQ0FDSEUsIGFuZCB0aGUgTUNQIGVudHJ5IHJlc29sdmVzIGl0cwogKiBvcHRpb25hbCBwZWVycyAoYEBtb2RlbGNvbnRleHRwcm90b2NvbC9zZGtgLCBgem9kYCkgcmVsYXRpdmUgdG8gdGhlIHBhY2thZ2UKICogaXQgaXMgcnVubmluZyBmcm9tLiBUaGUgY2FjaGUgZGlyZWN0b3J5IG5ldmVyIGhhcyB0aGVtLCBzbyB0aGUgc2VydmVyIGNhbm5vdAogKiBzdGFydCBubyBtYXR0ZXIgd2hhdCB0aGUgcHJvamVjdCBoYXMgaW5zdGFsbGVkIOKAlCByZXBvcnRlZCBmcm9tIGEgY29uc3VtZXIKICogcHJvamVjdCB3aXRoIGJvdGggcGVlcnMgcHJlc2VudC4KICoKICogQSBwYXRoIHRvIHRoZSBsb2NhbCBiaW5hcnkgc2F0aXNmaWVzIHRoZSBvcmlnaW5hbCBydWxpbmcgTU9SRSBjb21wbGV0ZWx5CiAqIHRoYW4gdGhlIHBpbiBkaWQ6IGl0IGNhbm5vdCByZWFjaCB0aGUgcmVnaXN0cnkgYXQgYWxsLCBzbyB0aGVyZSBpcyBub3RoaW5nCiAqIHRvIGRvd25sb2FkIGFuZCBubyBgbGF0ZXN0YCB0byBkcmlmdCB0by4gSXQgYWxzbyByZXRpcmVzIHRoZSBwaW4ncyBvd24KICogbWFpbnRlbmFuY2UgcHJvYmxlbSwgd2hlcmUgYSBjb25maWcgd3JpdHRlbiBhdCBvbmUgdmVyc2lvbiBrZXB0IG5hbWluZyB0aGF0CiAqIHZlcnNpb24gYWZ0ZXIgYW4gdXBncmFkZSwgbGV0dGluZyBhbiBhZ2VudCBxdWVyeSBhIG1hbmlmZXN0IHRoYXQgZGlzYWdyZWVkCiAqIHdpdGggdGhlIGNvZGUgaXQgd2FzIHdyaXRpbmcgYWdhaW5zdC4gVGhlIGJpbmFyeSBvbiBkaXNrIElTIHRoZSBpbnN0YWxsZWQKICogdmVyc2lvbiwgYnkgY29uc3RydWN0aW9uLgogKi8KY29uc3QgQVJHUyA9IFtNQ1BfQklOX1BBVEgsICdtY3AnXTsKCmNvbnN0IHN0ZGlvRW50cnkgPSAoKSA9PiAoeyBjb21tYW5kOiBDT01NQU5ELCBhcmdzOiBbLi4uQVJHU10gfSk7CmNvbnN0IHZzY29kZUVudHJ5ID0gKCkgPT4gKHsKCXR5cGU6ICdzdGRpbycsCgljb21tYW5kOiBDT01NQU5ELAoJYXJnczogWy4uLkFSR1NdLAp9KTsKCmZ1bmN0aW9uIHdyaXRlSnNvbihwYXRoLCBkYXRhKSB7Cglta2RpclN5bmMoZGlybmFtZShwYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7Cgl3cml0ZUZpbGVTeW5jKHBhdGgsIGAke0pTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsICdcdCcpfVxuYCwgJ3V0Zi04Jyk7Cn0KCi8qKgogKiBNZXJnZSB0aGUgc2VydmVyIGVudHJ5IGludG8gYHBhdGhgJ3MgYDxjb250YWluZXJLZXk+YCBtYXAuIFJldHVybnMKICogYHsgcGF0aCwgbGFiZWwsIGFjdGlvbiB9YCB3aXRoIGFjdGlvbiDiiIggY3JlYXRlZHx1cGRhdGVkfHVuY2hhbmdlZHxza2lwcGVkLgogKi8KZnVuY3Rpb24gZW5zdXJlRW50cnkocGF0aCwgY29udGFpbmVyS2V5LCBlbnRyeSwgbGFiZWwpIHsKCWxldCBjb25maWcgPSB7fTsKCWNvbnN0IGV4aXN0ZWQgPSBleGlzdHNTeW5jKHBhdGgpOwoJaWYgKGV4aXN0ZWQpIHsKCQl0cnkgewoJCQljb25maWcgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhwYXRoLCAndXRmLTgnKSk7CgkJfSBjYXRjaCAoZXJyb3IpIHsKCQkJY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTsKCQkJcmV0dXJuIHsKCQkJCXBhdGgsCgkJCQlsYWJlbCwKCQkJCWFjdGlvbjogJ3NraXBwZWQnLAoJCQkJcmVhc29uOiBgaW52YWxpZCBKU09OICgke21lc3NhZ2V9KWAsCgkJCX07CgkJfQoJfQoJaWYgKCFjb25maWdbY29udGFpbmVyS2V5XSB8fCB0eXBlb2YgY29uZmlnW2NvbnRhaW5lcktleV0gIT09ICdvYmplY3QnKSB7CgkJY29uZmlnW2NvbnRhaW5lcktleV0gPSB7fTsKCX0KCgljb25zdCBwcmV2aW91cyA9IGNvbmZpZ1tjb250YWluZXJLZXldW01DUF9TRVJWRVJfTkFNRV07CglpZiAocHJldmlvdXMgJiYgSlNPTi5zdHJpbmdpZnkocHJldmlvdXMpID09PSBKU09OLnN0cmluZ2lmeShlbnRyeSkpIHsKCQlyZXR1cm4geyBwYXRoLCBsYWJlbCwgYWN0aW9uOiAndW5jaGFuZ2VkJyB9OwoJfQoKCWNvbmZpZ1tjb250YWluZXJLZXldW01DUF9TRVJWRVJfTkFNRV0gPSBlbnRyeTsKCXRyeSB7CgkJd3JpdGVKc29uKHBhdGgsIGNvbmZpZyk7Cgl9IGNhdGNoIChlcnJvcikgewoJCWNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7CgkJcmV0dXJuIHsgcGF0aCwgbGFiZWwsIGFjdGlvbjogJ3NraXBwZWQnLCByZWFzb246IG1lc3NhZ2UgfTsKCX0KCXJldHVybiB7IHBhdGgsIGxhYmVsLCBhY3Rpb246IGV4aXN0ZWQgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCcgfTsKfQoKLyoqIENsYXVkZSBDb2RlIOKAlCBwcm9qZWN0LXJvb3QgYC5tY3AuanNvbmAuICovCmV4cG9ydCBjb25zdCB3cml0ZUNsYXVkZUNvZGVDb25maWcgPSAocm9vdCkgPT4KCWVuc3VyZUVudHJ5KAoJCWpvaW4ocm9vdCwgJy5tY3AuanNvbicpLAoJCSdtY3BTZXJ2ZXJzJywKCQlzdGRpb0VudHJ5KCksCgkJJ0NsYXVkZSBDb2RlJwoJKTsKCi8qKiBDdXJzb3Ig4oCUIHByb2plY3QgYC5jdXJzb3IvbWNwLmpzb25gLiAqLwpleHBvcnQgY29uc3Qgd3JpdGVDdXJzb3JDb25maWcgPSAocm9vdCkgPT4KCWVuc3VyZUVudHJ5KAoJCWpvaW4ocm9vdCwgJy5jdXJzb3InLCAnbWNwLmpzb24nKSwKCQknbWNwU2VydmVycycsCgkJc3RkaW9FbnRyeSgpLAoJCSdDdXJzb3InCgkpOwoKLyoqIFZTIENvZGUgLyBHaXRIdWIgQ29waWxvdCDigJQgcHJvamVjdCBgLnZzY29kZS9tY3AuanNvbmAgKGBzZXJ2ZXJzYCArIGB0eXBlYCkuICovCmV4cG9ydCBjb25zdCB3cml0ZVZzY29kZUNvbmZpZyA9IChyb290KSA9PgoJZW5zdXJlRW50cnkoCgkJam9pbihyb290LCAnLnZzY29kZScsICdtY3AuanNvbicpLAoJCSdzZXJ2ZXJzJywKCQl2c2NvZGVFbnRyeSgpLAoJCSdWUyBDb2RlIC8gQ29waWxvdCcKCSk7CgovKioKICogV2luZHN1cmYg4oCUIENhc2NhZGUgb25seSByZWFkcyBhIEdMT0JBTCBjb25maWc7IHRoZXJlIGlzIG5vIHByb2plY3Qgc2NvcGUsIHNvCiAqIHRoaXMgd3JpdGVzIHRvIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgYW5kIGFmZmVjdHMgYWxsIHRoZWlyIHByb2plY3RzLgogKi8KZXhwb3J0IGNvbnN0IHdyaXRlV2luZHN1cmZDb25maWcgPSAoKSA9PgoJZW5zdXJlRW50cnkoCgkJam9pbihob21lZGlyKCksICcuY29kZWl1bScsICd3aW5kc3VyZicsICdtY3BfY29uZmlnLmpzb24nKSwKCQknbWNwU2VydmVycycsCgkJc3RkaW9FbnRyeSgpLAoJCSdXaW5kc3VyZiAoZ2xvYmFsKScKCSk7CgovKioKICogUmVnaXN0ZXIgdGhlIHNlcnZlciBhY3Jvc3MgaGFybmVzc2VzLiBQcm9qZWN0LXNjb3BlZCBoYXJuZXNzZXMgYWx3YXlzIHJ1bjsKICogV2luZHN1cmYgKGdsb2JhbCwgaG9tZS1kaXIpIGlzIG9wdC1pbiB2aWEgYGluY2x1ZGVXaW5kc3VyZmAgYmVjYXVzZSB3cml0aW5nCiAqIGl0IGFmZmVjdHMgZXZlcnkgcHJvamVjdCBvbiB0aGUgbWFjaGluZSDigJQgYXBwcm9wcmlhdGUgZm9yIHRoZSBleHBsaWNpdAogKiBgYWktaW5pdCAtLW1jcGAgY29tbWFuZCwgYnV0IG5vdCBmb3IgYSBzaWxlbnQgZGV2LXNlcnZlciBib290LgogKi8KZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU1jcENvbmZpZ3Mocm9vdCwgeyBpbmNsdWRlV2luZHN1cmYgPSBmYWxzZSB9ID0ge30pIHsKCWNvbnN0IHJlc3VsdHMgPSBbCgkJd3JpdGVDbGF1ZGVDb2RlQ29uZmlnKHJvb3QpLAoJCXdyaXRlQ3Vyc29yQ29uZmlnKHJvb3QpLAoJCXdyaXRlVnNjb2RlQ29uZmlnKHJvb3QpLAoJXTsKCWlmIChpbmNsdWRlV2luZHN1cmYpIHJlc3VsdHMucHVzaCh3cml0ZVdpbmRzdXJmQ29uZmlnKCkpOwoJcmV0dXJuIHJlc3VsdHM7Cn0K", "" + import.meta.url).href
|
|
529
510
|
), i = n(e, { includeWindsurf: !1 }), a = i.filter((e) => e.action === "created" || e.action === "updated");
|
|
530
511
|
for (let e of a) t.info(`[bitboss-ui] MCP: ${e.action} config for ${e.label}`);
|
|
531
512
|
for (let e of i.filter((e) => e.action === "skipped")) t.warn(`[bitboss-ui] MCP: skipped ${e.label}${e.reason ? ` (${e.reason})` : ""}`);
|
|
@@ -537,29 +518,60 @@ async function et(e, t) {
|
|
|
537
518
|
t.warn(`[bitboss-ui] MCP: could not register dev server (${n})`);
|
|
538
519
|
}
|
|
539
520
|
}
|
|
540
|
-
function
|
|
541
|
-
let
|
|
521
|
+
function ct(e) {
|
|
522
|
+
let t = {
|
|
542
523
|
iconDir: "./assets/icons",
|
|
543
|
-
...
|
|
544
|
-
}, r, i = !1, a = [], o = [], s = [], { enabled: c, defaultLocale: l, warnings: u } = O({
|
|
545
|
-
locale: n.locale,
|
|
546
|
-
enabledLocales: n.enabledLocales,
|
|
547
|
-
customLocaleKeys: a
|
|
548
|
-
}), p = j([...c, ...a]), m = /* @__PURE__ */ new Map(), h = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Set(), v = () => {
|
|
549
|
-
m.clear(), h.clear(), _ = ie(r);
|
|
550
|
-
for (let e of re(r)) m.set(e.prefix, e), h.set(e.prefix, (t) => te(e.prefix, t));
|
|
524
|
+
...e
|
|
551
525
|
};
|
|
526
|
+
if ("cssLayers" in t && t.cssLayers === void 0) throw Error("[bitboss-ui] cssLayers is present but undefined. If you passed an imported constant such as TAILWIND_V4_LAYERS, the installed bitboss-ui does not export it (older dist?) — upgrade, or pass the array literal. Remove the key entirely for an unlayered sheet.");
|
|
527
|
+
let r = n(t.cssLayers, { resetCss: t.resetCss ?? !1 });
|
|
528
|
+
if (r) throw Error(r);
|
|
529
|
+
let a, o = !1, s, c = {
|
|
530
|
+
info: (e) => console.warn(e),
|
|
531
|
+
warn: (e) => console.warn(e)
|
|
532
|
+
}, d = [], f = [], p = [], { enabled: m, defaultLocale: h, warnings: _ } = F({
|
|
533
|
+
locale: t.locale,
|
|
534
|
+
enabledLocales: t.enabledLocales,
|
|
535
|
+
customLocaleKeys: d
|
|
536
|
+
}), v = R([...m, ...d]), b = /* @__PURE__ */ new Map(), x = /* @__PURE__ */ new Map(), S = /* @__PURE__ */ new Set(), te = () => {
|
|
537
|
+
b.clear(), x.clear(), S = oe(a);
|
|
538
|
+
for (let e of ae(a)) b.set(e.prefix, e), x.set(e.prefix, (t) => ie(e.prefix, t));
|
|
539
|
+
T = null, D = null;
|
|
540
|
+
}, w = (e, t) => {
|
|
541
|
+
let n = b.get(e);
|
|
542
|
+
if (!n) return !1;
|
|
543
|
+
let r = x.get(e);
|
|
544
|
+
return C(n, t) !== null && (!r || r(t));
|
|
545
|
+
}, T = null, D = null, O = null, k = () => D || (D = (async () => {
|
|
546
|
+
let e = t.iconsScanner ?? {}, n = JSON.stringify({
|
|
547
|
+
version: ce(M),
|
|
548
|
+
sets: Array.from(b.entries()).map(([e, t]) => [e, t.lastModified ?? 0]).sort(([e], [t]) => e < t ? -1 : +(e > t)),
|
|
549
|
+
include: e.include ?? [],
|
|
550
|
+
exclude: e.exclude ?? [],
|
|
551
|
+
maxFileSize: e.maxFileSize ?? null
|
|
552
|
+
}), r = new i({
|
|
553
|
+
root: a,
|
|
554
|
+
outDir: s ?? y(a, "dist"),
|
|
555
|
+
scanner: e,
|
|
556
|
+
prefixes: Array.from(b.keys()),
|
|
557
|
+
resolves: w,
|
|
558
|
+
cacheFile: l(a),
|
|
559
|
+
cacheKey: n
|
|
560
|
+
}), o = await r.scan();
|
|
561
|
+
if (o.cold && c.info(`[bitboss-ui] icon scan: ${o.files} files in ${o.elapsed}ms${o.workers ? ` on ${o.workers} threads` : ""} (${r.icons.size} provider icons referenced)`), T = r, O) for (let e of r.includeDirs) O.add(e);
|
|
562
|
+
return r;
|
|
563
|
+
})(), D);
|
|
552
564
|
return {
|
|
553
565
|
name: "bitboss-ui:icon-registry",
|
|
554
566
|
config(e) {
|
|
555
|
-
let t = e.optimizeDeps?.include ?? [], n = e.optimizeDeps?.exclude ?? [], r =
|
|
567
|
+
let t = e.optimizeDeps?.include ?? [], n = e.optimizeDeps?.exclude ?? [], r = V(e.root ?? process.cwd()) ? [...W, He] : W, i = v.found.map(({ pack: e }) => `dayjs/locale/${e}`), a = (e.build?.assetsDir ?? "assets").replace(/\/+$/, ""), o = e.build?.rollupOptions?.output, s = (Array.isArray(o) ? o[0] : o)?.chunkFileNames;
|
|
556
568
|
return {
|
|
557
569
|
optimizeDeps: {
|
|
558
570
|
include: [...r, ...i].filter((e) => !t.includes(e)),
|
|
559
|
-
exclude:
|
|
571
|
+
exclude: G.filter((e) => !n.includes(e))
|
|
560
572
|
},
|
|
561
573
|
build: { rollupOptions: { output: { chunkFileNames(e) {
|
|
562
|
-
if (e.facadeModuleId?.startsWith(
|
|
574
|
+
if (e.facadeModuleId?.startsWith(ot)) {
|
|
563
575
|
let t = e.facadeModuleId.slice(17);
|
|
564
576
|
return `${a}/icons/${t.replace("/", "_")}-[hash].js`;
|
|
565
577
|
}
|
|
@@ -568,20 +580,20 @@ function tt(t) {
|
|
|
568
580
|
};
|
|
569
581
|
},
|
|
570
582
|
configResolved(e) {
|
|
571
|
-
|
|
583
|
+
a = e.root, o = e.command === "build", s = y(a, e.build?.outDir ?? "dist"), e.logger && (c = e.logger);
|
|
572
584
|
},
|
|
573
585
|
resolveId(e) {
|
|
574
|
-
if (e === Ue) return
|
|
575
|
-
if (e === We) return
|
|
576
|
-
if (e === Ge) return
|
|
577
|
-
if (e === Ke) return
|
|
578
|
-
if (e === qe) return
|
|
579
|
-
if (e === Je) return
|
|
580
|
-
if (e.startsWith(
|
|
586
|
+
if (e === Ue) return K;
|
|
587
|
+
if (e === We) return q;
|
|
588
|
+
if (e === Ge) return J;
|
|
589
|
+
if (e === Ke) return Y;
|
|
590
|
+
if (e === qe) return X;
|
|
591
|
+
if (e === Je) return Ye;
|
|
592
|
+
if (e.startsWith(at)) return "\0" + e;
|
|
581
593
|
},
|
|
582
594
|
async load(e) {
|
|
583
|
-
if (e ===
|
|
584
|
-
let { iconDir: e, enabledLocales:
|
|
595
|
+
if (e === q) {
|
|
596
|
+
let { iconDir: e, enabledLocales: n, ...r } = t, i = {
|
|
585
597
|
inertiaLinkName: "Link",
|
|
586
598
|
nuxtLinkName: "NuxtLink",
|
|
587
599
|
linkActiveClass: "router-link-active",
|
|
@@ -593,11 +605,12 @@ function tt(t) {
|
|
|
593
605
|
locale: "it",
|
|
594
606
|
injectStyles: !0,
|
|
595
607
|
resetCss: !1,
|
|
608
|
+
cssLayers: void 0,
|
|
596
609
|
injectDirectives: !0,
|
|
597
610
|
requiredAsterisk: !1,
|
|
598
611
|
toastPosition: "bottom-right",
|
|
599
612
|
...r,
|
|
600
|
-
defaultLocale:
|
|
613
|
+
defaultLocale: h,
|
|
601
614
|
iconDefaultSizes: {
|
|
602
615
|
xs: 12,
|
|
603
616
|
sm: 16,
|
|
@@ -628,100 +641,100 @@ function tt(t) {
|
|
|
628
641
|
};
|
|
629
642
|
return `import { reactive } from 'vue';\nexport const config = reactive(${JSON.stringify(i)});\n`;
|
|
630
643
|
}
|
|
631
|
-
if (e ===
|
|
632
|
-
if (e ===
|
|
633
|
-
if (e ===
|
|
634
|
-
if (e ===
|
|
635
|
-
if (e.startsWith(
|
|
636
|
-
let t = e.slice(17), n = t.indexOf("/"), r = t.slice(0, n), i = t.slice(n + 1), a =
|
|
644
|
+
if (e === Y) return I(m);
|
|
645
|
+
if (e === J) return z(v.found);
|
|
646
|
+
if (e === X) return `export default ${JSON.stringify(Xe())};`;
|
|
647
|
+
if (e === Ye) return H(V(a));
|
|
648
|
+
if (e.startsWith(ot)) {
|
|
649
|
+
let t = e.slice(17), n = t.indexOf("/"), r = t.slice(0, n), i = t.slice(n + 1), a = b.get(r);
|
|
637
650
|
a || this.error(`[bitboss-ui] cannot load "${r}:${i}" — @iconify-json/${r} is not installed.\n Run: npm install -D @iconify-json/${r}`);
|
|
638
|
-
let o =
|
|
639
|
-
return o || this.error(`[bitboss-ui] icon "${i}" does not exist in the ${r} icon set`), `export default ${JSON.stringify(
|
|
651
|
+
let o = C(a, i);
|
|
652
|
+
return o || this.error(`[bitboss-ui] icon "${i}" does not exist in the ${r} icon set`), `export default ${JSON.stringify(re(o))};`;
|
|
640
653
|
}
|
|
641
|
-
if (e !==
|
|
642
|
-
let
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
}).
|
|
649
|
-
return `const _local = import.meta.glob(${JSON.stringify(a)}, { query: '?raw', import: 'default' });\nconst _localIcons = Object.fromEntries(Object.entries(_local).map(([k, l]) => { const f = k.split(/[/\\\\]+/).pop(); return [\`local:\${f.replace(/\\.svg$/i, '')}\`, l]; }));\nconst _icons = {\n` + (u ? u + "\n" : "") + `\t..._localIcons,\n};\nconst _ip = new Set(${JSON.stringify(Array.from(_))});\nconst _loaded = new Set(${JSON.stringify(Array.from(m.keys()))});\nconst _installed = _loaded.size ? \`installed sets: \${[..._loaded].join(', ')}\` : 'no @iconify-json/* set is installed';\nconst _fail = (msg) => () => { const _e = new Error(); import.meta.hot?.send('bitboss-ui:icon-missing', { msg, stack: _e.stack }); return Promise.reject(new Error(msg)); };\nexport const icons = import.meta.env.DEV\n\t? new Proxy(_icons, {\n\t\tget(t, k) {\n\t\t\tif (k in t || typeof k !== 'string' || !k.includes(':')) return t[k];\n\t\t\tconst _c = k.indexOf(':'); const _p = k.slice(0, _c); const _n = k.slice(_c + 1);\n\t\t\tif (_p === 'local' || !/^[a-z][a-z0-9-]*$/.test(_p) || !/^[a-z][a-z0-9-]*$/.test(_n)) return undefined;\n\t\t\tif (_loaded.has(_p)) { const _names = Object.keys(t).filter(x => x.startsWith(_p + ':')).map(x => x.slice(_c + 1)); const _sq = _n.replace(/-/g, ''); const _sug = _names.find(x => x.replace(/-/g, '') === _sq) ?? (_n.length >= 3 ? _names.find(x => x.includes(_n) || (x.length >= 3 && _n.includes(x))) : undefined); return _fail(\`[bitboss-ui] icon "\${k}" does not exist in the \${_p} icon set\` + (_sug ? \` — did you mean "\${_p}:\${_sug}"?\` : '')); }\n\t\t\tconst _pkg = \`@iconify-json/\${_p}\`; const _cmd = \`run: npm install -D \${_pkg}\`;\n\t\t\tif (_ip.has(_p)) return _fail(\`[bitboss-ui] "\${k}" requires "\${_pkg}" — \${_cmd} (\${_installed})\`);\n\t\t\tif (_ip.size) return _fail(\`[bitboss-ui] "\${k}" — "\${_p}" is neither an installed icon set nor a known Iconify prefix (\${_installed})\`);\n\t\t\treturn _fail(\`[bitboss-ui] "\${k}" — no installed icon set has the prefix "\${_p}" (\${_installed}). If "\${_p}" is an Iconify set, \${_cmd}\`);\n\t\t},\n\t})\n\t: _icons;\n`;
|
|
654
|
+
if (e !== K) return;
|
|
655
|
+
let n = y(a, t.iconDir), r = "/" + ee(a, n).replace(/\\/g, "/") + "/**/*.svg", i = await k(), s = j(t.iconWhitelist ?? [], b, x, S);
|
|
656
|
+
s.errors.length > 0 && this.error(s.errors.length === 1 ? s.errors[0] : `[bitboss-ui] iconWhitelist has ${s.errors.length} entries that do not resolve:\n - ${s.errors.map((e) => e.replace(/^\[bitboss-ui\] /, "")).join("\n - ")}`);
|
|
657
|
+
let c = /* @__PURE__ */ new Set([...i.icons, ...s.icons]), l = Array.from(c).sort().flatMap((e) => {
|
|
658
|
+
let t = ne(e);
|
|
659
|
+
return t ? [`\t${JSON.stringify(e)}: () => import(${JSON.stringify(at + t.prefix + "/" + t.name)}).then(m => m.default),`] : [];
|
|
660
|
+
}).join("\n"), u = o ? null : Object.fromEntries(Array.from(b.entries()).map(([e, t]) => [e, A(t, x.get(e))]));
|
|
661
|
+
return `const _local = import.meta.glob(${JSON.stringify(r)}, { query: '?raw', import: 'default' });\nconst _localIcons = Object.fromEntries(Object.entries(_local).map(([k, l]) => { const f = k.split(/[/\\\\]+/).pop(); return [\`local:\${f.replace(/\\.svg$/i, '')}\`, l]; }));\nconst _icons = {\n` + (l ? l + "\n" : "") + `\t..._localIcons,\n};\nconst _ip = new Set(${JSON.stringify(Array.from(S))});\nconst _loaded = new Set(${JSON.stringify(Array.from(b.keys()))});\nconst _all = ${u ? JSON.stringify(u) : "null"};\nconst _diag = ${se};\nconst _fail = (msg) => () => { const _e = new Error(); import.meta.hot?.send('bitboss-ui:icon-missing', { msg, stack: _e.stack }); return Promise.reject(new Error(msg)); };\nexport const icons = new Proxy(_icons, {\n\tget(t, k) {\n\t\tif (k in t || typeof k !== 'string' || !k.includes(':')) return t[k];\n\t\tconst _msg = _diag(k, _loaded, (p) => Object.keys(t).filter((x) => x.startsWith(p + ':')).map((x) => x.slice(p.length + 1)), (p) => (_all && _all[p]) || null, _ip);\n\t\treturn _msg ? _fail(_msg) : undefined;\n\t},\n});\n`;
|
|
650
662
|
},
|
|
651
663
|
buildStart() {
|
|
652
|
-
|
|
664
|
+
te(), $e(y(a, t.iconDir), a), !o && t.vscodeSettings !== !1 && it(a, {
|
|
653
665
|
info: (e) => this.info(e),
|
|
654
666
|
warn: (e) => this.warn(e)
|
|
655
667
|
});
|
|
656
|
-
for (let e of
|
|
657
|
-
for (let e of
|
|
658
|
-
for (let e of
|
|
659
|
-
for (let e of
|
|
660
|
-
|
|
661
|
-
let
|
|
668
|
+
for (let e of f) this.warn(e);
|
|
669
|
+
for (let e of _) this.warn(e);
|
|
670
|
+
for (let e of p) this.warn(e);
|
|
671
|
+
for (let e of v.missing) this.warn(`[bitboss-ui] locale '${e}' has no dayjs counterpart (dayjs/locale/${e}) — its calendars fall back to English. Dayjs locale names: https://github.com/iamkun/dayjs/tree/dev/src/locale`);
|
|
672
|
+
t.locale && !u.includes(t.locale) && !d.includes(t.locale) && this.warn(`[bitboss-ui] \`locale: '${t.locale}'\` is not a built-in locale — the library ships ${u.length} dictionaries. Strings fall back to the default locale.`), E(_e, L([...m, ...d], Ee));
|
|
673
|
+
let e = [
|
|
662
674
|
{
|
|
663
675
|
defaults: Me,
|
|
664
|
-
custom:
|
|
676
|
+
custom: t.buttonVariants,
|
|
665
677
|
outputPath: le,
|
|
666
678
|
module: ve,
|
|
667
679
|
registryName: "ButtonVariantRegistry"
|
|
668
680
|
},
|
|
669
681
|
{
|
|
670
682
|
defaults: Ne,
|
|
671
|
-
custom:
|
|
683
|
+
custom: t.alertVariants,
|
|
672
684
|
outputPath: ue,
|
|
673
685
|
module: ye,
|
|
674
686
|
registryName: "AlertVariantRegistry"
|
|
675
687
|
},
|
|
676
688
|
{
|
|
677
689
|
defaults: Pe,
|
|
678
|
-
custom:
|
|
690
|
+
custom: t.badgeVariants,
|
|
679
691
|
outputPath: de,
|
|
680
692
|
module: be,
|
|
681
693
|
registryName: "BadgeVariantRegistry"
|
|
682
694
|
},
|
|
683
695
|
{
|
|
684
696
|
defaults: Fe,
|
|
685
|
-
custom:
|
|
697
|
+
custom: t.confirmVariants,
|
|
686
698
|
outputPath: fe,
|
|
687
699
|
module: xe,
|
|
688
700
|
registryName: "ConfirmVariantRegistry"
|
|
689
701
|
},
|
|
690
702
|
{
|
|
691
703
|
defaults: Ie,
|
|
692
|
-
custom:
|
|
704
|
+
custom: t.dropdownItemVariants,
|
|
693
705
|
outputPath: pe,
|
|
694
706
|
module: Se,
|
|
695
707
|
registryName: "DropdownItemVariantRegistry"
|
|
696
708
|
},
|
|
697
709
|
{
|
|
698
710
|
defaults: Le,
|
|
699
|
-
custom:
|
|
711
|
+
custom: t.tooltipVariants,
|
|
700
712
|
outputPath: me,
|
|
701
713
|
module: Ce,
|
|
702
714
|
registryName: "TooltipVariantRegistry"
|
|
703
715
|
},
|
|
704
716
|
{
|
|
705
717
|
defaults: Re,
|
|
706
|
-
custom:
|
|
718
|
+
custom: t.toastVariants,
|
|
707
719
|
outputPath: he,
|
|
708
720
|
module: we,
|
|
709
721
|
registryName: "ToastVariantRegistry"
|
|
710
722
|
},
|
|
711
723
|
{
|
|
712
724
|
defaults: ze,
|
|
713
|
-
custom:
|
|
725
|
+
custom: t.indicatorVariants,
|
|
714
726
|
outputPath: ge,
|
|
715
727
|
module: Te,
|
|
716
728
|
registryName: "IndicatorVariantRegistry"
|
|
717
729
|
}
|
|
718
730
|
];
|
|
719
|
-
for (let
|
|
731
|
+
for (let t of e) E(t.outputPath, U(Be(t.defaults, t.custom), t.module, t.registryName));
|
|
720
732
|
},
|
|
721
733
|
configureServer(e) {
|
|
722
|
-
|
|
723
|
-
let
|
|
734
|
+
t.mcp && st(e.config.root, e.config.logger);
|
|
735
|
+
let n = y(e.config.root, t.iconDir), r = (e) => e.startsWith(n) && e.endsWith(".svg");
|
|
724
736
|
e.ws.on("bitboss-ui:icon-missing", (t) => {
|
|
737
|
+
if (process.env.VITEST || e.config.mode === "test") return;
|
|
725
738
|
let n = t.stack ? t.stack.replace(/^Error/, `Error: ${t.msg}`) : `Error: ${t.msg}`;
|
|
726
739
|
e.ws.send({
|
|
727
740
|
type: "error",
|
|
@@ -731,15 +744,41 @@ function tt(t) {
|
|
|
731
744
|
plugin: "bitboss-ui"
|
|
732
745
|
}
|
|
733
746
|
});
|
|
734
|
-
})
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
}
|
|
739
|
-
|
|
747
|
+
});
|
|
748
|
+
let i = async () => {
|
|
749
|
+
let t = e.moduleGraph.getModuleById(K);
|
|
750
|
+
t && await e.reloadModule(t);
|
|
751
|
+
}, a, o = () => {
|
|
752
|
+
clearTimeout(a), a = setTimeout(() => void T?.persist(), 500);
|
|
753
|
+
}, s = Promise.resolve(), l = (e, t) => {
|
|
754
|
+
s = s.then(async () => {
|
|
755
|
+
if (!T) return;
|
|
756
|
+
let n;
|
|
757
|
+
if (g(t) === ".gitignore") {
|
|
758
|
+
let e = T.icons;
|
|
759
|
+
T.resetGitignores(), await T.scan();
|
|
760
|
+
let t = T.icons;
|
|
761
|
+
n = e.size !== t.size || [...e].some((e) => !t.has(e));
|
|
762
|
+
} else n = e === "unlink" ? T.removeFile(t) : await T.updateFile(t);
|
|
763
|
+
o(), n && await i();
|
|
764
|
+
}).catch((e) => {
|
|
765
|
+
c.warn(`[bitboss-ui] icon scan: could not update ${t} (${e instanceof Error ? e.message : String(e)})`);
|
|
766
|
+
});
|
|
767
|
+
};
|
|
768
|
+
if (O = e.watcher, T) for (let e of T.includeDirs) O.add(e);
|
|
769
|
+
for (let t of [
|
|
770
|
+
"add",
|
|
771
|
+
"change",
|
|
772
|
+
"unlink"
|
|
773
|
+
]) e.watcher.on(t, (i) => {
|
|
774
|
+
if (r(i)) {
|
|
775
|
+
$e(n, e.config.root);
|
|
776
|
+
return;
|
|
777
|
+
}
|
|
778
|
+
l(t, i);
|
|
740
779
|
});
|
|
741
780
|
}
|
|
742
781
|
};
|
|
743
782
|
}
|
|
744
783
|
//#endregion
|
|
745
|
-
export { e as BUILTIN_LOCALE_KEYS,
|
|
784
|
+
export { e as BB_LAYERS, u as BUILTIN_LOCALE_KEYS, r as DEFAULT_MAX_FILE_SIZE, i as IconScanner, G as REQUIRED_OPTIMIZE_DEPS_EXCLUDE, W as REQUIRED_OPTIMIZE_DEPS_INCLUDE, t as TAILWIND_V4_LAYERS, ct as bitbossUi, k as diagnoseMissingIcon, j as expandIconWhitelist, a as extractIconCandidates, z as generateDayjsLocalesModule, H as generateLinkModule, L as generateLocaleRegistryDts, I as generateLocalesModule, U as generateVariantsDts, V as hasInertia, c as iconLiteralRegExp, l as iconScanCacheFile, R as resolveDayjsLocales, F as resolveEnabledLocales, et as stripJsonComments, it as updateVscodeSettings };
|