colbrush 1.21.0 → 1.23.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/dist/client.d.ts CHANGED
@@ -21,6 +21,8 @@ declare function ThemeProvider({ children }: ThemeProviderProps): react_jsx_runt
21
21
  type ThemeType = ThemeKey;
22
22
  declare const THEMES: Record<TLanguage, Record<TThemeKey, string>>;
23
23
 
24
+ declare function ThemeScript(): react_jsx_runtime.JSX.Element;
25
+
24
26
  type TThemeSwitcherProps = {
25
27
  options?: {
26
28
  key: ThemeKey;
@@ -30,4 +32,4 @@ type TThemeSwitcherProps = {
30
32
  };
31
33
  declare function ThemeSwitcher({ options, position }: TThemeSwitcherProps): react_jsx_runtime.JSX.Element;
32
34
 
33
- export { THEMES, type TLanguage, ThemeProvider, ThemeSwitcher, type ThemeType, useTheme };
35
+ export { THEMES, type TLanguage, ThemeProvider, ThemeScript, ThemeSwitcher, type ThemeType, useTheme };
package/dist/client.js CHANGED
@@ -3,17 +3,30 @@ import {
3
3
  SWITCHER_MENU_POSITION,
4
4
  SWITCHER_POSITION,
5
5
  THEMES,
6
+ THEME_MODES,
6
7
  THEME_SWITCHER_PORTAL_ID,
7
8
  ThemeProvider,
9
+ ThemeStorageKey,
8
10
  getThemeOptions,
9
11
  useTheme
10
- } from "./chunk-DVFOKORW.js";
12
+ } from "./chunk-CJYCYDTL.js";
13
+
14
+ // src/react/ThemeScript.tsx
15
+ import { jsx } from "react/jsx-runtime";
16
+ var script = `try{var t=localStorage.getItem(${JSON.stringify(
17
+ ThemeStorageKey
18
+ )});if(${JSON.stringify(
19
+ THEME_MODES
20
+ )}.indexOf(t)>-1)document.documentElement.setAttribute("data-theme",t)}catch(e){}`;
21
+ function ThemeScript() {
22
+ return /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: script } });
23
+ }
11
24
 
12
25
  // src/react/ThemeSwitcher.tsx
13
26
  import { useEffect as useEffect2, useId, useMemo, useRef as useRef2, useState as useState2 } from "react";
14
27
 
15
28
  // src/icons/Logo.tsx
