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 +217 -165
- package/dist/styles.css +1 -1
- package/package.json +3 -3
- package/dist/KR-BEBXLJC6.svg +0 -27
- package/dist/US-H2QUNREB.svg +0 -23
- package/dist/cli.d.cts +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -375
- package/dist/client.cjs +0 -393
- package/dist/client.d.cts +0 -23
- package/dist/default-EPJEL445.svg +0 -4
- package/dist/deuteranopia-C23MR6FZ.svg +0 -4
- package/dist/logo-RY5YYL6A.svg +0 -10
- package/dist/protanopia-HOT6PUHN.svg +0 -5
- package/dist/tritanopia-MTE6DBJL.svg +0 -5
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
|
|
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:
|
|
96
|
-
height:
|
|
95
|
+
width: 39,
|
|
96
|
+
height: 40,
|
|
97
97
|
fill: "none",
|
|
98
98
|
...props,
|
|
99
99
|
children: [
|
|
100
|
-
/* @__PURE__ */ jsx2("path", { fill: "#CE78A9", d: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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:
|
|
162
|
-
height:
|
|
161
|
+
width: 28,
|
|
162
|
+
height: 21,
|
|
163
163
|
fill: "none",
|
|
164
164
|
...props,
|
|
165
165
|
children: [
|
|
166
|
-
/* @__PURE__ */ jsxs2("g", { clipPath: "url(#
|
|
167
|
-
/* @__PURE__ */ jsx3("path", { fill: "#fff", d: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
190
|
-
width:
|
|
191
|
-
height:
|
|
192
|
-
x: 0.
|
|
193
|
-
y: 0.
|
|
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:
|
|
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(
|
|
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: "
|
|
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:
|
|
235
|
-
height:
|
|
240
|
+
width: 24,
|
|
241
|
+
height: 17,
|
|
236
242
|
fill: "none",
|
|
237
243
|
...props,
|
|
238
244
|
children: [
|
|
239
|
-
/* @__PURE__ */ jsxs3("g", { clipPath: "url(#
|
|
240
|
-
/* @__PURE__ */ jsx4("path", { fill: "#fff", d: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
305
|
-
width:
|
|
306
|
-
height:
|
|
307
|
-
x: 0.
|
|
308
|
-
y: 0.
|
|
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:
|
|
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(
|
|
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: "
|
|
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/
|
|
355
|
+
// src/icons/X.tsx
|
|
344
356
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
345
|
-
var
|
|
357
|
+
var SvgX = (props) => /* @__PURE__ */ jsxs4(
|
|
346
358
|
"svg",
|
|
347
359
|
{
|
|
348
360
|
xmlns: "http://www.w3.org/2000/svg",
|
|
349
|
-
width:
|
|
350
|
-
height:
|
|
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__ */
|
|
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__ */
|
|
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
|
|
388
|
-
var SvgDefault = (props) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
418
|
-
var SvgProtanopia = (props) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
461
|
-
var SvgDeuteranopia = (props) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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] =
|
|
509
|
-
const wrapperRef =
|
|
510
|
-
|
|
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__ */
|
|
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__ */
|
|
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
|
-
|
|
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__ */
|
|
617
|
+
isOpen && /* @__PURE__ */ jsxs9(
|
|
549
618
|
"div",
|
|
550
619
|
{
|
|
551
620
|
role: "menu",
|
|
552
621
|
"aria-label": "Select theme",
|
|
553
|
-
className: "
|
|
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__ */
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
e
|
|
565
|
-
|
|
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
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
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,
|