react-tech-ui 1.0.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.
Files changed (199) hide show
  1. package/LICENSE +82 -0
  2. package/README.en.md +36 -0
  3. package/README.md +412 -0
  4. package/dist/DataCard/index.cjs +1 -0
  5. package/dist/DataCard/index.js +5 -0
  6. package/dist/DataCard/style.css +1 -0
  7. package/dist/DataCard.d.ts +1 -0
  8. package/dist/DecorationLine/index.cjs +1 -0
  9. package/dist/DecorationLine/index.js +5 -0
  10. package/dist/DecorationLine/style.css +1 -0
  11. package/dist/DecorationLine.d.ts +1 -0
  12. package/dist/DigitalNumber/index.cjs +1 -0
  13. package/dist/DigitalNumber/index.js +5 -0
  14. package/dist/DigitalNumber/style.css +1 -0
  15. package/dist/DigitalNumber.d.ts +1 -0
  16. package/dist/Drawer/index.cjs +1 -0
  17. package/dist/Drawer/index.js +5 -0
  18. package/dist/Drawer/style.css +1 -0
  19. package/dist/Drawer.d.ts +1 -0
  20. package/dist/FloatingButton/index.cjs +1 -0
  21. package/dist/FloatingButton/index.js +5 -0
  22. package/dist/FloatingButton/style.css +1 -0
  23. package/dist/FloatingButton.d.ts +1 -0
  24. package/dist/FlowLight/index.cjs +1 -0
  25. package/dist/FlowLight/index.js +5 -0
  26. package/dist/FlowLight/style.css +1 -0
  27. package/dist/FlowLight.d.ts +1 -0
  28. package/dist/Icon/index.cjs +1 -0
  29. package/dist/Icon/index.js +6 -0
  30. package/dist/Icon/style.css +1 -0
  31. package/dist/Icon.d.ts +1 -0
  32. package/dist/Masonry/index.cjs +1 -0
  33. package/dist/Masonry/index.js +5 -0
  34. package/dist/Masonry/style.css +1 -0
  35. package/dist/Masonry.d.ts +1 -0
  36. package/dist/Modal/index.cjs +1 -0
  37. package/dist/Modal/index.js +5 -0
  38. package/dist/Modal/style.css +1 -0
  39. package/dist/Modal.d.ts +1 -0
  40. package/dist/Popconfirm/index.cjs +1 -0
  41. package/dist/Popconfirm/index.js +5 -0
  42. package/dist/Popconfirm/style.css +1 -0
  43. package/dist/Popconfirm.d.ts +1 -0
  44. package/dist/QRCode/index.cjs +1 -0
  45. package/dist/QRCode/index.js +5 -0
  46. package/dist/QRCode/style.css +1 -0
  47. package/dist/QRCode.d.ts +1 -0
  48. package/dist/ScreenAdapter/index.cjs +1 -0
  49. package/dist/ScreenAdapter/index.js +5 -0
  50. package/dist/ScreenAdapter/style.css +1 -0
  51. package/dist/ScreenAdapter.d.ts +1 -0
  52. package/dist/ScrollTable/index.cjs +1 -0
  53. package/dist/ScrollTable/index.js +5 -0
  54. package/dist/ScrollTable/style.css +1 -0
  55. package/dist/ScrollTable.d.ts +1 -0
  56. package/dist/Skeleton/index.cjs +1 -0
  57. package/dist/Skeleton/index.js +5 -0
  58. package/dist/Skeleton/style.css +1 -0
  59. package/dist/Skeleton.d.ts +1 -0
  60. package/dist/StatusIndicator/index.cjs +1 -0
  61. package/dist/StatusIndicator/index.js +5 -0
  62. package/dist/StatusIndicator/style.css +1 -0
  63. package/dist/StatusIndicator.d.ts +1 -0
  64. package/dist/TechBorder/index.cjs +1 -0
  65. package/dist/TechBorder/index.js +5 -0
  66. package/dist/TechBorder/style.css +1 -0
  67. package/dist/TechBorder.d.ts +1 -0
  68. package/dist/TechButton/index.cjs +1 -0
  69. package/dist/TechButton/index.js +5 -0
  70. package/dist/TechButton/style.css +1 -0
  71. package/dist/TechButton.d.ts +1 -0
  72. package/dist/TechTitle/index.cjs +1 -0
  73. package/dist/TechTitle/index.js +5 -0
  74. package/dist/TechTitle/style.css +1 -0
  75. package/dist/TechTitle.d.ts +1 -0
  76. package/dist/ThemeProvider/index.cjs +1 -0
  77. package/dist/ThemeProvider/index.js +8 -0
  78. package/dist/ThemeProvider/style.css +1 -0
  79. package/dist/ThemeProvider.d.ts +1 -0
  80. package/dist/Toast/index.cjs +1 -0
  81. package/dist/Toast/index.js +5 -0
  82. package/dist/Toast/style.css +1 -0
  83. package/dist/Toast.d.ts +1 -0
  84. package/dist/assets/jsx-runtime-B3A9vq2e.css +1 -0
  85. package/dist/chunks/DataCard-CY4njdg1.js +61 -0
  86. package/dist/chunks/DataCard-DjcUGxo9.cjs +1 -0
  87. package/dist/chunks/DecorationLine-Be4QQyry.cjs +1 -0
  88. package/dist/chunks/DecorationLine-CaZYIYl6.js +45 -0
  89. package/dist/chunks/DigitalNumber-BNklEz-G.js +60 -0
  90. package/dist/chunks/DigitalNumber-BWP5OjvN.cjs +1 -0
  91. package/dist/chunks/Drawer-CuoztnnD.cjs +1 -0
  92. package/dist/chunks/Drawer-u77zScbz.js +69 -0
  93. package/dist/chunks/FloatingButton-DcNfUVcB.js +109 -0
  94. package/dist/chunks/FloatingButton-nOl8ZHul.cjs +1 -0
  95. package/dist/chunks/FlowLight-Brrwyxcv.js +62 -0
  96. package/dist/chunks/FlowLight-DLBCaU07.cjs +1 -0
  97. package/dist/chunks/Icon-HxIzkEdE.js +147 -0
  98. package/dist/chunks/Icon-ISAK5vLx.cjs +1 -0
  99. package/dist/chunks/Masonry-CxVB3-w9.js +84 -0
  100. package/dist/chunks/Masonry-LPU0R1mE.cjs +1 -0
  101. package/dist/chunks/Modal-BfCALRKS.js +63 -0
  102. package/dist/chunks/Modal-DxqX4m57.cjs +1 -0
  103. package/dist/chunks/Popconfirm-C3npOXd6.js +112 -0
  104. package/dist/chunks/Popconfirm-CgPdSp84.cjs +1 -0
  105. package/dist/chunks/QRCode-B2Sdq1f6.cjs +8 -0
  106. package/dist/chunks/QRCode-BRcujxUT.js +1535 -0
  107. package/dist/chunks/ScreenAdapter-CugXUEoe.js +61 -0
  108. package/dist/chunks/ScreenAdapter-DpfmLRd5.cjs +1 -0
  109. package/dist/chunks/ScrollTable-B21j9zGn.cjs +1 -0
  110. package/dist/chunks/ScrollTable-NgSlPEKj.js +98 -0
  111. package/dist/chunks/Skeleton-CKvua4DB.cjs +1 -0
  112. package/dist/chunks/Skeleton-CQvCi-N8.js +76 -0
  113. package/dist/chunks/StatusIndicator-CliH19aT.js +40 -0
  114. package/dist/chunks/StatusIndicator-DhPwugAy.cjs +1 -0
  115. package/dist/chunks/TechBorder-Cu-JqkTf.js +45 -0
  116. package/dist/chunks/TechBorder-KTRXvzVv.cjs +1 -0
  117. package/dist/chunks/TechButton-CTrXjlsD.js +42 -0
  118. package/dist/chunks/TechButton-DYdIWO-l.cjs +1 -0
  119. package/dist/chunks/TechTitle-B3pkYIbI.cjs +1 -0
  120. package/dist/chunks/TechTitle-DfLwdrV5.js +41 -0
  121. package/dist/chunks/ThemeProvider-CGtZuVnU.cjs +1 -0
  122. package/dist/chunks/ThemeProvider-uEdKkbFn.js +206 -0
  123. package/dist/chunks/Toast-CedBaeZV.cjs +1 -0
  124. package/dist/chunks/Toast-DdlPSfu0.js +79 -0
  125. package/dist/chunks/index-CcykAxZN.js +6 -0
  126. package/dist/chunks/index-pCtiW2Id.cjs +1 -0
  127. package/dist/chunks/jsx-runtime-7asRZgsb.cjs +30 -0
  128. package/dist/chunks/jsx-runtime-C6iVud2f.js +630 -0
  129. package/dist/components/DataCard/DataCard.d.ts +18 -0
  130. package/dist/components/DataCard/entry.d.ts +3 -0
  131. package/dist/components/DataCard/index.d.ts +2 -0
  132. package/dist/components/DecorationLine/DecorationLine.d.ts +14 -0
  133. package/dist/components/DecorationLine/entry.d.ts +3 -0
  134. package/dist/components/DecorationLine/index.d.ts +2 -0
  135. package/dist/components/DigitalNumber/DigitalNumber.d.ts +17 -0
  136. package/dist/components/DigitalNumber/entry.d.ts +3 -0
  137. package/dist/components/DigitalNumber/index.d.ts +2 -0
  138. package/dist/components/Drawer/Drawer.d.ts +18 -0
  139. package/dist/components/Drawer/entry.d.ts +3 -0
  140. package/dist/components/Drawer/index.d.ts +2 -0
  141. package/dist/components/FloatingButton/FloatingButton.d.ts +24 -0
  142. package/dist/components/FloatingButton/entry.d.ts +3 -0
  143. package/dist/components/FloatingButton/index.d.ts +2 -0
  144. package/dist/components/FlowLight/FlowLight.d.ts +14 -0
  145. package/dist/components/FlowLight/entry.d.ts +3 -0
  146. package/dist/components/FlowLight/index.d.ts +2 -0
  147. package/dist/components/Icon/Icon.d.ts +16 -0
  148. package/dist/components/Icon/entry.d.ts +4 -0
  149. package/dist/components/Icon/index.d.ts +3 -0
  150. package/dist/components/Masonry/Masonry.d.ts +23 -0
  151. package/dist/components/Masonry/entry.d.ts +3 -0
  152. package/dist/components/Masonry/index.d.ts +2 -0
  153. package/dist/components/Modal/Modal.d.ts +18 -0
  154. package/dist/components/Modal/entry.d.ts +3 -0
  155. package/dist/components/Modal/index.d.ts +2 -0
  156. package/dist/components/Popconfirm/Popconfirm.d.ts +19 -0
  157. package/dist/components/Popconfirm/entry.d.ts +3 -0
  158. package/dist/components/Popconfirm/index.d.ts +2 -0
  159. package/dist/components/QRCode/QRCode.d.ts +19 -0
  160. package/dist/components/QRCode/entry.d.ts +3 -0
  161. package/dist/components/QRCode/index.d.ts +2 -0
  162. package/dist/components/ScreenAdapter/ScreenAdapter.d.ts +13 -0
  163. package/dist/components/ScreenAdapter/entry.d.ts +3 -0
  164. package/dist/components/ScreenAdapter/index.d.ts +2 -0
  165. package/dist/components/ScrollTable/ScrollTable.d.ts +23 -0
  166. package/dist/components/ScrollTable/entry.d.ts +3 -0
  167. package/dist/components/ScrollTable/index.d.ts +2 -0
  168. package/dist/components/Skeleton/Skeleton.d.ts +16 -0
  169. package/dist/components/Skeleton/entry.d.ts +3 -0
  170. package/dist/components/Skeleton/index.d.ts +2 -0
  171. package/dist/components/StatusIndicator/StatusIndicator.d.ts +14 -0
  172. package/dist/components/StatusIndicator/entry.d.ts +3 -0
  173. package/dist/components/StatusIndicator/index.d.ts +2 -0
  174. package/dist/components/TechBorder/TechBorder.d.ts +15 -0
  175. package/dist/components/TechBorder/entry.d.ts +3 -0
  176. package/dist/components/TechBorder/index.d.ts +2 -0
  177. package/dist/components/TechButton/TechButton.d.ts +15 -0
  178. package/dist/components/TechButton/entry.d.ts +3 -0
  179. package/dist/components/TechButton/index.d.ts +2 -0
  180. package/dist/components/TechTitle/TechTitle.d.ts +14 -0
  181. package/dist/components/TechTitle/entry.d.ts +3 -0
  182. package/dist/components/TechTitle/index.d.ts +2 -0
  183. package/dist/components/ThemeProvider/ThemeProvider.d.ts +42 -0
  184. package/dist/components/ThemeProvider/entry.d.ts +3 -0
  185. package/dist/components/ThemeProvider/index.d.ts +2 -0
  186. package/dist/components/Toast/Toast.d.ts +23 -0
  187. package/dist/components/Toast/entry.d.ts +3 -0
  188. package/dist/components/Toast/index.d.ts +2 -0
  189. package/dist/index/index.cjs +1 -0
  190. package/dist/index/index.js +49 -0
  191. package/dist/index/style.css +41 -0
  192. package/dist/index.d.ts +31 -0
  193. package/dist/jsx-runtime/style.css +1 -0
  194. package/dist/theme/index.cjs +1 -0
  195. package/dist/theme/index.d.ts +46 -0
  196. package/dist/theme/index.js +48 -0
  197. package/dist/theme.d.ts +1 -0
  198. package/dist/utils/index.d.ts +8 -0
  199. package/package.json +165 -0
