@iyulab/components 0.1.0
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/CHANGELOG.md +4 -0
- package/LICENSE +21 -0
- package/README.md +33 -0
- package/dist/assets/icons/arrow-clockwise.svg.js +7 -0
- package/dist/assets/icons/arrow-down.svg.js +6 -0
- package/dist/assets/icons/arrow-up.svg.js +6 -0
- package/dist/assets/icons/ban.svg.js +6 -0
- package/dist/assets/icons/bell-fill.svg.js +6 -0
- package/dist/assets/icons/check-circle-fill.svg.js +6 -0
- package/dist/assets/icons/check-lg.svg.js +6 -0
- package/dist/assets/icons/chevron-down.svg.js +6 -0
- package/dist/assets/icons/chevron-left.svg.js +6 -0
- package/dist/assets/icons/chevron-right.svg.js +6 -0
- package/dist/assets/icons/chevron-up.svg.js +6 -0
- package/dist/assets/icons/copy.svg.js +6 -0
- package/dist/assets/icons/dash-lg.svg.js +6 -0
- package/dist/assets/icons/exclamation-circle-fill.svg.js +6 -0
- package/dist/assets/icons/exclamation-triangle-fill.svg.js +6 -0
- package/dist/assets/icons/eye-slash.svg.js +8 -0
- package/dist/assets/icons/eye.svg.js +7 -0
- package/dist/assets/icons/info-circle-fill.svg.js +6 -0
- package/dist/assets/icons/layout-sidebar.svg.js +6 -0
- package/dist/assets/icons/lightbulb-fill.svg.js +6 -0
- package/dist/assets/icons/lightbulb-off.svg.js +6 -0
- package/dist/assets/icons/lightbulb.svg.js +6 -0
- package/dist/assets/icons/mic-fill.svg.js +7 -0
- package/dist/assets/icons/mic-mute-fill.svg.js +7 -0
- package/dist/assets/icons/paperclip.svg.js +6 -0
- package/dist/assets/icons/pencil-square.svg.js +7 -0
- package/dist/assets/icons/plus-lg.svg.js +6 -0
- package/dist/assets/icons/search.svg.js +6 -0
- package/dist/assets/icons/speedometer.svg.js +7 -0
- package/dist/assets/icons/x-lg.svg.js +6 -0
- package/dist/assets/styles/dark.css +126 -0
- package/dist/assets/styles/dark.css.js +4 -0
- package/dist/assets/styles/light.css +127 -0
- package/dist/assets/styles/light.css.js +4 -0
- package/dist/components/BaseElement.d.ts +33 -0
- package/dist/components/BaseElement.js +49 -0
- package/dist/components/BaseElement.styles.d.ts +1 -0
- package/dist/components/BaseElement.styles.js +29 -0
- package/dist/components/alert/Alert.d.ts +36 -0
- package/dist/components/alert/Alert.js +107 -0
- package/dist/components/alert/Alert.styles.d.ts +1 -0
- package/dist/components/alert/Alert.styles.js +114 -0
- package/dist/components/alert/index.d.ts +7 -0
- package/dist/components/button/Button.d.ts +16 -0
- package/dist/components/button/Button.js +45 -0
- package/dist/components/button/Button.styles.d.ts +1 -0
- package/dist/components/button/Button.styles.js +89 -0
- package/dist/components/button/index.d.ts +7 -0
- package/dist/components/context-menu/ContextMenu.d.ts +48 -0
- package/dist/components/context-menu/ContextMenu.js +142 -0
- package/dist/components/context-menu/ContextMenu.styles.d.ts +1 -0
- package/dist/components/context-menu/ContextMenu.styles.js +40 -0
- package/dist/components/context-menu/index.d.ts +7 -0
- package/dist/components/copy-button/CopyButton.d.ts +15 -0
- package/dist/components/copy-button/CopyButton.styles.d.ts +1 -0
- package/dist/components/copy-button/index.d.ts +7 -0
- package/dist/components/dialog/Dialog.d.ts +30 -0
- package/dist/components/dialog/Dialog.js +66 -0
- package/dist/components/dialog/Dialog.styles.d.ts +1 -0
- package/dist/components/dialog/Dialog.styles.js +32 -0
- package/dist/components/dialog/index.d.ts +7 -0
- package/dist/components/form/Form.d.ts +22 -0
- package/dist/components/form/Form.js +53 -0
- package/dist/components/form/Form.styles.d.ts +1 -0
- package/dist/components/form/Form.styles.js +18 -0
- package/dist/components/form/index.d.ts +7 -0
- package/dist/components/icon/Icon.d.ts +35 -0
- package/dist/components/icon/Icon.js +63 -0
- package/dist/components/icon/Icon.styles.d.ts +1 -0
- package/dist/components/icon/Icon.styles.js +17 -0
- package/dist/components/icon/index.d.ts +7 -0
- package/dist/components/icon-button/IconButton.d.ts +19 -0
- package/dist/components/icon-button/IconButton.js +51 -0
- package/dist/components/icon-button/IconButton.styles.d.ts +1 -0
- package/dist/components/icon-button/IconButton.styles.js +69 -0
- package/dist/components/icon-button/index.d.ts +7 -0
- package/dist/components/index.d.ts +14 -0
- package/dist/components/input/Input.d.ts +73 -0
- package/dist/components/input/Input.js +193 -0
- package/dist/components/input/Input.styles.d.ts +1 -0
- package/dist/components/input/Input.styles.js +149 -0
- package/dist/components/input/index.d.ts +7 -0
- package/dist/components/menu/Menu.d.ts +36 -0
- package/dist/components/menu/Menu.js +103 -0
- package/dist/components/menu/Menu.styles.d.ts +1 -0
- package/dist/components/menu/Menu.styles.js +33 -0
- package/dist/components/menu/index.d.ts +7 -0
- package/dist/components/menu-item/MenuItem.d.ts +27 -0
- package/dist/components/menu-item/MenuItem.js +68 -0
- package/dist/components/menu-item/MenuItem.styles.d.ts +1 -0
- package/dist/components/menu-item/MenuItem.styles.js +64 -0
- package/dist/components/menu-item/index.d.ts +7 -0
- package/dist/components/panel/Panel.d.ts +10 -0
- package/dist/components/panel/Panel.js +20 -0
- package/dist/components/panel/Panel.styles.d.ts +1 -0
- package/dist/components/panel/Panel.styles.js +12 -0
- package/dist/components/panel/index.d.ts +7 -0
- package/dist/components/progress-ring/ProgressRing.d.ts +31 -0
- package/dist/components/progress-ring/ProgressRing.js +85 -0
- package/dist/components/progress-ring/ProgressRing.styles.d.ts +1 -0
- package/dist/components/progress-ring/ProgressRing.styles.js +53 -0
- package/dist/components/progress-ring/index.d.ts +7 -0
- package/dist/components/spinner/Spinner.d.ts +9 -0
- package/dist/components/spinner/Spinner.js +22 -0
- package/dist/components/spinner/Spinner.styles.d.ts +1 -0
- package/dist/components/spinner/Spinner.styles.js +57 -0
- package/dist/components/spinner/index.d.ts +7 -0
- package/dist/components/split-panel/SplitPanel.d.ts +26 -0
- package/dist/components/split-panel/SplitPanel.js +86 -0
- package/dist/components/split-panel/SplitPanel.styles.d.ts +1 -0
- package/dist/components/split-panel/SplitPanel.styles.js +19 -0
- package/dist/components/split-panel/SplitPanel.types.d.ts +2 -0
- package/dist/components/split-panel/Splitter.d.ts +17 -0
- package/dist/components/split-panel/Splitter.js +39 -0
- package/dist/components/split-panel/Splitter.styles.d.ts +1 -0
- package/dist/components/split-panel/Splitter.styles.js +45 -0
- package/dist/components/split-panel/index.d.ts +7 -0
- package/dist/components/tooltip/Tooltip.d.ts +44 -0
- package/dist/components/tooltip/Tooltip.js +130 -0
- package/dist/components/tooltip/Tooltip.styles.d.ts +1 -0
- package/dist/components/tooltip/Tooltip.styles.js +36 -0
- package/dist/components/tooltip/index.d.ts +7 -0
- package/dist/events/UChangeEvent.d.ts +6 -0
- package/dist/events/UHideEvent.d.ts +6 -0
- package/dist/events/UInputEvent.d.ts +6 -0
- package/dist/events/UResizeEvent.d.ts +6 -0
- package/dist/events/USelectEvent.d.ts +6 -0
- package/dist/events/UShowEvent.d.ts +6 -0
- package/dist/events/index.d.ts +6 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +40 -0
- package/dist/integrations/react/UAlert.d.ts +8 -0
- package/dist/integrations/react/UAlert.js +10 -0
- package/dist/integrations/react/UButton.d.ts +8 -0
- package/dist/integrations/react/UButton.js +10 -0
- package/dist/integrations/react/UContextMenu.d.ts +8 -0
- package/dist/integrations/react/UContextMenu.js +10 -0
- package/dist/integrations/react/UCopyButton.d.ts +8 -0
- package/dist/integrations/react/UCopyButton.js +10 -0
- package/dist/integrations/react/UDialog.d.ts +8 -0
- package/dist/integrations/react/UDialog.js +10 -0
- package/dist/integrations/react/UForm.d.ts +8 -0
- package/dist/integrations/react/UForm.js +10 -0
- package/dist/integrations/react/UIcon.d.ts +8 -0
- package/dist/integrations/react/UIcon.js +10 -0
- package/dist/integrations/react/UIconButton.d.ts +8 -0
- package/dist/integrations/react/UIconButton.js +10 -0
- package/dist/integrations/react/UInput.d.ts +8 -0
- package/dist/integrations/react/UInput.js +10 -0
- package/dist/integrations/react/UMenu.d.ts +8 -0
- package/dist/integrations/react/UMenu.js +10 -0
- package/dist/integrations/react/UMenuItem.d.ts +8 -0
- package/dist/integrations/react/UMenuItem.js +10 -0
- package/dist/integrations/react/UPanel.d.ts +8 -0
- package/dist/integrations/react/UPanel.js +10 -0
- package/dist/integrations/react/UProgressRing.d.ts +8 -0
- package/dist/integrations/react/UProgressRing.js +10 -0
- package/dist/integrations/react/USpinner.d.ts +8 -0
- package/dist/integrations/react/USpinner.js +10 -0
- package/dist/integrations/react/USplitPanel.d.ts +8 -0
- package/dist/integrations/react/USplitPanel.js +10 -0
- package/dist/integrations/react/UTooltip.d.ts +8 -0
- package/dist/integrations/react/UTooltip.js +10 -0
- package/dist/integrations/react/index.d.ts +23 -0
- package/dist/integrations/react/index.js +16 -0
- package/dist/internals/attribute-converters.d.ts +10 -0
- package/dist/internals/attribute-converters.js +12 -0
- package/dist/internals/icons.d.ts +6 -0
- package/dist/internals/icons.js +67 -0
- package/dist/internals/index.d.ts +4 -0
- package/dist/internals/node-helpers.d.ts +12 -0
- package/dist/internals/node-helpers.js +21 -0
- package/dist/internals/react-wrapper.d.ts +21 -0
- package/dist/utilities/decorators.d.ts +28 -0
- package/dist/utilities/decorators.js +21 -0
- package/dist/utilities/index.d.ts +4 -0
- package/dist/utilities/notifier.d.ts +26 -0
- package/dist/utilities/notifier.js +29 -0
- package/dist/utilities/storage.d.ts +60 -0
- package/dist/utilities/storage.js +120 -0
- package/dist/utilities/theme.d.ts +54 -0
- package/dist/utilities/theme.js +108 -0
- package/package.json +58 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { BrowserStorageOptions } from './storage.js';
|
|
2
|
+
/** iyulab에서 제공하는 스타일 타입입니다. */
|
|
3
|
+
export type ThemeType = 'light' | 'dark' | 'system';
|
|
4
|
+
/** 테마 초기 설정 옵션 */
|
|
5
|
+
export interface ThemeInitOptions {
|
|
6
|
+
/**
|
|
7
|
+
* 디버그 모드 활성화 여부
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
debug?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* 기본 테마 설정
|
|
13
|
+
* @default 'system'
|
|
14
|
+
*/
|
|
15
|
+
default?: ThemeType;
|
|
16
|
+
/**
|
|
17
|
+
* 테마 설정 유지 옵션
|
|
18
|
+
* @default false
|
|
19
|
+
*/
|
|
20
|
+
persist?: false | BrowserStorageOptions;
|
|
21
|
+
/**
|
|
22
|
+
* 내부적으로 제공되는 스타일 시트를 자동으로 불러올지 여부
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
25
|
+
useBuiltIn?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* iyulab에서 제공하는 스타일 시트 및 테마 유틸리티입니다.
|
|
29
|
+
*/
|
|
30
|
+
export declare const theme: {
|
|
31
|
+
readonly isInitialized: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* 테마 유틸리티를 초기화합니다.
|
|
34
|
+
*/
|
|
35
|
+
init(options?: ThemeInitOptions): void;
|
|
36
|
+
/**
|
|
37
|
+
* 현재 문서 테마를 가져옵니다.
|
|
38
|
+
* @returns 현재 테마, 'light', 'dark' 또는 'system' 중 하나입니다.
|
|
39
|
+
*/
|
|
40
|
+
get(): ThemeType | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* 문서 테마를 'light', 'dark' 또는 'system'으로 설정합니다.
|
|
43
|
+
* @param theme - 설정할 테마, 'light', 'dark' 또는 'system' 중 하나입니다.
|
|
44
|
+
* @throws 테마가 'light', 'dark' 또는 'system'이 아닌 경우 오류가 발생합니다.
|
|
45
|
+
*/
|
|
46
|
+
set(theme: ThemeType): void;
|
|
47
|
+
/**
|
|
48
|
+
* 문서 테마를 토글합니다.
|
|
49
|
+
* 현재 테마가 'light'이면 'dark'로, 'dark'이면 'light'로 변경합니다.
|
|
50
|
+
* system 테마가 설정된 경우, 토글이 불가능하며 경고를 출력합니다.
|
|
51
|
+
* @return 변경된 테마입니다. system 테마인 경우 변경되지 않습니다.
|
|
52
|
+
*/
|
|
53
|
+
toggle(): ThemeType;
|
|
54
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import * as c from "../assets/styles/dark.css.js";
|
|
2
|
+
import * as g from "../assets/styles/light.css.js";
|
|
3
|
+
import { BrowserStorage as u } from "./storage.js";
|
|
4
|
+
const l = "theme";
|
|
5
|
+
let i = null, m = !1, o = !1;
|
|
6
|
+
const a = {
|
|
7
|
+
get isInitialized() {
|
|
8
|
+
return m;
|
|
9
|
+
},
|
|
10
|
+
/**
|
|
11
|
+
* 테마 유틸리티를 초기화합니다.
|
|
12
|
+
*/
|
|
13
|
+
init(e) {
|
|
14
|
+
if (o = e?.debug || !1, t("init called", { options: e }), e?.useBuiltIn !== !1) {
|
|
15
|
+
t("dynamicImport enabled: loading styles via import.meta.glob");
|
|
16
|
+
const s = Object.entries(/* @__PURE__ */ Object.assign({
|
|
17
|
+
"../assets/styles/dark.css": c,
|
|
18
|
+
"../assets/styles/light.css": g
|
|
19
|
+
}));
|
|
20
|
+
t(`found ${s.length} style assets`, s.map((r) => r[0]));
|
|
21
|
+
for (let [r, h] of s) {
|
|
22
|
+
r = r.split("/").pop() || r;
|
|
23
|
+
const d = document.createElement("style");
|
|
24
|
+
if (d.setAttribute("data-path", r), d.textContent = h.default, document.head.querySelector(`style[data-path="${r}"]`)) {
|
|
25
|
+
t("style already present, skipping", r);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
document.head.appendChild(d), t("appended style to head", r);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (e?.persist !== void 0 && e?.persist !== !1) {
|
|
32
|
+
t("persist option provided, initializing BrowserStorage", e.persist), i = new u(e.persist);
|
|
33
|
+
const s = i.get(l);
|
|
34
|
+
t("retrieved savedTheme from storage", s), s && a.set(s);
|
|
35
|
+
} else e?.default ? (t(`Applying default theme: ${e.default}`), a.set(e.default)) : (t("No persist option or default theme provided, applying system theme by default"), a.set("system"));
|
|
36
|
+
m = !0, t("theme initialized", { isInitialized: m });
|
|
37
|
+
},
|
|
38
|
+
/**
|
|
39
|
+
* 현재 문서 테마를 가져옵니다.
|
|
40
|
+
* @returns 현재 테마, 'light', 'dark' 또는 'system' 중 하나입니다.
|
|
41
|
+
*/
|
|
42
|
+
get() {
|
|
43
|
+
const e = document.documentElement.getAttribute("data-theme");
|
|
44
|
+
switch (t("get() called, data-theme attribute =", e), e) {
|
|
45
|
+
case "system":
|
|
46
|
+
return "system";
|
|
47
|
+
case "light":
|
|
48
|
+
return "light";
|
|
49
|
+
case "dark":
|
|
50
|
+
return "dark";
|
|
51
|
+
default:
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
/**
|
|
56
|
+
* 문서 테마를 'light', 'dark' 또는 'system'으로 설정합니다.
|
|
57
|
+
* @param theme - 설정할 테마, 'light', 'dark' 또는 'system' 중 하나입니다.
|
|
58
|
+
* @throws 테마가 'light', 'dark' 또는 'system'이 아닌 경우 오류가 발생합니다.
|
|
59
|
+
*/
|
|
60
|
+
set(e) {
|
|
61
|
+
if (t("set() called with", e), typeof window > "u")
|
|
62
|
+
throw t("set() aborted: not in browser environment"), new Error("setTheme can only be called in a browser environment.");
|
|
63
|
+
if (e === "system")
|
|
64
|
+
t("setting theme to system; attaching matchMedia listener"), document.documentElement.setAttribute("data-theme", "system"), window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", n), n(), t("system theme applied (data-theme=system)");
|
|
65
|
+
else if (e === "dark") {
|
|
66
|
+
t("setting theme to dark; removing matchMedia listener if present");
|
|
67
|
+
try {
|
|
68
|
+
window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", n);
|
|
69
|
+
} catch (s) {
|
|
70
|
+
t("removeEventListener may have failed or not supported", s);
|
|
71
|
+
}
|
|
72
|
+
document.documentElement.setAttribute("data-theme", "dark"), document.documentElement.setAttribute("theme", "dark"), t("dark theme applied (data-theme=dark, theme=dark)");
|
|
73
|
+
} else if (e === "light") {
|
|
74
|
+
t("setting theme to light; removing matchMedia listener if present");
|
|
75
|
+
try {
|
|
76
|
+
window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", n);
|
|
77
|
+
} catch (s) {
|
|
78
|
+
t("removeEventListener may have failed or not supported", s);
|
|
79
|
+
}
|
|
80
|
+
document.documentElement.setAttribute("data-theme", "light"), document.documentElement.setAttribute("theme", "light"), t("light theme applied (data-theme=light, theme=light)");
|
|
81
|
+
} else
|
|
82
|
+
throw t("set() received invalid theme", e), new Error(`Invalid theme: ${e}. Use 'light', 'dark', or 'system'.`);
|
|
83
|
+
i && (i.set(l, e), t("persisted theme to storage", e));
|
|
84
|
+
},
|
|
85
|
+
/**
|
|
86
|
+
* 문서 테마를 토글합니다.
|
|
87
|
+
* 현재 테마가 'light'이면 'dark'로, 'dark'이면 'light'로 변경합니다.
|
|
88
|
+
* system 테마가 설정된 경우, 토글이 불가능하며 경고를 출력합니다.
|
|
89
|
+
* @return 변경된 테마입니다. system 테마인 경우 변경되지 않습니다.
|
|
90
|
+
*/
|
|
91
|
+
toggle() {
|
|
92
|
+
const e = a.get();
|
|
93
|
+
if (t("toggle() called, current theme =", e), e === "system")
|
|
94
|
+
return console.warn("Cannot toggle theme when system theme is active. Please set a specific theme (light or dark) first."), t("toggle aborted: current theme is system"), e;
|
|
95
|
+
const s = e === "light" ? "dark" : "light";
|
|
96
|
+
return a.set(s), t("toggle completed, new theme =", s), s;
|
|
97
|
+
}
|
|
98
|
+
}, n = () => {
|
|
99
|
+
if (document.documentElement.getAttribute("data-theme") === "system") {
|
|
100
|
+
const e = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
101
|
+
document.documentElement.setAttribute("theme", e ? "dark" : "light");
|
|
102
|
+
}
|
|
103
|
+
}, t = (...e) => {
|
|
104
|
+
o && console.log("[theme]", ...e);
|
|
105
|
+
};
|
|
106
|
+
export {
|
|
107
|
+
a as theme
|
|
108
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@iyulab/components",
|
|
3
|
+
"description": "web-components library by iyulab based on lit-element",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"iyulab",
|
|
7
|
+
"web-components",
|
|
8
|
+
"lit-element"
|
|
9
|
+
],
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"author": "iyulab",
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://github.com/iyulab/node-components.git"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"LICENSE",
|
|
19
|
+
"README.md",
|
|
20
|
+
"CHANGELOG.md",
|
|
21
|
+
"package.json"
|
|
22
|
+
],
|
|
23
|
+
"type": "module",
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"import": "./dist/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./dist/*": {
|
|
31
|
+
"types": "./dist/*",
|
|
32
|
+
"import": "./dist/*"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"scripts": {
|
|
36
|
+
"start": "vite --force",
|
|
37
|
+
"build": "eslint && vite build"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@floating-ui/dom": "^1.7.4",
|
|
41
|
+
"lit": "^3.3.1",
|
|
42
|
+
"react": "^19.2.0",
|
|
43
|
+
"reflect-metadata": "^0.2.2"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@lit/react": "^1.0.8",
|
|
47
|
+
"@eslint/js": "^9.39.1",
|
|
48
|
+
"@types/node": "^24.10.1",
|
|
49
|
+
"eslint": "^9.39.1",
|
|
50
|
+
"eslint-plugin-lit": "^2.1.1",
|
|
51
|
+
"globals": "^16.5.0",
|
|
52
|
+
"typescript": "^5.9.3",
|
|
53
|
+
"typescript-eslint": "^8.46.4",
|
|
54
|
+
"vite": "^7.2.2",
|
|
55
|
+
"vite-plugin-dts": "^4.5.4",
|
|
56
|
+
"vite-plugin-static-copy": "^3.1.4"
|
|
57
|
+
}
|
|
58
|
+
}
|