colbrush 1.0.2 → 1.0.5

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.js CHANGED
@@ -84,7 +84,7 @@ var useUpdateLanguage = () => useTheme().updateLanguage;
84
84
  var THEMES = THEME_LABEL;
85
85
 
86
86
  // src/components/ThemeSwitcher.tsx
87
- import { useEffect as useEffect2, useRef, useState as useState2, useMemo as useMemo2 } from "react";
87
+ import { useEffect as useEffect3, useRef as useRef2, useState as useState3, useMemo as useMemo2 } from "react";
88
88
 
89
89
  // src/icons/Logo.tsx
90
90
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
@@ -92,59 +92,59 @@ var SvgLogo = (props) => /* @__PURE__ */ jsxs(
92
92
  "svg",
93
93
  {
94
94
  xmlns: "http://www.w3.org/2000/svg",
95
- width: 77,
96
- height: 78,
95
+ width: 39,
96
+ height: 40,
97
97
  fill: "none",
98
98
  ...props,
99
99
  children: [
100
- /* @__PURE__ */ jsx2("path", { fill: "#CE78A9", d: "m0 34.605 3.032-7.028L36.656 11.73l-2.618 6.615z" }),
100
+ /* @__PURE__ */ jsx2("path", { fill: "#CE78A9", d: "m.5 17.805 1.516-3.514 16.812-7.924-1.309 3.308z" }),
101
101
  /* @__PURE__ */ jsx2(
102
102
  "path",
103
103
  {
104
104
  fill: "#D55D00",
105
- d: "m5.375 47.421-4.272-9.784 28.112-14.194-2.756 6.753-18.466 9.37 4.96 11.438z"
105
+ d: "M3.187 24.212 1.05 19.32l14.056-7.097-1.378 3.376-9.233 4.685 2.48 5.72z"
106
106
  }
107
107
  ),
108
108
  /* @__PURE__ */ jsx2(
109
109
  "path",
110
110
  {
111
111
  fill: "#E59F01",
112
- d: "m43.55.478 6.992 3.112 15.464 33.802-6.584-2.693z"
112
+ d: "m22.276.741 3.496 1.556 7.732 16.901-3.292-1.347z"
113
113
  }
114
114
  ),
115
115
  /* @__PURE__ */ jsx2(
116
116
  "path",
117
117
  {
118
118
  fill: "#000",
119
- d: "m30.673 5.706 9.832-4.16L54.38 29.818l-6.721-2.833-9.16-18.571-11.494 4.83z"
119
+ d: "m15.837 3.355 4.916-2.08L27.69 15.41l-3.36-1.417-4.58-9.285-5.747 2.415z"
120
120
  }
121
121
  ),
122
122
  /* @__PURE__ */ jsx2(
123
123
  "path",
124
124
  {
125
125
  fill: "#0072B1",
126
- d: "m33.071 77.49-6.987-3.126-15.397-33.833 6.58 2.706z"
126
+ d: "m17.036 39.246-3.493-1.562-7.699-16.917 3.29 1.354z"
127
127
  }
128
128
  ),
129
129
  /* @__PURE__ */ jsx2(
130
130
  "path",
131
131
  {
132
132
  fill: "#F0E442",
133
- d: "m45.958 72.287-9.84 4.14L22.3 48.128l6.715 2.846 9.124 18.59 11.503-4.808z"
133
+ d: "m23.477 36.645-4.92 2.07-6.908-14.149 3.357 1.423 4.562 9.295 5.751-2.404z"
134
134
  }
135
135
  ),
136
136
  /* @__PURE__ */ jsx2(
137
137
  "path",
138
138
  {
139
139
  fill: "#009F73",
140
- d: "m76.778 43.424-2.964 7.057-33.468 16.174 2.553-6.64z"
140
+ d: "m38.889 22.215-1.482 3.529-16.734 8.087 1.277-3.32z"
141
141
  }
142
142
  ),
143
143
  /* @__PURE__ */ jsx2(
144
144
  "path",
145
145
  {
146
146
  fill: "#56B4E8",
147
- d: "m71.279 30.661 4.367 9.742L47.673 54.87l2.69-6.78 18.374-9.549-5.072-11.389z"
147
+ d: "m36.14 15.833 2.184 4.871-13.987 7.233 1.345-3.389 9.187-4.775-2.536-5.694z"
148
148
  }
149
149
  )
150
150
  ]
@@ -158,39 +158,39 @@ var SvgUs = (props) => /* @__PURE__ */ jsxs2(
158
158
  "svg",
159
159
  {
160
160
  xmlns: "http://www.w3.org/2000/svg",
161
- width: 50,
162
- height: 38,
161
+ width: 28,
162
+ height: 21,
163
163
  fill: "none",
164
164
  ...props,
165
165
  children: [
166
- /* @__PURE__ */ jsxs2("g", { clipPath: "url(#US_svg__a)", filter: "url(#US_svg__b)", children: [
167
- /* @__PURE__ */ jsx3("path", { fill: "#fff", d: "M7 7h35.785v23.857H7z" }),
166
+ /* @__PURE__ */ jsxs2("g", { clipPath: "url(#a)", filter: "url(#b)", children: [
167
+ /* @__PURE__ */ jsx3("path", { fill: "#fff", d: "M3.996 4.166h20v13.333h-20z" }),
168
168
  /* @__PURE__ */ jsx3(
169
169
  "path",
170
170
  {
171
171
  fill: "#D80027",
172
- d: "M7 7h35.785v1.835H7zm0 3.67h35.785v1.834H7zm0 3.668h35.785v1.835H7zm0 3.67h35.785v1.834H7zm0 3.676h35.785v1.834H7zm0 3.669h35.785v1.834H7zm0 3.669h35.785v1.835H7z"
172
+ 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"
173
173
  }
174
174
  ),
175
- /* @__PURE__ */ jsx3("path", { fill: "#2E52B2", d: "M7 7h17.892v12.842H7z" }),
175
+ /* @__PURE__ */ jsx3("path", { fill: "#2E52B2", d: "M3.996 4.166h10v7.177h-10z" }),
176
176
  /* @__PURE__ */ jsx3(
177
177
  "path",
178
178
  {
179
179
  fill: "#fff",
180
- d: "m10.334 16.69-.279-.894-.307.893h-.92l.746.537-.279.893.76-.55.74.55-.286-.893.76-.537zm3.928 0-.286-.894-.293.893h-.921l.746.537-.279.893.747-.55.753.55-.28-.893.747-.537zm3.94 0-.3-.894-.278.893h-.942l.767.537-.293.893.747-.55.767.55-.293-.893.747-.537zm3.921 0-.279-.894-.293.893h-.928l.754.537-.28.893.747-.55.753.55-.3-.893.768-.537zm-8.147-4.437-.293.893h-.921l.746.55-.279.88.747-.544.753.544-.28-.88.747-.55h-.934zm-3.92 0-.308.893h-.92l.746.55-.279.88.76-.544.74.544-.286-.88.76-.55h-.935zm7.847 0-.28.893h-.94l.766.55-.293.88.747-.544.767.544-.293-.88.747-.55h-.921zm3.941 0-.293.893h-.928l.754.55-.28.88.747-.544.753.544-.3-.88.768-.55h-.942zm-11.789-3.53-.307.88h-.92l.746.55-.279.886.76-.551.74.551-.286-.886.76-.55h-.935zm3.92 0-.292.88h-.921l.746.55-.279.886.747-.551.753.551-.28-.886.747-.55h-.934zm3.928 0-.28.88h-.94l.766.55-.293.886.747-.551.767.551-.293-.886.747-.55h-.921zm3.941 0-.293.88h-.928l.754.55-.28.886.747-.551.753.551-.3-.886.768-.55h-.942z"
180
+ d: "m5.86 9.581-.156-.499-.172.5h-.514l.417.3-.156.498.425-.308.413.308-.16-.499.425-.3zm2.195 0-.16-.499-.164.5h-.515l.418.3-.156.498.417-.308.42.308-.155-.499.417-.3zm2.202 0-.167-.499-.156.5h-.527l.43.3-.164.498.417-.308.429.308-.164-.499.417-.3zm2.191 0-.156-.499-.163.5h-.519l.421.3-.156.498.417-.308.422.308-.168-.499.429-.3zm-4.553-2.48-.164.5h-.515l.418.308-.156.49.417-.303.42.304-.155-.491.417-.308h-.522zm-2.191 0-.172.5h-.514l.417.308-.156.49.425-.303.413.304-.16-.491.425-.308H5.86zm4.386 0-.156.5h-.527l.43.308-.164.49.417-.303.429.304-.164-.491.417-.308h-.515zm2.202 0-.163.5h-.519l.421.308-.156.49.417-.303.422.304-.168-.491.429-.308h-.527zM5.704 5.13l-.172.491h-.514l.417.308-.156.495.425-.308.413.308-.16-.495.425-.308H5.86zm2.19 0-.163.491h-.515l.418.308-.156.495.417-.308.42.308-.155-.495.417-.308h-.522zm2.196 0-.156.491h-.527l.43.308-.164.495.417-.308.429.308-.164-.495.417-.308h-.515zm2.202 0-.163.491h-.519l.421.308-.156.495.417-.308.422.308-.168-.495.429-.308h-.527z"
181
181
  }
182
182
  )
183
183
  ] }),
184
184
  /* @__PURE__ */ jsxs2("defs", { children: [
185
- /* @__PURE__ */ jsx3("clipPath", { id: "US_svg__a", children: /* @__PURE__ */ jsx3("path", { fill: "#fff", d: "M7 7h35.785v23.857H7z" }) }),
185
+ /* @__PURE__ */ jsx3("clipPath", { id: "a", children: /* @__PURE__ */ jsx3("path", { fill: "#fff", d: "M3.996 4.166h20v13.333h-20z" }) }),
186
186
  /* @__PURE__ */ jsxs2(
187
187
  "filter",
188
188
  {
189
- id: "US_svg__b",
190
- width: 48.261,
191
- height: 36.333,
192
- x: 0.762,
193
- y: 0.762,
189
+ id: "b",
190
+ width: 26.973,
191
+ height: 20.307,
192
+ x: 0.509,
193
+ y: 0.679,
194
194
  colorInterpolationFilters: "sRGB",
195
195
  filterUnits: "userSpaceOnUse",
196
196
  children: [
@@ -204,15 +204,21 @@ var SvgUs = (props) => /* @__PURE__ */ jsxs2(
204
204
  }
205
205
  ),
206
206
  /* @__PURE__ */ jsx3("feOffset", {}),
207
- /* @__PURE__ */ jsx3("feGaussianBlur", { stdDeviation: 3.119 }),
207
+ /* @__PURE__ */ jsx3("feGaussianBlur", { stdDeviation: 1.743 }),
208
208
  /* @__PURE__ */ jsx3("feComposite", { in2: "hardAlpha", operator: "out" }),
209
209
  /* @__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" }),
210
- /* @__PURE__ */ jsx3("feBlend", { in2: "BackgroundImageFix", result: "effect1_dropShadow_85_779" }),
210
+ /* @__PURE__ */ jsx3(
211
+ "feBlend",
212
+ {
213
+ in2: "BackgroundImageFix",
214
+ result: "effect1_dropShadow_306_3300"
215
+ }
216
+ ),
211
217
  /* @__PURE__ */ jsx3(
212
218
  "feBlend",
213
219
  {
214
220
  in: "SourceGraphic",
215
- in2: "effect1_dropShadow_85_779",
221
+ in2: "effect1_dropShadow_306_3300",
216
222
  result: "shape"
217
223
  }
218
224
  )
@@ -231,19 +237,19 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
231
237
  "svg",
232
238
  {
233
239
  xmlns: "http://www.w3.org/2000/svg",
234
- width: 42,
235
- height: 30,
240
+ width: 24,
241
+ height: 17,
236
242
  fill: "none",
237
243
  ...props,
238
244
  children: [
239
- /* @__PURE__ */ jsxs3("g", { clipPath: "url(#KR_svg__a)", filter: "url(#KR_svg__b)", children: [
240
- /* @__PURE__ */ jsx4("path", { fill: "#fff", d: "M3 3h36v24H3z" }),
245
+ /* @__PURE__ */ jsxs3("g", { clipPath: "url(#a)", filter: "url(#b)", children: [
246
+ /* @__PURE__ */ jsx4("path", { fill: "#fff", d: "M1.906 2h20v13.333h-20z" }),
241
247
  /* @__PURE__ */ jsx4(
242
248
  "path",
243
249
  {
244
250
  fill: "#000",
245
251
  fillRule: "evenodd",
246
- d: "m8.496 10.27 3.328-4.992.876.584-3.328 4.992zm1.248.832 3.328-4.992.876.584-3.328 4.992zm1.248.832 3.328-4.992.876.584-3.328 4.992zm15.81 10.54 3.327-4.993.876.584-3.328 4.992zm1.247.831 3.329-4.992.875.584-3.328 4.992zm5.452-3.576-3.328 4.992-.876-.584 3.329-4.992z",
252
+ d: "m4.959 6.04 1.849-2.774.487.324-1.85 2.773zm.693.461 1.85-2.773.486.324-1.85 2.774zm.694.463L8.195 4.19l.486.324-1.849 2.774zm8.782 5.855 1.85-2.774.486.325-1.849 2.773zm.694.462 1.849-2.774.486.325-1.849 2.773zm3.029-1.987L17 14.068l-.486-.325 1.85-2.773z",
247
253
  clipRule: "evenodd"
248
254
  }
249
255
  ),
@@ -252,7 +258,7 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
252
258
  {
253
259
  fill: "#fff",
254
260
  fillRule: "evenodd",
255
- d: "m31.988 22.853-4.16-2.774.487-.73 4.16 2.774z",
261
+ d: "m18.01 13.03-2.31-1.542.27-.405 2.31 1.54z",
256
262
  clipRule: "evenodd"
257
263
  }
258
264
  ),
@@ -260,14 +266,14 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
260
266
  "path",
261
267
  {
262
268
  fill: "#CA163A",
263
- d: "M25.992 18.328a6 6 0 1 0-9.985-6.657 6 6 0 0 0 9.984 6.657"
269
+ 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"
264
270
  }
265
271
  ),
266
272
  /* @__PURE__ */ jsx4(
267
273
  "path",
268
274
  {
269
275
  fill: "#0E4896",
270
- d: "M16.007 11.671A3.001 3.001 0 0 0 20.999 15a3.001 3.001 0 0 1 4.993 3.328 6 6 0 0 1-8.321 1.664 6 6 0 0 1-1.664-8.32"
276
+ 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"
271
277
  }
272
278
  ),
273
279
  /* @__PURE__ */ jsx4(
@@ -275,7 +281,7 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
275
281
  {
276
282
  fill: "#000",
277
283
  fillRule: "evenodd",
278
- d: "m30.173 5.277 3.328 4.993-.875.584-3.329-4.993zm-1.248.832 3.328 4.993-.875.584-3.329-4.993zm-1.248.832 3.328 4.993-.876.584-3.328-4.993zm-15.809 10.54 3.328 4.992-.876.584-3.328-4.992zm-1.248.832 3.328 4.992-.876.584-3.328-4.992zm-1.248.832 3.328 4.992-.876.584-3.328-4.992z",
284
+ d: "m17.002 3.266 1.849 2.773-.487.325-1.849-2.774zm-.694.462 1.85 2.773-.487.325-1.85-2.774zm-.693.462 1.85 2.774-.488.324-1.848-2.773zm-8.783 5.855 1.85 2.774-.487.324-1.85-2.773zm-.693.463 1.849 2.773-.487.324-1.849-2.773zm-.693.462 1.849 2.773-.487.325-1.849-2.774z",
279
285
  clipRule: "evenodd"
280
286
  }
281
287
  ),
@@ -283,7 +289,7 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
283
289
  "path",
284
290
  {
285
291
  fill: "#000",
286
- d: "m11.224 21.516 1.248-.832zm16.847-11.232 1.458-.971zm2.706-1.804 1.248-.832z"
292
+ d: "m6.475 12.286.693-.462zm9.36-6.24.81-.54zm1.502-1.002.694-.462z"
287
293
  }
288
294
  ),
289
295
  /* @__PURE__ */ jsx4(
@@ -291,21 +297,21 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
291
297
  {
292
298
  fill: "#fff",
293
299
  fillRule: "evenodd",
294
- d: "m32.269 8.013-1.248.832-.487-.73 1.248-.832zm-2.496 1.664-1.458.972-.487-.73 1.458-.972zM12.716 21.05l-1.248.832-.487-.73 1.248-.832z",
300
+ d: "m18.166 4.784-.693.463-.27-.406.693-.462zm-1.386.925-.81.54-.27-.406.81-.54zm-9.476 6.317-.694.463-.27-.406.693-.462z",
295
301
  clipRule: "evenodd"
296
302
  }
297
303
  )
298
304
  ] }),
299
305
  /* @__PURE__ */ jsxs3("defs", { children: [
300
- /* @__PURE__ */ jsx4("clipPath", { id: "KR_svg__a", children: /* @__PURE__ */ jsx4("path", { fill: "#fff", d: "M3 3h36v24H3z" }) }),
306
+ /* @__PURE__ */ jsx4("clipPath", { id: "a", children: /* @__PURE__ */ jsx4("path", { fill: "#fff", d: "M1.906 2h20v13.333h-20z" }) }),
301
307
  /* @__PURE__ */ jsxs3(
302
308
  "filter",
303
309
  {
304
- id: "KR_svg__b",
305
- width: 40.684,
306
- height: 28.684,
307
- x: 0.658,
308
- y: 0.658,
310
+ id: "b",
311
+ width: 22.602,
312
+ height: 15.936,
313
+ x: 0.605,
314
+ y: 0.699,
309
315
  colorInterpolationFilters: "sRGB",
310
316
  filterUnits: "userSpaceOnUse",
311
317
  children: [
@@ -319,15 +325,21 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
319
325
  }
320
326
  ),
321
327
  /* @__PURE__ */ jsx4("feOffset", {}),
322
- /* @__PURE__ */ jsx4("feGaussianBlur", { stdDeviation: 1.171 }),
328
+ /* @__PURE__ */ jsx4("feGaussianBlur", { stdDeviation: 0.65 }),
323
329
  /* @__PURE__ */ jsx4("feComposite", { in2: "hardAlpha", operator: "out" }),
324
330
  /* @__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" }),
325
- /* @__PURE__ */ jsx4("feBlend", { in2: "BackgroundImageFix", result: "effect1_dropShadow_85_784" }),
331
+ /* @__PURE__ */ jsx4(
332
+ "feBlend",
333
+ {
334
+ in2: "BackgroundImageFix",
335
+ result: "effect1_dropShadow_306_2477"
336
+ }
337
+ ),
326
338
  /* @__PURE__ */ jsx4(
327
339
  "feBlend",
328
340
  {
329
341
  in: "SourceGraphic",
330
- in2: "effect1_dropShadow_85_784",
342
+ in2: "effect1_dropShadow_306_2477",
331
343
  result: "shape"
332
344
  }
333
345
  )
@@ -340,18 +352,51 @@ var SvgKr = (props) => /* @__PURE__ */ jsxs3(
340
352
  );
341
353
  var Kr_default = SvgKr;
342
354
 
343
- // src/icons/theme/Tritanopia.tsx
355
+ // src/icons/X.tsx
344
356
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
345
- var SvgTritanopia = (props) => /* @__PURE__ */ jsxs4(
357
+ var SvgX = (props) => /* @__PURE__ */ jsxs4(
346
358
  "svg",
347
359
  {
348
360
  xmlns: "http://www.w3.org/2000/svg",
349
- width: 28,
350
- height: 29,
361
+ width: 30,
362
+ height: 30,
351
363
  fill: "none",
352
364
  ...props,
353
365
  children: [
354
366
  /* @__PURE__ */ jsx5(
367
+ "path",
368
+ {
369
+ fill: "#000",
370
+ fillRule: "evenodd",
371
+ d: "M25.977 4.023a.94.94 0 0 1 0 1.328L5.352 25.976a.939.939 0 0 1-1.327-1.328L24.65 4.023a.94.94 0 0 1 1.327 0",
372
+ clipRule: "evenodd"
373
+ }
374
+ ),
375
+ /* @__PURE__ */ jsx5(
376
+ "path",
377
+ {
378
+ fill: "#000",
379
+ fillRule: "evenodd",
380
+ d: "M4.023 4.023a.94.94 0 0 0 0 1.328L24.65 25.976a.939.939 0 0 0 1.327-1.328L5.351 4.023a.94.94 0 0 0-1.328 0",
381
+ clipRule: "evenodd"
382
+ }
383
+ )
384
+ ]
385
+ }
386
+ );
387
+ var X_default = SvgX;
388
+
389
+ // src/icons/theme/Tritanopia.tsx
390
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
391
+ var SvgTritanopia = (props) => /* @__PURE__ */ jsxs5(
392
+ "svg",
393
+ {
394
+ xmlns: "http://www.w3.org/2000/svg",
395
+ fill: "none",
396
+ viewBox: "0 0 28 29",
397
+ ...props,
398
+ children: [
399
+ /* @__PURE__ */ jsx6(
355
400
  "rect",
356
401
  {
357
402
  width: 26.18,
@@ -363,14 +408,14 @@ var SvgTritanopia = (props) => /* @__PURE__ */ jsxs4(
363
408
  rx: 13.09
364
409
  }
365
410
  ),
366
- /* @__PURE__ */ jsx5(
411
+ /* @__PURE__ */ jsx6(
367
412
  "path",
368
413
  {
369
414
  fill: "currentColor",
370
415
  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"
371
416
  }
372
417
  ),
373
- /* @__PURE__ */ jsx5(
418
+ /* @__PURE__ */ jsx6(
374
419
  "path",
375
420
  {
376
421
  stroke: "currentColor",
@@ -384,24 +429,23 @@ var SvgTritanopia = (props) => /* @__PURE__ */ jsxs4(
384
429
  var Tritanopia_default = SvgTritanopia;
385
430
 
386
431
  // src/icons/theme/Default.tsx
387
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
388
- var SvgDefault = (props) => /* @__PURE__ */ jsxs5(
432
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
433
+ var SvgDefault = (props) => /* @__PURE__ */ jsxs6(
389
434
  "svg",
390
435
  {
391
436
  xmlns: "http://www.w3.org/2000/svg",
392
- width: 31,
393
- height: 31,
394
437
  fill: "none",
438
+ viewBox: "0 0 31 31",
395
439
  ...props,
396
440
  children: [
397
- /* @__PURE__ */ jsx6(
441
+ /* @__PURE__ */ jsx7(
398
442
  "path",
399
443
  {
400
444
  fill: "currentColor",
401
445
  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"
402
446
  }
403
447
  ),
404
- /* @__PURE__ */ jsx6(
448
+ /* @__PURE__ */ jsx7(
405
449
  "path",
406
450
  {
407
451
  fill: "currentColor",
@@ -414,17 +458,16 @@ var SvgDefault = (props) => /* @__PURE__ */ jsxs5(
414
458
  var Default_default = SvgDefault;
415
459
 
416
460
  // src/icons/theme/Protanopia.tsx
417
- import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
418
- var SvgProtanopia = (props) => /* @__PURE__ */ jsxs6(
461
+ import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
462
+ var SvgProtanopia = (props) => /* @__PURE__ */ jsxs7(
419
463
  "svg",
420
464
  {
421
465
  xmlns: "http://www.w3.org/2000/svg",
422
- width: 28,
423
- height: 29,
424
466
  fill: "none",
467
+ viewBox: "0 0 28 29",
425
468
  ...props,
426
469
  children: [
427
- /* @__PURE__ */ jsx7(
470
+ /* @__PURE__ */ jsx8(
428
471
  "rect",
429
472
  {
430
473
  width: 26.18,
@@ -436,14 +479,14 @@ var SvgProtanopia = (props) => /* @__PURE__ */ jsxs6(
436
479
  rx: 13.09
437
480
  }
438
481
  ),
439
- /* @__PURE__ */ jsx7(
482
+ /* @__PURE__ */ jsx8(
440
483
  "path",
441
484
  {
442
485
  fill: "currentColor",
443
486
  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"
444
487
  }
445
488
  ),
446
- /* @__PURE__ */ jsx7(
489
+ /* @__PURE__ */ jsx8(
447
490
  "path",
448
491
  {
449
492
  stroke: "currentColor",
@@ -457,17 +500,16 @@ var SvgProtanopia = (props) => /* @__PURE__ */ jsxs6(
457
500
  var Protanopia_default = SvgProtanopia;
458
501
 
459
502
  // src/icons/theme/Deuteranopia.tsx
460
- import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
461
- var SvgDeuteranopia = (props) => /* @__PURE__ */ jsxs7(
503
+ import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
504
+ var SvgDeuteranopia = (props) => /* @__PURE__ */ jsxs8(
462
505
  "svg",
463
506
  {
464
507
  xmlns: "http://www.w3.org/2000/svg",
465
- width: 28,
466
- height: 29,
467
508
  fill: "none",
509
+ viewBox: "0 0 28 29",
468
510
  ...props,
469
511
  children: [
470
- /* @__PURE__ */ jsx8(
512
+ /* @__PURE__ */ jsx9(
471
513
  "rect",
472
514
  {
473
515
  width: 26.18,
@@ -479,7 +521,7 @@ var SvgDeuteranopia = (props) => /* @__PURE__ */ jsxs7(
479
521
  rx: 13.09
480
522
  }
481
523
  ),
482
- /* @__PURE__ */ jsx8(
524
+ /* @__PURE__ */ jsx9(
483
525
  "path",
484
526
  {
485
527
  fill: "currentColor",
@@ -491,8 +533,42 @@ var SvgDeuteranopia = (props) => /* @__PURE__ */ jsxs7(
491
533
  );
492
534
  var Deuteranopia_default = SvgDeuteranopia;
493
535
 
536
+ // src/components/ThemeSwitcherPortal.tsx
537
+ import { useEffect as useEffect2, useRef, useState as useState2 } from "react";
538
+ import { createPortal } from "react-dom";
539
+ var PORTAL_ID = "theme-switcher-portal";
540
+ var portalEl = null;
541
+ var activeOwner = null;
542
+ function ensurePortal() {
543
+ if (typeof document === "undefined") throw new Error("No document");
544
+ if (portalEl && document.body.contains(portalEl)) return portalEl;
545
+ const existing = document.getElementById(PORTAL_ID);
546
+ portalEl = existing ?? Object.assign(document.createElement("div"), { id: PORTAL_ID });
547
+ if (!existing) document.body.appendChild(portalEl);
548
+ return portalEl;
549
+ }
550
+ function ThemeSwitcherPortal({
551
+ children
552
+ }) {
553
+ const [container, setContainer] = useState2(null);
554
+ const ownerId = useRef(Symbol("ThemeSwitcherPortal"));
555
+ useEffect2(() => {
556
+ const el = ensurePortal();
557
+ setContainer(el);
558
+ if (activeOwner === null) activeOwner = ownerId.current;
559
+ return () => {
560
+ if (activeOwner === ownerId.current) {
561
+ activeOwner = null;
562
+ }
563
+ };
564
+ }, []);
565
+ if (!container) return null;
566
+ const isPrimary = activeOwner === ownerId.current;
567
+ return createPortal(isPrimary ? children : null, container);
568
+ }
569
+
494
570
  // src/components/ThemeSwitcher.tsx
495
- import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
571
+ import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
496
572
  var THEME_ICON = {
497
573
  default: Default_default,
498
574
  protanopia: Protanopia_default,
@@ -501,13 +577,14 @@ var THEME_ICON = {
501
577
  };
502
578
  function ThemeSwitcher({ options, className }) {
503
579
  const { theme, updateTheme, language, updateLanguage } = useTheme();
580
+ const [hovered, setHovered] = useState3(null);
504
581
  const list = useMemo2(
505
582
  () => options?.length ? options : getThemeOptions(language),
506
583
  [options, language]
507
584
  );
508
- const [isOpen, setIsOpen] = useState2(false);
509
- const wrapperRef = useRef(null);
510
- useEffect2(() => {
585
+ const [isOpen, setIsOpen] = useState3(false);
586
+ const wrapperRef = useRef2(null);
587
+ useEffect3(() => {
511
588
  const handleClickOutside = (event) => {
512
589
  if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {
513
590
  setIsOpen(false);
@@ -520,119 +597,94 @@ function ThemeSwitcher({ options, className }) {
520
597
  e.stopPropagation();
521
598
  setIsOpen((prev) => !prev);
522
599
  };
523
- return /* @__PURE__ */ jsxs8(
600
+ return /* @__PURE__ */ jsx10(ThemeSwitcherPortal, { children: /* @__PURE__ */ jsxs9(
524
601
  "div",
525
602
  {
526
603
  ref: wrapperRef,
527
- className: [
528
- "fixed bottom-[20px] right-[20px] flex justify-center items-center text-[20px] bg-[#ffffff] drop-shadow-md",
529
- isOpen ? "w-[220px] h-fit rounded-[18px]" : "w-[60px] h-[60px] rounded-full",
530
- className ?? ""
531
- ].join(" "),
532
- role: "presentation",
604
+ className: "flex w-[100vw] h-[100vh] z-[10000]",
533
605
  children: [
534
- /* @__PURE__ */ jsx9(
606
+ /* @__PURE__ */ jsx10(
535
607
  "button",
536
608
  {
537
609
  type: "button",
538
610
  "aria-haspopup": "menu",
539
611
  "aria-expanded": isOpen,
540
612
  onClick: toggle,
541
- className: [
542
- "w-[60px] h-[60px] p-[10px] bg-[#ffffff] rounded-full flex justify-center items-center",
543
- isOpen ? "hidden" : "block"
544
- ].join(" "),
545
- children: /* @__PURE__ */ jsx9(Logo_default, { className: "self-center", width: 40, height: 40 })
613
+ className: "fixed right-[25px] bottom-[25px] w-[60px] h-[60px] p-[10px] bg-[#ffffff] rounded-full flex justify-center items-center shadow-[0_0_3px_0_rgba(0,0,0,0.17)]",
614
+ children: isOpen ? /* @__PURE__ */ jsx10(X_default, { className: "self-center" }) : /* @__PURE__ */ jsx10(Logo_default, { className: "self-center" })
546
615
  }
547
616
  ),
548
- isOpen && /* @__PURE__ */ jsxs8(
617
+ isOpen && /* @__PURE__ */ jsxs9(
549
618
  "div",
550
619
  {
551
620
  role: "menu",
552
621
  "aria-label": "Select theme",
553
- className: "flex flex-col bg-[#ffffff] rounded-[18px] w-[220px]",
622
+ className: "fixed bottom-[100px] right-[25px] flex-col bg-[#ffffff] rounded-[18px] w-[220px] gap-[11px]",
554
623
  children: [
555
- list.map((opt) => {
624
+ /* @__PURE__ */ jsx10("div", { children: list.map((opt) => {
556
625
  const Icon = THEME_ICON[opt.key];
557
- return /* @__PURE__ */ jsxs8(
558
- "button",
559
- {
560
- type: "button",
561
- role: "menuitemradio",
562
- "aria-checked": theme === opt.key,
563
- onClick: (e) => {
564
- e.stopPropagation();
565
- updateTheme(opt.key);
626
+ return /* @__PURE__ */ jsxs9("div", { children: [
627
+ /* @__PURE__ */ jsxs9(
628
+ "button",
629
+ {
630
+ type: "button",
631
+ role: "menuitemradio",
632
+ "aria-checked": theme === opt.key,
633
+ onClick: (e) => {
634
+ e.stopPropagation();
635
+ updateTheme(opt.key);
636
+ },
637
+ onMouseEnter: () => setHovered(opt.key),
638
+ onMouseLeave: () => setHovered(null),
639
+ className: [
640
+ "hover:cursor-pointer group text-[18px] text-[#3D4852] py-1 w-full h-[50px] text-center gap-[8px] flex items-center justify-center rounded-[18px] hover:bg-[#3D4852]",
641
+ theme === opt.key ? "bg-[#3D4852] text-[#ffffff]" : ""
642
+ ].join(" "),
643
+ children: [
644
+ /* @__PURE__ */ jsx10(
645
+ Icon,
646
+ {
647
+ width: 24,
648
+ height: 24,
649
+ className: `inline-block ${theme === opt.key || hovered === opt.key ? "text-white" : "text-[#3D4852]"}`
650
+ }
651
+ ),
652
+ /* @__PURE__ */ jsx10("span", { className: "group-hover:text-[#ffffff]", children: opt.label })
653
+ ]
566
654
  },
567
- className: [
568
- "text-[18px] text-[#3D4852] py-1 w-full h-[50px] text-center gap-[8px] flex items-center justify-center rounded-[18px]",
569
- "hover:bg-[#0072B1]",
570
- theme === opt.key ? "bg-[#0072B1] text-[#ffffff]" : ""
571
- ].join(" "),
572
- children: [
573
- /* @__PURE__ */ jsx9(
574
- Icon,
575
- {
576
- width: 18,
577
- height: 18,
578
- stroke: `${theme === opt.key} ? '#ffffff': '#3D4852'`,
579
- fill: `${theme === opt.key} ? '#ffffff': '#3D4852'`,
580
- className: "inline-block"
581
- }
582
- ),
583
- /* @__PURE__ */ jsx9("span", { children: opt.label })
584
- ]
585
- },
586
- opt.key
587
- );
588
- }),
589
- /* @__PURE__ */ jsx9("div", { className: "w-full border-[0.5px] border-[#B8B8B8]" }),
590
- /* @__PURE__ */ jsxs8("div", { className: "flex h-[80px] justify-evenly items-center gap-[10px] px-[10px]", children: [
591
- /* @__PURE__ */ jsxs8(
592
- "div",
593
- {
594
- className: `relative hover:cursor-pointer flex text-[18px] text-[#3D4852] ${language === "English" ? "underline" : ""}`,
595
- onClick: () => updateLanguage("English"),
596
- children: [
597
- /* @__PURE__ */ jsx9("span", { className: "absolute top-[-20px] left-[0px] text-[#3D4852] text-[8px] px-[9px] py-[2px] rounded-[13px] bg-[#D9D9D9]", children: "Language" }),
598
- /* @__PURE__ */ jsx9(
599
- Us_default,
600
- {
601
- className: "self-center",
602
- width: 30,
603
- height: 30
604
- }
605
- ),
606
- "English"
607
- ]
608
- }
609
- ),
610
- /* @__PURE__ */ jsx9("div", { className: "h-full w-[1px] border-r-[0.5px] border-r-[#B8B8B8]" }),
611
- /* @__PURE__ */ jsxs8(
612
- "div",
613
- {
614
- className: `hover:cursor-pointer flex text-[18px] text-[#3D4852] ${language === "Korean" ? "underline" : ""}`,
615
- onClick: () => updateLanguage("Korean"),
616
- children: [
617
- /* @__PURE__ */ jsx9(
618
- Kr_default,
619
- {
620
- className: "self-center",
621
- width: 30,
622
- height: 30
623
- }
624
- ),
625
- "Korean"
626
- ]
627
- }
628
- )
629
- ] })
655
+ opt.key
656
+ ),
657
+ opt.key !== "tritanopia" && /* @__PURE__ */ jsx10("div", { className: "border-b-[0.5px] border-b-[#D9D9D9] w-full" })
658
+ ] }, opt.key);
659
+ }) }),
660
+ /* @__PURE__ */ jsx10("div", { className: "w-full border-[0.5px] border-[#B8B8B8]" }),
661
+ /* @__PURE__ */ jsx10("div", { className: "flex justify-evenly items-center gap-[10px] px-[10px] my-[15px]", children: language === "English" ? /* @__PURE__ */ jsxs9(
662
+ "div",
663
+ {
664
+ className: `hover:cursor-pointer flex text-[18px] text-[#3D4852] gap-[8px] items-center justify-center`,
665
+ onClick: () => updateLanguage("Korean"),
666
+ children: [
667
+ /* @__PURE__ */ jsx10(Us_default, {}),
668
+ "English"
669
+ ]
670
+ }
671
+ ) : /* @__PURE__ */ jsxs9(
672
+ "div",
673
+ {
674
+ className: `hover:cursor-pointer flex text-[18px] text-[#3D4852] gap-[8px] items-center justify-center `,
675
+ onClick: () => updateLanguage("English"),
676
+ children: [
677
+ /* @__PURE__ */ jsx10(Kr_default, {}),
678
+ "Korean"
679
+ ]
680
+ }
681
+ ) })
630
682
  ]
631
683
  }
632
684
  )
633
685
  ]
634
686
  }
635
- );
687
+ ) });
636
688
  }
637
689
  export {
638
690
  THEMES,