@@ -0,0 +1,61 @@
1
+ import { j as u } from "./jsx-runtime-C6iVud2f.js";
2
+ import { useRef as O, useState as p, useCallback as R, useEffect as X } from "react";
3
+ const k = ({
4
+ width: e = 1920,
5
+ height: s = 1080,
6
+ children: m,
7
+ className: v,
8
+ style: w,
9
+ mode: n = "scale",
10
+ bgStyle: x = "dark"
11
+ }) => {
12
+ const $ = O(null), [r, c] = p(1), [S, o] = p(0), [b, a] = p(0), t = R(() => {
13
+ const i = window.innerWidth, l = window.innerHeight;
14
+ if (n === "full") {
15
+ c(1), o(0), a(0);
16
+ return;
17
+ }
18
+ if (n === "width-scale") {
19
+ const d = i / e;
20
+ c(d), o(0), a((l - s * d) / 2);
21
+ return;
22
+ }
23
+ const j = i / e, E = l / s, f = Math.min(j, E);
24
+ c(f), o((i - e * f) / 2), a((l - s * f) / 2);
25
+ }, [e, s, n]);
26
+ X(() => (t(), window.addEventListener("resize", t), () => window.removeEventListener("resize", t)), [t]);
27
+ const h = `tech-screen-bg--${x}`;
28
+ return /* @__PURE__ */ u.jsx(
29
+ "div",
30
+ {
31
+ ref: $,
32
+ className: `tech-screen-adapter ${h} ${v || ""}`,
33
+ style: {
34
+ width: "100vw",
35
+ height: "100vh",
36
+ overflow: "hidden",
37
+ position: "relative",
38
+ ...w
39
+ },
40
+ children: /* @__PURE__ */ u.jsx(
41
+ "div",
42
+ {
43
+ className: "tech-screen-adapter__content",
44
+ style: {
45
+ width: `${e}px`,
46
+ height: `${s}px`,
47
+ transform: `scale(${r}) translate(${S / r}px, ${b / r}px)`,
48
+ transformOrigin: "top left",
49
+ position: "absolute",
50
+ top: 0,
51
+ left: 0
52
+ },
53
+ children: m
54
+ }
55
+ )
56
+ }
57
+ );
58
+ };
59
+ export {
60
+ k as S
61
+ };
@@ -0,0 +1 @@
1
+ "use strict";const p=require("./jsx-runtime-7asRZgsb.cjs"),e=require("react"),h=({width:t=1920,height:s=1080,children:x,className:$,style:v,mode:r="scale",bgStyle:w="dark"})=>{const m=e.useRef(null),[c,a]=e.useState(1),[S,o]=e.useState(0),[j,i]=e.useState(0),n=e.useCallback(()=>{const l=window.innerWidth,f=window.innerHeight;if(r==="full"){a(1),o(0),i(0);return}if(r==="width-scale"){const d=l/t;a(d),o(0),i((f-s*d)/2);return}const R=l/t,b=f/s,u=Math.min(R,b);a(u),o((l-t*u)/2),i((f-s*u)/2)},[t,s,r]);e.useEffect(()=>(n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)),[n]);const E=`tech-screen-bg--${w}`;return p.jsxRuntimeExports.jsx("div",{ref:m,className:`tech-screen-adapter ${E} ${$||""}`,style:{width:"100vw",height:"100vh",overflow:"hidden",position:"relative",...v},children:p.jsxRuntimeExports.jsx("div",{className:"tech-screen-adapter__content",style:{width:`${t}px`,height:`${s}px`,transform:`scale(${c}) translate(${S/c}px, ${j/c}px)`,transformOrigin:"top left",position:"absolute",top:0,left:0},children:x})})};exports.ScreenAdapter=h;
@@ -0,0 +1 @@
1
+ "use strict";const s=require("./jsx-runtime-7asRZgsb.cjs"),n=require("react"),f=require("./index-pCtiW2Id.cjs"),k=({columns:o,data:r,rowHeight:l=40,visibleRows:i=6,scrollSpeed:u=50,headerColor:j,rowHover:_=!0,animate:h=!0,className:b,style:y})=>{const R=n.useRef(null),[x,m]=n.useState(!1),[E,v]=n.useState(0),c=n.useRef(),N=[...r,...r];n.useEffect(()=>{if(!h||r.length<=i||x)return;let e=performance.now();const a=u/1e3*l,t=d=>{const q=(d-e)/16.67;e=d,v(S=>{const p=S+a*q,A=r.length*l;return p>=A?0:p}),c.current=requestAnimationFrame(t)};return c.current=requestAnimationFrame(t),()=>{c.current&&cancelAnimationFrame(c.current)}},[h,r.length,i,l,u,x]);const g={"--tech-table-row-height":`${l}px`,"--tech-table-header-color":j||"var(--tech-primary)"};return s.jsxRuntimeExports.jsxs("div",{className:f.clsx("tech-scroll-table",b),style:{...g,...y},children:[s.jsxRuntimeExports.jsx("div",{className:"tech-scroll-table__header",children:o.map(e=>s.jsxRuntimeExports.jsx("div",{className:"tech-scroll-table__header-cell",style:{width:e.width,textAlign:e.align||"left"},children:e.title},e.key))}),s.jsxRuntimeExports.jsx("div",{ref:R,className:"tech-scroll-table__body",style:{height:i*l},onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),children:s.jsxRuntimeExports.jsx("div",{className:"tech-scroll-table__scroll-wrapper",style:{transform:`translateY(${-E}px)`},children:N.map((e,a)=>s.jsxRuntimeExports.jsx("div",{className:f.clsx("tech-scroll-table__row",_&&"tech-scroll-table__row--hover"),children:o.map(t=>s.jsxRuntimeExports.jsx("div",{className:"tech-scroll-table__cell",style:{width:t.width,textAlign:t.align||"left"},children:t.render?t.render(e[t.key],e,a%r.length):e[t.key]},t.key))},a))})})]})};exports.ScrollTable=k;
@@ -0,0 +1,98 @@
1
+ import { j as l } from "./jsx-runtime-C6iVud2f.js";
2
+ import { useRef as p, useState as x, useEffect as T } from "react";
3
+ import { c as _ } from "./index-CcykAxZN.js";
4
+ const R = ({
5
+ columns: o,
6
+ data: s,
7
+ rowHeight: r = 40,
8
+ visibleRows: c = 6,
9
+ scrollSpeed: i = 50,
10
+ headerColor: b,
11
+ rowHover: y = !0,
12
+ animate: h = !0,
13
+ className: j,
14
+ style: v
15
+ }) => {
16
+ const N = p(null), [m, u] = x(!1), [g, A] = x(0), a = p(), S = [...s, ...s];
17
+ T(() => {
18
+ if (!h || s.length <= c || m) return;
19
+ let e = performance.now();
20
+ const n = i / 1e3 * r, t = (d) => {
21
+ const w = (d - e) / 16.67;
22
+ e = d, A((E) => {
23
+ const f = E + n * w, F = s.length * r;
24
+ return f >= F ? 0 : f;
25
+ }), a.current = requestAnimationFrame(t);
26
+ };
27
+ return a.current = requestAnimationFrame(t), () => {
28
+ a.current && cancelAnimationFrame(a.current);
29
+ };
30
+ }, [h, s.length, c, r, i, m]);
31
+ const k = {
32
+ "--tech-table-row-height": `${r}px`,
33
+ "--tech-table-header-color": b || "var(--tech-primary)"
34
+ };
35
+ return /* @__PURE__ */ l.jsxs(
36
+ "div",
37
+ {
38
+ className: _("tech-scroll-table", j),
39
+ style: { ...k, ...v },
40
+ children: [
41
+ /* @__PURE__ */ l.jsx("div", { className: "tech-scroll-table__header", children: o.map((e) => /* @__PURE__ */ l.jsx(
42
+ "div",
43
+ {
44
+ className: "tech-scroll-table__header-cell",
45
+ style: {
46
+ width: e.width,
47
+ textAlign: e.align || "left"
48
+ },
49
+ children: e.title
50
+ },
51
+ e.key
52
+ )) }),
53
+ /* @__PURE__ */ l.jsx(
54
+ "div",
55
+ {
56
+ ref: N,
57
+ className: "tech-scroll-table__body",
58
+ style: { height: c * r },
59
+ onMouseEnter: () => u(!0),
60
+ onMouseLeave: () => u(!1),
61
+ children: /* @__PURE__ */ l.jsx(
62
+ "div",
63
+ {
64
+ className: "tech-scroll-table__scroll-wrapper",
65
+ style: { transform: `translateY(${-g}px)` },
66
+ children: S.map((e, n) => /* @__PURE__ */ l.jsx(
67
+ "div",
68
+ {
69
+ className: _(
70
+ "tech-scroll-table__row",
71
+ y && "tech-scroll-table__row--hover"
72
+ ),
73
+ children: o.map((t) => /* @__PURE__ */ l.jsx(
74
+ "div",
75
+ {
76
+ className: "tech-scroll-table__cell",
77
+ style: {
78
+ width: t.width,
79
+ textAlign: t.align || "left"
80
+ },
81
+ children: t.render ? t.render(e[t.key], e, n % s.length) : e[t.key]
82
+ },
83
+ t.key
84
+ ))
85
+ },
86
+ n
87
+ ))
88
+ }
89
+ )
90
+ }
91
+ )
92
+ ]
93
+ }
94
+ );
95
+ };
96
+ export {
97
+ R as S
98
+ };
@@ -0,0 +1 @@
1
+ "use strict";const e=require("./jsx-runtime-7asRZgsb.cjs"),s=require("./index-pCtiW2Id.cjs"),u=({variant:t="text",width:h,height:m,rows:c=1,rowsGap:d=12,animate:x=!0,loading:o,className:i,style:l,children:n})=>{if(o===!1&&n)return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:n});if(o===!1)return null;if(n&&o===void 0)return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:n});if(t==="card")return e.jsxRuntimeExports.jsxs("div",{className:s.clsx("tech-skeleton-card",x&&"tech-skeleton--animate",i),style:l,children:[e.jsxRuntimeExports.jsxs("div",{className:"tech-skeleton-card__header",children:[e.jsxRuntimeExports.jsx("div",{className:"tech-skeleton tech-skeleton--circle",style:{width:40,height:40}}),e.jsxRuntimeExports.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:8},children:[e.jsxRuntimeExports.jsx("div",{className:"tech-skeleton tech-skeleton--text",style:{width:"40%",height:14}}),e.jsxRuntimeExports.jsx("div",{className:"tech-skeleton tech-skeleton--text",style:{width:"25%",height:10}})]})]}),e.jsxRuntimeExports.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8,marginTop:12},children:[e.jsxRuntimeExports.jsx("div",{className:"tech-skeleton tech-skeleton--text",style:{width:"100%",height:12}}),e.jsxRuntimeExports.jsx("div",{className:"tech-skeleton tech-skeleton--text",style:{width:"80%",height:12}})]}),e.jsxRuntimeExports.jsxs("div",{className:"tech-skeleton-card__footer",children:[e.jsxRuntimeExports.jsx("div",{className:"tech-skeleton tech-skeleton--rect",style:{width:64,height:24,borderRadius:2}}),e.jsxRuntimeExports.jsx("div",{className:"tech-skeleton tech-skeleton--rect",style:{width:64,height:24,borderRadius:2}})]})]});if(t==="circle"){const r=h||40;return e.jsxRuntimeExports.jsx("div",{className:s.clsx("tech-skeleton","tech-skeleton--circle",x&&"tech-skeleton--animate",i),style:{width:r,height:r,...l}})}return c>1?e.jsxRuntimeExports.jsx("div",{className:s.clsx("tech-skeleton-rows",i),style:{gap:d,...l},children:Array.from({length:c}).map((r,j)=>e.jsxRuntimeExports.jsx("div",{className:s.clsx("tech-skeleton",`tech-skeleton--${t}`,x&&"tech-skeleton--animate"),style:{width:j===c-1?"70%":"100%",height:m||(t==="text"?14:20)}},j))}):e.jsxRuntimeExports.jsx("div",{className:s.clsx("tech-skeleton",`tech-skeleton--${t}`,x&&"tech-skeleton--animate",i),style:{width:h,height:m,...l}})};exports.Skeleton=u;
@@ -0,0 +1,76 @@
1
+ import { j as e } from "./jsx-runtime-C6iVud2f.js";
2
+ import { c as s } from "./index-CcykAxZN.js";
3
+ const f = ({
4
+ variant: t = "text",
5
+ width: d,
6
+ height: a,
7
+ rows: n = 1,
8
+ rowsGap: k = 12,
9
+ animate: l = !0,
10
+ loading: o,
11
+ className: c,
12
+ style: h,
13
+ children: i
14
+ }) => {
15
+ if (o === !1 && i)
16
+ return /* @__PURE__ */ e.jsx(e.Fragment, { children: i });
17
+ if (o === !1)
18
+ return null;
19
+ if (i && o === void 0)
20
+ return /* @__PURE__ */ e.jsx(e.Fragment, { children: i });
21
+ if (t === "card")
22
+ return /* @__PURE__ */ e.jsxs(
23
+ "div",
24
+ {
25
+ className: s("tech-skeleton-card", l && "tech-skeleton--animate", c),
26
+ style: h,
27
+ children: [
28
+ /* @__PURE__ */ e.jsxs("div", { className: "tech-skeleton-card__header", children: [
29
+ /* @__PURE__ */ e.jsx("div", { className: "tech-skeleton tech-skeleton--circle", style: { width: 40, height: 40 } }),
30
+ /* @__PURE__ */ e.jsxs("div", { style: { flex: 1, display: "flex", flexDirection: "column", gap: 8 }, children: [
31
+ /* @__PURE__ */ e.jsx("div", { className: "tech-skeleton tech-skeleton--text", style: { width: "40%", height: 14 } }),
32
+ /* @__PURE__ */ e.jsx("div", { className: "tech-skeleton tech-skeleton--text", style: { width: "25%", height: 10 } })
33
+ ] })
34
+ ] }),
35
+ /* @__PURE__ */ e.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 8, marginTop: 12 }, children: [
36
+ /* @__PURE__ */ e.jsx("div", { className: "tech-skeleton tech-skeleton--text", style: { width: "100%", height: 12 } }),
37
+ /* @__PURE__ */ e.jsx("div", { className: "tech-skeleton tech-skeleton--text", style: { width: "80%", height: 12 } })
38
+ ] }),
39
+ /* @__PURE__ */ e.jsxs("div", { className: "tech-skeleton-card__footer", children: [
40
+ /* @__PURE__ */ e.jsx("div", { className: "tech-skeleton tech-skeleton--rect", style: { width: 64, height: 24, borderRadius: 2 } }),
41
+ /* @__PURE__ */ e.jsx("div", { className: "tech-skeleton tech-skeleton--rect", style: { width: 64, height: 24, borderRadius: 2 } })
42
+ ] })
43
+ ]
44
+ }
45
+ );
46
+ if (t === "circle") {
47
+ const r = d || 40;
48
+ return /* @__PURE__ */ e.jsx(
49
+ "div",
50
+ {
51
+ className: s("tech-skeleton", "tech-skeleton--circle", l && "tech-skeleton--animate", c),
52
+ style: { width: r, height: r, ...h }
53
+ }
54
+ );
55
+ }
56
+ return n > 1 ? /* @__PURE__ */ e.jsx("div", { className: s("tech-skeleton-rows", c), style: { gap: k, ...h }, children: Array.from({ length: n }).map((r, x) => /* @__PURE__ */ e.jsx(
57
+ "div",
58
+ {
59
+ className: s("tech-skeleton", `tech-skeleton--${t}`, l && "tech-skeleton--animate"),
60
+ style: {
61
+ width: x === n - 1 ? "70%" : "100%",
62
+ height: a || (t === "text" ? 14 : 20)
63
+ }
64
+ },
65
+ x
66
+ )) }) : /* @__PURE__ */ e.jsx(
67
+ "div",
68
+ {
69
+ className: s("tech-skeleton", `tech-skeleton--${t}`, l && "tech-skeleton--animate", c),
70
+ style: { width: d, height: a, ...h }
71
+ }
72
+ );
73
+ };
74
+ export {
75
+ f as S
76
+ };
@@ -0,0 +1,40 @@
1
+ import { j as t } from "./jsx-runtime-C6iVud2f.js";
2
+ import { c as u } from "./index-CcykAxZN.js";
3
+ const x = ({
4
+ status: r = "online",
5
+ color: c,
6
+ label: s,
7
+ size: e = "medium",
8
+ animate: a = !0,
9
+ showDot: o = !0,
10
+ className: n,
11
+ style: i
12
+ }) => {
13
+ const l = {
14
+ "--tech-status-color": c || {
15
+ online: "var(--tech-success)",
16
+ offline: "var(--tech-text-muted)",
17
+ warning: "var(--tech-warning)",
18
+ error: "var(--tech-danger)"
19
+ }[r] || "var(--tech-primary)"
20
+ };
21
+ return /* @__PURE__ */ t.jsxs(
22
+ "div",
23
+ {
24
+ className: u(
25
+ "tech-status-indicator",
26
+ `tech-status-indicator--${e}`,
27
+ a && "tech-status-indicator--animate",
28
+ n
29
+ ),
30
+ style: { ...l, ...i },
31
+ children: [
32
+ o && /* @__PURE__ */ t.jsx("span", { className: "tech-status-indicator__dot", children: a && /* @__PURE__ */ t.jsx("span", { className: "tech-status-indicator__pulse" }) }),
33
+ s && /* @__PURE__ */ t.jsx("span", { className: "tech-status-indicator__label", children: s })
34
+ ]
35
+ }
36
+ );
37
+ };
38
+ export {
39
+ x as S
40
+ };
@@ -0,0 +1 @@
1
+ "use strict";const t=require("./jsx-runtime-7asRZgsb.cjs"),d=require("./index-pCtiW2Id.cjs"),l=({status:r="online",color:a,label:s,size:c="medium",animate:e=!0,showDot:n=!0,className:o,style:i})=>{const u={"--tech-status-color":a||{online:"var(--tech-success)",offline:"var(--tech-text-muted)",warning:"var(--tech-warning)",error:"var(--tech-danger)"}[r]||"var(--tech-primary)"};return t.jsxRuntimeExports.jsxs("div",{className:d.clsx("tech-status-indicator",`tech-status-indicator--${c}`,e&&"tech-status-indicator--animate",o),style:{...u,...i},children:[n&&t.jsxRuntimeExports.jsx("span",{className:"tech-status-indicator__dot",children:e&&t.jsxRuntimeExports.jsx("span",{className:"tech-status-indicator__pulse"})}),s&&t.jsxRuntimeExports.jsx("span",{className:"tech-status-indicator__label",children:s})]})};exports.StatusIndicator=l;
@@ -0,0 +1,45 @@
1
+ import { j as r } from "./jsx-runtime-C6iVud2f.js";
2
+ import { c as b } from "./index-CcykAxZN.js";
3
+ const x = ({
4
+ variant: e = "corner",
5
+ color: c,
6
+ glowColor: s,
7
+ borderWidth: o = 1,
8
+ cornerSize: t = 16,
9
+ animate: a = !0,
10
+ children: n,
11
+ className: d,
12
+ style: h
13
+ }) => {
14
+ const _ = {
15
+ "--tech-border-color": c || "var(--tech-primary)",
16
+ "--tech-border-glow": s || "var(--tech-glow-primary)",
17
+ "--tech-border-width": `${o}px`,
18
+ "--tech-corner-size": `${t}px`
19
+ };
20
+ return /* @__PURE__ */ r.jsxs(
21
+ "div",
22
+ {
23
+ className: b(
24
+ "tech-border",
25
+ `tech-border--${e}`,
26
+ a && "tech-border--animate",
27
+ d
28
+ ),
29
+ style: { ..._, ...h },
30
+ children: [
31
+ e === "corner" && /* @__PURE__ */ r.jsxs(r.Fragment, { children: [
32
+ /* @__PURE__ */ r.jsx("span", { className: "tech-border__corner tech-border__corner--tl" }),
33
+ /* @__PURE__ */ r.jsx("span", { className: "tech-border__corner tech-border__corner--tr" }),
34
+ /* @__PURE__ */ r.jsx("span", { className: "tech-border__corner tech-border__corner--bl" }),
35
+ /* @__PURE__ */ r.jsx("span", { className: "tech-border__corner tech-border__corner--br" })
36
+ ] }),
37
+ e === "scan" && /* @__PURE__ */ r.jsx("div", { className: "tech-border__scan-line" }),
38
+ /* @__PURE__ */ r.jsx("div", { className: "tech-border__content", children: n })
39
+ ]
40
+ }
41
+ );
42
+ };
43
+ export {
44
+ x as T
45
+ };
@@ -0,0 +1 @@
1
+ "use strict";const r=require("./jsx-runtime-7asRZgsb.cjs"),i=require("./index-pCtiW2Id.cjs"),m=({variant:e="corner",color:s,glowColor:c,borderWidth:t=1,cornerSize:o=16,animate:n=!0,children:x,className:d,style:a})=>{const h={"--tech-border-color":s||"var(--tech-primary)","--tech-border-glow":c||"var(--tech-glow-primary)","--tech-border-width":`${t}px`,"--tech-corner-size":`${o}px`};return r.jsxRuntimeExports.jsxs("div",{className:i.clsx("tech-border",`tech-border--${e}`,n&&"tech-border--animate",d),style:{...h,...a},children:[e==="corner"&&r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[r.jsxRuntimeExports.jsx("span",{className:"tech-border__corner tech-border__corner--tl"}),r.jsxRuntimeExports.jsx("span",{className:"tech-border__corner tech-border__corner--tr"}),r.jsxRuntimeExports.jsx("span",{className:"tech-border__corner tech-border__corner--bl"}),r.jsxRuntimeExports.jsx("span",{className:"tech-border__corner tech-border__corner--br"})]}),e==="scan"&&r.jsxRuntimeExports.jsx("div",{className:"tech-border__scan-line"}),r.jsxRuntimeExports.jsx("div",{className:"tech-border__content",children:x})]})};exports.TechBorder=m;
@@ -0,0 +1,42 @@
1
+ import { j as t } from "./jsx-runtime-C6iVud2f.js";
2
+ import { c as p } from "./index-CcykAxZN.js";
3
+ const i = ({
4
+ variant: a = "primary",
5
+ size: o = "medium",
6
+ color: e,
7
+ glow: r = !1,
8
+ loading: s = !1,
9
+ icon: c,
10
+ children: n,
11
+ className: u,
12
+ disabled: b,
13
+ style: m,
14
+ ...h
15
+ }) => {
16
+ const l = e ? { "--tech-btn-color": e } : {};
17
+ return /* @__PURE__ */ t.jsxs(
18
+ "button",
19
+ {
20
+ className: p(
21
+ "tech-button",
22
+ `tech-button--${a}`,
23
+ `tech-button--${o}`,
24
+ r && "tech-button--glow",
25
+ s && "tech-button--loading",
26
+ u
27
+ ),
28
+ disabled: b || s,
29
+ style: { ...l, ...m },
30
+ ...h,
31
+ children: [
32
+ /* @__PURE__ */ t.jsx("span", { className: "tech-button__border-effect" }),
33
+ s && /* @__PURE__ */ t.jsx("span", { className: "tech-button__spinner" }),
34
+ c && /* @__PURE__ */ t.jsx("span", { className: "tech-button__icon", children: c }),
35
+ n && /* @__PURE__ */ t.jsx("span", { className: "tech-button__text", children: n })
36
+ ]
37
+ }
38
+ );
39
+ };
40
+ export {
41
+ i as T
42
+ };
@@ -0,0 +1 @@
1
+ "use strict";const t=require("./jsx-runtime-7asRZgsb.cjs"),h=require("./index-pCtiW2Id.cjs"),j=({variant:u="primary",size:o="medium",color:e,glow:r=!1,loading:s=!1,icon:n,children:c,className:x,disabled:a,style:i,...m})=>{const b=e?{"--tech-btn-color":e}:{};return t.jsxRuntimeExports.jsxs("button",{className:h.clsx("tech-button",`tech-button--${u}`,`tech-button--${o}`,r&&"tech-button--glow",s&&"tech-button--loading",x),disabled:a||s,style:{...b,...i},...m,children:[t.jsxRuntimeExports.jsx("span",{className:"tech-button__border-effect"}),s&&t.jsxRuntimeExports.jsx("span",{className:"tech-button__spinner"}),n&&t.jsxRuntimeExports.jsx("span",{className:"tech-button__icon",children:n}),c&&t.jsxRuntimeExports.jsx("span",{className:"tech-button__text",children:c})]})};exports.TechButton=j;
@@ -0,0 +1 @@
1
+ "use strict";const t=require("./jsx-runtime-7asRZgsb.cjs"),u=require("./index-pCtiW2Id.cjs"),m=({children:i,variant:e="default",level:s=1,color:c,align:l="left",animate:n=!0,className:r,style:x})=>{const a=c?{"--tech-title-color":c}:{},h=`h${s}`;return t.jsxRuntimeExports.jsxs(h,{className:u.clsx("tech-title",`tech-title--${e}`,`tech-title--h${s}`,`tech-title--${l}`,n&&"tech-title--animate",r),style:{...a,...x},children:[e==="bracket"&&t.jsxRuntimeExports.jsx("span",{className:"tech-title__bracket tech-title__bracket--left",children:"【"}),t.jsxRuntimeExports.jsx("span",{className:"tech-title__text",children:i}),e==="bracket"&&t.jsxRuntimeExports.jsx("span",{className:"tech-title__bracket tech-title__bracket--right",children:"】"}),e==="underline"&&t.jsxRuntimeExports.jsxs("div",{className:"tech-title__underline",children:[t.jsxRuntimeExports.jsx("span",{className:"tech-title__underline-dot"}),t.jsxRuntimeExports.jsx("span",{className:"tech-title__underline-line"}),t.jsxRuntimeExports.jsx("span",{className:"tech-title__underline-dot"})]})]})};exports.TechTitle=m;
@@ -0,0 +1,41 @@
1
+ import { j as e } from "./jsx-runtime-C6iVud2f.js";
2
+ import { c as m } from "./index-CcykAxZN.js";
3
+ const o = ({
4
+ children: l,
5
+ variant: t = "default",
6
+ level: s = 1,
7
+ color: c,
8
+ align: a = "left",
9
+ animate: i = !0,
10
+ className: n,
11
+ style: h
12
+ }) => {
13
+ const r = c ? { "--tech-title-color": c } : {}, _ = `h${s}`;
14
+ return /* @__PURE__ */ e.jsxs(
15
+ _,
16
+ {
17
+ className: m(
18
+ "tech-title",
19
+ `tech-title--${t}`,
20
+ `tech-title--h${s}`,
21
+ `tech-title--${a}`,
22
+ i && "tech-title--animate",
23
+ n
24
+ ),
25
+ style: { ...r, ...h },
26
+ children: [
27
+ t === "bracket" && /* @__PURE__ */ e.jsx("span", { className: "tech-title__bracket tech-title__bracket--left", children: "【" }),
28
+ /* @__PURE__ */ e.jsx("span", { className: "tech-title__text", children: l }),
29
+ t === "bracket" && /* @__PURE__ */ e.jsx("span", { className: "tech-title__bracket tech-title__bracket--right", children: "】" }),
30
+ t === "underline" && /* @__PURE__ */ e.jsxs("div", { className: "tech-title__underline", children: [
31
+ /* @__PURE__ */ e.jsx("span", { className: "tech-title__underline-dot" }),
32
+ /* @__PURE__ */ e.jsx("span", { className: "tech-title__underline-line" }),
33
+ /* @__PURE__ */ e.jsx("span", { className: "tech-title__underline-dot" })
34
+ ] })
35
+ ]
36
+ }
37
+ );
38
+ };
39
+ export {
40
+ o as T
41
+ };
@@ -0,0 +1 @@
1
+ "use strict";const m=require("./jsx-runtime-7asRZgsb.cjs"),t=require("react"),r={"cyber-blue":{"--tech-primary":"#00d4ff","--tech-primary-dark":"#0098d4","--tech-primary-light":"#33ddff","--tech-secondary":"#0affb0","--tech-secondary-dark":"#08c98a","--tech-accent":"#ff6b35","--tech-warning":"#ffd000","--tech-danger":"#ff4757","--tech-success":"#0affb0","--tech-bg-dark":"#0a0e27","--tech-bg-medium":"#0d1135","--tech-bg-light":"#131842","--tech-bg-card":"rgba(13, 17, 53, 0.85)","--tech-bg-card-hover":"rgba(19, 24, 66, 0.9)","--tech-border":"rgba(0, 212, 255, 0.3)","--tech-border-active":"rgba(0, 212, 255, 0.7)","--tech-text-primary":"#e8eaf6","--tech-text-secondary":"rgba(232, 234, 246, 0.65)","--tech-text-muted":"rgba(232, 234, 246, 0.35)","--tech-glow-primary":"rgba(0, 212, 255, 0.15)","--tech-glow-secondary":"rgba(10, 255, 176, 0.15)"},"neon-green":{"--tech-primary":"#0affb0","--tech-primary-dark":"#08c98a","--tech-primary-light":"#33ffc4","--tech-secondary":"#00d4ff","--tech-secondary-dark":"#0098d4","--tech-accent":"#ff6b35","--tech-warning":"#ffd000","--tech-danger":"#ff4757","--tech-success":"#0affb0","--tech-bg-dark":"#050f0a","--tech-bg-medium":"#081a10","--tech-bg-light":"#0e2518","--tech-bg-card":"rgba(8, 26, 16, 0.85)","--tech-bg-card-hover":"rgba(14, 37, 24, 0.9)","--tech-border":"rgba(10, 255, 176, 0.3)","--tech-border-active":"rgba(10, 255, 176, 0.7)","--tech-text-primary":"#e8f6ee","--tech-text-secondary":"rgba(232, 246, 238, 0.65)","--tech-text-muted":"rgba(232, 246, 238, 0.35)","--tech-glow-primary":"rgba(10, 255, 176, 0.15)","--tech-glow-secondary":"rgba(0, 212, 255, 0.15)"},"aurora-purple":{"--tech-primary":"#a855f7","--tech-primary-dark":"#7c3aed","--tech-primary-light":"#c084fc","--tech-secondary":"#06b6d4","--tech-secondary-dark":"#0891b2","--tech-accent":"#f472b6","--tech-warning":"#fbbf24","--tech-danger":"#ef4444","--tech-success":"#34d399","--tech-bg-dark":"#0c0515","--tech-bg-medium":"#120a20","--tech-bg-light":"#1a1030","--tech-bg-card":"rgba(18, 10, 32, 0.85)","--tech-bg-card-hover":"rgba(26, 16, 48, 0.9)","--tech-border":"rgba(168, 85, 247, 0.3)","--tech-border-active":"rgba(168, 85, 247, 0.7)","--tech-text-primary":"#f0e6f6","--tech-text-secondary":"rgba(240, 230, 246, 0.65)","--tech-text-muted":"rgba(240, 230, 246, 0.35)","--tech-glow-primary":"rgba(168, 85, 247, 0.15)","--tech-glow-secondary":"rgba(6, 182, 212, 0.15)"},"sunset-orange":{"--tech-primary":"#ff6b35","--tech-primary-dark":"#e55a2b","--tech-primary-light":"#ff8f66","--tech-secondary":"#ffd000","--tech-secondary-dark":"#d4ad00","--tech-accent":"#00d4ff","--tech-warning":"#ffd000","--tech-danger":"#ff4757","--tech-success":"#0affb0","--tech-bg-dark":"#120a05","--tech-bg-medium":"#1a0f08","--tech-bg-light":"#241810","--tech-bg-card":"rgba(26, 15, 8, 0.85)","--tech-bg-card-hover":"rgba(36, 24, 16, 0.9)","--tech-border":"rgba(255, 107, 53, 0.3)","--tech-border-active":"rgba(255, 107, 53, 0.7)","--tech-text-primary":"#f6ece6","--tech-text-secondary":"rgba(246, 236, 230, 0.65)","--tech-text-muted":"rgba(246, 236, 230, 0.35)","--tech-glow-primary":"rgba(255, 107, 53, 0.15)","--tech-glow-secondary":"rgba(255, 208, 0, 0.15)"},"crimson-red":{"--tech-primary":"#ff4757","--tech-primary-dark":"#dc2626","--tech-primary-light":"#ff6b7a","--tech-secondary":"#fbbf24","--tech-secondary-dark":"#d4a017","--tech-accent":"#00d4ff","--tech-warning":"#ffd000","--tech-danger":"#ff4757","--tech-success":"#34d399","--tech-bg-dark":"#0f0508","--tech-bg-medium":"#180810","--tech-bg-light":"#220c16","--tech-bg-card":"rgba(24, 8, 16, 0.85)","--tech-bg-card-hover":"rgba(34, 12, 22, 0.9)","--tech-border":"rgba(255, 71, 87, 0.3)","--tech-border-active":"rgba(255, 71, 87, 0.7)","--tech-text-primary":"#f6e6e8","--tech-text-secondary":"rgba(246, 230, 232, 0.65)","--tech-text-muted":"rgba(246, 230, 232, 0.35)","--tech-glow-primary":"rgba(255, 71, 87, 0.15)","--tech-glow-secondary":"rgba(251, 191, 36, 0.15)"},"gold-luxury":{"--tech-primary":"#fbbf24","--tech-primary-dark":"#d4a017","--tech-primary-light":"#fcd34d","--tech-secondary":"#a855f7","--tech-secondary-dark":"#7c3aed","--tech-accent":"#00d4ff","--tech-warning":"#fbbf24","--tech-danger":"#ef4444","--tech-success":"#34d399","--tech-bg-dark":"#0a0805","--tech-bg-medium":"#14100a","--tech-bg-light":"#1e1810","--tech-bg-card":"rgba(20, 16, 10, 0.85)","--tech-bg-card-hover":"rgba(30, 24, 16, 0.9)","--tech-border":"rgba(251, 191, 36, 0.3)","--tech-border-active":"rgba(251, 191, 36, 0.7)","--tech-text-primary":"#f6f0e6","--tech-text-secondary":"rgba(246, 240, 230, 0.65)","--tech-text-muted":"rgba(246, 240, 230, 0.35)","--tech-glow-primary":"rgba(251, 191, 36, 0.15)","--tech-glow-secondary":"rgba(168, 85, 247, 0.15)"},"dark-abyss":{"--tech-primary":"#64748b","--tech-primary-dark":"#475569","--tech-primary-light":"#94a3b8","--tech-secondary":"#a1a1aa","--tech-secondary-dark":"#71717a","--tech-accent":"#f87171","--tech-warning":"#fbbf24","--tech-danger":"#ef4444","--tech-success":"#6ee7b7","--tech-bg-dark":"#000000","--tech-bg-medium":"#09090b","--tech-bg-light":"#18181b","--tech-bg-card":"rgba(9, 9, 11, 0.92)","--tech-bg-card-hover":"rgba(24, 24, 27, 0.95)","--tech-border":"rgba(100, 116, 139, 0.25)","--tech-border-active":"rgba(100, 116, 139, 0.6)","--tech-text-primary":"#e4e4e7","--tech-text-secondary":"rgba(228, 228, 231, 0.55)","--tech-text-muted":"rgba(228, 228, 231, 0.25)","--tech-glow-primary":"rgba(100, 116, 139, 0.1)","--tech-glow-secondary":"rgba(161, 161, 170, 0.08)"}},d={"cyber-blue":"赛博蓝","neon-green":"霓虹绿","aurora-purple":"极光紫","sunset-orange":"落日橙","crimson-red":"赤焰红","gold-luxury":"鎏金","dark-abyss":"暗黑深渊"},o=t.createContext(null),y=({defaultTheme:c="cyber-blue",children:s})=>{const[n,b]=t.useState(c),[h,g]=t.useState(r[c]||r["cyber-blue"]),f=t.useCallback((e,a)=>{a?(b(e),g(a)):r[e]&&(b(e),g(r[e]))},[]);return t.useEffect(()=>{const e=document.documentElement;Object.entries(h).forEach(([a,i])=>{e.style.setProperty(a,i)})},[h]),m.jsxRuntimeExports.jsx(o.Provider,{value:{themeName:n,themeVars:h,setTheme:f,presetThemes:r,themeLabels:d},children:s})};function u(){const c=t.useContext(o);if(!c)throw new Error("useTheme must be used within a ThemeProvider");return c}exports.ThemeProvider=y;exports.presetThemes=r;exports.themeLabels=d;exports.useTheme=u;