16
- import { jsx, jsxs } from "react/jsx-runtime";
29
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
17
30
  var SvgLogo = (props) => /* @__PURE__ */ jsxs(
18
31
  "svg",
19
32
  {
@@ -22,50 +35,50 @@ var SvgLogo = (props) => /* @__PURE__ */ jsxs(
22
35
  viewBox: "0 0 91 91",
23
36
  ...props,
24
37
  children: [
25
- /* @__PURE__ */ jsx("path", { fill: "#CE78A9", d: "m0 40.298 3.56-8.254 39.49-18.612-3.075 7.768z" }),
26
- /* @__PURE__ */ jsx(
38
+ /* @__PURE__ */ jsx2("path", { fill: "#CE78A9", d: "m0 40.298 3.56-8.254 39.49-18.612-3.075 7.768z" }),
39
+ /* @__PURE__ */ jsx2(
27
40
  "path",
28
41
  {
29
42
  fill: "#D55D00",
30
43
  d: "M6.314 55.35 1.297 43.86l33.016-16.67-3.237 7.93L9.389 46.125l5.826 13.433z"
31
44
  }
32
45
  ),
33
- /* @__PURE__ */ jsx(
46
+ /* @__PURE__ */ jsx2(
34
47
  "path",
35
48
  {
36
49
  fill: "#E59F01",
37
50
  d: "m51.144.22 8.213 3.654 18.161 39.699-7.733-3.163z"
38
51
  }
39
52
  ),
40
- /* @__PURE__ */ jsx(
53
+ /* @__PURE__ */ jsx2(
41
54
  "path",
42
55
  {
43
56
  fill: "#fff",
44
57
  d: "m36.02 6.362 11.548-4.886L63.86 34.68l-7.893-3.327L45.21 9.543l-13.498 5.672z"
45
58
  }
46
59
  ),
47
- /* @__PURE__ */ jsx(
60
+ /* @__PURE__ */ jsx2(
48
61
  "path",
49
62
  {
50
63
  fill: "#0072B1",
51
64
  d: "m38.84 90.671-8.206-3.67-18.083-39.735 7.727 3.179z"
52
65
  }
53
66
  ),
54
- /* @__PURE__ */ jsx(
67
+ /* @__PURE__ */ jsx2(
55
68
  "path",
56
69
  {
57
70
  fill: "#F0E442",
58
71
  d: "m53.975 84.56-11.557 4.864-16.227-33.236 7.886 3.343 10.715 21.832 13.51-5.647z"
59
72
  }
60
73
  ),
61
- /* @__PURE__ */ jsx(
74
+ /* @__PURE__ */ jsx2(
62
75
  "path",
63
76
  {
64
77
  fill: "#009F73",
65
78
  d: "m90.17 50.665-3.48 8.288-39.306 18.995 2.999-7.798z"
66
79
  }
67
80
  ),
68
- /* @__PURE__ */ jsx(
81
+ /* @__PURE__ */ jsx2(
69
82
  "path",
70
83
  {
71
84
  fill: "#56B4E8",
@@ -78,7 +91,7 @@ var SvgLogo = (props) => /* @__PURE__ */ jsxs(
78
91
  var Logo_default = SvgLogo;
79
92
 
80
93
  // src/icons/Us.tsx
81
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
94
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
82
95
  var SvgUs = (props) => /* @__PURE__ */ jsxs2(
83
96
  "svg",
84
97
  {
@@ -88,16 +101,16 @@ var SvgUs = (props) => /* @__PURE__ */ jsxs2(
88
101
  ...props,
89
102
  children: [
90
103
  /* @__PURE__ */ jsxs2("g", { clipPath: "url(#a)", filter: "url(#b)", children: [
91
- /* @__PURE__ */ jsx2("path", { fill: "#fff", d: "M3.996 4.166h20v13.333h-20z" }),
92
- /* @__PURE__ */ jsx2(
104
+ /* @__PURE__ */ jsx3("path", { fill: "#fff", d: "M3.996 4.166h20v13.333h-20z" }),
105
+ /* @__PURE__ */ jsx3(
93
106
  "path",
94
107
  {
95
108
  fill: "#D80027",
96
109
  d: "M3.996 4.166h20v1.025h-20zm0 2.05h20v1.026h-20zm0 2.051h20v1.026h-20zm0 2.051h20v1.025h-20zm0 2.055h20v1.025h-20zm0 2.05h20v1.026h-20zm0 2.051h20v1.025h-20z"
97
110
  }
98
111
  ),
99
- /* @__PURE__ */ jsx2("path", { fill: "#2E52B2", d: "M3.996 4.166h10v7.177h-10z" }),
100
- /* @__PURE__ */ jsx2(
112
+ /* @__PURE__ */ jsx3("path", { fill: "#2E52B2", d: "M3.996 4.166h10v7.177h-10z" }),
113
+ /* @__PURE__ */ jsx3(
101
114
  "path",
102
115
  {
103
116
  fill: "#fff",
@@ -106,7 +119,7 @@ var SvgUs = (props) => /* @__PURE__ */ jsxs2(
106
119
  )
107
120
  ] }),
108
121
  /* @__PURE__ */ jsxs2("defs", { children: [
109
- /* @__PURE__ */ jsx2("clipPath", { id: "a", children: /* @__PURE__ */ jsx2("path", { fill: "#fff", d: "M3.996 4.166h20v13.333h-20z" }) }),
122
+ /* @__PURE__ */ jsx3("clipPath", { id: "a", children: /* @__PURE__ */ jsx3("path", { fill: "#fff", d: "M3.996 4.166h20v13.333h-20z" }) }),
110
123
  /* @__PURE__ */ jsxs2(
111
124
  "filter",
112
125
  {
@@ -118,8 +131,8 @@ var SvgUs = (props) => /* @__PURE__ */ jsxs2(
118
131
  colorInterpolationFilters: "sRGB",
119
132
  filterUnits: "userSpaceOnUse",
120
133
  children: [
121
- /* @__PURE__ */ jsx2("feFlood", { floodOpacity: 0, result: "BackgroundImageFix" }),
122
- /* @__PURE__ */ jsx2(
134
+ /* @__PURE__ */ jsx3("feFlood", { floodOpacity: 0, result: "BackgroundImageFix" }),
135
+ /* @__PURE__ */ jsx3(
123
136
  "feColorMatrix",
124
137
  {
125
138
  in: "SourceAlpha",
@@ -127,18 +140,18 @@ var SvgUs = (props) => /* @__PURE__ */ jsxs2(
127
140
  values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
128
141
  }
129
142
  ),
130
- /* @__PURE__ */ jsx2("feOffset", {}),
131
- /* @__PURE__ */ jsx2("feGaussianBlur", { stdDeviation: 1.743 }),
132
- /* @__PURE__ */ jsx2("feComposite", { in2: "hardAlpha", operator: "out" }),
133
- /* @__PURE__ */ jsx2("feColorMatrix", { values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0" }),
134
- /* @__PURE__ */ jsx2(
143
+ /* @__PURE__ */ jsx3("feOffset", {}),
144
+ /* @__PURE__ */ jsx3("feGaussianBlur", { stdDeviation: 1.743 }),
145
+ /* @__PURE__ */ jsx3("feComposite", { in2: "hardAlpha", operator: "out" }),
146
+ /* @__PURE__ */ jsx3("feColorMatrix", { values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0" }),
147
+ /* @__PURE__ */ jsx3(
135
148
  "feBlend",
136
149
  {
137
150
  in2: "BackgroundImageFix",
138
151
  result: "effect1_dropShadow_306_3300"
139
152
  }
140
153
  ),
141
- /* @__PURE__ */ jsx2(
154
+ /* @__PURE__ */ jsx3(
142
155
  "feBlend",
143
156
  {
144
157
  in: "SourceGraphic",
@@ -156,7 +169,7 @@ var SvgUs = (props) => /* @__PURE__ */ jsxs2(
156
169
  var Us_default = SvgUs;
157
170
 
158
171
  // src/icons/Kr.tsx
159
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
172
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
160
173
  var SvgKr = (props) => /* @__PURE__ */ jsxs3(
161
174
  "svg",
162
175
  {
@@ -166,8 +179,8 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
166
179
  ...props,
167
180
  children: [
168
181
  /* @__PURE__ */ jsxs3("g", { clipPath: "url(#a)", filter: "url(#b)", children: [
169
- /* @__PURE__ */ jsx3("path", { fill: "#fff", d: "M1.906 2h20v13.333h-20z" }),
170
- /* @__PURE__ */ jsx3(
182
+ /* @__PURE__ */ jsx4("path", { fill: "#fff", d: "M1.906 2h20v13.333h-20z" }),
183
+ /* @__PURE__ */ jsx4(
171
184
  "path",
172
185
  {
173
186
  fill: "#000",
@@ -176,7 +189,7 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
176
189
  clipRule: "evenodd"
177
190
  }
178
191
  ),
179
- /* @__PURE__ */ jsx3(
192
+ /* @__PURE__ */ jsx4(
180
193
  "path",
181
194
  {
182
195
  fill: "#fff",
@@ -185,21 +198,21 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
185
198
  clipRule: "evenodd"
186
199
  }
187
200
  ),
188
- /* @__PURE__ */ jsx3(
201
+ /* @__PURE__ */ jsx4(
189
202
  "path",
190
203
  {
191
204
  fill: "#CA163A",
192
205
  d: "M14.68 10.514a3.333 3.333 0 1 0-5.548-3.698 3.333 3.333 0 0 0 5.547 3.698"
193
206
  }
194
207
  ),
195
- /* @__PURE__ */ jsx3(
208
+ /* @__PURE__ */ jsx4(
196
209
  "path",
197
210
  {
198
211
  fill: "#0E4896",
199
212
  d: "M9.132 6.816a1.667 1.667 0 0 0 2.774 1.85 1.667 1.667 0 0 1 2.773 1.848 3.334 3.334 0 0 1-5.547-3.698"
200
213
  }
201
214
  ),
202
- /* @__PURE__ */ jsx3(
215
+ /* @__PURE__ */ jsx4(
203
216
  "path",
204
217
  {
205
218
  fill: "#000",
@@ -208,14 +221,14 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
208
221
  clipRule: "evenodd"
209
222
  }
210
223
  ),
211
- /* @__PURE__ */ jsx3(
224
+ /* @__PURE__ */ jsx4(
212
225
  "path",
213
226
  {
214
227
  fill: "#000",
215
228
  d: "m6.475 12.286.693-.462zm9.36-6.24.81-.54zm1.502-1.002.694-.462z"
216
229
  }
217
230
  ),
218
- /* @__PURE__ */ jsx3(
231
+ /* @__PURE__ */ jsx4(
219
232
  "path",
220
233
  {
221
234
  fill: "#fff",
@@ -226,7 +239,7 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
226
239
  )
227
240
  ] }),
228
241
  /* @__PURE__ */ jsxs3("defs", { children: [
229
- /* @__PURE__ */ jsx3("clipPath", { id: "a", children: /* @__PURE__ */ jsx3("path", { fill: "#fff", d: "M1.906 2h20v13.333h-20z" }) }),
242
+ /* @__PURE__ */ jsx4("clipPath", { id: "a", children: /* @__PURE__ */ jsx4("path", { fill: "#fff", d: "M1.906 2h20v13.333h-20z" }) }),
230
243
  /* @__PURE__ */ jsxs3(
231
244
  "filter",
232
245
  {
@@ -238,8 +251,8 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
238
251
  colorInterpolationFilters: "sRGB",
239
252
  filterUnits: "userSpaceOnUse",
240
253
  children: [
241
- /* @__PURE__ */ jsx3("feFlood", { floodOpacity: 0, result: "BackgroundImageFix" }),
242
- /* @__PURE__ */ jsx3(
254
+ /* @__PURE__ */ jsx4("feFlood", { floodOpacity: 0, result: "BackgroundImageFix" }),
255
+ /* @__PURE__ */ jsx4(
243
256
  "feColorMatrix",
244
257
  {
245
258
  in: "SourceAlpha",
@@ -247,18 +260,18 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
247
260
  values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
248
261
  }
249
262
  ),
250
- /* @__PURE__ */ jsx3("feOffset", {}),
251
- /* @__PURE__ */ jsx3("feGaussianBlur", { stdDeviation: 0.65 }),
252
- /* @__PURE__ */ jsx3("feComposite", { in2: "hardAlpha", operator: "out" }),
253
- /* @__PURE__ */ jsx3("feColorMatrix", { values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0" }),
254
- /* @__PURE__ */ jsx3(
263
+ /* @__PURE__ */ jsx4("feOffset", {}),
264
+ /* @__PURE__ */ jsx4("feGaussianBlur", { stdDeviation: 0.65 }),
265
+ /* @__PURE__ */ jsx4("feComposite", { in2: "hardAlpha", operator: "out" }),
266
+ /* @__PURE__ */ jsx4("feColorMatrix", { values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0" }),
267
+ /* @__PURE__ */ jsx4(
255
268
  "feBlend",
256
269
  {
257
270
  in2: "BackgroundImageFix",
258
271
  result: "effect1_dropShadow_306_2477"
259
272
  }
260
273
  ),
261
- /* @__PURE__ */ jsx3(
274
+ /* @__PURE__ */ jsx4(
262
275
  "feBlend",
263
276
  {
264
277
  in: "SourceGraphic",
@@ -276,7 +289,7 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
276
289
  var Kr_default = SvgKr;
277
290
 
278
291
  // src/icons/X.tsx
279
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
292
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
280
293
  var SvgX = (props) => /* @__PURE__ */ jsxs4(
281
294
  "svg",
282
295
  {
@@ -285,7 +298,7 @@ var SvgX = (props) => /* @__PURE__ */ jsxs4(
285
298
  viewBox: "0 0 30 30",
286
299
  ...props,
287
300
  children: [
288
- /* @__PURE__ */ jsx4(
301
+ /* @__PURE__ */ jsx5(
289
302
  "path",
290
303
  {
291
304
  fill: "#fff",
@@ -294,7 +307,7 @@ var SvgX = (props) => /* @__PURE__ */ jsxs4(
294
307
  clipRule: "evenodd"
295
308
  }
296
309
  ),
297
- /* @__PURE__ */ jsx4(
310
+ /* @__PURE__ */ jsx5(
298
311
  "path",
299
312
  {
300
313
  fill: "#fff",
@@ -309,7 +322,7 @@ var SvgX = (props) => /* @__PURE__ */ jsxs4(
309
322
  var X_default = SvgX;
310
323
 
311
324
  // src/icons/theme/Tritanopia.tsx
312
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
325
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
313
326
  var SvgTritanopia = (props) => /* @__PURE__ */ jsxs5(
314
327
  "svg",
315
328
  {
@@ -318,7 +331,7 @@ var SvgTritanopia = (props) => /* @__PURE__ */ jsxs5(
318
331
  viewBox: "0 0 28 29",
319
332
  ...props,
320
333
  children: [
321
- /* @__PURE__ */ jsx5(
334
+ /* @__PURE__ */ jsx6(
322
335
  "rect",
323
336
  {
324
337
  width: 26.18,
@@ -330,14 +343,14 @@ var SvgTritanopia = (props) => /* @__PURE__ */ jsxs5(
330
343
  rx: 13.09
331
344
  }
332
345
  ),
333
- /* @__PURE__ */ jsx5(
346
+ /* @__PURE__ */ jsx6(
334
347
  "path",
335
348
  {
336
349
  fill: "currentColor",
337
350
  d: "M8.64 7.152h5.21q1.508 0 2.532.513 1.026.513 1.528 1.405.513.892.513 2.02 0 1.333-.667 2.081-.666.74-1.753 1.036v.144q.717.04 1.415.492.698.45 1.148 1.282.452.819.452 1.938 0 1.158-.534 2.04-.522.882-1.64 1.395-1.118.502-2.81.502H8.641zm5.374 13.207q1.65 0 2.43-.635.79-.636.79-1.682 0-.758-.39-1.395a2.63 2.63 0 0 0-1.097-1.015q-.709-.38-1.63-.38h-3.63v5.107zm-.226-6.706q.8 0 1.456-.307.657-.319 1.036-.892.38-.585.38-1.344 0-1.024-.708-1.671-.708-.646-2.102-.646h-3.364v4.86z"
338
351
  }
339
352
  ),
340
- /* @__PURE__ */ jsx5(
353
+ /* @__PURE__ */ jsx6(
341
354
  "path",
342
355
  {
343
356
  stroke: "currentColor",
@@ -351,7 +364,7 @@ var SvgTritanopia = (props) => /* @__PURE__ */ jsxs5(
351
364
  var Tritanopia_default = SvgTritanopia;
352
365
 
353
366
  // src/icons/theme/Default.tsx
354
- import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
367
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
355
368
  var SvgDefault = (props) => /* @__PURE__ */ jsxs6(
356
369
  "svg",
357
370
  {
@@ -360,14 +373,14 @@ var SvgDefault = (props) => /* @__PURE__ */ jsxs6(
360
373
  viewBox: "0 0 31 31",
361
374
  ...props,
362
375
  children: [
363
- /* @__PURE__ */ jsx6(
376
+ /* @__PURE__ */ jsx7(
364
377
  "path",
365
378
  {
366
379
  fill: "currentColor",
367
380
  d: "M30.5 15.5s-5.625-10.312-15-10.312S.5 15.5.5 15.5s5.625 10.313 15 10.313 15-10.313 15-10.313m-27.801 0q.16-.245.365-.54c.628-.9 1.554-2.098 2.746-3.29 2.417-2.417 5.716-4.607 9.69-4.607s7.273 2.19 9.69 4.607A24.6 24.6 0 0 1 28.3 15.5q-.16.245-.365.54c-.628.9-1.554 2.098-2.746 3.29-2.417 2.417-5.716 4.608-9.69 4.608s-7.273-2.19-9.69-4.608A24.6 24.6 0 0 1 2.7 15.5"
368
381
  }
369
382
  ),
370
- /* @__PURE__ */ jsx6(
383
+ /* @__PURE__ */ jsx7(
371
384
  "path",
372
385
  {
373
386
  fill: "currentColor",
@@ -380,7 +393,7 @@ var SvgDefault = (props) => /* @__PURE__ */ jsxs6(
380
393
  var Default_default = SvgDefault;
381
394
 
382
395
  // src/icons/theme/Protanopia.tsx
383
- import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
396
+ import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
384
397
  var SvgProtanopia = (props) => /* @__PURE__ */ jsxs7(
385
398
  "svg",
386
399
  {
@@ -389,7 +402,7 @@ var SvgProtanopia = (props) => /* @__PURE__ */ jsxs7(
389
402
  viewBox: "0 0 28 29",
390
403
  ...props,
391
404
  children: [
392
- /* @__PURE__ */ jsx7(
405
+ /* @__PURE__ */ jsx8(
393
406
  "rect",
394
407
  {
395
408
  width: 26.18,
@@ -401,14 +414,14 @@ var SvgProtanopia = (props) => /* @__PURE__ */ jsxs7(
401
414
  rx: 13.09
402
415
  }
403
416
  ),
404
- /* @__PURE__ */ jsx7(
417
+ /* @__PURE__ */ jsx8(
405
418
  "path",
406
419
  {
407
420
  fill: "currentColor",
408
421
  d: "M9.252 7.152h5.045q1.692 0 2.83.585 1.14.575 1.682 1.61.554 1.024.554 2.379 0 1.507-.697 2.594-.688 1.086-2.072 1.569L19.937 22h-2.153l-3.107-5.773-.36.01h-3.219V22H9.252zm4.984 7.404q1.711 0 2.502-.728.8-.729.8-2.102 0-1.395-.8-2.164t-2.523-.769h-3.117v5.763z"
409
422
  }
410
423
  ),
411
- /* @__PURE__ */ jsx7(
424
+ /* @__PURE__ */ jsx8(
412
425
  "path",
413
426
  {
414
427
  stroke: "currentColor",
@@ -422,7 +435,7 @@ var SvgProtanopia = (props) => /* @__PURE__ */ jsxs7(
422
435
  var Protanopia_default = SvgProtanopia;
423
436
 
424
437
  // src/icons/theme/Deuteranopia.tsx
425
- import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
438
+ import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
426
439
  var SvgDeuteranopia = (props) => /* @__PURE__ */ jsxs8(
427
440
  "svg",
428
441
  {
@@ -431,7 +444,7 @@ var SvgDeuteranopia = (props) => /* @__PURE__ */ jsxs8(
431
444
  viewBox: "0 0 15 15",
432
445
  ...props,
433
446
  children: [
434
- /* @__PURE__ */ jsx8(
447
+ /* @__PURE__ */ jsx9(
435
448
  "rect",
436
449
  {
437
450
  width: 13.09,
@@ -443,14 +456,14 @@ var SvgDeuteranopia = (props) => /* @__PURE__ */ jsxs8(
443
456
  rx: 6.545
444
457
  }
445
458
  ),
446
- /* @__PURE__ */ jsx8(
459
+ /* @__PURE__ */ jsx9(
447
460
  "path",
448
461
  {
449
462
  fill: "currentColor",
450
463
  d: "M9.51 5.894q-.245-.734-.789-1.144-.538-.415-1.312-.415-.667 0-1.205.343-.534.345-.846 1.01-.308.667-.308 1.6t.313 1.6q.313.665.861 1.01.549.343 1.246.343.626 0 1.103-.261a1.87 1.87 0 0 0 .748-.754q.271-.492.282-1.138H7.665v-.81h2.84v.8q0 .907-.39 1.594-.389.687-1.081 1.061-.687.37-1.564.37-.984 0-1.738-.462-.748-.466-1.164-1.328-.41-.866-.41-2.025 0-1.153.41-2.015.416-.866 1.154-1.333.738-.465 1.687-.466.774 0 1.42.307.646.303 1.071.851.426.548.564 1.262z"
451
464
  }
452
465
  ),
453
- /* @__PURE__ */ jsx8(
466
+ /* @__PURE__ */ jsx9(
454
467
  "path",
455
468
  {
456
469
  stroke: "currentColor",
@@ -501,7 +514,7 @@ function ThemeSwitcherPortal({
501
514
  }
502
515
 
503
516
  // src/react/ThemeSwitcher.tsx
504
- import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
517
+ import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
505
518
  var THEME_ICON = {
506
519
  default: Default_default,
507
520
  protanopia: Protanopia_default,
@@ -534,8 +547,8 @@ function ThemeSwitcher({ options, position }) {
534
547
  setIsOpen((prev) => !prev);
535
548
  };
536
549
  const toggleAriaLabel = language === "Korean" ? isOpen ? "\uD14C\uB9C8 \uC804\uD658 \uBA54\uB274 \uB2EB\uAE30" : "\uD14C\uB9C8 \uC804\uD658 \uBA54\uB274 \uC5F4\uAE30" : isOpen ? "Close theme switcher menu" : "Open theme switcher menu";
537
- return /* @__PURE__ */ jsx9(ThemeSwitcherPortal, { children: /* @__PURE__ */ jsxs9("div", { ref: wrapperRef, className: "z-[10000]", children: [
538
- /* @__PURE__ */ jsx9(
550
+ return /* @__PURE__ */ jsx10(ThemeSwitcherPortal, { children: /* @__PURE__ */ jsxs9("div", { ref: wrapperRef, className: "z-[10000]", children: [
551
+ /* @__PURE__ */ jsx10(
539
552
  "button",
540
553
  {
541
554
  type: "button",
@@ -547,7 +560,7 @@ function ThemeSwitcher({ options, position }) {
547
560
  className: `fixed w-[60px] h-[60px] p-[10px] ${isOpen ? "bg-[#252525] border-[1px] border-[#8144FF]" : "bg-[rgba(129,68,255,0.2)]"} rounded-full flex justify-center items-center shadow-[0_0_3px_0_rgba(0,0,0,0.17)]
548
561
  ${switcherClass}
549
562
  `,
550
- children: isOpen ? /* @__PURE__ */ jsx9("div", { className: "absolute flex justify-center items-center inset-0 w-full h-full", children: /* @__PURE__ */ jsx9(
563
+ children: isOpen ? /* @__PURE__ */ jsx10("div", { className: "absolute flex justify-center items-center inset-0 w-full h-full", children: /* @__PURE__ */ jsx10(
551
564
  X_default,
552
565
  {
553
566
  "aria-hidden": "true",
@@ -559,16 +572,16 @@ function ThemeSwitcher({ options, position }) {
559
572
  {
560
573
  className: "rounded-full bg-white/2\n backdrop-blur-[3px]\n min-w-[60px] min-h-[60px]\n [filter:drop-shadow(0_18px_calc(60px_*_0.20)_rgba(0,0,0,calc(.55_*_0.20)))]\n shadow-[inset_0.5px_0.5px_0_rgba(255,255,255,calc(.35_+_.25_*_0.70)),inset_-0.5px_-0.5px_0_rgba(255,255,255,calc(.35_+_.25_*_0.70))]\n absolute isolate overflow-hidden\n ",
561
574
  children: [
562
- /* @__PURE__ */ jsx9("div", { className: "[mask:linear-gradient(-45deg),white,transparent_40%)] pointer-events-none absolute inset-0 mix-blend-screen opacity-[calc(.50_*_0.80)]" }),
563
- /* @__PURE__ */ jsx9("div", { className: "pointer-events-none absolute inset-0 mix-blend-screen opacity-20" }),
564
- /* @__PURE__ */ jsx9("div", { className: "absolute flex justify-center items-center inset-0 w-full h-full", children: isOpen ? /* @__PURE__ */ jsx9(
575
+ /* @__PURE__ */ jsx10("div", { className: "[mask:linear-gradient(-45deg),white,transparent_40%)] pointer-events-none absolute inset-0 mix-blend-screen opacity-[calc(.50_*_0.80)]" }),
576
+ /* @__PURE__ */ jsx10("div", { className: "pointer-events-none absolute inset-0 mix-blend-screen opacity-20" }),
577
+ /* @__PURE__ */ jsx10("div", { className: "absolute flex justify-center items-center inset-0 w-full h-full", children: isOpen ? /* @__PURE__ */ jsx10(
565
578
  X_default,
566
579
  {
567
580
  "aria-hidden": "true",
568
581
  className: "self-center",
569
582
  width: 30
570
583
  }
571
- ) : /* @__PURE__ */ jsx9(
584
+ ) : /* @__PURE__ */ jsx10(
572
585
  Logo_default,
573
586
  {
574
587
  "aria-hidden": "true",
@@ -592,9 +605,9 @@ function ThemeSwitcher({ options, position }) {
592
605
  ${switcherMenuClass}
593
606
  `,
594
607
  children: [
595
- /* @__PURE__ */ jsx9("div", { children: list.map((opt) => {
608
+ /* @__PURE__ */ jsx10("div", { children: list.map((opt) => {
596
609
  const Icon = THEME_ICON[opt.key];
597
- return /* @__PURE__ */ jsx9("div", { children: /* @__PURE__ */ jsxs9(
610
+ return /* @__PURE__ */ jsx10("div", { children: /* @__PURE__ */ jsxs9(
598
611
  "button",
599
612
  {
600
613
  type: "button",
@@ -611,7 +624,7 @@ function ThemeSwitcher({ options, position }) {
611
624
  theme === opt.key ? "bg-[#884DFF] text-[#ffffff]" : ""
612
625
  ].join(" "),
613
626
  children: [
614
- /* @__PURE__ */ jsx9(
627
+ /* @__PURE__ */ jsx10(
615
628
  Icon,
616
629
  {
617
630
  width: 24,
@@ -619,21 +632,21 @@ function ThemeSwitcher({ options, position }) {
619
632
  className: `inline-block ${theme === opt.key || hovered === opt.key ? "text-white" : "text-[#909090]"}`
620
633
  }
621
634
  ),
622
- /* @__PURE__ */ jsx9("span", { className: "group-hover:text-[#ffffff]", children: opt.label })
635
+ /* @__PURE__ */ jsx10("span", { className: "group-hover:text-[#ffffff]", children: opt.label })
623
636
  ]
624
637
  },
625
638
  opt.key
626
639
  ) }, opt.key);
627
640
  }) }),
628
- /* @__PURE__ */ jsx9("div", { className: "w-full border-[0.5px] border-[#B8B8B8] mt-[8px]" }),
629
- /* @__PURE__ */ jsx9("div", { className: "flex justify-evenly items-center gap-[10px] px-[10px] mt-[15px]", children: language === "English" ? /* @__PURE__ */ jsxs9(
641
+ /* @__PURE__ */ jsx10("div", { className: "w-full border-[0.5px] border-[#B8B8B8] mt-[8px]" }),
642
+ /* @__PURE__ */ jsx10("div", { className: "flex justify-evenly items-center gap-[10px] px-[10px] mt-[15px]", children: language === "English" ? /* @__PURE__ */ jsxs9(
630
643
  "button",
631
644
  {
632
645
  type: "button",
633
646
  className: "hover:cursor-pointer flex text-[18px] text-[#909090] gap-[8px] items-center justify-center",
634
647
  onClick: () => updateLanguage("Korean"),
635
648
  children: [
636
- /* @__PURE__ */ jsx9(Us_default, { width: 24 }),
649
+ /* @__PURE__ */ jsx10(Us_default, { width: 24 }),
637
650
  "English"
638
651
  ]
639
652
  }
@@ -644,7 +657,7 @@ function ThemeSwitcher({ options, position }) {
644
657
  className: "hover:cursor-pointer flex text-[18px] text-[#909090] gap-[8px] items-center justify-center ",
645
658
  onClick: () => updateLanguage("English"),
646
659
  children: [
647
- /* @__PURE__ */ jsx9(Kr_default, { width: 24 }),
660
+ /* @__PURE__ */ jsx10(Kr_default, { width: 24 }),
648
661
  "\uD55C\uAD6D\uC5B4"
649
662
  ]
650
663
  }
@@ -657,6 +670,7 @@ function ThemeSwitcher({ options, position }) {
657
670
  export {
658
671
  THEMES,
659
672
  ThemeProvider,
673
+ ThemeScript,
660
674
  ThemeSwitcher,
661
675
  useTheme
662
676
  };
package/dist/devtools.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  TOOLBAR_POSITION,
10
10
  VISION_PORTAL_ID,
11
11
  useTheme
12
- } from "./chunk-DVFOKORW.js";
12
+ } from "./chunk-CJYCYDTL.js";
13
13
 
14
14
  // src/core/constants/simulation.ts
15
15
  var DEFAULT_OPTIONS = {