@shellui/core 0.0.6 → 0.0.7
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/index.js +783 -827
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,57 +1,56 @@
|
|
|
1
1
|
import { jsxs as a, jsx as t, Fragment as V } from "react/jsx-runtime";
|
|
2
|
-
import { createContext as
|
|
3
|
-
import { useLocation as
|
|
4
|
-
import { getLogger as
|
|
5
|
-
import { useTranslation as z, initReactI18next as
|
|
2
|
+
import { createContext as Ce, useState as _, createElement as Rn, useContext as Se, forwardRef as E, useCallback as L, Children as ot, isValidElement as _n, cloneElement as Pn, useEffect as D, useMemo as j, useRef as Z, useLayoutEffect as pt, Suspense as Le } from "react";
|
|
3
|
+
import { useLocation as Ae, useNavigate as gt, Routes as Pt, Route as Ue, Navigate as Xt, useRouteError as On, isRouteErrorResponse as Wn, Outlet as mt, Link as Qe, createBrowserRouter as Mn, RouterProvider as Bn } from "react-router";
|
|
4
|
+
import { getLogger as ze, shellui as b, addIframe as zn, removeIframe as Un } from "@shellui/sdk";
|
|
5
|
+
import { useTranslation as z, initReactI18next as Hn } from "react-i18next";
|
|
6
6
|
import { Slot as Re } from "@radix-ui/react-slot";
|
|
7
|
-
import { clsx as
|
|
8
|
-
import { twMerge as
|
|
9
|
-
import { cva as
|
|
7
|
+
import { clsx as $n } from "clsx";
|
|
8
|
+
import { twMerge as jn } from "tailwind-merge";
|
|
9
|
+
import { cva as ft } from "class-variance-authority";
|
|
10
10
|
import se from "./constants/urls.js";
|
|
11
|
-
import
|
|
12
|
-
import { Workbox as
|
|
13
|
-
import
|
|
14
|
-
import { toast as te, Toaster as Kn } from "sonner";
|
|
11
|
+
import Ye from "i18next";
|
|
12
|
+
import { Workbox as Vn } from "workbox-window";
|
|
13
|
+
import { toast as te, Toaster as Gn } from "sonner";
|
|
15
14
|
import * as ae from "@radix-ui/react-dialog";
|
|
16
15
|
import { Drawer as ie } from "vaul";
|
|
17
16
|
import * as X from "@radix-ui/react-alert-dialog";
|
|
18
|
-
const
|
|
19
|
-
let
|
|
20
|
-
function
|
|
21
|
-
const [n] =
|
|
17
|
+
const Fe = ze("shellcore"), Qt = Ce(null);
|
|
18
|
+
let Ot = !1;
|
|
19
|
+
function Yn(e) {
|
|
20
|
+
const [n] = _(() => {
|
|
22
21
|
try {
|
|
23
22
|
const o = __SHELLUI_CONFIG__;
|
|
24
23
|
if (o != null && typeof o == "string")
|
|
25
24
|
try {
|
|
26
25
|
const s = JSON.parse(o);
|
|
27
|
-
return typeof window < "u" && s.runtime === "tauri" && (window.__SHELLUI_TAURI__ = !0), process.env.NODE_ENV === "development" && !
|
|
26
|
+
return typeof window < "u" && s.runtime === "tauri" && (window.__SHELLUI_TAURI__ = !0), process.env.NODE_ENV === "development" && !Ot && (Ot = !0, Fe.info("Config loaded from __SHELLUI_CONFIG__", {
|
|
28
27
|
hasNavigation: !!s.navigation,
|
|
29
28
|
navigationItems: s.navigation?.length || 0
|
|
30
29
|
})), s;
|
|
31
30
|
} catch (s) {
|
|
32
|
-
|
|
31
|
+
Fe.error("Failed to parse config JSON:", { error: s }), Fe.error("Config value (first 200 chars):", { value: o.substring(0, 200) });
|
|
33
32
|
}
|
|
34
33
|
const i = globalThis;
|
|
35
34
|
if (typeof i.__SHELLUI_CONFIG__ < "u") {
|
|
36
35
|
const s = i.__SHELLUI_CONFIG__, c = typeof s == "string" ? JSON.parse(s) : s;
|
|
37
|
-
return typeof window < "u" && c.runtime === "tauri" && (window.__SHELLUI_TAURI__ = !0), process.env.NODE_ENV === "development" &&
|
|
36
|
+
return typeof window < "u" && c.runtime === "tauri" && (window.__SHELLUI_TAURI__ = !0), process.env.NODE_ENV === "development" && Fe.warn("Config loaded from globalThis fallback (define may not have worked)"), c;
|
|
38
37
|
}
|
|
39
|
-
return
|
|
38
|
+
return Fe.warn(
|
|
40
39
|
"Config not found. Using empty config. Make sure shellui.config.ts is properly loaded during build."
|
|
41
40
|
), {};
|
|
42
41
|
} catch (o) {
|
|
43
|
-
return
|
|
42
|
+
return Fe.error("Failed to load ShellUI config:", { error: o }), {};
|
|
44
43
|
}
|
|
45
44
|
}), r = { config: n };
|
|
46
|
-
return
|
|
45
|
+
return Rn(Qt.Provider, { value: r }, e.children);
|
|
47
46
|
}
|
|
48
47
|
function K() {
|
|
49
|
-
const e =
|
|
48
|
+
const e = Se(Qt);
|
|
50
49
|
if (e === null)
|
|
51
50
|
throw new Error("useConfig must be used within a ConfigProvider");
|
|
52
51
|
return e;
|
|
53
52
|
}
|
|
54
|
-
const
|
|
53
|
+
const Kn = () => {
|
|
55
54
|
const { t: e } = z("common"), { config: n } = K();
|
|
56
55
|
return /* @__PURE__ */ a("div", { className: "flex flex-col items-center justify-center h-full p-8 md:p-10", children: [
|
|
57
56
|
/* @__PURE__ */ t(
|
|
@@ -64,14 +63,11 @@ const Zn = () => {
|
|
|
64
63
|
),
|
|
65
64
|
/* @__PURE__ */ t("p", { className: "mt-4 text-lg text-muted-foreground", children: e("getStarted") })
|
|
66
65
|
] });
|
|
67
|
-
}
|
|
68
|
-
__proto__: null,
|
|
69
|
-
HomeView: Zn
|
|
70
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
66
|
+
};
|
|
71
67
|
function x(...e) {
|
|
72
|
-
return
|
|
68
|
+
return jn($n(e));
|
|
73
69
|
}
|
|
74
|
-
const
|
|
70
|
+
const en = E(({ ...e }, n) => /* @__PURE__ */ t(
|
|
75
71
|
"nav",
|
|
76
72
|
{
|
|
77
73
|
ref: n,
|
|
@@ -79,8 +75,8 @@ const nn = E(({ ...e }, n) => /* @__PURE__ */ t(
|
|
|
79
75
|
...e
|
|
80
76
|
}
|
|
81
77
|
));
|
|
82
|
-
|
|
83
|
-
const
|
|
78
|
+
en.displayName = "Breadcrumb";
|
|
79
|
+
const tn = E(
|
|
84
80
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
85
81
|
"ol",
|
|
86
82
|
{
|
|
@@ -93,8 +89,8 @@ const rn = E(
|
|
|
93
89
|
}
|
|
94
90
|
)
|
|
95
91
|
);
|
|
96
|
-
|
|
97
|
-
const
|
|
92
|
+
tn.displayName = "BreadcrumbList";
|
|
93
|
+
const it = E(
|
|
98
94
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
99
95
|
"li",
|
|
100
96
|
{
|
|
@@ -104,8 +100,8 @@ const st = E(
|
|
|
104
100
|
}
|
|
105
101
|
)
|
|
106
102
|
);
|
|
107
|
-
|
|
108
|
-
const
|
|
103
|
+
it.displayName = "BreadcrumbItem";
|
|
104
|
+
const qn = E(({ asChild: e, className: n, ...r }, o) => /* @__PURE__ */ t(
|
|
109
105
|
e ? Re : "a",
|
|
110
106
|
{
|
|
111
107
|
ref: o,
|
|
@@ -113,8 +109,8 @@ const Xn = E(({ asChild: e, className: n, ...r }, o) => /* @__PURE__ */ t(
|
|
|
113
109
|
...r
|
|
114
110
|
}
|
|
115
111
|
));
|
|
116
|
-
|
|
117
|
-
const
|
|
112
|
+
qn.displayName = "BreadcrumbLink";
|
|
113
|
+
const nn = E(
|
|
118
114
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
119
115
|
"span",
|
|
120
116
|
{
|
|
@@ -127,8 +123,8 @@ const on = E(
|
|
|
127
123
|
}
|
|
128
124
|
)
|
|
129
125
|
);
|
|
130
|
-
|
|
131
|
-
const
|
|
126
|
+
nn.displayName = "BreadcrumbPage";
|
|
127
|
+
const rn = ({ children: e, className: n, ...r }) => /* @__PURE__ */ t(
|
|
132
128
|
"li",
|
|
133
129
|
{
|
|
134
130
|
role: "presentation",
|
|
@@ -152,7 +148,7 @@ const sn = ({ children: e, className: n, ...r }) => /* @__PURE__ */ t(
|
|
|
152
148
|
)
|
|
153
149
|
}
|
|
154
150
|
);
|
|
155
|
-
|
|
151
|
+
rn.displayName = "BreadcrumbSeparator";
|
|
156
152
|
const J = {
|
|
157
153
|
/** Sidebar trigger (above main content, below modals) */
|
|
158
154
|
SIDEBAR_TRIGGER: 9999,
|
|
@@ -174,19 +170,19 @@ const J = {
|
|
|
174
170
|
WINDOWS_TASKBAR: 9e3,
|
|
175
171
|
/** Base z-index for windows; each window gets base + order */
|
|
176
172
|
WINDOWS_WINDOW_BASE: 9001
|
|
177
|
-
},
|
|
178
|
-
const e =
|
|
173
|
+
}, on = Ce(void 0), ht = () => {
|
|
174
|
+
const e = Se(on);
|
|
179
175
|
if (!e)
|
|
180
176
|
throw new Error("useSidebar must be used within a SidebarProvider");
|
|
181
177
|
return e;
|
|
182
|
-
},
|
|
183
|
-
const [n, r] =
|
|
178
|
+
}, sn = ({ children: e }) => {
|
|
179
|
+
const [n, r] = _(!1), o = L(() => {
|
|
184
180
|
r((i) => !i);
|
|
185
181
|
}, []);
|
|
186
|
-
return /* @__PURE__ */ t(
|
|
187
|
-
},
|
|
182
|
+
return /* @__PURE__ */ t(on.Provider, { value: { isCollapsed: n, toggle: o }, children: e });
|
|
183
|
+
}, vt = E(
|
|
188
184
|
({ className: e, ...n }, r) => {
|
|
189
|
-
const { isCollapsed: o } =
|
|
185
|
+
const { isCollapsed: o } = ht();
|
|
190
186
|
return /* @__PURE__ */ t(
|
|
191
187
|
"div",
|
|
192
188
|
{
|
|
@@ -203,8 +199,8 @@ const J = {
|
|
|
203
199
|
);
|
|
204
200
|
}
|
|
205
201
|
);
|
|
206
|
-
|
|
207
|
-
const
|
|
202
|
+
vt.displayName = "Sidebar";
|
|
203
|
+
const Zn = () => /* @__PURE__ */ a(
|
|
208
204
|
"svg",
|
|
209
205
|
{
|
|
210
206
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -224,7 +220,7 @@ const Qn = () => /* @__PURE__ */ a(
|
|
|
224
220
|
/* @__PURE__ */ t("path", { d: "m14 9 3 3-3 3" })
|
|
225
221
|
]
|
|
226
222
|
}
|
|
227
|
-
),
|
|
223
|
+
), Jn = () => /* @__PURE__ */ a(
|
|
228
224
|
"svg",
|
|
229
225
|
{
|
|
230
226
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -244,9 +240,9 @@ const Qn = () => /* @__PURE__ */ a(
|
|
|
244
240
|
/* @__PURE__ */ t("path", { d: "m16 15-3-3 3-3" })
|
|
245
241
|
]
|
|
246
242
|
}
|
|
247
|
-
),
|
|
243
|
+
), Xn = E(
|
|
248
244
|
({ className: e, ...n }, r) => {
|
|
249
|
-
const { toggle: o, isCollapsed: i } =
|
|
245
|
+
const { toggle: o, isCollapsed: i } = ht();
|
|
250
246
|
return /* @__PURE__ */ t(
|
|
251
247
|
"button",
|
|
252
248
|
{
|
|
@@ -259,13 +255,13 @@ const Qn = () => /* @__PURE__ */ a(
|
|
|
259
255
|
"aria-label": i ? "Expand sidebar" : "Collapse sidebar",
|
|
260
256
|
style: { zIndex: J.SIDEBAR_TRIGGER },
|
|
261
257
|
...n,
|
|
262
|
-
children: i ? /* @__PURE__ */ t(
|
|
258
|
+
children: i ? /* @__PURE__ */ t(Zn, {}) : /* @__PURE__ */ t(Jn, {})
|
|
263
259
|
}
|
|
264
260
|
);
|
|
265
261
|
}
|
|
266
262
|
);
|
|
267
|
-
|
|
268
|
-
const
|
|
263
|
+
Xn.displayName = "SidebarTrigger";
|
|
264
|
+
const an = E(
|
|
269
265
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
270
266
|
"div",
|
|
271
267
|
{
|
|
@@ -275,8 +271,8 @@ const cn = E(
|
|
|
275
271
|
}
|
|
276
272
|
)
|
|
277
273
|
);
|
|
278
|
-
|
|
279
|
-
const
|
|
274
|
+
an.displayName = "SidebarHeader";
|
|
275
|
+
const bt = E(
|
|
280
276
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
281
277
|
"div",
|
|
282
278
|
{
|
|
@@ -286,8 +282,8 @@ const yt = E(
|
|
|
286
282
|
}
|
|
287
283
|
)
|
|
288
284
|
);
|
|
289
|
-
|
|
290
|
-
const
|
|
285
|
+
bt.displayName = "SidebarContent";
|
|
286
|
+
const ln = E(
|
|
291
287
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
292
288
|
"div",
|
|
293
289
|
{
|
|
@@ -297,8 +293,8 @@ const dn = E(
|
|
|
297
293
|
}
|
|
298
294
|
)
|
|
299
295
|
);
|
|
300
|
-
|
|
301
|
-
const
|
|
296
|
+
ln.displayName = "SidebarFooter";
|
|
297
|
+
const yt = E(
|
|
302
298
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
303
299
|
"div",
|
|
304
300
|
{
|
|
@@ -308,8 +304,8 @@ const wt = E(
|
|
|
308
304
|
}
|
|
309
305
|
)
|
|
310
306
|
);
|
|
311
|
-
|
|
312
|
-
const
|
|
307
|
+
yt.displayName = "SidebarGroup";
|
|
308
|
+
const wt = E(
|
|
313
309
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
314
310
|
"div",
|
|
315
311
|
{
|
|
@@ -323,8 +319,8 @@ const kt = E(
|
|
|
323
319
|
}
|
|
324
320
|
)
|
|
325
321
|
);
|
|
326
|
-
|
|
327
|
-
const
|
|
322
|
+
wt.displayName = "SidebarGroupLabel";
|
|
323
|
+
const Qn = E(({ className: e, asChild: n = !1, ...r }, o) => /* @__PURE__ */ t(
|
|
328
324
|
n ? Re : "button",
|
|
329
325
|
{
|
|
330
326
|
ref: o,
|
|
@@ -335,8 +331,8 @@ const nr = E(({ className: e, asChild: n = !1, ...r }, o) => /* @__PURE__ */ t(
|
|
|
335
331
|
...r
|
|
336
332
|
}
|
|
337
333
|
));
|
|
338
|
-
|
|
339
|
-
const
|
|
334
|
+
Qn.displayName = "SidebarGroupAction";
|
|
335
|
+
const kt = E(
|
|
340
336
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
341
337
|
"div",
|
|
342
338
|
{
|
|
@@ -346,8 +342,8 @@ const xt = E(
|
|
|
346
342
|
}
|
|
347
343
|
)
|
|
348
344
|
);
|
|
349
|
-
|
|
350
|
-
const
|
|
345
|
+
kt.displayName = "SidebarGroupContent";
|
|
346
|
+
const er = ft(
|
|
351
347
|
"flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent focus-visible:text-sidebar-accent-foreground focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground",
|
|
352
348
|
{
|
|
353
349
|
variants: {
|
|
@@ -366,8 +362,8 @@ const rr = ht(
|
|
|
366
362
|
size: "default"
|
|
367
363
|
}
|
|
368
364
|
}
|
|
369
|
-
),
|
|
370
|
-
const { isCollapsed: d } =
|
|
365
|
+
), xt = E(({ className: e, variant: n, size: r, asChild: o = !1, isActive: i, children: s, ...c }, u) => {
|
|
366
|
+
const { isCollapsed: d } = ht();
|
|
371
367
|
return /* @__PURE__ */ t(
|
|
372
368
|
o ? Re : "button",
|
|
373
369
|
{
|
|
@@ -375,7 +371,7 @@ const rr = ht(
|
|
|
375
371
|
"data-active": i,
|
|
376
372
|
"data-collapsed": d,
|
|
377
373
|
className: x(
|
|
378
|
-
|
|
374
|
+
er({ variant: n, size: r }),
|
|
379
375
|
d && "justify-center",
|
|
380
376
|
e
|
|
381
377
|
),
|
|
@@ -384,8 +380,8 @@ const rr = ht(
|
|
|
384
380
|
}
|
|
385
381
|
);
|
|
386
382
|
});
|
|
387
|
-
|
|
388
|
-
const
|
|
383
|
+
xt.displayName = "SidebarMenuButton";
|
|
384
|
+
const Ke = E(
|
|
389
385
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
390
386
|
"ul",
|
|
391
387
|
{
|
|
@@ -395,8 +391,8 @@ const qe = E(
|
|
|
395
391
|
}
|
|
396
392
|
)
|
|
397
393
|
);
|
|
398
|
-
|
|
399
|
-
const
|
|
394
|
+
Ke.displayName = "SidebarMenu";
|
|
395
|
+
const qe = E(
|
|
400
396
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
401
397
|
"li",
|
|
402
398
|
{
|
|
@@ -406,8 +402,8 @@ const Ze = E(
|
|
|
406
402
|
}
|
|
407
403
|
)
|
|
408
404
|
);
|
|
409
|
-
|
|
410
|
-
const
|
|
405
|
+
qe.displayName = "SidebarMenuItem";
|
|
406
|
+
const tr = E(({ className: e, asChild: n = !1, ...r }, o) => /* @__PURE__ */ t(
|
|
411
407
|
n ? Re : "button",
|
|
412
408
|
{
|
|
413
409
|
ref: o,
|
|
@@ -418,8 +414,8 @@ const or = E(({ className: e, asChild: n = !1, ...r }, o) => /* @__PURE__ */ t(
|
|
|
418
414
|
...r
|
|
419
415
|
}
|
|
420
416
|
));
|
|
421
|
-
|
|
422
|
-
const
|
|
417
|
+
tr.displayName = "SidebarMenuAction";
|
|
418
|
+
const nr = E(
|
|
423
419
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
424
420
|
"div",
|
|
425
421
|
{
|
|
@@ -432,8 +428,8 @@ const ir = E(
|
|
|
432
428
|
}
|
|
433
429
|
)
|
|
434
430
|
);
|
|
435
|
-
|
|
436
|
-
const
|
|
431
|
+
nr.displayName = "SidebarMenuBadge";
|
|
432
|
+
const rr = E(({ className: e, showIcon: n = !1, ...r }, o) => /* @__PURE__ */ a(
|
|
437
433
|
"div",
|
|
438
434
|
{
|
|
439
435
|
ref: o,
|
|
@@ -448,8 +444,8 @@ const sr = E(({ className: e, showIcon: n = !1, ...r }, o) => /* @__PURE__ */ a(
|
|
|
448
444
|
]
|
|
449
445
|
}
|
|
450
446
|
));
|
|
451
|
-
|
|
452
|
-
const
|
|
447
|
+
rr.displayName = "SidebarMenuSkeleton";
|
|
448
|
+
const or = E(
|
|
453
449
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
454
450
|
"ul",
|
|
455
451
|
{
|
|
@@ -462,8 +458,8 @@ const ar = E(
|
|
|
462
458
|
}
|
|
463
459
|
)
|
|
464
460
|
);
|
|
465
|
-
|
|
466
|
-
const
|
|
461
|
+
or.displayName = "SidebarMenuSub";
|
|
462
|
+
const ir = E(({ className: e, asChild: n = !1, size: r = "md", isActive: o, ...i }, s) => /* @__PURE__ */ t(
|
|
467
463
|
n ? Re : "a",
|
|
468
464
|
{
|
|
469
465
|
ref: s,
|
|
@@ -479,8 +475,8 @@ const lr = E(({ className: e, asChild: n = !1, size: r = "md", isActive: o, ...i
|
|
|
479
475
|
...i
|
|
480
476
|
}
|
|
481
477
|
));
|
|
482
|
-
|
|
483
|
-
const
|
|
478
|
+
ir.displayName = "SidebarMenuSubButton";
|
|
479
|
+
const sr = E(
|
|
484
480
|
({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
485
481
|
"li",
|
|
486
482
|
{
|
|
@@ -490,8 +486,8 @@ const cr = E(
|
|
|
490
486
|
}
|
|
491
487
|
)
|
|
492
488
|
);
|
|
493
|
-
|
|
494
|
-
const
|
|
489
|
+
sr.displayName = "SidebarMenuSubItem";
|
|
490
|
+
const ar = () => /* @__PURE__ */ t(
|
|
495
491
|
"svg",
|
|
496
492
|
{
|
|
497
493
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -511,7 +507,7 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
511
507
|
}
|
|
512
508
|
)
|
|
513
509
|
}
|
|
514
|
-
),
|
|
510
|
+
), lr = () => /* @__PURE__ */ a(
|
|
515
511
|
"svg",
|
|
516
512
|
{
|
|
517
513
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -544,7 +540,7 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
544
540
|
/* @__PURE__ */ t("path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
|
|
545
541
|
]
|
|
546
542
|
}
|
|
547
|
-
),
|
|
543
|
+
), cr = () => /* @__PURE__ */ t(
|
|
548
544
|
"svg",
|
|
549
545
|
{
|
|
550
546
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -558,7 +554,7 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
558
554
|
strokeLinejoin: "round",
|
|
559
555
|
children: /* @__PURE__ */ t("polyline", { points: "20 6 9 17 4 12" })
|
|
560
556
|
}
|
|
561
|
-
),
|
|
557
|
+
), dr = () => /* @__PURE__ */ a(
|
|
562
558
|
"svg",
|
|
563
559
|
{
|
|
564
560
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -582,7 +578,7 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
582
578
|
)
|
|
583
579
|
]
|
|
584
580
|
}
|
|
585
|
-
),
|
|
581
|
+
), ur = () => /* @__PURE__ */ a(
|
|
586
582
|
"svg",
|
|
587
583
|
{
|
|
588
584
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -599,7 +595,7 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
599
595
|
/* @__PURE__ */ t("polyline", { points: "8 6 2 12 8 18" })
|
|
600
596
|
]
|
|
601
597
|
}
|
|
602
|
-
),
|
|
598
|
+
), pr = () => /* @__PURE__ */ t(
|
|
603
599
|
"svg",
|
|
604
600
|
{
|
|
605
601
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -613,7 +609,7 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
613
609
|
strokeLinejoin: "round",
|
|
614
610
|
children: /* @__PURE__ */ t("polyline", { points: "9 18 15 12 9 6" })
|
|
615
611
|
}
|
|
616
|
-
),
|
|
612
|
+
), gr = () => /* @__PURE__ */ t(
|
|
617
613
|
"svg",
|
|
618
614
|
{
|
|
619
615
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -627,7 +623,7 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
627
623
|
strokeLinejoin: "round",
|
|
628
624
|
children: /* @__PURE__ */ t("polyline", { points: "15 18 9 12 15 6" })
|
|
629
625
|
}
|
|
630
|
-
),
|
|
626
|
+
), mr = () => /* @__PURE__ */ t(
|
|
631
627
|
"svg",
|
|
632
628
|
{
|
|
633
629
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -641,7 +637,7 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
641
637
|
strokeLinejoin: "round",
|
|
642
638
|
children: /* @__PURE__ */ t("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" })
|
|
643
639
|
}
|
|
644
|
-
),
|
|
640
|
+
), fr = () => /* @__PURE__ */ a(
|
|
645
641
|
"svg",
|
|
646
642
|
{
|
|
647
643
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -659,7 +655,7 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
659
655
|
/* @__PURE__ */ t("path", { d: "M16 16h5v5" })
|
|
660
656
|
]
|
|
661
657
|
}
|
|
662
|
-
),
|
|
658
|
+
), hr = () => /* @__PURE__ */ a(
|
|
663
659
|
"svg",
|
|
664
660
|
{
|
|
665
661
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -678,20 +674,20 @@ const dr = () => /* @__PURE__ */ t(
|
|
|
678
674
|
/* @__PURE__ */ t("path", { d: "M12 22V12" })
|
|
679
675
|
]
|
|
680
676
|
}
|
|
681
|
-
),
|
|
682
|
-
function
|
|
683
|
-
const e =
|
|
677
|
+
), Nt = Ce(void 0);
|
|
678
|
+
function vr() {
|
|
679
|
+
const e = Se(Nt);
|
|
684
680
|
if (e === void 0)
|
|
685
681
|
throw new Error("useSettings must be used within a SettingsProvider");
|
|
686
682
|
return e;
|
|
687
683
|
}
|
|
688
684
|
function q() {
|
|
689
|
-
const e =
|
|
685
|
+
const e = Se(Nt);
|
|
690
686
|
if (e === void 0)
|
|
691
687
|
throw new Error("useSettings must be used within a SettingsProvider");
|
|
692
688
|
return e;
|
|
693
689
|
}
|
|
694
|
-
const
|
|
690
|
+
const br = ft(
|
|
695
691
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 cursor-pointer disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
696
692
|
{
|
|
697
693
|
variants: {
|
|
@@ -719,14 +715,14 @@ const kr = ht(
|
|
|
719
715
|
({ className: e, variant: n, size: r, asChild: o = !1, ...i }, s) => /* @__PURE__ */ t(
|
|
720
716
|
o ? Re : "button",
|
|
721
717
|
{
|
|
722
|
-
className: x(
|
|
718
|
+
className: x(br({ variant: n, size: r, className: e })),
|
|
723
719
|
ref: s,
|
|
724
720
|
...i
|
|
725
721
|
}
|
|
726
722
|
)
|
|
727
723
|
);
|
|
728
724
|
S.displayName = "Button";
|
|
729
|
-
const
|
|
725
|
+
const Ct = E(
|
|
730
726
|
({ className: e, children: n, ...r }, o) => /* @__PURE__ */ t(
|
|
731
727
|
"div",
|
|
732
728
|
{
|
|
@@ -734,10 +730,10 @@ const St = E(
|
|
|
734
730
|
className: x("inline-flex rounded-md", e),
|
|
735
731
|
role: "group",
|
|
736
732
|
...r,
|
|
737
|
-
children:
|
|
738
|
-
if (
|
|
739
|
-
const c = s === 0, u = s ===
|
|
740
|
-
return
|
|
733
|
+
children: ot.map(n, (i, s) => {
|
|
734
|
+
if (_n(i)) {
|
|
735
|
+
const c = s === 0, u = s === ot.count(n) - 1;
|
|
736
|
+
return Pn(i, {
|
|
741
737
|
className: x(
|
|
742
738
|
// Remove rounded corners from all buttons
|
|
743
739
|
"rounded-none",
|
|
@@ -756,7 +752,7 @@ const St = E(
|
|
|
756
752
|
}
|
|
757
753
|
)
|
|
758
754
|
);
|
|
759
|
-
|
|
755
|
+
Ct.displayName = "ButtonGroup";
|
|
760
756
|
function M(e) {
|
|
761
757
|
if (!e || typeof e != "string" || !e.match(/^#?[0-9A-Fa-f]{6}$/))
|
|
762
758
|
return e;
|
|
@@ -783,7 +779,7 @@ function M(e) {
|
|
|
783
779
|
const m = Math.round(g * 360 * 10) / 10, h = Math.round(p * 100 * 10) / 10, v = Math.round(l * 100 * 10) / 10, w = `${m} ${h}% ${v}%`;
|
|
784
780
|
return w.match(/^\d+(\.\d+)?\s+\d+(\.\d+)?%\s+\d+(\.\d+)?%$/) ? w : (console.warn(`[Theme] Invalid HSL conversion result for ${e}: ${w}`), e);
|
|
785
781
|
}
|
|
786
|
-
const
|
|
782
|
+
const yr = {
|
|
787
783
|
name: "default",
|
|
788
784
|
displayName: "Default",
|
|
789
785
|
colors: {
|
|
@@ -902,7 +898,7 @@ const xr = {
|
|
|
902
898
|
// Blue
|
|
903
899
|
}
|
|
904
900
|
}
|
|
905
|
-
},
|
|
901
|
+
}, wr = {
|
|
906
902
|
name: "blue",
|
|
907
903
|
displayName: "Blue",
|
|
908
904
|
colors: {
|
|
@@ -1021,7 +1017,7 @@ const xr = {
|
|
|
1021
1017
|
// Blue
|
|
1022
1018
|
}
|
|
1023
1019
|
}
|
|
1024
|
-
},
|
|
1020
|
+
}, kr = {
|
|
1025
1021
|
name: "warm-yellow",
|
|
1026
1022
|
displayName: "Warm Yellow",
|
|
1027
1023
|
fontFamily: '"Comic Sans MS", "Comic Sans", "Chalkboard SE", "Comic Neue", cursive, sans-serif',
|
|
@@ -1144,21 +1140,21 @@ const xr = {
|
|
|
1144
1140
|
// Bright golden amber
|
|
1145
1141
|
}
|
|
1146
1142
|
}
|
|
1147
|
-
},
|
|
1148
|
-
["default",
|
|
1149
|
-
["blue",
|
|
1150
|
-
["warm-yellow",
|
|
1143
|
+
}, St = /* @__PURE__ */ new Map([
|
|
1144
|
+
["default", yr],
|
|
1145
|
+
["blue", wr],
|
|
1146
|
+
["warm-yellow", kr]
|
|
1151
1147
|
]);
|
|
1152
|
-
function
|
|
1153
|
-
|
|
1148
|
+
function cn(e) {
|
|
1149
|
+
St.set(e.name, e);
|
|
1154
1150
|
}
|
|
1155
|
-
function
|
|
1156
|
-
return
|
|
1151
|
+
function et(e) {
|
|
1152
|
+
return St.get(e);
|
|
1157
1153
|
}
|
|
1158
|
-
function
|
|
1159
|
-
return Array.from(
|
|
1154
|
+
function xr() {
|
|
1155
|
+
return Array.from(St.values());
|
|
1160
1156
|
}
|
|
1161
|
-
function
|
|
1157
|
+
function Wt(e, n) {
|
|
1162
1158
|
if (typeof document > "u")
|
|
1163
1159
|
return;
|
|
1164
1160
|
const r = document.documentElement, o = n ? e.colors.dark : e.colors.light, i = M(o.primary);
|
|
@@ -1202,7 +1198,7 @@ function Mt(e, n) {
|
|
|
1202
1198
|
`[Theme] Invalid HSL format for --primary: "${f}". Expected format: "H S% L%"`
|
|
1203
1199
|
), r.offsetHeight;
|
|
1204
1200
|
}
|
|
1205
|
-
const
|
|
1201
|
+
const Nr = () => /* @__PURE__ */ a(
|
|
1206
1202
|
"svg",
|
|
1207
1203
|
{
|
|
1208
1204
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1233,7 +1229,7 @@ const Ar = () => /* @__PURE__ */ a(
|
|
|
1233
1229
|
/* @__PURE__ */ t("path", { d: "m19.07 4.93-1.41 1.41" })
|
|
1234
1230
|
]
|
|
1235
1231
|
}
|
|
1236
|
-
),
|
|
1232
|
+
), Cr = () => /* @__PURE__ */ t(
|
|
1237
1233
|
"svg",
|
|
1238
1234
|
{
|
|
1239
1235
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1247,7 +1243,7 @@ const Ar = () => /* @__PURE__ */ a(
|
|
|
1247
1243
|
strokeLinejoin: "round",
|
|
1248
1244
|
children: /* @__PURE__ */ t("path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" })
|
|
1249
1245
|
}
|
|
1250
|
-
),
|
|
1246
|
+
), Sr = () => /* @__PURE__ */ a(
|
|
1251
1247
|
"svg",
|
|
1252
1248
|
{
|
|
1253
1249
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1290,7 +1286,7 @@ const Ar = () => /* @__PURE__ */ a(
|
|
|
1290
1286
|
)
|
|
1291
1287
|
]
|
|
1292
1288
|
}
|
|
1293
|
-
),
|
|
1289
|
+
), Ar = ({
|
|
1294
1290
|
theme: e,
|
|
1295
1291
|
isSelected: n,
|
|
1296
1292
|
isDark: r
|
|
@@ -1375,15 +1371,15 @@ const Ar = () => /* @__PURE__ */ a(
|
|
|
1375
1371
|
]
|
|
1376
1372
|
}
|
|
1377
1373
|
);
|
|
1378
|
-
},
|
|
1379
|
-
const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), { config: o } = K(), i = n.appearance?.theme || "system", s = n.appearance?.themeName || "default", [c, u] =
|
|
1380
|
-
|
|
1374
|
+
}, Fr = () => {
|
|
1375
|
+
const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), { config: o } = K(), i = n.appearance?.theme || "system", s = n.appearance?.themeName || "default", [c, u] = _([]);
|
|
1376
|
+
D(() => {
|
|
1381
1377
|
o?.themes && o.themes.forEach((p) => {
|
|
1382
|
-
|
|
1383
|
-
}), u(
|
|
1378
|
+
cn(p);
|
|
1379
|
+
}), u(xr());
|
|
1384
1380
|
}, [o]);
|
|
1385
|
-
const [d, f] =
|
|
1386
|
-
|
|
1381
|
+
const [d, f] = _(() => typeof window > "u" ? !1 : i === "dark" || i === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
1382
|
+
D(() => {
|
|
1387
1383
|
if (typeof window > "u") return;
|
|
1388
1384
|
const p = () => {
|
|
1389
1385
|
f(
|
|
@@ -1399,9 +1395,9 @@ const Ar = () => /* @__PURE__ */ a(
|
|
|
1399
1395
|
}
|
|
1400
1396
|
}, [i]);
|
|
1401
1397
|
const g = [
|
|
1402
|
-
{ value: "light", label: e("appearance.themes.light"), icon:
|
|
1403
|
-
{ value: "dark", label: e("appearance.themes.dark"), icon:
|
|
1404
|
-
{ value: "system", label: e("appearance.themes.system"), icon:
|
|
1398
|
+
{ value: "light", label: e("appearance.themes.light"), icon: Nr },
|
|
1399
|
+
{ value: "dark", label: e("appearance.themes.dark"), icon: Cr },
|
|
1400
|
+
{ value: "system", label: e("appearance.themes.system"), icon: Sr }
|
|
1405
1401
|
];
|
|
1406
1402
|
return /* @__PURE__ */ a("div", { className: "space-y-6", children: [
|
|
1407
1403
|
/* @__PURE__ */ a("div", { className: "space-y-2", children: [
|
|
@@ -1416,7 +1412,7 @@ const Ar = () => /* @__PURE__ */ a(
|
|
|
1416
1412
|
),
|
|
1417
1413
|
/* @__PURE__ */ t("p", { className: "text-sm text-muted-foreground", children: e("appearance.modeDescription") })
|
|
1418
1414
|
] }),
|
|
1419
|
-
/* @__PURE__ */ t("div", { className: "mt-2", children: /* @__PURE__ */ t(
|
|
1415
|
+
/* @__PURE__ */ t("div", { className: "mt-2", children: /* @__PURE__ */ t(Ct, { children: g.map((p) => {
|
|
1420
1416
|
const l = p.icon, m = i === p.value;
|
|
1421
1417
|
return /* @__PURE__ */ a(
|
|
1422
1418
|
S,
|
|
@@ -1467,7 +1463,7 @@ const Ar = () => /* @__PURE__ */ a(
|
|
|
1467
1463
|
),
|
|
1468
1464
|
"aria-label": p.displayName,
|
|
1469
1465
|
children: /* @__PURE__ */ t(
|
|
1470
|
-
|
|
1466
|
+
Ar,
|
|
1471
1467
|
{
|
|
1472
1468
|
theme: p,
|
|
1473
1469
|
isSelected: l,
|
|
@@ -1480,75 +1476,75 @@ const Ar = () => /* @__PURE__ */ a(
|
|
|
1480
1476
|
}) })
|
|
1481
1477
|
] })
|
|
1482
1478
|
] });
|
|
1483
|
-
},
|
|
1484
|
-
settings:
|
|
1485
|
-
welcome:
|
|
1486
|
-
getStarted:
|
|
1487
|
-
navigationError:
|
|
1488
|
-
navigationNotAllowed:
|
|
1489
|
-
errorBoundary:
|
|
1490
|
-
}, Mr = "Settings", Br = { preferences: "Preferences", system: "System", developer: "Developer" }, zr = { appearance: "Appearance", languageAndRegion: "Language & region", updateApp: "Software update", advanced: "Advanced", dataPrivacy: "Data Privacy", develop: "Develop", serviceWorker: "Service Worker" }, Ur = { description: "Check your app version and look for updates. When an update is available, you can install it from here.", currentVersion: "Current version", status: "Update status", statusUpToDate: "Up to date", statusUpdateAvailable: "Update available", checkForUpdate: "Check for update", checking: "Checking…", versionUnknown: "—", tauriComingSoon: "Updates for the desktop app will be available soon. You will be notified when a new version is ready.", swDisabledMessage: "The app will update when you refresh the page.", refreshApp: "Refresh app", youAreUpToDate: "You are up to date", installNow: "Install Now", checkError: "Error checking for updates. Try again", tryAgain: "Try again" }, Hr = { title: "Appearance", theme: "Theme", themeDescription: "Choose your preferred color scheme (current: {{theme}})", mode: "Mode", modeDescription: "Choose light, dark, or automatic mode.", colorTheme: "Color Theme", colorThemeDescription: "Select a color theme. Each theme has light and dark variants.", themes: { light: "Light", dark: "Dark", system: "Automatic" } }, $r = { title: "Language & region", description: "Configure your language and regional settings.", language: "Language", languageDescription: "Choose your preferred language. Changes will be applied immediately.", region: "Region", regionDescription: "Select your timezone. Dates throughout the app will adjust to this timezone.", currentDateTime: "Current date and time", timezoneLabel: "Timezone", resetToBrowser: "Reset to automatic timezone", defaultBrowser: "Automatic" }, jr = { title: "Advanced", description: "Advanced settings and configuration options.", errorReporting: { label: "Error reporting", statusConfigured: "Configured. You can turn it off below.", statusNotConfigured: "Not configured.", description: "Allow this app to send error reports to help fix issues." }, developerFeatures: { label: "Show features for developers", description: "Enable developer tools and settings in the settings menu." }, dangerZone: { title: "Danger Zone", description: "Irreversible and destructive actions.", reset: { title: "Reset All Data", warning: "This will permanently delete all your settings, preferences, and other app data. This action cannot be undone.", button: "Reset All Data", toast: { title: "Reset All Data?", description: "This will permanently delete all your settings, preferences, and other app data. This action cannot be undone.", confirm: "Reset All Data", cancel: "Cancel", success: { title: "Data Reset", description: "All app data has been reset successfully." } } } } }, Vr = { title: "Data Privacy", description: "Manage your data privacy settings and cookie preferences.", noCookiesConfigured: { title: "Cookie Usage", description: "This application only uses strictly essential cookies that are necessary for the application to function properly. These cookies are accepted by default and cannot be disabled.", info: "No optional cookies are configured for this application." }, cookieConsent: { title: "Cookie Consent", descriptionConsented: "You have made a choice about cookies. Reset to be asked again right away.", descriptionNotConsented: "You have not yet made a choice about cookies.", statusAcceptedAll: "You have accepted all cookies. This helps us provide you with the best experience.", statusRejectedAll: "You have rejected non-essential cookies. Only strictly necessary cookies are active.", statusCustom: "You have customized your cookie preferences. Some cookies are enabled based on your choices.", labelAcceptedAll: "All accepted", labelCustom: "Custom", labelRejectedAll: "All rejected", button: "Reset Cookie Consent", manageButton: "Manage Preferences", dialog: { title: "Reset Cookie Consent?", description: "This will clear your cookie preferences. You will be asked to accept or reject cookies on your next visit.", confirm: "Reset", cancel: "Cancel" }, toast: { title: "Cookie Consent Reset", description: "You will be asked about cookies on your next visit." } }, resetData: { title: "Reset All Data", description: "This will permanently delete all your settings and app data. This action cannot be undone.", button: "Reset All Data", toast: { title: "Reset All Data?", description: "This will permanently delete all your settings, preferences, and other app data. This action cannot be undone.", confirm: "Reset All Data", cancel: "Cancel", success: { title: "Data Reset", description: "All app data has been reset successfully." } } } }, Gr = { title: "Service Worker", description: "A service worker runs in the background and can cache the app for faster loading and offline use. When enabled, it stores files locally so the app loads quickly and works without a connection. You can enable or disable it below.", loading: "Loading service worker status...", developmentMode: { title: "Development Mode", description: "App caching is only available in production builds. Build your app with 'shellui build' to enable service worker caching." }, enabled: { title: "Enable service worker", descriptionEnabled: "The service worker is enabled. It caches the app for faster loading and offline access.", descriptionDisabled: "The service worker is disabled. The app will not be cached and will always load from the network." }, status: { title: "Service worker status", registered: "Registered", notRunning: "Not running", disabled: "Disabled", updateAvailable: "Update available", fileNotFound: "Service worker file not found", fileNotFoundDescription: "The service worker file could not be found. Caching is not available. This may be a development server issue." }, update: { title: "Update Available", description: "A new version of the app is available. Install it now to get the latest features and improvements.", button: "Install Now" }, updateInstalling: { title: "Installing Update", description: "The new version is being installed. The page will reload shortly." }, updateError: { title: "Update Failed", description: "Failed to install the update. Please try again later." }, reset: { title: "Reset to Latest Version", description: "Clear all cached files and reload the app to get the latest version from the server.", button: "Reset to Latest Version" }, resetSuccess: { title: "Reset Successful", description: "All cached files have been cleared. The app will reload with the latest version." }, resetError: { title: "Reset Failed", description: "Failed to clear cached files. Please try again later." } }, Yr = { title: "Develop", navigation: { title: "Navigate to", description: "Send a navigation request to the root app. This closes any open drawer or modal and navigates to the selected item.", selectLabel: "Navigation item", placeholder: "Select a destination…", empty: "No navigation items available (open from root to see items)." }, layout: { title: "Layout", description: "Switch between sidebar layout and windows (taskbar) layout. This overrides the app config for this session.", sidebar: "Sidebar", windows: "Windows" }, logging: { title: "Logging", description: "Enable or disable logging for specific namespaces. This helps you control which parts of ShellUI output debug information.", shellsdk: { label: "Show ShellSDK logs", description: "Enable logging for ShellUI SDK operations" }, shellcore: { label: "Show ShellCore logs", description: "Enable logging for ShellUI Core operations" } }, testing: { title: "Testing", description: "Test ShellUI features and functionality.", toastNotifications: { title: "Toast Notifications", buttons: { success: "Success Toast", error: "Error Toast", warning: "Warning Toast", info: "Info Toast", default: "Default Toast", loading: "Loading Toast", loadingSuccess: "Loading → Success Toast", withAction: "Toast with Action", withActionAndCancel: "Toast with Action AND cancel", longDuration: "Long Duration Toast" }, messages: { success: { title: "Success!", description: "Operation completed successfully" }, error: { title: "Error", description: "Something went wrong. Please try again." }, warning: { title: "Warning", description: "This action may have unintended consequences" }, info: { title: "Information", description: "Here's some useful information for you" }, default: { title: "Default Toast", description: "This is a default toast notification" }, loading: { title: "Loading...", description: "Please wait while we process your request" }, processing: { title: "Processing...", description: "Uploading your file" }, uploadComplete: { title: "Upload Complete!", description: "Your file has been uploaded successfully" }, withAction: { title: "Toast with Action", description: "This toast has an action button" }, undone: { title: "Undone", description: "Action has been undone" }, cancelled: { title: "Cancelled", description: "Action has been cancelled" }, persistent: { title: "Persistent Toast", description: "This toast will stay until dismissed (10 seconds)" }, actionLabels: { undo: "Undo", cancel: "Cancel" } } }, dialogTesting: { title: "Dialog Testing", buttons: { okDialog: "OK Dialog", okCancelDialog: "OK Cancel Dialog", deleteDialog: "Delete Dialog", confirmDialog: "Confirm Dialog", onlyCancelDialog: "Only Cancel Dialog" }, dialogs: { ok: { title: "Simple OK Dialog", description: "This is a simple dialog with just an OK button." }, okCancel: { title: "OK Cancel Dialog", description: "This dialog has both OK and Cancel buttons." }, delete: { title: "Delete Confirmation", description: "Are you sure you want to delete this item? This action cannot be undone.", okLabel: "Delete", cancelLabel: "Cancel" }, confirm: { title: "Confirm Action", description: "Do you want to proceed with this action?", okLabel: "Confirm", cancelLabel: "Cancel" }, onlyCancel: { title: "Only Cancel Dialog", description: "This dialog only has a Cancel button.", cancelLabel: "Close" } }, toasts: { okClicked: "OK clicked", cancelClicked: "Cancel clicked", itemDeleted: "Item deleted", deletionCancelled: "Deletion cancelled", actionConfirmed: "Action confirmed", actionCancelled: "Action cancelled", dialogClosed: "Dialog closed" } }, modalTesting: { title: "Modal Testing", description: "Opens the settings in a modal. Close with the × button or by clicking outside.", buttons: { openModal: "Open modal (settings)" } }, drawerTesting: { title: "Drawer Testing", buttons: { drawerRight: "Drawer from right", drawerLeft: "Drawer from left", drawerTop: "Drawer from top", drawerBottom: "Drawer from bottom", drawerRightNarrow: "Drawer right (400px)", drawerBottomHalf: "Drawer bottom (60vh)", closeDrawer: "Close drawer" } } } }, Kr = {
|
|
1491
|
-
title:
|
|
1492
|
-
categories:
|
|
1493
|
-
routes:
|
|
1494
|
-
updateApp:
|
|
1495
|
-
appearance:
|
|
1496
|
-
languageAndRegion:
|
|
1497
|
-
advanced:
|
|
1498
|
-
dataPrivacy:
|
|
1499
|
-
caching:
|
|
1500
|
-
develop:
|
|
1501
|
-
},
|
|
1502
|
-
title:
|
|
1503
|
-
description:
|
|
1504
|
-
titleRenewal:
|
|
1505
|
-
descriptionRenewal:
|
|
1506
|
-
accept:
|
|
1507
|
-
reject:
|
|
1508
|
-
setPreferences:
|
|
1509
|
-
preferences:
|
|
1510
|
-
},
|
|
1511
|
-
settings:
|
|
1512
|
-
welcome:
|
|
1513
|
-
getStarted:
|
|
1514
|
-
navigationError:
|
|
1515
|
-
navigationNotAllowed:
|
|
1516
|
-
errorBoundary:
|
|
1517
|
-
}, po = "Paramètres", go = { preferences: "Préférences", system: "Système", developer: "Développeur" }, mo = { appearance: "Apparence", languageAndRegion: "Langue et région", updateApp: "Mise à jour logicielle", advanced: "Avancé", dataPrivacy: "Confidentialité des données", develop: "Développement", serviceWorker: "Service Worker" }, fo = { description: "Consultez la version de l'application et vérifiez les mises à jour. Lorsqu'une mise à jour est disponible, vous pouvez l'installer depuis ici.", currentVersion: "Version actuelle", status: "État des mises à jour", statusUpToDate: "À jour", statusUpdateAvailable: "Mise à jour disponible", checkForUpdate: "Vérifier les mises à jour", checking: "Vérification…", versionUnknown: "—", tauriComingSoon: "Les mises à jour de l'application bureau seront bientôt disponibles. Vous serez notifié lorsqu'une nouvelle version sera prête.", swDisabledMessage: "L'application se mettra à jour lors du rechargement de la page.", refreshApp: "Actualiser l'application", youAreUpToDate: "Vous êtes à jour", installNow: "Installer maintenant", checkError: "Erreur lors de la vérification des mises à jour. Réessayer", tryAgain: "Réessayer" }, ho = { title: "Apparence", theme: "Thème", themeDescription: "Choisissez votre schéma de couleurs préféré (actuel : {{theme}})", mode: "Mode", modeDescription: "Choisissez le mode clair, sombre ou automatique.", colorTheme: "Thème de couleur", colorThemeDescription: "Sélectionnez un thème de couleur. Chaque thème a des variantes claires et sombres.", themes: { light: "Clair", dark: "Sombre", system: "Automatique" } }, vo = { title: "Langue et région", description: "Configurez vos paramètres de langue et de région.", language: "Langue", languageDescription: "Choisissez votre langue préférée. Les modifications seront appliquées immédiatement.", region: "Région", regionDescription: "Sélectionnez votre fuseau horaire. Les dates dans toute l'application s'adapteront à ce fuseau horaire.", currentDateTime: "Date et heure actuelles", timezoneLabel: "Fuseau horaire", resetToBrowser: "Réinitialiser au fuseau horaire automatique", defaultBrowser: "Automatique" }, bo = { title: "Avancé", description: "Paramètres avancés et options de configuration.", errorReporting: { label: "Signalement d'erreurs", statusConfigured: "Configuré. Vous pouvez le désactiver ci-dessous.", statusNotConfigured: "Non configuré.", description: "Autoriser cette application à envoyer des rapports d'erreurs pour aider à corriger les problèmes." }, developerFeatures: { label: "Afficher les fonctionnalités pour les développeurs", description: "Activez les outils et paramètres de développement dans le menu des paramètres." }, dangerZone: { title: "Zone de danger", description: "Actions irréversibles et destructives.", reset: { title: "Réinitialiser toutes les données", warning: "Cela supprimera définitivement tous vos paramètres, préférences et autres données d'application. Cette action ne peut pas être annulée.", button: "Réinitialiser toutes les données", toast: { title: "Réinitialiser toutes les données ?", description: "Cela supprimera définitivement tous vos paramètres, préférences et autres données d'application. Cette action ne peut pas être annulée.", confirm: "Réinitialiser toutes les données", cancel: "Annuler", success: { title: "Données réinitialisées", description: "Toutes les données de l'application ont été réinitialisées avec succès." } } } } }, yo = { title: "Confidentialité des données", description: "Gérez vos paramètres de confidentialité des données et vos préférences de cookies.", noCookiesConfigured: { title: "Utilisation des cookies", description: "Cette application n'utilise que des cookies strictement essentiels nécessaires au bon fonctionnement de l'application. Ces cookies sont acceptés par défaut et ne peuvent pas être désactivés.", info: "Aucun cookie optionnel n'est configuré pour cette application." }, cookieConsent: { title: "Consentement aux cookies", descriptionConsented: "Vous avez fait un choix concernant les cookies. Réinitialisez pour être redemandé immédiatement.", descriptionNotConsented: "Vous n'avez pas encore fait de choix concernant les cookies.", statusAcceptedAll: "Vous avez accepté tous les cookies. Cela nous aide à vous offrir la meilleure expérience.", statusRejectedAll: "Vous avez refusé les cookies non essentiels. Seuls les cookies strictement nécessaires sont actifs.", statusCustom: "Vous avez personnalisé vos préférences de cookies. Certains cookies sont activés selon vos choix.", labelAcceptedAll: "Tous acceptés", labelCustom: "Personnalisé", labelRejectedAll: "Tous refusés", button: "Réinitialiser le consentement", manageButton: "Gérer les préférences", dialog: { title: "Réinitialiser le consentement aux cookies ?", description: "Cela effacera vos préférences de cookies. Vous serez invité à accepter ou refuser les cookies lors de votre prochaine visite.", confirm: "Réinitialiser", cancel: "Annuler" }, toast: { title: "Consentement réinitialisé", description: "Vous serez invité à choisir vos préférences de cookies lors de votre prochaine visite." } }, resetData: { title: "Réinitialiser toutes les données", description: "Cela supprimera définitivement tous vos paramètres et données d'application. Cette action ne peut pas être annulée.", button: "Réinitialiser toutes les données", toast: { title: "Réinitialiser toutes les données ?", description: "Cela supprimera définitivement tous vos paramètres, préférences et autres données d'application. Cette action ne peut pas être annulée.", confirm: "Réinitialiser toutes les données", cancel: "Annuler", success: { title: "Données réinitialisées", description: "Toutes les données de l'application ont été réinitialisées avec succès." } } } }, wo = { title: "Service Worker", description: "Un service worker s'exécute en arrière-plan et peut mettre en cache l'application pour un chargement plus rapide et une utilisation hors ligne. Lorsqu'il est activé, il stocke les fichiers localement pour que l'application se charge rapidement et fonctionne sans connexion. Vous pouvez l'activer ou le désactiver ci-dessous.", loading: "Chargement du statut du service worker...", developmentMode: { title: "Mode développement", description: "La mise en cache de l'application n'est disponible que dans les builds de production. Compilez votre application avec 'shellui build' pour activer la mise en cache du service worker." }, enabled: { title: "Activer le service worker", descriptionEnabled: "Le service worker est activé. Il met en cache l'application pour un chargement plus rapide et un accès hors ligne.", descriptionDisabled: "Le service worker est désactivé. L'application ne sera pas mise en cache et se chargera toujours depuis le réseau." }, status: { title: "Statut du service worker", registered: "Enregistré", notRunning: "Non actif", disabled: "Désactivé", updateAvailable: "Mise à jour disponible", fileNotFound: "Fichier du service worker introuvable", fileNotFoundDescription: "Le fichier du service worker est introuvable. La mise en cache n'est pas disponible. Il peut s'agir d'un problème de serveur de développement." }, update: { title: "Mise à jour disponible", description: "Une nouvelle version de l'application est disponible. Installez-la maintenant pour obtenir les dernières fonctionnalités et améliorations.", button: "Installer maintenant" }, updateInstalling: { title: "Installation de la mise à jour", description: "La nouvelle version est en cours d'installation. La page sera rechargée sous peu." }, updateError: { title: "Échec de la mise à jour", description: "Échec de l'installation de la mise à jour. Veuillez réessayer plus tard." }, reset: { title: "Réinitialiser à la dernière version", description: "Effacer tous les fichiers mis en cache et recharger l'application pour obtenir la dernière version du serveur.", button: "Réinitialiser à la dernière version" }, resetSuccess: { title: "Réinitialisation réussie", description: "Tous les fichiers mis en cache ont été effacés. L'application sera rechargée avec la dernière version." }, resetError: { title: "Échec de la réinitialisation", description: "Échec de l'effacement des fichiers mis en cache. Veuillez réessayer plus tard." } }, ko = { title: "Développement", navigation: { title: "Naviguer vers", description: "Envoyer une demande de navigation à l'application racine. Cela ferme tout tiroir ou modal ouvert et navigue vers l'élément sélectionné.", selectLabel: "Élément de navigation", placeholder: "Choisir une destination…", empty: "Aucun élément de navigation disponible (ouvrez depuis la racine pour voir les éléments)." }, layout: { title: "Disposition", description: "Basculer entre la disposition avec barre latérale et la disposition fenêtres (barre des tâches). Remplace la config de l'app pour cette session.", sidebar: "Barre latérale", windows: "Fenêtres" }, logging: { title: "Journalisation", description: "Activez ou désactivez la journalisation pour des espaces de noms spécifiques. Cela vous aide à contrôler quelles parties de ShellUI affichent des informations de débogage.", shellsdk: { label: "Afficher les journaux ShellSDK", description: "Activez la journalisation pour les opérations ShellUI SDK" }, shellcore: { label: "Afficher les journaux ShellCore", description: "Activez la journalisation pour les opérations ShellUI Core" } }, testing: { title: "Tests", description: "Testez les fonctionnalités de ShellUI.", toastNotifications: { title: "Notifications Toast", buttons: { success: "Toast de succès", error: "Toast d'erreur", warning: "Toast d'avertissement", info: "Toast d'information", default: "Toast par défaut", loading: "Toast de chargement", loadingSuccess: "Toast de chargement → Succès", withAction: "Toast avec action", withActionAndCancel: "Toast avec action ET annulation", longDuration: "Toast longue durée" }, messages: { success: { title: "Succès !", description: "Opération terminée avec succès" }, error: { title: "Erreur", description: "Quelque chose s'est mal passé. Veuillez réessayer." }, warning: { title: "Avertissement", description: "Cette action peut avoir des conséquences imprévues" }, info: { title: "Information", description: "Voici des informations utiles pour vous" }, default: { title: "Toast par défaut", description: "Ceci est une notification toast par défaut" }, loading: { title: "Chargement...", description: "Veuillez patienter pendant le traitement de votre demande" }, processing: { title: "Traitement...", description: "Téléchargement de votre fichier" }, uploadComplete: { title: "Téléchargement terminé !", description: "Votre fichier a été téléchargé avec succès" }, withAction: { title: "Toast avec action", description: "Ce toast a un bouton d'action" }, undone: { title: "Annulé", description: "L'action a été annulée" }, cancelled: { title: "Annulé", description: "L'action a été annulée" }, persistent: { title: "Toast persistant", description: "Ce toast restera jusqu'à sa fermeture (10 secondes)" }, actionLabels: { undo: "Annuler", cancel: "Annuler" } } }, dialogTesting: { title: "Tests de dialogue", buttons: { okDialog: "Dialogue OK", okCancelDialog: "Dialogue OK Annuler", deleteDialog: "Dialogue de suppression", confirmDialog: "Dialogue de confirmation", onlyCancelDialog: "Dialogue Annuler uniquement" }, dialogs: { ok: { title: "Dialogue OK simple", description: "Ceci est un dialogue simple avec uniquement un bouton OK." }, okCancel: { title: "Dialogue OK Annuler", description: "Ce dialogue a à la fois des boutons OK et Annuler." }, delete: { title: "Confirmation de suppression", description: "Êtes-vous sûr de vouloir supprimer cet élément ? Cette action ne peut pas être annulée.", okLabel: "Supprimer", cancelLabel: "Annuler" }, confirm: { title: "Confirmer l'action", description: "Voulez-vous procéder à cette action ?", okLabel: "Confirmer", cancelLabel: "Annuler" }, onlyCancel: { title: "Dialogue Annuler uniquement", description: "Ce dialogue n'a qu'un bouton Annuler.", cancelLabel: "Fermer" } }, toasts: { okClicked: "OK cliqué", cancelClicked: "Annuler cliqué", itemDeleted: "Élément supprimé", deletionCancelled: "Suppression annulée", actionConfirmed: "Action confirmée", actionCancelled: "Action annulée", dialogClosed: "Dialogue fermé" } }, modalTesting: { title: "Tests du modal", description: "Ouvre les paramètres dans un modal. Fermez avec le bouton × ou en cliquant à l'extérieur.", buttons: { openModal: "Ouvrir le modal (paramètres)" } }, drawerTesting: { title: "Tests du tiroir", buttons: { drawerRight: "Tiroir depuis la droite", drawerLeft: "Tiroir depuis la gauche", drawerTop: "Tiroir depuis le haut", drawerBottom: "Tiroir depuis le bas", drawerRightNarrow: "Tiroir droite (400px)", drawerBottomHalf: "Tiroir bas (60vh)", closeDrawer: "Fermer le tiroir" } } } }, xo = {
|
|
1518
|
-
title:
|
|
1519
|
-
categories:
|
|
1520
|
-
routes:
|
|
1521
|
-
updateApp:
|
|
1522
|
-
appearance:
|
|
1523
|
-
languageAndRegion:
|
|
1524
|
-
advanced:
|
|
1525
|
-
dataPrivacy:
|
|
1526
|
-
caching:
|
|
1527
|
-
develop:
|
|
1528
|
-
},
|
|
1529
|
-
title:
|
|
1530
|
-
description:
|
|
1531
|
-
titleRenewal:
|
|
1532
|
-
descriptionRenewal:
|
|
1533
|
-
accept:
|
|
1534
|
-
reject:
|
|
1535
|
-
setPreferences:
|
|
1536
|
-
preferences:
|
|
1537
|
-
},
|
|
1479
|
+
}, Tr = "Settings", Lr = "Welcome to {{title}}", Er = "Select a navigation item to get started.", Dr = "Navigation error", Ir = "This URL is not configured in the app navigation.", Rr = { titleChunk: "Page couldn't be loaded", titleGeneric: "Something went wrong", descriptionChunk: "This can happen after an update or due to a network issue. Try refreshing the page.", descriptionGeneric: "An unexpected error occurred. You can try again or go back.", tryAgain: "Try again", goToHome: "Go to home", errorDetails: "Error details" }, _r = {
|
|
1480
|
+
settings: Tr,
|
|
1481
|
+
welcome: Lr,
|
|
1482
|
+
getStarted: Er,
|
|
1483
|
+
navigationError: Dr,
|
|
1484
|
+
navigationNotAllowed: Ir,
|
|
1485
|
+
errorBoundary: Rr
|
|
1486
|
+
}, Pr = "Settings", Or = { preferences: "Preferences", system: "System", developer: "Developer" }, Wr = { appearance: "Appearance", languageAndRegion: "Language & region", updateApp: "Software update", advanced: "Advanced", dataPrivacy: "Data Privacy", develop: "Develop", serviceWorker: "Service Worker" }, Mr = { description: "Check your app version and look for updates. When an update is available, you can install it from here.", currentVersion: "Current version", status: "Update status", statusUpToDate: "Up to date", statusUpdateAvailable: "Update available", checkForUpdate: "Check for update", checking: "Checking…", versionUnknown: "—", tauriComingSoon: "Updates for the desktop app will be available soon. You will be notified when a new version is ready.", swDisabledMessage: "The app will update when you refresh the page.", refreshApp: "Refresh app", youAreUpToDate: "You are up to date", installNow: "Install Now", checkError: "Error checking for updates. Try again", tryAgain: "Try again" }, Br = { title: "Appearance", theme: "Theme", themeDescription: "Choose your preferred color scheme (current: {{theme}})", mode: "Mode", modeDescription: "Choose light, dark, or automatic mode.", colorTheme: "Color Theme", colorThemeDescription: "Select a color theme. Each theme has light and dark variants.", themes: { light: "Light", dark: "Dark", system: "Automatic" } }, zr = { title: "Language & region", description: "Configure your language and regional settings.", language: "Language", languageDescription: "Choose your preferred language. Changes will be applied immediately.", region: "Region", regionDescription: "Select your timezone. Dates throughout the app will adjust to this timezone.", currentDateTime: "Current date and time", timezoneLabel: "Timezone", resetToBrowser: "Reset to automatic timezone", defaultBrowser: "Automatic" }, Ur = { title: "Advanced", description: "Advanced settings and configuration options.", errorReporting: { label: "Error reporting", statusConfigured: "Configured. You can turn it off below.", statusNotConfigured: "Not configured.", description: "Allow this app to send error reports to help fix issues." }, developerFeatures: { label: "Show features for developers", description: "Enable developer tools and settings in the settings menu." }, dangerZone: { title: "Danger Zone", description: "Irreversible and destructive actions.", reset: { title: "Reset All Data", warning: "This will permanently delete all your settings, preferences, and other app data. This action cannot be undone.", button: "Reset All Data", toast: { title: "Reset All Data?", description: "This will permanently delete all your settings, preferences, and other app data. This action cannot be undone.", confirm: "Reset All Data", cancel: "Cancel", success: { title: "Data Reset", description: "All app data has been reset successfully." } } } } }, Hr = { title: "Data Privacy", description: "Manage your data privacy settings and cookie preferences.", noCookiesConfigured: { title: "Cookie Usage", description: "This application only uses strictly essential cookies that are necessary for the application to function properly. These cookies are accepted by default and cannot be disabled.", info: "No optional cookies are configured for this application." }, cookieConsent: { title: "Cookie Consent", descriptionConsented: "You have made a choice about cookies. Reset to be asked again right away.", descriptionNotConsented: "You have not yet made a choice about cookies.", statusAcceptedAll: "You have accepted all cookies. This helps us provide you with the best experience.", statusRejectedAll: "You have rejected non-essential cookies. Only strictly necessary cookies are active.", statusCustom: "You have customized your cookie preferences. Some cookies are enabled based on your choices.", labelAcceptedAll: "All accepted", labelCustom: "Custom", labelRejectedAll: "All rejected", button: "Reset Cookie Consent", manageButton: "Manage Preferences", dialog: { title: "Reset Cookie Consent?", description: "This will clear your cookie preferences. You will be asked to accept or reject cookies on your next visit.", confirm: "Reset", cancel: "Cancel" }, toast: { title: "Cookie Consent Reset", description: "You will be asked about cookies on your next visit." } }, resetData: { title: "Reset All Data", description: "This will permanently delete all your settings and app data. This action cannot be undone.", button: "Reset All Data", toast: { title: "Reset All Data?", description: "This will permanently delete all your settings, preferences, and other app data. This action cannot be undone.", confirm: "Reset All Data", cancel: "Cancel", success: { title: "Data Reset", description: "All app data has been reset successfully." } } } }, $r = { title: "Service Worker", description: "A service worker runs in the background and can cache the app for faster loading and offline use. When enabled, it stores files locally so the app loads quickly and works without a connection. You can enable or disable it below.", loading: "Loading service worker status...", developmentMode: { title: "Development Mode", description: "App caching is only available in production builds. Build your app with 'shellui build' to enable service worker caching." }, enabled: { title: "Enable service worker", descriptionEnabled: "The service worker is enabled. It caches the app for faster loading and offline access.", descriptionDisabled: "The service worker is disabled. The app will not be cached and will always load from the network." }, status: { title: "Service worker status", registered: "Registered", notRunning: "Not running", disabled: "Disabled", updateAvailable: "Update available", fileNotFound: "Service worker file not found", fileNotFoundDescription: "The service worker file could not be found. Caching is not available. This may be a development server issue." }, update: { title: "Update Available", description: "A new version of the app is available. Install it now to get the latest features and improvements.", button: "Install Now" }, updateInstalling: { title: "Installing Update", description: "The new version is being installed. The page will reload shortly." }, updateError: { title: "Update Failed", description: "Failed to install the update. Please try again later." }, reset: { title: "Reset to Latest Version", description: "Clear all cached files and reload the app to get the latest version from the server.", button: "Reset to Latest Version" }, resetSuccess: { title: "Reset Successful", description: "All cached files have been cleared. The app will reload with the latest version." }, resetError: { title: "Reset Failed", description: "Failed to clear cached files. Please try again later." } }, jr = { title: "Develop", navigation: { title: "Navigate to", description: "Send a navigation request to the root app. This closes any open drawer or modal and navigates to the selected item.", selectLabel: "Navigation item", placeholder: "Select a destination…", empty: "No navigation items available (open from root to see items)." }, layout: { title: "Layout", description: "Switch between sidebar layout and windows (taskbar) layout. This overrides the app config for this session.", sidebar: "Sidebar", windows: "Windows" }, logging: { title: "Logging", description: "Enable or disable logging for specific namespaces. This helps you control which parts of ShellUI output debug information.", shellsdk: { label: "Show ShellSDK logs", description: "Enable logging for ShellUI SDK operations" }, shellcore: { label: "Show ShellCore logs", description: "Enable logging for ShellUI Core operations" } }, testing: { title: "Testing", description: "Test ShellUI features and functionality.", toastNotifications: { title: "Toast Notifications", buttons: { success: "Success Toast", error: "Error Toast", warning: "Warning Toast", info: "Info Toast", default: "Default Toast", loading: "Loading Toast", loadingSuccess: "Loading → Success Toast", withAction: "Toast with Action", withActionAndCancel: "Toast with Action AND cancel", longDuration: "Long Duration Toast" }, messages: { success: { title: "Success!", description: "Operation completed successfully" }, error: { title: "Error", description: "Something went wrong. Please try again." }, warning: { title: "Warning", description: "This action may have unintended consequences" }, info: { title: "Information", description: "Here's some useful information for you" }, default: { title: "Default Toast", description: "This is a default toast notification" }, loading: { title: "Loading...", description: "Please wait while we process your request" }, processing: { title: "Processing...", description: "Uploading your file" }, uploadComplete: { title: "Upload Complete!", description: "Your file has been uploaded successfully" }, withAction: { title: "Toast with Action", description: "This toast has an action button" }, undone: { title: "Undone", description: "Action has been undone" }, cancelled: { title: "Cancelled", description: "Action has been cancelled" }, persistent: { title: "Persistent Toast", description: "This toast will stay until dismissed (10 seconds)" }, actionLabels: { undo: "Undo", cancel: "Cancel" } } }, dialogTesting: { title: "Dialog Testing", buttons: { okDialog: "OK Dialog", okCancelDialog: "OK Cancel Dialog", deleteDialog: "Delete Dialog", confirmDialog: "Confirm Dialog", onlyCancelDialog: "Only Cancel Dialog" }, dialogs: { ok: { title: "Simple OK Dialog", description: "This is a simple dialog with just an OK button." }, okCancel: { title: "OK Cancel Dialog", description: "This dialog has both OK and Cancel buttons." }, delete: { title: "Delete Confirmation", description: "Are you sure you want to delete this item? This action cannot be undone.", okLabel: "Delete", cancelLabel: "Cancel" }, confirm: { title: "Confirm Action", description: "Do you want to proceed with this action?", okLabel: "Confirm", cancelLabel: "Cancel" }, onlyCancel: { title: "Only Cancel Dialog", description: "This dialog only has a Cancel button.", cancelLabel: "Close" } }, toasts: { okClicked: "OK clicked", cancelClicked: "Cancel clicked", itemDeleted: "Item deleted", deletionCancelled: "Deletion cancelled", actionConfirmed: "Action confirmed", actionCancelled: "Action cancelled", dialogClosed: "Dialog closed" } }, modalTesting: { title: "Modal Testing", description: "Opens the settings in a modal. Close with the × button or by clicking outside.", buttons: { openModal: "Open modal (settings)" } }, drawerTesting: { title: "Drawer Testing", buttons: { drawerRight: "Drawer from right", drawerLeft: "Drawer from left", drawerTop: "Drawer from top", drawerBottom: "Drawer from bottom", drawerRightNarrow: "Drawer right (400px)", drawerBottomHalf: "Drawer bottom (60vh)", closeDrawer: "Close drawer" } } } }, Vr = {
|
|
1487
|
+
title: Pr,
|
|
1488
|
+
categories: Or,
|
|
1489
|
+
routes: Wr,
|
|
1490
|
+
updateApp: Mr,
|
|
1491
|
+
appearance: Br,
|
|
1492
|
+
languageAndRegion: zr,
|
|
1493
|
+
advanced: Ur,
|
|
1494
|
+
dataPrivacy: Hr,
|
|
1495
|
+
caching: $r,
|
|
1496
|
+
develop: jr
|
|
1497
|
+
}, Gr = "We value your privacy", Yr = "We use cookies to improve your experience, analyze how you use the app, and fix issues. You can accept all cookies, reject non-essential ones, or customize your preferences.", Kr = "Our cookies have changed", qr = "We've updated our cookie policy with new features or services. Please review and confirm your preferences to continue with the best experience.", Zr = "Accept all", Jr = "Reject all", Xr = "Set preferences", Qr = { title: "Cookie Preferences", description: "Manage your cookie preferences. Enable or disable cookies by category or individually.", acceptAll: "Accept all", rejectAll: "Reject all", save: "Save preferences", partial: "Partial", required: "Required", alwaysOn: "Always on", noCookies: "No cookies configured.", categories: { strict_necessary: { title: "Strictly Necessary", description: "Essential for the website to function. Cannot be disabled." }, functional_performance: { title: "Functional & Performance", description: "Help us improve by collecting anonymous usage data and error reports." }, targeting: { title: "Targeting & Advertising", description: "Used to deliver personalized advertisements." }, social_media_embedded: { title: "Social Media & Embedded Content", description: "Enable social media features and embedded content from third parties." } }, duration: { seconds: "{{count}} second", seconds_other: "{{count}} seconds", minutes: "{{count}} minute", minutes_other: "{{count}} minutes", hours: "{{count}} hour", hours_other: "{{count}} hours", days: "{{count}} day", days_other: "{{count}} days", years: "{{count}} year", years_other: "{{count}} years" } }, eo = {
|
|
1498
|
+
title: Gr,
|
|
1499
|
+
description: Yr,
|
|
1500
|
+
titleRenewal: Kr,
|
|
1501
|
+
descriptionRenewal: qr,
|
|
1502
|
+
accept: Zr,
|
|
1503
|
+
reject: Jr,
|
|
1504
|
+
setPreferences: Xr,
|
|
1505
|
+
preferences: Qr
|
|
1506
|
+
}, to = "Paramètres", no = "Bienvenue sur {{title}}", ro = "Sélectionnez un élément de navigation pour commencer.", oo = "Erreur de navigation", io = "Cette URL n'est pas configurée dans la navigation de l'application.", so = { titleChunk: "La page n'a pas pu être chargée", titleGeneric: "Une erreur s'est produite", descriptionChunk: "Cela peut arriver après une mise à jour ou en cas de problème réseau. Essayez d'actualiser la page.", descriptionGeneric: "Une erreur inattendue s'est produite. Vous pouvez réessayer ou revenir à l'accueil.", tryAgain: "Réessayer", goToHome: "Retour à l'accueil", errorDetails: "Détails de l'erreur" }, ao = {
|
|
1507
|
+
settings: to,
|
|
1508
|
+
welcome: no,
|
|
1509
|
+
getStarted: ro,
|
|
1510
|
+
navigationError: oo,
|
|
1511
|
+
navigationNotAllowed: io,
|
|
1512
|
+
errorBoundary: so
|
|
1513
|
+
}, lo = "Paramètres", co = { preferences: "Préférences", system: "Système", developer: "Développeur" }, uo = { appearance: "Apparence", languageAndRegion: "Langue et région", updateApp: "Mise à jour logicielle", advanced: "Avancé", dataPrivacy: "Confidentialité des données", develop: "Développement", serviceWorker: "Service Worker" }, po = { description: "Consultez la version de l'application et vérifiez les mises à jour. Lorsqu'une mise à jour est disponible, vous pouvez l'installer depuis ici.", currentVersion: "Version actuelle", status: "État des mises à jour", statusUpToDate: "À jour", statusUpdateAvailable: "Mise à jour disponible", checkForUpdate: "Vérifier les mises à jour", checking: "Vérification…", versionUnknown: "—", tauriComingSoon: "Les mises à jour de l'application bureau seront bientôt disponibles. Vous serez notifié lorsqu'une nouvelle version sera prête.", swDisabledMessage: "L'application se mettra à jour lors du rechargement de la page.", refreshApp: "Actualiser l'application", youAreUpToDate: "Vous êtes à jour", installNow: "Installer maintenant", checkError: "Erreur lors de la vérification des mises à jour. Réessayer", tryAgain: "Réessayer" }, go = { title: "Apparence", theme: "Thème", themeDescription: "Choisissez votre schéma de couleurs préféré (actuel : {{theme}})", mode: "Mode", modeDescription: "Choisissez le mode clair, sombre ou automatique.", colorTheme: "Thème de couleur", colorThemeDescription: "Sélectionnez un thème de couleur. Chaque thème a des variantes claires et sombres.", themes: { light: "Clair", dark: "Sombre", system: "Automatique" } }, mo = { title: "Langue et région", description: "Configurez vos paramètres de langue et de région.", language: "Langue", languageDescription: "Choisissez votre langue préférée. Les modifications seront appliquées immédiatement.", region: "Région", regionDescription: "Sélectionnez votre fuseau horaire. Les dates dans toute l'application s'adapteront à ce fuseau horaire.", currentDateTime: "Date et heure actuelles", timezoneLabel: "Fuseau horaire", resetToBrowser: "Réinitialiser au fuseau horaire automatique", defaultBrowser: "Automatique" }, fo = { title: "Avancé", description: "Paramètres avancés et options de configuration.", errorReporting: { label: "Signalement d'erreurs", statusConfigured: "Configuré. Vous pouvez le désactiver ci-dessous.", statusNotConfigured: "Non configuré.", description: "Autoriser cette application à envoyer des rapports d'erreurs pour aider à corriger les problèmes." }, developerFeatures: { label: "Afficher les fonctionnalités pour les développeurs", description: "Activez les outils et paramètres de développement dans le menu des paramètres." }, dangerZone: { title: "Zone de danger", description: "Actions irréversibles et destructives.", reset: { title: "Réinitialiser toutes les données", warning: "Cela supprimera définitivement tous vos paramètres, préférences et autres données d'application. Cette action ne peut pas être annulée.", button: "Réinitialiser toutes les données", toast: { title: "Réinitialiser toutes les données ?", description: "Cela supprimera définitivement tous vos paramètres, préférences et autres données d'application. Cette action ne peut pas être annulée.", confirm: "Réinitialiser toutes les données", cancel: "Annuler", success: { title: "Données réinitialisées", description: "Toutes les données de l'application ont été réinitialisées avec succès." } } } } }, ho = { title: "Confidentialité des données", description: "Gérez vos paramètres de confidentialité des données et vos préférences de cookies.", noCookiesConfigured: { title: "Utilisation des cookies", description: "Cette application n'utilise que des cookies strictement essentiels nécessaires au bon fonctionnement de l'application. Ces cookies sont acceptés par défaut et ne peuvent pas être désactivés.", info: "Aucun cookie optionnel n'est configuré pour cette application." }, cookieConsent: { title: "Consentement aux cookies", descriptionConsented: "Vous avez fait un choix concernant les cookies. Réinitialisez pour être redemandé immédiatement.", descriptionNotConsented: "Vous n'avez pas encore fait de choix concernant les cookies.", statusAcceptedAll: "Vous avez accepté tous les cookies. Cela nous aide à vous offrir la meilleure expérience.", statusRejectedAll: "Vous avez refusé les cookies non essentiels. Seuls les cookies strictement nécessaires sont actifs.", statusCustom: "Vous avez personnalisé vos préférences de cookies. Certains cookies sont activés selon vos choix.", labelAcceptedAll: "Tous acceptés", labelCustom: "Personnalisé", labelRejectedAll: "Tous refusés", button: "Réinitialiser le consentement", manageButton: "Gérer les préférences", dialog: { title: "Réinitialiser le consentement aux cookies ?", description: "Cela effacera vos préférences de cookies. Vous serez invité à accepter ou refuser les cookies lors de votre prochaine visite.", confirm: "Réinitialiser", cancel: "Annuler" }, toast: { title: "Consentement réinitialisé", description: "Vous serez invité à choisir vos préférences de cookies lors de votre prochaine visite." } }, resetData: { title: "Réinitialiser toutes les données", description: "Cela supprimera définitivement tous vos paramètres et données d'application. Cette action ne peut pas être annulée.", button: "Réinitialiser toutes les données", toast: { title: "Réinitialiser toutes les données ?", description: "Cela supprimera définitivement tous vos paramètres, préférences et autres données d'application. Cette action ne peut pas être annulée.", confirm: "Réinitialiser toutes les données", cancel: "Annuler", success: { title: "Données réinitialisées", description: "Toutes les données de l'application ont été réinitialisées avec succès." } } } }, vo = { title: "Service Worker", description: "Un service worker s'exécute en arrière-plan et peut mettre en cache l'application pour un chargement plus rapide et une utilisation hors ligne. Lorsqu'il est activé, il stocke les fichiers localement pour que l'application se charge rapidement et fonctionne sans connexion. Vous pouvez l'activer ou le désactiver ci-dessous.", loading: "Chargement du statut du service worker...", developmentMode: { title: "Mode développement", description: "La mise en cache de l'application n'est disponible que dans les builds de production. Compilez votre application avec 'shellui build' pour activer la mise en cache du service worker." }, enabled: { title: "Activer le service worker", descriptionEnabled: "Le service worker est activé. Il met en cache l'application pour un chargement plus rapide et un accès hors ligne.", descriptionDisabled: "Le service worker est désactivé. L'application ne sera pas mise en cache et se chargera toujours depuis le réseau." }, status: { title: "Statut du service worker", registered: "Enregistré", notRunning: "Non actif", disabled: "Désactivé", updateAvailable: "Mise à jour disponible", fileNotFound: "Fichier du service worker introuvable", fileNotFoundDescription: "Le fichier du service worker est introuvable. La mise en cache n'est pas disponible. Il peut s'agir d'un problème de serveur de développement." }, update: { title: "Mise à jour disponible", description: "Une nouvelle version de l'application est disponible. Installez-la maintenant pour obtenir les dernières fonctionnalités et améliorations.", button: "Installer maintenant" }, updateInstalling: { title: "Installation de la mise à jour", description: "La nouvelle version est en cours d'installation. La page sera rechargée sous peu." }, updateError: { title: "Échec de la mise à jour", description: "Échec de l'installation de la mise à jour. Veuillez réessayer plus tard." }, reset: { title: "Réinitialiser à la dernière version", description: "Effacer tous les fichiers mis en cache et recharger l'application pour obtenir la dernière version du serveur.", button: "Réinitialiser à la dernière version" }, resetSuccess: { title: "Réinitialisation réussie", description: "Tous les fichiers mis en cache ont été effacés. L'application sera rechargée avec la dernière version." }, resetError: { title: "Échec de la réinitialisation", description: "Échec de l'effacement des fichiers mis en cache. Veuillez réessayer plus tard." } }, bo = { title: "Développement", navigation: { title: "Naviguer vers", description: "Envoyer une demande de navigation à l'application racine. Cela ferme tout tiroir ou modal ouvert et navigue vers l'élément sélectionné.", selectLabel: "Élément de navigation", placeholder: "Choisir une destination…", empty: "Aucun élément de navigation disponible (ouvrez depuis la racine pour voir les éléments)." }, layout: { title: "Disposition", description: "Basculer entre la disposition avec barre latérale et la disposition fenêtres (barre des tâches). Remplace la config de l'app pour cette session.", sidebar: "Barre latérale", windows: "Fenêtres" }, logging: { title: "Journalisation", description: "Activez ou désactivez la journalisation pour des espaces de noms spécifiques. Cela vous aide à contrôler quelles parties de ShellUI affichent des informations de débogage.", shellsdk: { label: "Afficher les journaux ShellSDK", description: "Activez la journalisation pour les opérations ShellUI SDK" }, shellcore: { label: "Afficher les journaux ShellCore", description: "Activez la journalisation pour les opérations ShellUI Core" } }, testing: { title: "Tests", description: "Testez les fonctionnalités de ShellUI.", toastNotifications: { title: "Notifications Toast", buttons: { success: "Toast de succès", error: "Toast d'erreur", warning: "Toast d'avertissement", info: "Toast d'information", default: "Toast par défaut", loading: "Toast de chargement", loadingSuccess: "Toast de chargement → Succès", withAction: "Toast avec action", withActionAndCancel: "Toast avec action ET annulation", longDuration: "Toast longue durée" }, messages: { success: { title: "Succès !", description: "Opération terminée avec succès" }, error: { title: "Erreur", description: "Quelque chose s'est mal passé. Veuillez réessayer." }, warning: { title: "Avertissement", description: "Cette action peut avoir des conséquences imprévues" }, info: { title: "Information", description: "Voici des informations utiles pour vous" }, default: { title: "Toast par défaut", description: "Ceci est une notification toast par défaut" }, loading: { title: "Chargement...", description: "Veuillez patienter pendant le traitement de votre demande" }, processing: { title: "Traitement...", description: "Téléchargement de votre fichier" }, uploadComplete: { title: "Téléchargement terminé !", description: "Votre fichier a été téléchargé avec succès" }, withAction: { title: "Toast avec action", description: "Ce toast a un bouton d'action" }, undone: { title: "Annulé", description: "L'action a été annulée" }, cancelled: { title: "Annulé", description: "L'action a été annulée" }, persistent: { title: "Toast persistant", description: "Ce toast restera jusqu'à sa fermeture (10 secondes)" }, actionLabels: { undo: "Annuler", cancel: "Annuler" } } }, dialogTesting: { title: "Tests de dialogue", buttons: { okDialog: "Dialogue OK", okCancelDialog: "Dialogue OK Annuler", deleteDialog: "Dialogue de suppression", confirmDialog: "Dialogue de confirmation", onlyCancelDialog: "Dialogue Annuler uniquement" }, dialogs: { ok: { title: "Dialogue OK simple", description: "Ceci est un dialogue simple avec uniquement un bouton OK." }, okCancel: { title: "Dialogue OK Annuler", description: "Ce dialogue a à la fois des boutons OK et Annuler." }, delete: { title: "Confirmation de suppression", description: "Êtes-vous sûr de vouloir supprimer cet élément ? Cette action ne peut pas être annulée.", okLabel: "Supprimer", cancelLabel: "Annuler" }, confirm: { title: "Confirmer l'action", description: "Voulez-vous procéder à cette action ?", okLabel: "Confirmer", cancelLabel: "Annuler" }, onlyCancel: { title: "Dialogue Annuler uniquement", description: "Ce dialogue n'a qu'un bouton Annuler.", cancelLabel: "Fermer" } }, toasts: { okClicked: "OK cliqué", cancelClicked: "Annuler cliqué", itemDeleted: "Élément supprimé", deletionCancelled: "Suppression annulée", actionConfirmed: "Action confirmée", actionCancelled: "Action annulée", dialogClosed: "Dialogue fermé" } }, modalTesting: { title: "Tests du modal", description: "Ouvre les paramètres dans un modal. Fermez avec le bouton × ou en cliquant à l'extérieur.", buttons: { openModal: "Ouvrir le modal (paramètres)" } }, drawerTesting: { title: "Tests du tiroir", buttons: { drawerRight: "Tiroir depuis la droite", drawerLeft: "Tiroir depuis la gauche", drawerTop: "Tiroir depuis le haut", drawerBottom: "Tiroir depuis le bas", drawerRightNarrow: "Tiroir droite (400px)", drawerBottomHalf: "Tiroir bas (60vh)", closeDrawer: "Fermer le tiroir" } } } }, yo = {
|
|
1514
|
+
title: lo,
|
|
1515
|
+
categories: co,
|
|
1516
|
+
routes: uo,
|
|
1517
|
+
updateApp: po,
|
|
1518
|
+
appearance: go,
|
|
1519
|
+
languageAndRegion: mo,
|
|
1520
|
+
advanced: fo,
|
|
1521
|
+
dataPrivacy: ho,
|
|
1522
|
+
caching: vo,
|
|
1523
|
+
develop: bo
|
|
1524
|
+
}, wo = "Votre vie privée compte", ko = "Nous utilisons des cookies pour améliorer votre expérience, analyser l'utilisation de l'application et corriger les problèmes. Vous pouvez tout accepter, tout refuser ou personnaliser vos préférences.", xo = "Nos cookies ont évolué", No = "Nous avons mis à jour notre politique de cookies avec de nouvelles fonctionnalités ou services. Veuillez confirmer vos préférences pour continuer avec la meilleure expérience.", Co = "Tout accepter", So = "Tout refuser", Ao = "Personnaliser", Fo = { title: "Préférences des cookies", description: "Gérez vos préférences de cookies. Activez ou désactivez les cookies par catégorie ou individuellement.", acceptAll: "Tout accepter", rejectAll: "Tout refuser", save: "Enregistrer les préférences", partial: "Partiel", required: "Requis", alwaysOn: "Toujours actif", noCookies: "Aucun cookie configuré.", categories: { strict_necessary: { title: "Strictement nécessaires", description: "Essentiels au fonctionnement du site. Ne peuvent pas être désactivés." }, functional_performance: { title: "Fonctionnels et performance", description: "Nous aident à améliorer le site en collectant des données d'utilisation anonymes et des rapports d'erreurs." }, targeting: { title: "Ciblage et publicité", description: "Utilisés pour diffuser des publicités personnalisées." }, social_media_embedded: { title: "Réseaux sociaux et contenu intégré", description: "Activent les fonctionnalités de réseaux sociaux et le contenu intégré de tiers." } }, duration: { seconds: "{{count}} seconde", seconds_other: "{{count}} secondes", minutes: "{{count}} minute", minutes_other: "{{count}} minutes", hours: "{{count}} heure", hours_other: "{{count}} heures", days: "{{count}} jour", days_other: "{{count}} jours", years: "{{count}} an", years_other: "{{count}} ans" } }, To = {
|
|
1525
|
+
title: wo,
|
|
1526
|
+
description: ko,
|
|
1527
|
+
titleRenewal: xo,
|
|
1528
|
+
descriptionRenewal: No,
|
|
1529
|
+
accept: Co,
|
|
1530
|
+
reject: So,
|
|
1531
|
+
setPreferences: Ao,
|
|
1532
|
+
preferences: Fo
|
|
1533
|
+
}, Ze = [
|
|
1538
1534
|
{ code: "en", name: "English", nativeName: "English" },
|
|
1539
1535
|
{ code: "fr", name: "French", nativeName: "Français" }
|
|
1540
|
-
],
|
|
1536
|
+
], Lo = {
|
|
1541
1537
|
en: {
|
|
1542
|
-
common:
|
|
1543
|
-
settings:
|
|
1544
|
-
cookieConsent:
|
|
1538
|
+
common: _r,
|
|
1539
|
+
settings: Vr,
|
|
1540
|
+
cookieConsent: eo
|
|
1545
1541
|
},
|
|
1546
1542
|
fr: {
|
|
1547
|
-
common:
|
|
1548
|
-
settings:
|
|
1549
|
-
cookieConsent:
|
|
1543
|
+
common: ao,
|
|
1544
|
+
settings: yo,
|
|
1545
|
+
cookieConsent: To
|
|
1550
1546
|
}
|
|
1551
|
-
},
|
|
1547
|
+
}, Eo = (e) => {
|
|
1552
1548
|
if (typeof window < "u")
|
|
1553
1549
|
try {
|
|
1554
1550
|
const n = localStorage.getItem("shellui:settings");
|
|
@@ -1561,13 +1557,13 @@ const Ar = () => /* @__PURE__ */ a(
|
|
|
1561
1557
|
}
|
|
1562
1558
|
return e[0] || "en";
|
|
1563
1559
|
};
|
|
1564
|
-
let
|
|
1565
|
-
const
|
|
1566
|
-
const r = (e ? Array.isArray(e) ? e : [e] :
|
|
1567
|
-
(s) =>
|
|
1568
|
-
), o = r.length > 0 ? r : ["en"], i =
|
|
1569
|
-
return
|
|
1570
|
-
resources:
|
|
1560
|
+
let Mt = !1;
|
|
1561
|
+
const dn = (e) => {
|
|
1562
|
+
const r = (e ? Array.isArray(e) ? e : [e] : Ze.map((s) => s.code)).filter(
|
|
1563
|
+
(s) => Ze.some((c) => c.code === s)
|
|
1564
|
+
), o = r.length > 0 ? r : ["en"], i = Eo(o);
|
|
1565
|
+
return Mt ? Ye.changeLanguage(i) : (Ye.use(Hn).init({
|
|
1566
|
+
resources: Lo,
|
|
1571
1567
|
defaultNS: "common",
|
|
1572
1568
|
lng: i,
|
|
1573
1569
|
fallbackLng: "en",
|
|
@@ -1580,13 +1576,13 @@ const pn = (e) => {
|
|
|
1580
1576
|
useSuspense: !1
|
|
1581
1577
|
// Disable suspense for better PWA compatibility
|
|
1582
1578
|
}
|
|
1583
|
-
}),
|
|
1579
|
+
}), Mt = !0), o;
|
|
1584
1580
|
};
|
|
1585
|
-
|
|
1586
|
-
const
|
|
1587
|
-
const n = e ? Array.isArray(e) ? e : [e] :
|
|
1588
|
-
return
|
|
1589
|
-
},
|
|
1581
|
+
dn();
|
|
1582
|
+
const Do = (e) => {
|
|
1583
|
+
const n = e ? Array.isArray(e) ? e : [e] : Ze.map((r) => r.code);
|
|
1584
|
+
return Ze.filter((r) => n.includes(r.code));
|
|
1585
|
+
}, At = E(
|
|
1590
1586
|
({ className: e, children: n, ...r }, o) => /* @__PURE__ */ t(
|
|
1591
1587
|
"select",
|
|
1592
1588
|
{
|
|
@@ -1600,8 +1596,8 @@ const Ro = (e) => {
|
|
|
1600
1596
|
}
|
|
1601
1597
|
)
|
|
1602
1598
|
);
|
|
1603
|
-
|
|
1604
|
-
const
|
|
1599
|
+
At.displayName = "Select";
|
|
1600
|
+
const Io = () => /* @__PURE__ */ a(
|
|
1605
1601
|
"svg",
|
|
1606
1602
|
{
|
|
1607
1603
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1634,7 +1630,7 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1634
1630
|
/* @__PURE__ */ t("path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
|
|
1635
1631
|
]
|
|
1636
1632
|
}
|
|
1637
|
-
),
|
|
1633
|
+
), Ro = () => /* @__PURE__ */ a(
|
|
1638
1634
|
"svg",
|
|
1639
1635
|
{
|
|
1640
1636
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1658,7 +1654,7 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1658
1654
|
/* @__PURE__ */ t("polyline", { points: "12 6 12 12 16 14" })
|
|
1659
1655
|
]
|
|
1660
1656
|
}
|
|
1661
|
-
),
|
|
1657
|
+
), _o = [
|
|
1662
1658
|
{
|
|
1663
1659
|
label: "UTC",
|
|
1664
1660
|
timezones: [{ value: "UTC", label: "UTC (Coordinated Universal Time)" }]
|
|
@@ -1715,7 +1711,7 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1715
1711
|
{ value: "Pacific/Auckland", label: "Auckland" }
|
|
1716
1712
|
]
|
|
1717
1713
|
}
|
|
1718
|
-
],
|
|
1714
|
+
], Bt = (e, n, r) => {
|
|
1719
1715
|
try {
|
|
1720
1716
|
return new Intl.DateTimeFormat(r, {
|
|
1721
1717
|
timeZone: n,
|
|
@@ -1727,7 +1723,7 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1727
1723
|
} catch {
|
|
1728
1724
|
return e.toLocaleDateString(r);
|
|
1729
1725
|
}
|
|
1730
|
-
},
|
|
1726
|
+
}, zt = (e, n, r) => {
|
|
1731
1727
|
try {
|
|
1732
1728
|
return new Intl.DateTimeFormat(r, {
|
|
1733
1729
|
timeZone: n,
|
|
@@ -1739,7 +1735,7 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1739
1735
|
} catch {
|
|
1740
1736
|
return e.toLocaleTimeString(r);
|
|
1741
1737
|
}
|
|
1742
|
-
},
|
|
1738
|
+
}, Po = () => typeof Intl < "u" ? Intl.DateTimeFormat().resolvedOptions().timeZone : "UTC", Oo = (e, n = "en") => {
|
|
1743
1739
|
try {
|
|
1744
1740
|
const i = new Intl.DateTimeFormat(n, {
|
|
1745
1741
|
timeZone: e,
|
|
@@ -1749,22 +1745,22 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1749
1745
|
} catch {
|
|
1750
1746
|
return e;
|
|
1751
1747
|
}
|
|
1752
|
-
},
|
|
1753
|
-
const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), { config: o } = K(), i = n.language?.code || "en", s =
|
|
1748
|
+
}, Wo = () => {
|
|
1749
|
+
const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), { config: o } = K(), i = n.language?.code || "en", s = Po(), c = n.region?.timezone || s, u = c === s, d = Do(o?.language), f = () => {
|
|
1754
1750
|
r("region", { timezone: s });
|
|
1755
|
-
}, [g, p] =
|
|
1751
|
+
}, [g, p] = _(() => {
|
|
1756
1752
|
const l = /* @__PURE__ */ new Date();
|
|
1757
1753
|
return {
|
|
1758
|
-
date:
|
|
1759
|
-
time:
|
|
1754
|
+
date: Bt(l, c, i),
|
|
1755
|
+
time: zt(l, c, i)
|
|
1760
1756
|
};
|
|
1761
1757
|
});
|
|
1762
|
-
return
|
|
1758
|
+
return D(() => {
|
|
1763
1759
|
const l = () => {
|
|
1764
1760
|
const h = /* @__PURE__ */ new Date();
|
|
1765
1761
|
p({
|
|
1766
|
-
date:
|
|
1767
|
-
time:
|
|
1762
|
+
date: Bt(h, c, i),
|
|
1763
|
+
time: zt(h, c, i)
|
|
1768
1764
|
});
|
|
1769
1765
|
};
|
|
1770
1766
|
l();
|
|
@@ -1780,7 +1776,7 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1780
1776
|
children: e("languageAndRegion.language")
|
|
1781
1777
|
}
|
|
1782
1778
|
),
|
|
1783
|
-
/* @__PURE__ */ t("div", { className: "mt-2", children: /* @__PURE__ */ t(
|
|
1779
|
+
/* @__PURE__ */ t("div", { className: "mt-2", children: /* @__PURE__ */ t(Ct, { children: d.map((l) => {
|
|
1784
1780
|
const m = i === l.code;
|
|
1785
1781
|
return /* @__PURE__ */ a(
|
|
1786
1782
|
S,
|
|
@@ -1797,7 +1793,7 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1797
1793
|
"aria-label": l.nativeName,
|
|
1798
1794
|
title: l.nativeName,
|
|
1799
1795
|
children: [
|
|
1800
|
-
/* @__PURE__ */ t(
|
|
1796
|
+
/* @__PURE__ */ t(Io, {}),
|
|
1801
1797
|
/* @__PURE__ */ t("span", { className: "text-sm font-medium", children: l.nativeName })
|
|
1802
1798
|
]
|
|
1803
1799
|
},
|
|
@@ -1828,14 +1824,14 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1828
1824
|
] }),
|
|
1829
1825
|
/* @__PURE__ */ a("div", { className: "mt-2 space-y-3", children: [
|
|
1830
1826
|
/* @__PURE__ */ t(
|
|
1831
|
-
|
|
1827
|
+
At,
|
|
1832
1828
|
{
|
|
1833
1829
|
value: c,
|
|
1834
1830
|
onChange: (l) => {
|
|
1835
1831
|
r("region", { timezone: l.target.value });
|
|
1836
1832
|
},
|
|
1837
1833
|
className: "w-full",
|
|
1838
|
-
children:
|
|
1834
|
+
children: _o.map((l) => /* @__PURE__ */ t(
|
|
1839
1835
|
"optgroup",
|
|
1840
1836
|
{
|
|
1841
1837
|
label: l.label,
|
|
@@ -1859,7 +1855,7 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1859
1855
|
}
|
|
1860
1856
|
),
|
|
1861
1857
|
/* @__PURE__ */ a("div", { className: "flex items-center gap-2 px-3 py-2 rounded-md bg-muted/60 border border-border/50", children: [
|
|
1862
|
-
/* @__PURE__ */ t(
|
|
1858
|
+
/* @__PURE__ */ t(Ro, {}),
|
|
1863
1859
|
/* @__PURE__ */ a("div", { className: "flex items-baseline gap-2", children: [
|
|
1864
1860
|
/* @__PURE__ */ t("span", { className: "text-lg font-semibold tabular-nums", children: g.time }),
|
|
1865
1861
|
/* @__PURE__ */ t("span", { className: "text-xs text-muted-foreground", children: g.date })
|
|
@@ -1870,7 +1866,7 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1870
1866
|
e("languageAndRegion.timezoneLabel"),
|
|
1871
1867
|
":"
|
|
1872
1868
|
] }),
|
|
1873
|
-
/* @__PURE__ */ t("span", { className: "font-medium", children:
|
|
1869
|
+
/* @__PURE__ */ t("span", { className: "font-medium", children: Oo(c, i) }),
|
|
1874
1870
|
u && /* @__PURE__ */ a("span", { className: "ml-1", children: [
|
|
1875
1871
|
"(",
|
|
1876
1872
|
e("languageAndRegion.defaultBrowser"),
|
|
@@ -1880,38 +1876,38 @@ const Po = () => /* @__PURE__ */ a(
|
|
|
1880
1876
|
] })
|
|
1881
1877
|
] })
|
|
1882
1878
|
] });
|
|
1883
|
-
}, O =
|
|
1884
|
-
let
|
|
1885
|
-
const
|
|
1879
|
+
}, O = ze("shellcore");
|
|
1880
|
+
let R = null, Q = !1, G = null, xe = null, je = [], re = !1, Ve = !1, Ee = null, ue = !1, We = !1, un = typeof window < "u" ? Date.now() : 0;
|
|
1881
|
+
const Mo = 5e3;
|
|
1886
1882
|
let ce = null, fe = null, de = null, he = null, ve = null, be = null, ye = null;
|
|
1887
|
-
function
|
|
1883
|
+
function tt(e) {
|
|
1888
1884
|
if (!e) return !1;
|
|
1889
1885
|
const n = e;
|
|
1890
1886
|
return n.__SHELLUI_TAURI__ === !0 ? !0 : !!(n.__TAURI__ ?? n.__TAURI_INTERNALS__);
|
|
1891
1887
|
}
|
|
1892
1888
|
function oe() {
|
|
1893
1889
|
if (typeof window > "u") return !1;
|
|
1894
|
-
if (
|
|
1890
|
+
if (tt(window)) return !0;
|
|
1895
1891
|
try {
|
|
1896
|
-
if (window !== window.top &&
|
|
1892
|
+
if (window !== window.top && tt(window.top) || window.parent && window.parent !== window && tt(window.parent)) return !0;
|
|
1897
1893
|
} catch {
|
|
1898
1894
|
}
|
|
1899
1895
|
return !1;
|
|
1900
1896
|
}
|
|
1901
|
-
let
|
|
1902
|
-
const
|
|
1897
|
+
let He = null, Ut = 0;
|
|
1898
|
+
const Bo = 5e3;
|
|
1903
1899
|
async function le() {
|
|
1904
1900
|
const n = {
|
|
1905
|
-
registered: await
|
|
1901
|
+
registered: await Ft(),
|
|
1906
1902
|
updateAvailable: Q
|
|
1907
1903
|
};
|
|
1908
|
-
|
|
1904
|
+
je.forEach((r) => r(n));
|
|
1909
1905
|
}
|
|
1910
|
-
async function
|
|
1911
|
-
const n = Date.now() -
|
|
1912
|
-
if (
|
|
1906
|
+
async function nt(e) {
|
|
1907
|
+
const n = Date.now() - un;
|
|
1908
|
+
if (We || n < Mo) {
|
|
1913
1909
|
console.warn(
|
|
1914
|
-
`[Service Worker] NOT disabling - registration in progress or within grace period. Reason: ${e}, isRegistering: ${
|
|
1910
|
+
`[Service Worker] NOT disabling - registration in progress or within grace period. Reason: ${e}, isRegistering: ${We}, timeSinceStart: ${n}ms`
|
|
1915
1911
|
), O.warn(
|
|
1916
1912
|
`Not disabling service worker - registration in progress or within grace period: ${e}`
|
|
1917
1913
|
);
|
|
@@ -1919,7 +1915,7 @@ async function rt(e) {
|
|
|
1919
1915
|
}
|
|
1920
1916
|
O.error(`Auto-disabling caching due to error: ${e}`);
|
|
1921
1917
|
try {
|
|
1922
|
-
if (await
|
|
1918
|
+
if (await Ie(), typeof window < "u") {
|
|
1923
1919
|
const r = "shellui:settings";
|
|
1924
1920
|
try {
|
|
1925
1921
|
const o = localStorage.getItem(r);
|
|
@@ -1962,9 +1958,9 @@ async function rt(e) {
|
|
|
1962
1958
|
O.error("Failed to disable caching automatically:", { error: r });
|
|
1963
1959
|
}
|
|
1964
1960
|
}
|
|
1965
|
-
async function
|
|
1961
|
+
async function Be() {
|
|
1966
1962
|
const e = Date.now();
|
|
1967
|
-
return
|
|
1963
|
+
return He && e - Ut < Bo || (He = (async () => {
|
|
1968
1964
|
try {
|
|
1969
1965
|
const n = await fetch(`/sw.js?t=${Date.now()}`, {
|
|
1970
1966
|
method: "GET",
|
|
@@ -1995,28 +1991,28 @@ async function ze() {
|
|
|
1995
1991
|
{ error: n }
|
|
1996
1992
|
), !1);
|
|
1997
1993
|
}
|
|
1998
|
-
})(),
|
|
1994
|
+
})(), Ut = e), He;
|
|
1999
1995
|
}
|
|
2000
|
-
async function
|
|
1996
|
+
async function pn(e = { enabled: !0 }) {
|
|
2001
1997
|
if (!("serviceWorker" in navigator))
|
|
2002
1998
|
return;
|
|
2003
1999
|
if (oe()) {
|
|
2004
|
-
await
|
|
2000
|
+
await Ie(), R = null;
|
|
2005
2001
|
return;
|
|
2006
2002
|
}
|
|
2007
2003
|
if (!e.enabled) {
|
|
2008
|
-
await
|
|
2004
|
+
await Ie(), R = null;
|
|
2009
2005
|
return;
|
|
2010
2006
|
}
|
|
2011
|
-
if (!await
|
|
2012
|
-
|
|
2013
|
-
const r = await
|
|
2014
|
-
r && !
|
|
2007
|
+
if (!await Be()) {
|
|
2008
|
+
xe || setTimeout(async () => {
|
|
2009
|
+
const r = await Be();
|
|
2010
|
+
r && !xe ? pn(e) : r || O.warn("Service worker file not found. Service workers may not be available.");
|
|
2015
2011
|
}, 1e3);
|
|
2016
2012
|
return;
|
|
2017
2013
|
}
|
|
2018
|
-
return
|
|
2019
|
-
|
|
2014
|
+
return xe || (xe = (async () => {
|
|
2015
|
+
We = !0, un = Date.now();
|
|
2020
2016
|
try {
|
|
2021
2017
|
const r = await navigator.serviceWorker.getRegistration();
|
|
2022
2018
|
if (r?.waiting && !r.installing) {
|
|
@@ -2035,18 +2031,18 @@ async function mn(e = { enabled: !0 }) {
|
|
|
2035
2031
|
O.error("Failed to activate waiting service worker:", { error: u }), typeof window < "u" && sessionStorage.removeItem("shellui:service-worker:auto-activated");
|
|
2036
2032
|
}
|
|
2037
2033
|
}
|
|
2038
|
-
if (r &&
|
|
2039
|
-
re = !1,
|
|
2034
|
+
if (r && R) {
|
|
2035
|
+
re = !1, R.update();
|
|
2040
2036
|
return;
|
|
2041
2037
|
}
|
|
2042
2038
|
re = !navigator.serviceWorker.controller;
|
|
2043
|
-
const o = !
|
|
2044
|
-
if (
|
|
2039
|
+
const o = !R;
|
|
2040
|
+
if (R || (R = new Vn("/sw.js", {
|
|
2045
2041
|
type: "classic",
|
|
2046
2042
|
updateViaCache: "none"
|
|
2047
2043
|
// Always check network for service worker updates
|
|
2048
|
-
})),
|
|
2049
|
-
|
|
2044
|
+
})), R && (ce && (R.removeEventListener("waiting", ce), ce = null), fe && (R.removeEventListener("activated", fe), fe = null), de && (R.removeEventListener("controlling", de), de = null), he && (R.removeEventListener("registered", he), he = null), ve && (R.removeEventListener("redundant", ve), ve = null), be && (navigator.serviceWorker.removeEventListener("error", be), be = null), ye && (navigator.serviceWorker.removeEventListener("messageerror", ye), ye = null), Ve = !1), o && !Ve) {
|
|
2045
|
+
Ve = !0;
|
|
2050
2046
|
const c = "shellui:update-available";
|
|
2051
2047
|
ce = async () => {
|
|
2052
2048
|
try {
|
|
@@ -2060,18 +2056,18 @@ async function mn(e = { enabled: !0 }) {
|
|
|
2060
2056
|
), Q = !0, G = f, le();
|
|
2061
2057
|
return;
|
|
2062
2058
|
}
|
|
2063
|
-
if (
|
|
2059
|
+
if (Ee === g) {
|
|
2064
2060
|
Q = !0, G = f, le();
|
|
2065
2061
|
return;
|
|
2066
2062
|
}
|
|
2067
|
-
if (
|
|
2063
|
+
if (Ee = g, Q = !0, G = f, le(), e.onUpdateAvailable)
|
|
2068
2064
|
e.onUpdateAvailable();
|
|
2069
2065
|
else {
|
|
2070
2066
|
const p = () => {
|
|
2071
|
-
O.info("Install Now clicked, updating service worker..."), G ?
|
|
2067
|
+
O.info("Install Now clicked, updating service worker..."), G ? Je().catch((l) => {
|
|
2072
2068
|
O.error("Failed to update service worker:", { error: l });
|
|
2073
2069
|
}) : (O.warn("Install Now clicked but no waiting service worker found"), navigator.serviceWorker.getRegistration().then((l) => {
|
|
2074
|
-
l?.waiting && (G = l.waiting,
|
|
2070
|
+
l?.waiting && (G = l.waiting, Je().catch((m) => {
|
|
2075
2071
|
O.error("Failed to update service worker:", { error: m });
|
|
2076
2072
|
}));
|
|
2077
2073
|
}));
|
|
@@ -2098,27 +2094,27 @@ async function mn(e = { enabled: !0 }) {
|
|
|
2098
2094
|
});
|
|
2099
2095
|
}
|
|
2100
2096
|
} catch (u) {
|
|
2101
|
-
O.error("Error in waiting handler:", { error: u }),
|
|
2097
|
+
O.error("Error in waiting handler:", { error: u }), Ee = null;
|
|
2102
2098
|
}
|
|
2103
|
-
},
|
|
2099
|
+
}, R.addEventListener("waiting", ce), fe = (u) => {
|
|
2104
2100
|
const d = u ?? {};
|
|
2105
2101
|
console.info("[Service Worker] Service worker activated:", {
|
|
2106
2102
|
isUpdate: d.isUpdate,
|
|
2107
2103
|
isInitialRegistration: re
|
|
2108
|
-
}), le(), Q = !1, G = null,
|
|
2104
|
+
}), le(), Q = !1, G = null, Ee = null;
|
|
2109
2105
|
const f = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:intentional-update") === "true", g = ue || f;
|
|
2110
2106
|
typeof window < "u" && sessionStorage.removeItem("shellui:service-worker:intentional-update"), d.isUpdate && !re && g ? (console.info("[Service Worker] Reloading page after intentional update"), window.location.reload()) : d.isUpdate && !re && !g && console.info(
|
|
2111
2107
|
"[Service Worker] Service worker auto-activated on page load - new version is now active"
|
|
2112
2108
|
), re = !1;
|
|
2113
|
-
},
|
|
2109
|
+
}, R.addEventListener("activated", fe), de = () => {
|
|
2114
2110
|
le();
|
|
2115
2111
|
const u = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:auto-activated") === "true", d = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:intentional-update") === "true", f = ue || d || u;
|
|
2116
2112
|
u && typeof window < "u" && sessionStorage.removeItem("shellui:service-worker:auto-activated"), !re && f && (console.info(
|
|
2117
2113
|
u ? "[Service Worker] Auto-activated service worker took control - reloading to use new version" : "[Service Worker] User clicked Install Now - reloading to use new version"
|
|
2118
2114
|
), window.location.reload()), re = !1;
|
|
2119
|
-
},
|
|
2115
|
+
}, R.addEventListener("controlling", de), he = () => {
|
|
2120
2116
|
le();
|
|
2121
|
-
},
|
|
2117
|
+
}, R.addEventListener("registered", he), ve = (u) => {
|
|
2122
2118
|
O.info("Service worker became redundant:", u);
|
|
2123
2119
|
const d = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:intentional-update") === "true";
|
|
2124
2120
|
ue || d || !!G ? (console.info(
|
|
@@ -2131,7 +2127,7 @@ async function mn(e = { enabled: !0 }) {
|
|
|
2131
2127
|
"[Service Worker] Redundant event: No service workers found, disabling"
|
|
2132
2128
|
), O.warn(
|
|
2133
2129
|
"Service worker became redundant unexpectedly (no service workers found)"
|
|
2134
|
-
),
|
|
2130
|
+
), nt(
|
|
2135
2131
|
"Service worker became redundant (no service workers found)"
|
|
2136
2132
|
)) : (console.info(
|
|
2137
2133
|
"[Service Worker] Redundant event: Service workers exist, likely update in progress - ignoring"
|
|
@@ -2147,14 +2143,14 @@ async function mn(e = { enabled: !0 }) {
|
|
|
2147
2143
|
{ error: p }
|
|
2148
2144
|
);
|
|
2149
2145
|
});
|
|
2150
|
-
},
|
|
2146
|
+
}, R.addEventListener("redundant", ve), be = (u) => {
|
|
2151
2147
|
O.error("Service worker error event:", u);
|
|
2152
2148
|
const d = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:intentional-update") === "true";
|
|
2153
2149
|
if (ue || d)
|
|
2154
2150
|
console.info("[Service Worker] Error during update flow, ignoring"), O.info("Service worker error during update flow, ignoring");
|
|
2155
2151
|
else {
|
|
2156
2152
|
const g = u ?? {}, p = g.error, l = g.message || p?.message || "Unknown error", m = p?.name || "";
|
|
2157
|
-
!l.includes("update") && !l.includes("activate") && !l.includes("install") && !m.includes("AbortError") && !m.includes("NetworkError") ?
|
|
2153
|
+
!l.includes("update") && !l.includes("activate") && !l.includes("install") && !m.includes("AbortError") && !m.includes("NetworkError") ? nt(`Service worker error: ${l}`) : (console.warn("[Service Worker] Non-critical error, ignoring:", l), O.warn("Service worker non-critical error, not disabling:", {
|
|
2158
2154
|
errorMessage: l,
|
|
2159
2155
|
errorName: m
|
|
2160
2156
|
}));
|
|
@@ -2163,35 +2159,35 @@ async function mn(e = { enabled: !0 }) {
|
|
|
2163
2159
|
O.error("Service worker message error:", u);
|
|
2164
2160
|
}, navigator.serviceWorker.addEventListener("messageerror", ye);
|
|
2165
2161
|
}
|
|
2166
|
-
await
|
|
2162
|
+
await R.register();
|
|
2167
2163
|
const i = await navigator.serviceWorker.getRegistration();
|
|
2168
2164
|
if (i && i.waiting && ce) {
|
|
2169
2165
|
const c = i.waiting.scriptURL;
|
|
2170
|
-
G === i.waiting && Q === !0 ? (Q = !0, G = i.waiting, le()) :
|
|
2166
|
+
G === i.waiting && Q === !0 ? (Q = !0, G = i.waiting, le()) : Ee !== c ? (Q = !0, G = i.waiting, ce()) : (Q = !0, G = i.waiting, le());
|
|
2171
2167
|
}
|
|
2172
2168
|
le(), setInterval(
|
|
2173
2169
|
() => {
|
|
2174
|
-
|
|
2170
|
+
R && e.enabled && R.update();
|
|
2175
2171
|
},
|
|
2176
2172
|
3600 * 1e3
|
|
2177
2173
|
);
|
|
2178
2174
|
let s = null;
|
|
2179
2175
|
typeof document < "u" && (s = () => {
|
|
2180
|
-
!document.hidden &&
|
|
2181
|
-
}, document.addEventListener("visibilitychange", s)),
|
|
2176
|
+
!document.hidden && R && e.enabled && R.update();
|
|
2177
|
+
}, document.addEventListener("visibilitychange", s)), We = !1;
|
|
2182
2178
|
} catch (r) {
|
|
2183
2179
|
const o = r instanceof Error ? r.message : String(r), i = r instanceof Error ? r.name : "";
|
|
2184
|
-
O.error("Registration failed:", { error: r }), o.includes("Failed to register") && !o.includes("already registered") || o.includes("script error") && !o.includes("network") || o.includes("SyntaxError") || o.includes("TypeError") && !o.includes("fetch") || r instanceof DOMException && r.name !== "SecurityError" && r.name !== "AbortError" ? await
|
|
2180
|
+
O.error("Registration failed:", { error: r }), o.includes("Failed to register") && !o.includes("already registered") || o.includes("script error") && !o.includes("network") || o.includes("SyntaxError") || o.includes("TypeError") && !o.includes("fetch") || r instanceof DOMException && r.name !== "SecurityError" && r.name !== "AbortError" ? await nt(`Registration failed: ${o}`) : (console.warn(
|
|
2185
2181
|
"[Service Worker] Non-critical registration error, NOT disabling:",
|
|
2186
2182
|
o
|
|
2187
2183
|
), O.warn("Non-critical registration error, not disabling:", { errorMessage: o, errorName: i }));
|
|
2188
2184
|
} finally {
|
|
2189
|
-
|
|
2185
|
+
We = !1, xe = null;
|
|
2190
2186
|
}
|
|
2191
|
-
})(),
|
|
2187
|
+
})(), xe);
|
|
2192
2188
|
}
|
|
2193
|
-
async function
|
|
2194
|
-
if (!(!
|
|
2189
|
+
async function Je() {
|
|
2190
|
+
if (!(!R || !G))
|
|
2195
2191
|
try {
|
|
2196
2192
|
if (typeof window < "u" && sessionStorage.setItem("shellui:service-worker:intentional-update", "true"), ue = !0, typeof window < "u") {
|
|
2197
2193
|
const o = "shellui:settings";
|
|
@@ -2220,12 +2216,12 @@ async function Xe() {
|
|
|
2220
2216
|
payload: {}
|
|
2221
2217
|
}) || window.location.reload();
|
|
2222
2218
|
}, r = () => {
|
|
2223
|
-
n(),
|
|
2219
|
+
n(), R?.removeEventListener("controlling", r), setTimeout(() => {
|
|
2224
2220
|
ue = !1;
|
|
2225
2221
|
}, 1e3);
|
|
2226
2222
|
};
|
|
2227
|
-
|
|
2228
|
-
de &&
|
|
2223
|
+
R.addEventListener("controlling", r), G.postMessage({ type: "SKIP_WAITING" }), setTimeout(() => {
|
|
2224
|
+
de && R?.removeEventListener("controlling", de), navigator.serviceWorker.controller && n(), setTimeout(() => {
|
|
2229
2225
|
ue = !1;
|
|
2230
2226
|
}, 1e3);
|
|
2231
2227
|
}, 2e3);
|
|
@@ -2233,7 +2229,7 @@ async function Xe() {
|
|
|
2233
2229
|
O.error("Failed to update service worker:", { error: e }), ue = !1;
|
|
2234
2230
|
}
|
|
2235
2231
|
}
|
|
2236
|
-
async function
|
|
2232
|
+
async function Ie() {
|
|
2237
2233
|
if ("serviceWorker" in navigator)
|
|
2238
2234
|
try {
|
|
2239
2235
|
re = !0;
|
|
@@ -2242,13 +2238,13 @@ async function _e() {
|
|
|
2242
2238
|
const n = await caches.keys();
|
|
2243
2239
|
await Promise.all(n.map((r) => caches.delete(r)));
|
|
2244
2240
|
}
|
|
2245
|
-
|
|
2241
|
+
R && (ce && R.removeEventListener("waiting", ce), fe && R.removeEventListener("activated", fe), de && R.removeEventListener("controlling", de), he && R.removeEventListener("registered", he), ve && R.removeEventListener("redundant", ve), be && navigator.serviceWorker.removeEventListener("error", be), ye && navigator.serviceWorker.removeEventListener("messageerror", ye), ce = null, fe = null, de = null, he = null, ve = null, be = null, ye = null, R = null), Q = !1, G = null, re = !1, Ee = null, Ve = !1, ue = !1, le();
|
|
2246
2242
|
} catch (e) {
|
|
2247
2243
|
O.error("Failed to unregister service worker:", { error: e }), re = !1;
|
|
2248
2244
|
}
|
|
2249
2245
|
}
|
|
2250
|
-
async function
|
|
2251
|
-
if (!("serviceWorker" in navigator) || oe() || !await
|
|
2246
|
+
async function Ft() {
|
|
2247
|
+
if (!("serviceWorker" in navigator) || oe() || !await Be())
|
|
2252
2248
|
return !1;
|
|
2253
2249
|
try {
|
|
2254
2250
|
const n = await navigator.serviceWorker.getRegistration();
|
|
@@ -2257,8 +2253,8 @@ async function Tt() {
|
|
|
2257
2253
|
return !1;
|
|
2258
2254
|
}
|
|
2259
2255
|
}
|
|
2260
|
-
async function
|
|
2261
|
-
const e = await
|
|
2256
|
+
async function Me() {
|
|
2257
|
+
const e = await Ft();
|
|
2262
2258
|
let n = !1;
|
|
2263
2259
|
if (e && !oe())
|
|
2264
2260
|
try {
|
|
@@ -2274,31 +2270,31 @@ async function Be() {
|
|
|
2274
2270
|
updateAvailable: n
|
|
2275
2271
|
};
|
|
2276
2272
|
}
|
|
2277
|
-
async function
|
|
2278
|
-
oe() || !
|
|
2273
|
+
async function zo() {
|
|
2274
|
+
oe() || !R || await R.update();
|
|
2279
2275
|
}
|
|
2280
|
-
function
|
|
2281
|
-
return
|
|
2282
|
-
|
|
2276
|
+
function gn(e) {
|
|
2277
|
+
return je.push(e), () => {
|
|
2278
|
+
je = je.filter((n) => n !== e);
|
|
2283
2279
|
};
|
|
2284
2280
|
}
|
|
2285
|
-
const
|
|
2286
|
-
const { t: e } = z("settings"), { config: n } = K(), { settings: r } = q(), [o, i] =
|
|
2287
|
-
|
|
2288
|
-
const w = await
|
|
2281
|
+
const Uo = ze("shellcore"), Ho = () => {
|
|
2282
|
+
const { t: e } = z("settings"), { config: n } = K(), { settings: r } = q(), [o, i] = _(!1), [s, c] = _(!1), [u, d] = _(!1), [f, g] = _(!1), p = r?.serviceWorker?.enabled ?? !0;
|
|
2283
|
+
D(() => oe() ? void 0 : ((async () => {
|
|
2284
|
+
const w = await Me();
|
|
2289
2285
|
i(w.updateAvailable);
|
|
2290
|
-
})(),
|
|
2286
|
+
})(), gn((w) => {
|
|
2291
2287
|
i(w.updateAvailable), w.updateAvailable && (d(!1), g(!1));
|
|
2292
2288
|
})), []);
|
|
2293
2289
|
const l = async () => {
|
|
2294
2290
|
if (!oe()) {
|
|
2295
2291
|
d(!1), g(!1), c(!0);
|
|
2296
2292
|
try {
|
|
2297
|
-
if ((await
|
|
2293
|
+
if ((await Me()).updateAvailable)
|
|
2298
2294
|
return;
|
|
2299
|
-
await
|
|
2295
|
+
await zo(), await new Promise((v) => setTimeout(v, 1e3)), o || (await Me()).updateAvailable || (d(!0), window.setTimeout(() => d(!1), 3e3));
|
|
2300
2296
|
} catch (h) {
|
|
2301
|
-
g(!0),
|
|
2297
|
+
g(!0), Uo.error("Failed to check for service worker update:", { error: h });
|
|
2302
2298
|
} finally {
|
|
2303
2299
|
c(!1);
|
|
2304
2300
|
}
|
|
@@ -2353,7 +2349,7 @@ const jo = Ue("shellcore"), Vo = () => {
|
|
|
2353
2349
|
{
|
|
2354
2350
|
variant: "default",
|
|
2355
2351
|
onClick: async () => {
|
|
2356
|
-
await
|
|
2352
|
+
await Je();
|
|
2357
2353
|
},
|
|
2358
2354
|
className: "w-full sm:w-auto",
|
|
2359
2355
|
children: e("updateApp.installNow")
|
|
@@ -2376,7 +2372,7 @@ const jo = Ue("shellcore"), Vo = () => {
|
|
|
2376
2372
|
),
|
|
2377
2373
|
e("updateApp.checking")
|
|
2378
2374
|
] }) : f ? /* @__PURE__ */ t("span", { className: "inline-flex items-center gap-2 text-red-600 dark:text-red-400", children: e("updateApp.checkError") }) : u && !o ? /* @__PURE__ */ a("span", { className: "inline-flex items-center gap-2 text-green-600 dark:text-green-400", children: [
|
|
2379
|
-
/* @__PURE__ */ t(
|
|
2375
|
+
/* @__PURE__ */ t(cr, {}),
|
|
2380
2376
|
e("updateApp.youAreUpToDate")
|
|
2381
2377
|
] }) : e("updateApp.checkForUpdate")
|
|
2382
2378
|
}
|
|
@@ -2437,18 +2433,18 @@ const jo = Ue("shellcore"), Vo = () => {
|
|
|
2437
2433
|
] })
|
|
2438
2434
|
);
|
|
2439
2435
|
we.displayName = "Switch";
|
|
2440
|
-
const
|
|
2441
|
-
function
|
|
2436
|
+
const $o = "shellui:settings";
|
|
2437
|
+
function Tt() {
|
|
2442
2438
|
if (typeof globalThis > "u") return;
|
|
2443
2439
|
const n = globalThis.__SHELLUI_CONFIG__;
|
|
2444
2440
|
if (n != null)
|
|
2445
2441
|
return typeof n == "string" ? JSON.parse(n) : n;
|
|
2446
2442
|
}
|
|
2447
|
-
function
|
|
2443
|
+
function Lt() {
|
|
2448
2444
|
if (typeof window > "u")
|
|
2449
2445
|
return { acceptedHosts: [], consentedCookieHosts: [] };
|
|
2450
2446
|
try {
|
|
2451
|
-
const e = localStorage.getItem(
|
|
2447
|
+
const e = localStorage.getItem($o);
|
|
2452
2448
|
if (!e) return { acceptedHosts: [], consentedCookieHosts: [] };
|
|
2453
2449
|
const n = JSON.parse(e);
|
|
2454
2450
|
return {
|
|
@@ -2459,61 +2455,61 @@ function Et() {
|
|
|
2459
2455
|
return { acceptedHosts: [], consentedCookieHosts: [] };
|
|
2460
2456
|
}
|
|
2461
2457
|
}
|
|
2462
|
-
function
|
|
2463
|
-
const n =
|
|
2458
|
+
function jo(e) {
|
|
2459
|
+
const n = Tt();
|
|
2464
2460
|
if (!n?.cookieConsent?.cookies?.length || !new Set(n.cookieConsent.cookies.map((i) => i.host)).has(e)) return !0;
|
|
2465
|
-
const { acceptedHosts: o } =
|
|
2461
|
+
const { acceptedHosts: o } = Lt();
|
|
2466
2462
|
return o.includes(e);
|
|
2467
2463
|
}
|
|
2468
|
-
function
|
|
2469
|
-
const e =
|
|
2464
|
+
function Vo() {
|
|
2465
|
+
const e = Tt();
|
|
2470
2466
|
if (!e?.cookieConsent?.cookies?.length) return !1;
|
|
2471
|
-
const { consentedCookieHosts: n } =
|
|
2467
|
+
const { consentedCookieHosts: n } = Lt();
|
|
2472
2468
|
if (n.length === 0) return !0;
|
|
2473
2469
|
const r = new Set(e.cookieConsent.cookies.map((o) => o.host));
|
|
2474
2470
|
for (const o of r)
|
|
2475
2471
|
if (!n.includes(o)) return !0;
|
|
2476
2472
|
return !1;
|
|
2477
2473
|
}
|
|
2478
|
-
function
|
|
2479
|
-
const e =
|
|
2474
|
+
function Gs() {
|
|
2475
|
+
const e = Tt();
|
|
2480
2476
|
if (!e?.cookieConsent?.cookies?.length) return [];
|
|
2481
|
-
const { consentedCookieHosts: n } =
|
|
2477
|
+
const { consentedCookieHosts: n } = Lt(), r = new Set(n);
|
|
2482
2478
|
return e.cookieConsent.cookies.map((o) => o.host).filter((o) => !r.has(o));
|
|
2483
2479
|
}
|
|
2484
|
-
const
|
|
2485
|
-
let
|
|
2486
|
-
function
|
|
2480
|
+
const Go = "shellui:settings";
|
|
2481
|
+
let st = !1;
|
|
2482
|
+
function Yo() {
|
|
2487
2483
|
if (typeof window > "u") return !0;
|
|
2488
|
-
if (!
|
|
2484
|
+
if (!jo("sentry.io")) return !1;
|
|
2489
2485
|
try {
|
|
2490
|
-
const e = localStorage.getItem(
|
|
2486
|
+
const e = localStorage.getItem(Go);
|
|
2491
2487
|
return e ? JSON.parse(e)?.errorReporting?.enabled !== !1 : !0;
|
|
2492
2488
|
} catch {
|
|
2493
2489
|
return !0;
|
|
2494
2490
|
}
|
|
2495
2491
|
}
|
|
2496
|
-
function
|
|
2497
|
-
if (!
|
|
2492
|
+
function mn() {
|
|
2493
|
+
if (!Yo())
|
|
2498
2494
|
return;
|
|
2499
2495
|
const e = globalThis, n = e.__SHELLUI_SENTRY_DSN__;
|
|
2500
|
-
!n || typeof n != "string" ||
|
|
2496
|
+
!n || typeof n != "string" || import("@sentry/react").then((r) => {
|
|
2501
2497
|
r.init({
|
|
2502
2498
|
dsn: n,
|
|
2503
2499
|
environment: e.__SHELLUI_SENTRY_ENVIRONMENT__ ?? "production",
|
|
2504
2500
|
release: e.__SHELLUI_SENTRY_RELEASE__
|
|
2505
|
-
}),
|
|
2501
|
+
}), st = !0;
|
|
2506
2502
|
});
|
|
2507
2503
|
}
|
|
2508
|
-
function
|
|
2509
|
-
|
|
2510
|
-
e.close(),
|
|
2504
|
+
function Ko() {
|
|
2505
|
+
st && import("@sentry/react").then((e) => {
|
|
2506
|
+
e.close(), st = !1;
|
|
2511
2507
|
});
|
|
2512
2508
|
}
|
|
2513
|
-
|
|
2514
|
-
const
|
|
2509
|
+
mn();
|
|
2510
|
+
const qo = () => {
|
|
2515
2511
|
const { t: e } = z("settings"), { config: n } = K(), { settings: r, updateSetting: o, resetAllData: i } = q(), s = !!n?.sentry?.dsn, c = (d) => {
|
|
2516
|
-
o("errorReporting", { enabled: d }), d ?
|
|
2512
|
+
o("errorReporting", { enabled: d }), d ? mn() : Ko();
|
|
2517
2513
|
}, u = () => {
|
|
2518
2514
|
b.dialog({
|
|
2519
2515
|
title: e("advanced.dangerZone.reset.toast.title"),
|
|
@@ -2617,10 +2613,10 @@ const Xo = () => {
|
|
|
2617
2613
|
function pe(e, n) {
|
|
2618
2614
|
return e == null ? "" : typeof e == "string" ? e : e[n] || e.en || e.fr || Object.values(e)[0] || "";
|
|
2619
2615
|
}
|
|
2620
|
-
function
|
|
2616
|
+
function Ne(e) {
|
|
2621
2617
|
return e.length === 0 ? [] : e.flatMap((n) => "title" in n && "items" in n ? n.items : n);
|
|
2622
2618
|
}
|
|
2623
|
-
function
|
|
2619
|
+
function Ht(e, n) {
|
|
2624
2620
|
if (e.length === 0) return [];
|
|
2625
2621
|
const r = n === "mobile", o = n === "desktop";
|
|
2626
2622
|
return e.map((i) => {
|
|
@@ -2632,7 +2628,7 @@ function $t(e, n) {
|
|
|
2632
2628
|
return s.hidden || r && s.hiddenOnMobile || o && s.hiddenOnDesktop ? null : i;
|
|
2633
2629
|
}).filter((i) => i !== null);
|
|
2634
2630
|
}
|
|
2635
|
-
function
|
|
2631
|
+
function Zo(e) {
|
|
2636
2632
|
return e.length === 0 ? [] : e.map((n) => {
|
|
2637
2633
|
if ("title" in n && "items" in n) {
|
|
2638
2634
|
const o = n, i = o.items.filter((s) => !s.hidden);
|
|
@@ -2641,7 +2637,7 @@ function Qo(e) {
|
|
|
2641
2637
|
return n.hidden ? null : n;
|
|
2642
2638
|
}).filter((n) => n !== null);
|
|
2643
2639
|
}
|
|
2644
|
-
function
|
|
2640
|
+
function fn(e) {
|
|
2645
2641
|
const n = [], r = [];
|
|
2646
2642
|
for (const o of e)
|
|
2647
2643
|
if (("position" in o ? o.position ?? "start" : "start") === "end")
|
|
@@ -2656,7 +2652,7 @@ function vn(e) {
|
|
|
2656
2652
|
n.push(o);
|
|
2657
2653
|
return { start: n, end: r };
|
|
2658
2654
|
}
|
|
2659
|
-
const
|
|
2655
|
+
const Jo = () => {
|
|
2660
2656
|
const { t: e } = z("settings");
|
|
2661
2657
|
return /* @__PURE__ */ a("div", { children: [
|
|
2662
2658
|
/* @__PURE__ */ t(
|
|
@@ -2843,7 +2839,7 @@ const ei = () => {
|
|
|
2843
2839
|
)
|
|
2844
2840
|
] })
|
|
2845
2841
|
] });
|
|
2846
|
-
},
|
|
2842
|
+
}, Xo = () => {
|
|
2847
2843
|
const { t: e } = z("settings");
|
|
2848
2844
|
return /* @__PURE__ */ a("div", { children: [
|
|
2849
2845
|
/* @__PURE__ */ t(
|
|
@@ -2984,7 +2980,7 @@ const ei = () => {
|
|
|
2984
2980
|
)
|
|
2985
2981
|
] })
|
|
2986
2982
|
] });
|
|
2987
|
-
},
|
|
2983
|
+
}, Qo = () => {
|
|
2988
2984
|
const { t: e } = z("settings");
|
|
2989
2985
|
return /* @__PURE__ */ a("div", { children: [
|
|
2990
2986
|
/* @__PURE__ */ t(
|
|
@@ -3005,7 +3001,7 @@ const ei = () => {
|
|
|
3005
3001
|
) }),
|
|
3006
3002
|
/* @__PURE__ */ t("p", { className: "text-xs text-muted-foreground mt-2", children: e("develop.testing.modalTesting.description") })
|
|
3007
3003
|
] });
|
|
3008
|
-
},
|
|
3004
|
+
}, ei = () => {
|
|
3009
3005
|
const { t: e } = z("settings"), n = (r) => {
|
|
3010
3006
|
b.openDrawer({ url: se.settings, ...r });
|
|
3011
3007
|
};
|
|
@@ -3077,8 +3073,8 @@ const ei = () => {
|
|
|
3077
3073
|
)
|
|
3078
3074
|
] })
|
|
3079
3075
|
] });
|
|
3080
|
-
},
|
|
3081
|
-
const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), { config: o } = K(), i = n.language?.code || "en", s = n.layout ?? o?.layout ?? "sidebar", c = o?.navigation?.length ?
|
|
3076
|
+
}, ti = () => {
|
|
3077
|
+
const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), { config: o } = K(), i = n.language?.code || "en", s = n.layout ?? o?.layout ?? "sidebar", c = o?.navigation?.length ? Ne(o?.navigation ?? []).filter(
|
|
3082
3078
|
(u, d, f) => d === f.findIndex((g) => g.path === u.path)
|
|
3083
3079
|
) : [];
|
|
3084
3080
|
return /* @__PURE__ */ a("div", { className: "space-y-6", children: [
|
|
@@ -3168,7 +3164,7 @@ const ei = () => {
|
|
|
3168
3164
|
}
|
|
3169
3165
|
),
|
|
3170
3166
|
/* @__PURE__ */ t("div", { className: "mt-2", children: /* @__PURE__ */ a(
|
|
3171
|
-
|
|
3167
|
+
At,
|
|
3172
3168
|
{
|
|
3173
3169
|
id: "develop-nav-select",
|
|
3174
3170
|
defaultValue: "",
|
|
@@ -3221,14 +3217,14 @@ const ei = () => {
|
|
|
3221
3217
|
}
|
|
3222
3218
|
),
|
|
3223
3219
|
/* @__PURE__ */ a("div", { className: "space-y-4", children: [
|
|
3224
|
-
/* @__PURE__ */ t(
|
|
3225
|
-
/* @__PURE__ */ t(
|
|
3226
|
-
/* @__PURE__ */ t(
|
|
3227
|
-
/* @__PURE__ */ t(
|
|
3220
|
+
/* @__PURE__ */ t(Jo, {}),
|
|
3221
|
+
/* @__PURE__ */ t(Xo, {}),
|
|
3222
|
+
/* @__PURE__ */ t(Qo, {}),
|
|
3223
|
+
/* @__PURE__ */ t(ei, {})
|
|
3228
3224
|
] })
|
|
3229
3225
|
] })
|
|
3230
3226
|
] });
|
|
3231
|
-
},
|
|
3227
|
+
}, ni = () => {
|
|
3232
3228
|
const { t: e } = z("settings"), { config: n } = K(), { settings: r, updateSetting: o } = q(), i = n?.cookieConsent?.cookies ?? [], s = i.length > 0, c = !!r?.cookieConsent?.consentedCookieHosts?.length, u = r?.cookieConsent?.acceptedHosts ?? [], d = i.map((h) => h.host), f = i.filter((h) => h.category === "strict_necessary").map((h) => h.host), g = c && u.length === d.length && d.every((h) => u.includes(h)), p = c && u.length === f.length && f.every((h) => u.includes(h)) && !u.some((h) => !f.includes(h)), l = c && !g && !p, m = () => {
|
|
3233
3229
|
o("cookieConsent", {
|
|
3234
3230
|
acceptedHosts: [],
|
|
@@ -3319,9 +3315,9 @@ const ei = () => {
|
|
|
3319
3315
|
/* @__PURE__ */ t("span", { className: "text-muted-foreground", children: e("dataPrivacy.noCookiesConfigured.info") })
|
|
3320
3316
|
] })
|
|
3321
3317
|
] }) });
|
|
3322
|
-
},
|
|
3323
|
-
const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), [o, i] =
|
|
3324
|
-
|
|
3318
|
+
}, ri = () => {
|
|
3319
|
+
const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), [o, i] = _(!1), [s, c] = _(!1), [u, d] = _(!0), [f, g] = _(!0), p = n?.serviceWorker?.enabled ?? !0;
|
|
3320
|
+
D(() => {
|
|
3325
3321
|
if (!p) {
|
|
3326
3322
|
i(!1), c(!1), d(!1), g(!0);
|
|
3327
3323
|
return;
|
|
@@ -3332,13 +3328,13 @@ const ei = () => {
|
|
|
3332
3328
|
return;
|
|
3333
3329
|
}
|
|
3334
3330
|
d(!0);
|
|
3335
|
-
const B = await
|
|
3331
|
+
const B = await Be();
|
|
3336
3332
|
if (!(n?.serviceWorker?.enabled ?? !0)) {
|
|
3337
3333
|
d(!1);
|
|
3338
3334
|
return;
|
|
3339
3335
|
}
|
|
3340
3336
|
if (g(B), B) {
|
|
3341
|
-
const H = await
|
|
3337
|
+
const H = await Me();
|
|
3342
3338
|
(n?.serviceWorker?.enabled ?? !0) && (i(H.registered), c(H.updateAvailable));
|
|
3343
3339
|
} else
|
|
3344
3340
|
(n?.serviceWorker?.enabled ?? !0) && (i(!1), c(!1));
|
|
@@ -3346,16 +3342,16 @@ const ei = () => {
|
|
|
3346
3342
|
}, w = async () => {
|
|
3347
3343
|
if (!(n?.serviceWorker?.enabled ?? !0))
|
|
3348
3344
|
return;
|
|
3349
|
-
const B = await
|
|
3345
|
+
const B = await Be();
|
|
3350
3346
|
if (n?.serviceWorker?.enabled ?? !0)
|
|
3351
3347
|
if (g(B), B) {
|
|
3352
|
-
const H = await
|
|
3348
|
+
const H = await Me();
|
|
3353
3349
|
(n?.serviceWorker?.enabled ?? !0) && (i(H.registered), c(H.updateAvailable));
|
|
3354
3350
|
} else
|
|
3355
3351
|
(n?.serviceWorker?.enabled ?? !0) && (i(!1), c(!1));
|
|
3356
3352
|
};
|
|
3357
3353
|
v();
|
|
3358
|
-
const k =
|
|
3354
|
+
const k = gn((P) => {
|
|
3359
3355
|
(n?.serviceWorker?.enabled ?? !0) && (i(P.registered), c(P.updateAvailable), d(!1));
|
|
3360
3356
|
}), T = setInterval(w, 3e4);
|
|
3361
3357
|
return () => {
|
|
@@ -3366,13 +3362,13 @@ const ei = () => {
|
|
|
3366
3362
|
v || (i(!1), c(!1), g(!0), d(!1)), r("serviceWorker", { enabled: v }), v && setTimeout(async () => {
|
|
3367
3363
|
const w = n?.serviceWorker?.enabled ?? !0;
|
|
3368
3364
|
if (v && w) {
|
|
3369
|
-
const k = await
|
|
3365
|
+
const k = await Ft();
|
|
3370
3366
|
i(k);
|
|
3371
3367
|
}
|
|
3372
3368
|
}, 1e3);
|
|
3373
3369
|
}, m = async () => {
|
|
3374
3370
|
try {
|
|
3375
|
-
await
|
|
3371
|
+
await Je();
|
|
3376
3372
|
} catch {
|
|
3377
3373
|
b.toast({
|
|
3378
3374
|
title: e("caching.updateError.title"),
|
|
@@ -3522,64 +3518,64 @@ const ei = () => {
|
|
|
3522
3518
|
] })
|
|
3523
3519
|
] })
|
|
3524
3520
|
] });
|
|
3525
|
-
},
|
|
3521
|
+
}, oi = (e) => [
|
|
3526
3522
|
{
|
|
3527
3523
|
name: e("routes.appearance"),
|
|
3528
|
-
icon:
|
|
3524
|
+
icon: ar,
|
|
3529
3525
|
path: "appearance",
|
|
3530
|
-
element: /* @__PURE__ */ t(
|
|
3526
|
+
element: /* @__PURE__ */ t(Fr, {})
|
|
3531
3527
|
},
|
|
3532
3528
|
{
|
|
3533
3529
|
name: e("routes.languageAndRegion"),
|
|
3534
|
-
icon:
|
|
3530
|
+
icon: lr,
|
|
3535
3531
|
path: "language-and-region",
|
|
3536
|
-
element: /* @__PURE__ */ t(
|
|
3532
|
+
element: /* @__PURE__ */ t(Wo, {})
|
|
3537
3533
|
},
|
|
3538
3534
|
{
|
|
3539
3535
|
name: e("routes.updateApp"),
|
|
3540
|
-
icon:
|
|
3536
|
+
icon: fr,
|
|
3541
3537
|
path: "update-app",
|
|
3542
|
-
element: /* @__PURE__ */ t(
|
|
3538
|
+
element: /* @__PURE__ */ t(Ho, {})
|
|
3543
3539
|
},
|
|
3544
3540
|
{
|
|
3545
3541
|
name: e("routes.advanced"),
|
|
3546
|
-
icon:
|
|
3542
|
+
icon: dr,
|
|
3547
3543
|
path: "advanced",
|
|
3548
|
-
element: /* @__PURE__ */ t(
|
|
3544
|
+
element: /* @__PURE__ */ t(qo, {})
|
|
3549
3545
|
},
|
|
3550
3546
|
{
|
|
3551
3547
|
name: e("routes.dataPrivacy"),
|
|
3552
|
-
icon:
|
|
3548
|
+
icon: mr,
|
|
3553
3549
|
path: "data-privacy",
|
|
3554
|
-
element: /* @__PURE__ */ t(
|
|
3550
|
+
element: /* @__PURE__ */ t(ni, {})
|
|
3555
3551
|
},
|
|
3556
3552
|
{
|
|
3557
3553
|
name: e("routes.develop"),
|
|
3558
|
-
icon:
|
|
3554
|
+
icon: ur,
|
|
3559
3555
|
path: "developpers",
|
|
3560
|
-
element: /* @__PURE__ */ t(
|
|
3556
|
+
element: /* @__PURE__ */ t(ti, {})
|
|
3561
3557
|
},
|
|
3562
3558
|
...oe() ? [] : [
|
|
3563
3559
|
{
|
|
3564
3560
|
name: e("routes.serviceWorker"),
|
|
3565
|
-
icon:
|
|
3561
|
+
icon: hr,
|
|
3566
3562
|
path: "service-worker",
|
|
3567
|
-
element: /* @__PURE__ */ t(
|
|
3563
|
+
element: /* @__PURE__ */ t(ri, {})
|
|
3568
3564
|
}
|
|
3569
3565
|
]
|
|
3570
|
-
],
|
|
3571
|
-
const e =
|
|
3572
|
-
|
|
3566
|
+
], ii = () => {
|
|
3567
|
+
const e = Ae(), n = gt(), { settings: r } = q(), { config: o } = K(), { t: i } = z("settings"), [s, c] = _(() => oe());
|
|
3568
|
+
D(() => {
|
|
3573
3569
|
c(oe());
|
|
3574
3570
|
const v = window.setTimeout(() => c(oe()), 200);
|
|
3575
3571
|
return () => window.clearTimeout(v);
|
|
3576
|
-
}, []),
|
|
3572
|
+
}, []), D(() => {
|
|
3577
3573
|
if (o?.title) {
|
|
3578
3574
|
const v = i("settings", { ns: "common" });
|
|
3579
3575
|
document.title = `${v} | ${o.title}`;
|
|
3580
3576
|
}
|
|
3581
3577
|
}, [o?.title, i]);
|
|
3582
|
-
const u = j(() =>
|
|
3578
|
+
const u = j(() => oi(i), [i]), d = j(() => s ? u.filter((v) => v.path !== "service-worker") : u, [u, s]), f = j(() => r.developerFeatures.enabled ? d : d.filter(
|
|
3583
3579
|
(v) => v.path !== "developpers" && v.path !== "service-worker"
|
|
3584
3580
|
), [r.developerFeatures.enabled, d]), g = j(() => {
|
|
3585
3581
|
const v = ["developpers", "service-worker"];
|
|
@@ -3614,11 +3610,11 @@ const ei = () => {
|
|
|
3614
3610
|
}, [e.pathname, f]), h = L(() => {
|
|
3615
3611
|
n(se.settings, { replace: !0 });
|
|
3616
3612
|
}, [n]);
|
|
3617
|
-
return /* @__PURE__ */ t(
|
|
3618
|
-
/* @__PURE__ */ t(
|
|
3619
|
-
/* @__PURE__ */ t(
|
|
3620
|
-
/* @__PURE__ */ t(
|
|
3621
|
-
|
|
3613
|
+
return /* @__PURE__ */ t(sn, { children: /* @__PURE__ */ a("div", { className: "flex h-full w-full overflow-hidden items-start", children: [
|
|
3614
|
+
/* @__PURE__ */ t(vt, { className: "hidden md:flex", children: /* @__PURE__ */ t(bt, { children: g.map((v) => /* @__PURE__ */ a(yt, { children: [
|
|
3615
|
+
/* @__PURE__ */ t(wt, { children: v.title }),
|
|
3616
|
+
/* @__PURE__ */ t(kt, { children: /* @__PURE__ */ t(Ke, { children: v.routes.map((w) => /* @__PURE__ */ t(qe, { children: /* @__PURE__ */ t(
|
|
3617
|
+
xt,
|
|
3622
3618
|
{
|
|
3623
3619
|
asChild: !0,
|
|
3624
3620
|
isActive: w.name === l?.name,
|
|
@@ -3671,7 +3667,7 @@ const ei = () => {
|
|
|
3671
3667
|
/* @__PURE__ */ t("div", { className: "flex-shrink-0 text-foreground/70", children: /* @__PURE__ */ t(T, {}) }),
|
|
3672
3668
|
/* @__PURE__ */ t("span", { className: "text-sm font-normal text-foreground", children: w.name })
|
|
3673
3669
|
] }),
|
|
3674
|
-
/* @__PURE__ */ t("div", { className: "flex-shrink-0 ml-2 text-foreground/40", children: /* @__PURE__ */ t(
|
|
3670
|
+
/* @__PURE__ */ t("div", { className: "flex-shrink-0 ml-2 text-foreground/40", children: /* @__PURE__ */ t(pr, {}) })
|
|
3675
3671
|
]
|
|
3676
3672
|
}
|
|
3677
3673
|
)
|
|
@@ -3696,18 +3692,18 @@ const ei = () => {
|
|
|
3696
3692
|
size: "icon",
|
|
3697
3693
|
onClick: h,
|
|
3698
3694
|
className: "mr-2",
|
|
3699
|
-
children: /* @__PURE__ */ t(
|
|
3695
|
+
children: /* @__PURE__ */ t(gr, {})
|
|
3700
3696
|
}
|
|
3701
3697
|
),
|
|
3702
3698
|
/* @__PURE__ */ t("h1", { className: "text-lg font-semibold", children: l?.name })
|
|
3703
3699
|
] }),
|
|
3704
|
-
/* @__PURE__ */ t("div", { className: "flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-4", children: /* @__PURE__ */ a(
|
|
3700
|
+
/* @__PURE__ */ t("div", { className: "flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-4", children: /* @__PURE__ */ a(Pt, { children: [
|
|
3705
3701
|
/* @__PURE__ */ t(
|
|
3706
|
-
|
|
3702
|
+
Ue,
|
|
3707
3703
|
{
|
|
3708
3704
|
index: !0,
|
|
3709
3705
|
element: f.length > 0 ? /* @__PURE__ */ t(
|
|
3710
|
-
|
|
3706
|
+
Xt,
|
|
3711
3707
|
{
|
|
3712
3708
|
to: `${se.settings}/${f[0].path}`,
|
|
3713
3709
|
replace: !0
|
|
@@ -3716,7 +3712,7 @@ const ei = () => {
|
|
|
3716
3712
|
}
|
|
3717
3713
|
),
|
|
3718
3714
|
f.map((v) => /* @__PURE__ */ t(
|
|
3719
|
-
|
|
3715
|
+
Ue,
|
|
3720
3716
|
{
|
|
3721
3717
|
path: v.path,
|
|
3722
3718
|
element: v.element
|
|
@@ -3727,14 +3723,14 @@ const ei = () => {
|
|
|
3727
3723
|
] })
|
|
3728
3724
|
) }),
|
|
3729
3725
|
/* @__PURE__ */ a("main", { className: "hidden md:flex h-full flex-1 flex-col overflow-hidden", children: [
|
|
3730
|
-
l && /* @__PURE__ */ t("header", { className: "flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear", children: /* @__PURE__ */ t("div", { className: "flex items-center gap-2 px-4", children: /* @__PURE__ */ t(
|
|
3731
|
-
/* @__PURE__ */ t(
|
|
3732
|
-
/* @__PURE__ */ t(
|
|
3733
|
-
/* @__PURE__ */ t(
|
|
3726
|
+
l && /* @__PURE__ */ t("header", { className: "flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear", children: /* @__PURE__ */ t("div", { className: "flex items-center gap-2 px-4", children: /* @__PURE__ */ t(en, { children: /* @__PURE__ */ a(tn, { children: [
|
|
3727
|
+
/* @__PURE__ */ t(it, { children: i("title") }),
|
|
3728
|
+
/* @__PURE__ */ t(rn, {}),
|
|
3729
|
+
/* @__PURE__ */ t(it, { children: /* @__PURE__ */ t(nn, { children: l.name }) })
|
|
3734
3730
|
] }) }) }) }),
|
|
3735
|
-
/* @__PURE__ */ t("div", { className: "flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0", children: /* @__PURE__ */ a(
|
|
3731
|
+
/* @__PURE__ */ t("div", { className: "flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0", children: /* @__PURE__ */ a(Pt, { children: [
|
|
3736
3732
|
/* @__PURE__ */ t(
|
|
3737
|
-
|
|
3733
|
+
Ue,
|
|
3738
3734
|
{
|
|
3739
3735
|
index: !0,
|
|
3740
3736
|
element: /* @__PURE__ */ t("div", { className: "flex flex-1 flex-col items-center justify-center p-8 text-center", children: /* @__PURE__ */ a("div", { className: "max-w-md", children: [
|
|
@@ -3746,7 +3742,7 @@ const ei = () => {
|
|
|
3746
3742
|
}
|
|
3747
3743
|
),
|
|
3748
3744
|
f.map((v) => /* @__PURE__ */ t(
|
|
3749
|
-
|
|
3745
|
+
Ue,
|
|
3750
3746
|
{
|
|
3751
3747
|
path: v.path,
|
|
3752
3748
|
element: v.element
|
|
@@ -3756,28 +3752,25 @@ const ei = () => {
|
|
|
3756
3752
|
] }) })
|
|
3757
3753
|
] })
|
|
3758
3754
|
] }) });
|
|
3759
|
-
},
|
|
3760
|
-
__proto__: null,
|
|
3761
|
-
SettingsView: li
|
|
3762
|
-
}, Symbol.toStringTag, { value: "Module" })), di = [
|
|
3755
|
+
}, si = [
|
|
3763
3756
|
"strict_necessary",
|
|
3764
3757
|
"functional_performance",
|
|
3765
3758
|
"targeting",
|
|
3766
3759
|
"social_media_embedded"
|
|
3767
3760
|
];
|
|
3768
|
-
function
|
|
3761
|
+
function ai(e, n) {
|
|
3769
3762
|
return e < 60 ? n("preferences.duration.seconds", { count: e }) : e < 3600 ? n("preferences.duration.minutes", { count: Math.floor(e / 60) }) : e < 86400 ? n("preferences.duration.hours", { count: Math.floor(e / 3600) }) : e < 31536e3 ? n("preferences.duration.days", { count: Math.floor(e / 86400) }) : n("preferences.duration.years", { count: Math.floor(e / 31536e3) });
|
|
3770
3763
|
}
|
|
3771
|
-
function
|
|
3772
|
-
const { t: e, i18n: n } = z("cookieConsent"), { config: r } = K(), { settings: o, updateSetting: i } = q(), s =
|
|
3764
|
+
function li() {
|
|
3765
|
+
const { t: e, i18n: n } = z("cookieConsent"), { config: r } = K(), { settings: o, updateSetting: i } = q(), s = Ae(), u = new URLSearchParams(s.search).get("initial") === "true", d = n.language || "en", f = r?.cookieConsent?.cookies ?? [], g = j(() => f.map((C) => C.host), [f]), p = j(
|
|
3773
3766
|
() => f.filter((C) => C.category === "strict_necessary").map((C) => C.host),
|
|
3774
3767
|
[f]
|
|
3775
|
-
), l = o?.cookieConsent?.acceptedHosts ?? [], [m, h] =
|
|
3768
|
+
), l = o?.cookieConsent?.acceptedHosts ?? [], [m, h] = _(() => [
|
|
3776
3769
|
.../* @__PURE__ */ new Set([...l, ...p])
|
|
3777
3770
|
]), v = Z(!1);
|
|
3778
|
-
|
|
3771
|
+
D(() => {
|
|
3779
3772
|
u && h([.../* @__PURE__ */ new Set([...l, ...p])]);
|
|
3780
|
-
}, [u, l, p]),
|
|
3773
|
+
}, [u, l, p]), D(() => {
|
|
3781
3774
|
if (!u) return;
|
|
3782
3775
|
const C = () => {
|
|
3783
3776
|
(o?.cookieConsent?.consentedCookieHosts ?? []).length === 0 && !v.current && i("cookieConsent", {
|
|
@@ -3786,7 +3779,7 @@ function pi() {
|
|
|
3786
3779
|
});
|
|
3787
3780
|
};
|
|
3788
3781
|
return b.addMessageListener("SHELLUI_CLOSE_DRAWER", C);
|
|
3789
|
-
}, [u, p, g, i, o]),
|
|
3782
|
+
}, [u, p, g, i, o]), D(() => () => {
|
|
3790
3783
|
u && !v.current && (o?.cookieConsent?.consentedCookieHosts ?? []).length === 0 && i("cookieConsent", {
|
|
3791
3784
|
acceptedHosts: p,
|
|
3792
3785
|
consentedCookieHosts: g
|
|
@@ -3808,8 +3801,8 @@ function pi() {
|
|
|
3808
3801
|
if (W)
|
|
3809
3802
|
return [.../* @__PURE__ */ new Set([...A, ...y])];
|
|
3810
3803
|
{
|
|
3811
|
-
const
|
|
3812
|
-
return A.filter((N) => !
|
|
3804
|
+
const I = new Set(y);
|
|
3805
|
+
return A.filter((N) => !I.has(N));
|
|
3813
3806
|
}
|
|
3814
3807
|
});
|
|
3815
3808
|
},
|
|
@@ -3856,7 +3849,7 @@ function pi() {
|
|
|
3856
3849
|
),
|
|
3857
3850
|
/* @__PURE__ */ t("p", { className: "text-sm text-muted-foreground", children: e("preferences.description") })
|
|
3858
3851
|
] }),
|
|
3859
|
-
/* @__PURE__ */ t("div", { className: "flex-1 overflow-y-auto px-6 py-4", children:
|
|
3852
|
+
/* @__PURE__ */ t("div", { className: "flex-1 overflow-y-auto px-6 py-4", children: si.map((C) => {
|
|
3860
3853
|
const W = w.get(C);
|
|
3861
3854
|
if (!W || W.length === 0) return null;
|
|
3862
3855
|
const y = P(C), A = C === "strict_necessary";
|
|
@@ -3883,41 +3876,41 @@ function pi() {
|
|
|
3883
3876
|
we,
|
|
3884
3877
|
{
|
|
3885
3878
|
checked: y === "all",
|
|
3886
|
-
onCheckedChange: (
|
|
3879
|
+
onCheckedChange: (I) => T(C, I),
|
|
3887
3880
|
"aria-label": e(`preferences.categories.${C}.title`)
|
|
3888
3881
|
}
|
|
3889
3882
|
)
|
|
3890
3883
|
] })
|
|
3891
3884
|
] }),
|
|
3892
|
-
!A && /* @__PURE__ */ t("div", { className: "space-y-2 pl-2 border-l-2 border-border ml-1", children: W.map((
|
|
3893
|
-
const N = m.includes(
|
|
3885
|
+
!A && /* @__PURE__ */ t("div", { className: "space-y-2 pl-2 border-l-2 border-border ml-1", children: W.map((I) => {
|
|
3886
|
+
const N = m.includes(I.host);
|
|
3894
3887
|
return /* @__PURE__ */ a(
|
|
3895
3888
|
"div",
|
|
3896
3889
|
{
|
|
3897
3890
|
className: "flex items-start justify-between gap-3 py-2 px-3 rounded-md bg-muted/30",
|
|
3898
3891
|
children: [
|
|
3899
3892
|
/* @__PURE__ */ a("div", { className: "flex-1 min-w-0", children: [
|
|
3900
|
-
/* @__PURE__ */ t("span", { className: "text-sm font-medium truncate", children:
|
|
3901
|
-
|
|
3893
|
+
/* @__PURE__ */ t("span", { className: "text-sm font-medium truncate", children: I.name }),
|
|
3894
|
+
I.description && /* @__PURE__ */ t("p", { className: "text-xs text-muted-foreground mt-0.5 line-clamp-2", children: pe(I.description, d) }),
|
|
3902
3895
|
/* @__PURE__ */ a("div", { className: "flex items-center gap-3 mt-1 text-[10px] text-muted-foreground/70", children: [
|
|
3903
|
-
/* @__PURE__ */ t("span", { children:
|
|
3896
|
+
/* @__PURE__ */ t("span", { children: I.host }),
|
|
3904
3897
|
/* @__PURE__ */ t("span", { children: "•" }),
|
|
3905
|
-
/* @__PURE__ */ t("span", { children:
|
|
3898
|
+
/* @__PURE__ */ t("span", { children: ai(I.durationSeconds, e) }),
|
|
3906
3899
|
/* @__PURE__ */ t("span", { children: "•" }),
|
|
3907
|
-
/* @__PURE__ */ t("span", { className: "capitalize", children:
|
|
3900
|
+
/* @__PURE__ */ t("span", { className: "capitalize", children: I.type.replace("_", " ") })
|
|
3908
3901
|
] })
|
|
3909
3902
|
] }),
|
|
3910
3903
|
/* @__PURE__ */ t(
|
|
3911
3904
|
we,
|
|
3912
3905
|
{
|
|
3913
3906
|
checked: N,
|
|
3914
|
-
onCheckedChange: (F) => k(
|
|
3915
|
-
"aria-label":
|
|
3907
|
+
onCheckedChange: (F) => k(I.host, F),
|
|
3908
|
+
"aria-label": I.name
|
|
3916
3909
|
}
|
|
3917
3910
|
)
|
|
3918
3911
|
]
|
|
3919
3912
|
},
|
|
3920
|
-
|
|
3913
|
+
I.host
|
|
3921
3914
|
);
|
|
3922
3915
|
}) })
|
|
3923
3916
|
]
|
|
@@ -3961,11 +3954,7 @@ function pi() {
|
|
|
3961
3954
|
] })
|
|
3962
3955
|
] });
|
|
3963
3956
|
}
|
|
3964
|
-
|
|
3965
|
-
__proto__: null,
|
|
3966
|
-
CookiePreferencesView: pi
|
|
3967
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
3968
|
-
function mi() {
|
|
3957
|
+
function ci() {
|
|
3969
3958
|
return /* @__PURE__ */ t("div", { className: "absolute inset-0 z-10 flex flex-col bg-background", children: /* @__PURE__ */ t("div", { className: "h-1 w-full overflow-hidden bg-muted/30", children: /* @__PURE__ */ t(
|
|
3970
3959
|
"div",
|
|
3971
3960
|
{
|
|
@@ -3974,21 +3963,21 @@ function mi() {
|
|
|
3974
3963
|
}
|
|
3975
3964
|
) }) });
|
|
3976
3965
|
}
|
|
3977
|
-
const
|
|
3966
|
+
const $t = ze("shellcore"), Xe = ({
|
|
3978
3967
|
url: e,
|
|
3979
3968
|
pathPrefix: n,
|
|
3980
3969
|
ignoreMessages: r = !1,
|
|
3981
3970
|
navItem: o
|
|
3982
3971
|
}) => {
|
|
3983
|
-
const i =
|
|
3984
|
-
return
|
|
3972
|
+
const i = gt(), s = Z(null), c = Z(!1), [u] = _(e), [d, f] = _(!0);
|
|
3973
|
+
return D(() => {
|
|
3985
3974
|
if (!s.current)
|
|
3986
3975
|
return;
|
|
3987
|
-
const g =
|
|
3976
|
+
const g = zn(s.current);
|
|
3988
3977
|
return () => {
|
|
3989
|
-
|
|
3978
|
+
Un(g);
|
|
3990
3979
|
};
|
|
3991
|
-
}, []),
|
|
3980
|
+
}, []), D(() => {
|
|
3992
3981
|
const g = b.addMessageListener(
|
|
3993
3982
|
"SHELLUI_URL_CHANGED",
|
|
3994
3983
|
(p, l) => {
|
|
@@ -4012,7 +4001,7 @@ const jt = Ue("shellcore"), Qe = ({
|
|
|
4012
4001
|
return () => {
|
|
4013
4002
|
g();
|
|
4014
4003
|
};
|
|
4015
|
-
}, [n, i]),
|
|
4004
|
+
}, [n, i]), D(() => {
|
|
4016
4005
|
const g = b.addMessageListener(
|
|
4017
4006
|
"SHELLUI_INITIALIZED",
|
|
4018
4007
|
(p, l) => {
|
|
@@ -4020,15 +4009,15 @@ const jt = Ue("shellcore"), Qe = ({
|
|
|
4020
4009
|
}
|
|
4021
4010
|
);
|
|
4022
4011
|
return () => g();
|
|
4023
|
-
}, []),
|
|
4012
|
+
}, []), D(() => {
|
|
4024
4013
|
if (!d) return;
|
|
4025
4014
|
const g = setTimeout(() => {
|
|
4026
|
-
|
|
4015
|
+
$t.info("ContentView: Timeout expired, hiding loading overlay"), f(!1);
|
|
4027
4016
|
}, 400);
|
|
4028
4017
|
return () => clearTimeout(g);
|
|
4029
|
-
}, [d]),
|
|
4018
|
+
}, [d]), D(() => {
|
|
4030
4019
|
s.current && !c.current && s.current.src !== e && (s.current.src = e, f(!0));
|
|
4031
|
-
}, [e]),
|
|
4020
|
+
}, [e]), D(() => {
|
|
4032
4021
|
const g = s.current;
|
|
4033
4022
|
if (!g) return;
|
|
4034
4023
|
const p = () => {
|
|
@@ -4067,13 +4056,13 @@ const jt = Ue("shellcore"), Qe = ({
|
|
|
4067
4056
|
})();
|
|
4068
4057
|
`, m.head.appendChild(h);
|
|
4069
4058
|
} catch (l) {
|
|
4070
|
-
|
|
4059
|
+
$t.debug("Could not inject stylesheet wait script:", { error: l });
|
|
4071
4060
|
}
|
|
4072
4061
|
};
|
|
4073
4062
|
return g.addEventListener("load", p), g.contentDocument?.readyState === "complete" && p(), () => {
|
|
4074
4063
|
g.removeEventListener("load", p);
|
|
4075
4064
|
};
|
|
4076
|
-
}, [u]),
|
|
4065
|
+
}, [u]), D(() => {
|
|
4077
4066
|
if (process.env.NODE_ENV === "development") {
|
|
4078
4067
|
const g = console.warn;
|
|
4079
4068
|
return console.warn = (...p) => {
|
|
@@ -4100,16 +4089,16 @@ const jt = Ue("shellcore"), Qe = ({
|
|
|
4100
4089
|
referrerPolicy: "no-referrer-when-downgrade"
|
|
4101
4090
|
}
|
|
4102
4091
|
),
|
|
4103
|
-
d && /* @__PURE__ */ t(
|
|
4092
|
+
d && /* @__PURE__ */ t(ci, {})
|
|
4104
4093
|
] });
|
|
4105
|
-
},
|
|
4106
|
-
const r =
|
|
4094
|
+
}, di = ({ navigation: e }) => {
|
|
4095
|
+
const r = Ae().pathname, o = j(() => e.find((u) => {
|
|
4107
4096
|
const d = `/${u.path}`;
|
|
4108
4097
|
return r === d || r.startsWith(`${d}/`);
|
|
4109
4098
|
}), [e, r]);
|
|
4110
4099
|
if (!o)
|
|
4111
4100
|
return /* @__PURE__ */ t(
|
|
4112
|
-
|
|
4101
|
+
Xt,
|
|
4113
4102
|
{
|
|
4114
4103
|
to: "/",
|
|
4115
4104
|
replace: !0
|
|
@@ -4118,18 +4107,15 @@ const jt = Ue("shellcore"), Qe = ({
|
|
|
4118
4107
|
const i = `/${o.path}`, s = r.length > i.length ? r.slice(i.length + 1) : "";
|
|
4119
4108
|
let c = o.url;
|
|
4120
4109
|
return s && (c = `${o.url.endsWith("/") ? o.url : `${o.url}/`}${s}`), /* @__PURE__ */ t(
|
|
4121
|
-
|
|
4110
|
+
Xe,
|
|
4122
4111
|
{
|
|
4123
4112
|
url: c,
|
|
4124
4113
|
pathPrefix: o.path,
|
|
4125
4114
|
navItem: o
|
|
4126
4115
|
}
|
|
4127
4116
|
);
|
|
4128
|
-
},
|
|
4129
|
-
|
|
4130
|
-
ViewRoute: fi
|
|
4131
|
-
}, Symbol.toStringTag, { value: "Module" })), vi = (e) => e.length === 0 ? [] : e.flatMap((n) => "title" in n && "items" in n ? n.items : n), bi = () => {
|
|
4132
|
-
const { config: e } = K(), { i18n: n } = z(), r = n.language || "en", o = (c, u) => typeof c == "string" ? c : c[u] || c.en || c.fr || Object.values(c)[0] || "", i = e?.navigation && e.navigation.length > 0 ? vi(e.navigation).filter((c) => !c.hidden).filter((c, u, d) => u === d.findIndex((f) => f.path === c.path)) : [], s = (c) => {
|
|
4117
|
+
}, ui = (e) => e.length === 0 ? [] : e.flatMap((n) => "title" in n && "items" in n ? n.items : n), pi = () => {
|
|
4118
|
+
const { config: e } = K(), { i18n: n } = z(), r = n.language || "en", o = (c, u) => typeof c == "string" ? c : c[u] || c.en || c.fr || Object.values(c)[0] || "", i = e?.navigation && e.navigation.length > 0 ? ui(e.navigation).filter((c) => !c.hidden).filter((c, u, d) => u === d.findIndex((f) => f.path === c.path)) : [], s = (c) => {
|
|
4133
4119
|
b.navigate(c.startsWith("/") ? c : `/${c}`);
|
|
4134
4120
|
};
|
|
4135
4121
|
return /* @__PURE__ */ a("div", { className: "flex flex-col min-h-full", children: [
|
|
@@ -4171,33 +4157,30 @@ const jt = Ue("shellcore"), Qe = ({
|
|
|
4171
4157
|
}
|
|
4172
4158
|
) })
|
|
4173
4159
|
] });
|
|
4174
|
-
}
|
|
4175
|
-
|
|
4176
|
-
NotFoundView: bi
|
|
4177
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
4178
|
-
function wi(e) {
|
|
4160
|
+
};
|
|
4161
|
+
function gi(e) {
|
|
4179
4162
|
if (e instanceof Error) {
|
|
4180
4163
|
const n = e.message.toLowerCase();
|
|
4181
4164
|
return n.includes("loading dynamically imported module") || n.includes("chunk") || n.includes("failed to fetch dynamically imported module");
|
|
4182
4165
|
}
|
|
4183
4166
|
return !1;
|
|
4184
4167
|
}
|
|
4185
|
-
function
|
|
4186
|
-
return
|
|
4168
|
+
function mi(e) {
|
|
4169
|
+
return Wn(e) ? e.data?.message ?? e.statusText ?? "Something went wrong" : e instanceof Error ? e.message : String(e);
|
|
4187
4170
|
}
|
|
4188
|
-
function
|
|
4171
|
+
function fi(e) {
|
|
4189
4172
|
return e instanceof Error && e.stack ? e.stack : null;
|
|
4190
4173
|
}
|
|
4191
|
-
function
|
|
4192
|
-
const n =
|
|
4174
|
+
function hi(e) {
|
|
4175
|
+
const n = mi(e), r = fi(e);
|
|
4193
4176
|
return r ? `Message:
|
|
4194
4177
|
${n}
|
|
4195
4178
|
|
|
4196
4179
|
Stack:
|
|
4197
4180
|
${r}` : n;
|
|
4198
4181
|
}
|
|
4199
|
-
function
|
|
4200
|
-
const e =
|
|
4182
|
+
function vi() {
|
|
4183
|
+
const e = On(), { t: n } = z("common"), r = gi(e), o = hi(e);
|
|
4201
4184
|
return /* @__PURE__ */ t(
|
|
4202
4185
|
"div",
|
|
4203
4186
|
{
|
|
@@ -4236,7 +4219,7 @@ function Ci() {
|
|
|
4236
4219
|
}
|
|
4237
4220
|
);
|
|
4238
4221
|
}
|
|
4239
|
-
const
|
|
4222
|
+
const bi = (e) => {
|
|
4240
4223
|
if (!e || typeof e != "string")
|
|
4241
4224
|
return null;
|
|
4242
4225
|
try {
|
|
@@ -4252,19 +4235,19 @@ const Si = (e) => {
|
|
|
4252
4235
|
} catch (n) {
|
|
4253
4236
|
return console.error("Invalid URL:", e, n), null;
|
|
4254
4237
|
}
|
|
4255
|
-
},
|
|
4256
|
-
const e =
|
|
4238
|
+
}, hn = Ce(void 0), vn = () => {
|
|
4239
|
+
const e = Se(hn);
|
|
4257
4240
|
if (!e)
|
|
4258
4241
|
throw new Error("useModal must be used within a ModalProvider");
|
|
4259
4242
|
return e;
|
|
4260
|
-
},
|
|
4261
|
-
const [n, r] =
|
|
4262
|
-
const d = u ?
|
|
4243
|
+
}, yi = ({ children: e }) => {
|
|
4244
|
+
const [n, r] = _(!1), [o, i] = _(null), s = L((u) => {
|
|
4245
|
+
const d = u ? bi(u) : null;
|
|
4263
4246
|
i(d), r(!0);
|
|
4264
4247
|
}, []), c = L(() => {
|
|
4265
4248
|
r(!1), setTimeout(() => i(null), 200);
|
|
4266
4249
|
}, []);
|
|
4267
|
-
return
|
|
4250
|
+
return D(() => {
|
|
4268
4251
|
const u = b.addMessageListener(
|
|
4269
4252
|
"SHELLUI_OPEN_MODAL",
|
|
4270
4253
|
(f) => {
|
|
@@ -4277,8 +4260,8 @@ const Si = (e) => {
|
|
|
4277
4260
|
return () => {
|
|
4278
4261
|
u(), d();
|
|
4279
4262
|
};
|
|
4280
|
-
}, [s, c]), /* @__PURE__ */ t(
|
|
4281
|
-
},
|
|
4263
|
+
}, [s, c]), /* @__PURE__ */ t(hn.Provider, { value: { isOpen: n, modalUrl: o, openModal: s, closeModal: c }, children: e });
|
|
4264
|
+
}, wi = (e) => {
|
|
4282
4265
|
if (!e || typeof e != "string")
|
|
4283
4266
|
return null;
|
|
4284
4267
|
try {
|
|
@@ -4292,23 +4275,23 @@ const Si = (e) => {
|
|
|
4292
4275
|
} catch {
|
|
4293
4276
|
return null;
|
|
4294
4277
|
}
|
|
4295
|
-
},
|
|
4296
|
-
const e =
|
|
4278
|
+
}, jt = "right", bn = Ce(void 0), ki = () => {
|
|
4279
|
+
const e = Se(bn);
|
|
4297
4280
|
if (!e)
|
|
4298
4281
|
throw new Error("useDrawer must be used within a DrawerProvider");
|
|
4299
4282
|
return e;
|
|
4300
|
-
},
|
|
4301
|
-
const { closeModal: n } =
|
|
4283
|
+
}, xi = ({ children: e }) => {
|
|
4284
|
+
const { closeModal: n } = vn(), [r, o] = _(!1), [i, s] = _(null), [c, u] = _(jt), [d, f] = _(null), g = L(
|
|
4302
4285
|
(l) => {
|
|
4303
4286
|
n();
|
|
4304
|
-
const m = l?.url, h = m ?
|
|
4305
|
-
s(h), u(l?.position ??
|
|
4287
|
+
const m = l?.url, h = m ? wi(m) : null;
|
|
4288
|
+
s(h), u(l?.position ?? jt), f(l?.size ?? null), o(!0);
|
|
4306
4289
|
},
|
|
4307
4290
|
[n]
|
|
4308
4291
|
), p = L(() => {
|
|
4309
4292
|
o(!1);
|
|
4310
4293
|
}, []);
|
|
4311
|
-
return
|
|
4294
|
+
return D(() => {
|
|
4312
4295
|
const l = b.addMessageListener(
|
|
4313
4296
|
"SHELLUI_OPEN_DRAWER",
|
|
4314
4297
|
(h) => {
|
|
@@ -4321,8 +4304,8 @@ const Si = (e) => {
|
|
|
4321
4304
|
return () => {
|
|
4322
4305
|
l(), m();
|
|
4323
4306
|
};
|
|
4324
|
-
}, [g, p]), /* @__PURE__ */ t(
|
|
4325
|
-
},
|
|
4307
|
+
}, [g, p]), /* @__PURE__ */ t(bn.Provider, { value: { isOpen: r, drawerUrl: i, position: c, size: d, openDrawer: g, closeDrawer: p }, children: e });
|
|
4308
|
+
}, Ni = Ce(void 0), Ci = ({ children: e }) => {
|
|
4326
4309
|
const n = L((r) => {
|
|
4327
4310
|
const {
|
|
4328
4311
|
id: o,
|
|
@@ -4436,7 +4419,7 @@ const Si = (e) => {
|
|
|
4436
4419
|
break;
|
|
4437
4420
|
}
|
|
4438
4421
|
}, []);
|
|
4439
|
-
return
|
|
4422
|
+
return D(() => {
|
|
4440
4423
|
const r = b.addMessageListener("SHELLUI_TOAST", (i) => {
|
|
4441
4424
|
const s = i.payload;
|
|
4442
4425
|
n({
|
|
@@ -4522,12 +4505,12 @@ const Si = (e) => {
|
|
|
4522
4505
|
return () => {
|
|
4523
4506
|
r(), o();
|
|
4524
4507
|
};
|
|
4525
|
-
}, [n]), /* @__PURE__ */ t(
|
|
4508
|
+
}, [n]), /* @__PURE__ */ t(Ni.Provider, { value: { toast: n }, children: e });
|
|
4526
4509
|
};
|
|
4527
|
-
function
|
|
4528
|
-
return /* @__PURE__ */ t(
|
|
4510
|
+
function Et({ children: e }) {
|
|
4511
|
+
return /* @__PURE__ */ t(yi, { children: /* @__PURE__ */ t(xi, { children: /* @__PURE__ */ t(Ci, { children: e }) }) });
|
|
4529
4512
|
}
|
|
4530
|
-
const
|
|
4513
|
+
const Si = ae.Root, Ai = ae.Portal, yn = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
4531
4514
|
ae.Overlay,
|
|
4532
4515
|
{
|
|
4533
4516
|
ref: r,
|
|
@@ -4537,17 +4520,17 @@ const Di = ae.Root, _i = ae.Portal, kn = E(({ className: e, ...n }, r) => /* @__
|
|
|
4537
4520
|
...n
|
|
4538
4521
|
}
|
|
4539
4522
|
));
|
|
4540
|
-
|
|
4541
|
-
const
|
|
4523
|
+
yn.displayName = ae.Overlay.displayName;
|
|
4524
|
+
const wn = E(
|
|
4542
4525
|
({ className: e, children: n, onPointerDownOutside: r, hideCloseButton: o, ...i }, s) => {
|
|
4543
|
-
const c =
|
|
4526
|
+
const c = ot.count(n) > 2, u = L(
|
|
4544
4527
|
(d) => {
|
|
4545
4528
|
d?.target?.closest?.("[data-sonner-toaster]") && d.preventDefault(), r?.(d);
|
|
4546
4529
|
},
|
|
4547
4530
|
[r]
|
|
4548
4531
|
);
|
|
4549
|
-
return /* @__PURE__ */ a(
|
|
4550
|
-
/* @__PURE__ */ t(
|
|
4532
|
+
return /* @__PURE__ */ a(Ai, { children: [
|
|
4533
|
+
/* @__PURE__ */ t(yn, {}),
|
|
4551
4534
|
/* @__PURE__ */ a(
|
|
4552
4535
|
ae.Content,
|
|
4553
4536
|
{
|
|
@@ -4592,8 +4575,8 @@ const xn = E(
|
|
|
4592
4575
|
] });
|
|
4593
4576
|
}
|
|
4594
4577
|
);
|
|
4595
|
-
|
|
4596
|
-
const
|
|
4578
|
+
wn.displayName = ae.Content.displayName;
|
|
4579
|
+
const at = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
4597
4580
|
ae.Title,
|
|
4598
4581
|
{
|
|
4599
4582
|
ref: r,
|
|
@@ -4601,8 +4584,8 @@ const lt = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
|
4601
4584
|
...n
|
|
4602
4585
|
}
|
|
4603
4586
|
));
|
|
4604
|
-
|
|
4605
|
-
const
|
|
4587
|
+
at.displayName = ae.Title.displayName;
|
|
4588
|
+
const lt = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
4606
4589
|
ae.Description,
|
|
4607
4590
|
{
|
|
4608
4591
|
ref: r,
|
|
@@ -4610,8 +4593,8 @@ const ct = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
|
4610
4593
|
...n
|
|
4611
4594
|
}
|
|
4612
4595
|
));
|
|
4613
|
-
|
|
4614
|
-
const
|
|
4596
|
+
lt.displayName = ae.Description.displayName;
|
|
4597
|
+
const kn = ({
|
|
4615
4598
|
open: e,
|
|
4616
4599
|
onOpenChange: n,
|
|
4617
4600
|
direction: r = "right",
|
|
@@ -4625,12 +4608,12 @@ const Nn = ({
|
|
|
4625
4608
|
...o
|
|
4626
4609
|
}
|
|
4627
4610
|
);
|
|
4628
|
-
|
|
4629
|
-
const
|
|
4630
|
-
|
|
4631
|
-
const
|
|
4632
|
-
|
|
4633
|
-
const
|
|
4611
|
+
kn.displayName = "Drawer";
|
|
4612
|
+
const Fi = ie.Trigger;
|
|
4613
|
+
Fi.displayName = "DrawerTrigger";
|
|
4614
|
+
const xn = ie.Portal;
|
|
4615
|
+
xn.displayName = "DrawerPortal";
|
|
4616
|
+
const Nn = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
4634
4617
|
ie.Overlay,
|
|
4635
4618
|
{
|
|
4636
4619
|
ref: r,
|
|
@@ -4640,23 +4623,23 @@ const Sn = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
|
4640
4623
|
...n
|
|
4641
4624
|
}
|
|
4642
4625
|
));
|
|
4643
|
-
|
|
4644
|
-
const
|
|
4626
|
+
Nn.displayName = ie.Overlay.displayName;
|
|
4627
|
+
const Ti = {
|
|
4645
4628
|
bottom: "fixed inset-x-0 bottom-0 mt-24 flex h-auto flex-col border border-border bg-background",
|
|
4646
4629
|
top: "fixed inset-x-0 top-0 mb-24 flex h-auto flex-col border border-border bg-background",
|
|
4647
4630
|
left: "fixed inset-y-0 left-0 mr-24 flex h-full w-auto flex-col border border-border bg-background",
|
|
4648
4631
|
right: "fixed inset-y-0 right-0 ml-24 flex h-full w-auto flex-col border border-border bg-background"
|
|
4649
|
-
},
|
|
4632
|
+
}, Cn = E(
|
|
4650
4633
|
({ className: e, direction: n = "right", size: r, children: o, style: i, ...s }, c) => {
|
|
4651
4634
|
const u = n, d = u === "top" || u === "bottom", f = r?.trim() || (d ? "80vh" : "80vw"), g = d ? { height: f, maxHeight: f } : { width: f, maxWidth: f };
|
|
4652
|
-
return /* @__PURE__ */ a(
|
|
4653
|
-
/* @__PURE__ */ t(
|
|
4635
|
+
return /* @__PURE__ */ a(xn, { children: [
|
|
4636
|
+
/* @__PURE__ */ t(Nn, {}),
|
|
4654
4637
|
/* @__PURE__ */ a(
|
|
4655
4638
|
ie.Content,
|
|
4656
4639
|
{
|
|
4657
4640
|
ref: c,
|
|
4658
4641
|
"data-drawer-content": !0,
|
|
4659
|
-
className: x("outline-none",
|
|
4642
|
+
className: x("outline-none", Ti[u], e),
|
|
4660
4643
|
style: {
|
|
4661
4644
|
backgroundColor: "hsl(var(--background))",
|
|
4662
4645
|
zIndex: J.DRAWER_CONTENT,
|
|
@@ -4701,10 +4684,10 @@ const Pi = {
|
|
|
4701
4684
|
] });
|
|
4702
4685
|
}
|
|
4703
4686
|
);
|
|
4704
|
-
|
|
4705
|
-
const
|
|
4706
|
-
|
|
4707
|
-
const
|
|
4687
|
+
Cn.displayName = "DrawerContent";
|
|
4688
|
+
const Li = ie.Close;
|
|
4689
|
+
Li.displayName = "DrawerClose";
|
|
4690
|
+
const Ei = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
4708
4691
|
ie.Title,
|
|
4709
4692
|
{
|
|
4710
4693
|
ref: r,
|
|
@@ -4712,8 +4695,8 @@ const Wi = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
|
4712
4695
|
...n
|
|
4713
4696
|
}
|
|
4714
4697
|
));
|
|
4715
|
-
|
|
4716
|
-
const
|
|
4698
|
+
Ei.displayName = ie.Title.displayName;
|
|
4699
|
+
const Di = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
4717
4700
|
ie.Description,
|
|
4718
4701
|
{
|
|
4719
4702
|
ref: r,
|
|
@@ -4721,11 +4704,11 @@ const Mi = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
|
4721
4704
|
...n
|
|
4722
4705
|
}
|
|
4723
4706
|
));
|
|
4724
|
-
|
|
4725
|
-
const
|
|
4707
|
+
Di.displayName = ie.Description.displayName;
|
|
4708
|
+
const Ii = ({ ...e }) => {
|
|
4726
4709
|
const { settings: n } = q();
|
|
4727
4710
|
return /* @__PURE__ */ t(
|
|
4728
|
-
|
|
4711
|
+
Gn,
|
|
4729
4712
|
{
|
|
4730
4713
|
position: "top-center",
|
|
4731
4714
|
theme: n.appearance.theme,
|
|
@@ -4749,19 +4732,19 @@ const Bi = ({ ...e }) => {
|
|
|
4749
4732
|
);
|
|
4750
4733
|
};
|
|
4751
4734
|
function Dt({ navigationItems: e, children: n }) {
|
|
4752
|
-
const r =
|
|
4735
|
+
const r = gt(), { isOpen: o, modalUrl: i, closeModal: s } = vn(), {
|
|
4753
4736
|
isOpen: c,
|
|
4754
4737
|
drawerUrl: u,
|
|
4755
4738
|
position: d,
|
|
4756
4739
|
size: f,
|
|
4757
4740
|
closeDrawer: g
|
|
4758
|
-
} =
|
|
4759
|
-
return
|
|
4741
|
+
} = ki(), { t: p, i18n: l } = z("common"), m = l.language || "en";
|
|
4742
|
+
return D(() => {
|
|
4760
4743
|
const h = b.addMessageListener("SHELLUI_OPEN_MODAL", () => {
|
|
4761
4744
|
g();
|
|
4762
4745
|
});
|
|
4763
4746
|
return () => h();
|
|
4764
|
-
}, [g]),
|
|
4747
|
+
}, [g]), D(() => {
|
|
4765
4748
|
const h = b.addMessageListener("SHELLUI_NAVIGATE", (v) => {
|
|
4766
4749
|
const k = v.payload?.url;
|
|
4767
4750
|
if (typeof k != "string" || !k.trim()) return;
|
|
@@ -4786,23 +4769,23 @@ function Dt({ navigationItems: e, children: n }) {
|
|
|
4786
4769
|
}, [r, s, g, e, p]), /* @__PURE__ */ a(V, { children: [
|
|
4787
4770
|
n,
|
|
4788
4771
|
/* @__PURE__ */ t(
|
|
4789
|
-
|
|
4772
|
+
Si,
|
|
4790
4773
|
{
|
|
4791
4774
|
open: o,
|
|
4792
4775
|
onOpenChange: s,
|
|
4793
|
-
children: /* @__PURE__ */ t(
|
|
4794
|
-
/* @__PURE__ */ t(
|
|
4776
|
+
children: /* @__PURE__ */ t(wn, { className: "max-w-4xl w-full h-[80vh] max-h-[680px] flex flex-col p-0 overflow-hidden", children: i ? /* @__PURE__ */ a(V, { children: [
|
|
4777
|
+
/* @__PURE__ */ t(at, { className: "sr-only", children: pe(
|
|
4795
4778
|
e.find((h) => h.url === i)?.label,
|
|
4796
4779
|
m
|
|
4797
4780
|
) }),
|
|
4798
|
-
/* @__PURE__ */ t(
|
|
4781
|
+
/* @__PURE__ */ t(lt, { className: "sr-only", children: p("modalContent") ?? "Modal content" }),
|
|
4799
4782
|
/* @__PURE__ */ t(
|
|
4800
4783
|
"div",
|
|
4801
4784
|
{
|
|
4802
4785
|
className: "flex-1",
|
|
4803
4786
|
style: { minHeight: 0 },
|
|
4804
4787
|
children: /* @__PURE__ */ t(
|
|
4805
|
-
|
|
4788
|
+
Xe,
|
|
4806
4789
|
{
|
|
4807
4790
|
url: i,
|
|
4808
4791
|
pathPrefix: "settings",
|
|
@@ -4813,8 +4796,8 @@ function Dt({ navigationItems: e, children: n }) {
|
|
|
4813
4796
|
}
|
|
4814
4797
|
)
|
|
4815
4798
|
] }) : /* @__PURE__ */ a(V, { children: [
|
|
4816
|
-
/* @__PURE__ */ t(
|
|
4817
|
-
/* @__PURE__ */ t(
|
|
4799
|
+
/* @__PURE__ */ t(at, { className: "sr-only", children: "Error: Modal URL is undefined" }),
|
|
4800
|
+
/* @__PURE__ */ t(lt, { className: "sr-only", children: "The openModal function was called without a valid URL parameter." }),
|
|
4818
4801
|
/* @__PURE__ */ t("div", { className: "flex-1 p-4", children: /* @__PURE__ */ a("div", { className: "rounded-lg border border-destructive/50 bg-destructive/10 p-4", children: [
|
|
4819
4802
|
/* @__PURE__ */ t("h3", { className: "font-semibold text-destructive mb-2", children: "Error: Modal URL is undefined" }),
|
|
4820
4803
|
/* @__PURE__ */ a("p", { className: "text-sm text-muted-foreground", children: [
|
|
@@ -4828,19 +4811,19 @@ function Dt({ navigationItems: e, children: n }) {
|
|
|
4828
4811
|
}
|
|
4829
4812
|
),
|
|
4830
4813
|
/* @__PURE__ */ t(
|
|
4831
|
-
|
|
4814
|
+
kn,
|
|
4832
4815
|
{
|
|
4833
4816
|
open: c,
|
|
4834
4817
|
onOpenChange: (h) => !h && g(),
|
|
4835
4818
|
direction: d,
|
|
4836
4819
|
children: /* @__PURE__ */ t(
|
|
4837
|
-
|
|
4820
|
+
Cn,
|
|
4838
4821
|
{
|
|
4839
4822
|
direction: d,
|
|
4840
4823
|
size: f,
|
|
4841
4824
|
className: "p-0 overflow-hidden flex flex-col",
|
|
4842
4825
|
children: u ? /* @__PURE__ */ t("div", { className: "flex-1 min-h-0 flex flex-col", children: /* @__PURE__ */ t(
|
|
4843
|
-
|
|
4826
|
+
Xe,
|
|
4844
4827
|
{
|
|
4845
4828
|
url: u,
|
|
4846
4829
|
pathPrefix: "settings",
|
|
@@ -4860,21 +4843,21 @@ function Dt({ navigationItems: e, children: n }) {
|
|
|
4860
4843
|
)
|
|
4861
4844
|
}
|
|
4862
4845
|
),
|
|
4863
|
-
/* @__PURE__ */ t(
|
|
4846
|
+
/* @__PURE__ */ t(Ii, {})
|
|
4864
4847
|
] });
|
|
4865
4848
|
}
|
|
4866
|
-
const
|
|
4849
|
+
const Sn = (e) => {
|
|
4867
4850
|
try {
|
|
4868
4851
|
const r = new URL(e).hostname;
|
|
4869
4852
|
return r ? `https://icons.duckduckgo.com/ip3/${r}.ico` : null;
|
|
4870
4853
|
} catch {
|
|
4871
4854
|
return null;
|
|
4872
4855
|
}
|
|
4873
|
-
},
|
|
4856
|
+
}, Vt = ({
|
|
4874
4857
|
navigation: e
|
|
4875
4858
|
}) => {
|
|
4876
|
-
const n =
|
|
4877
|
-
const f = `/${d.path}`, g = d.openIn === "modal" || d.openIn === "drawer", p = d.openIn === "external", l = !g && !p && (n.pathname === f || n.pathname.startsWith(`${f}/`)), m = i(d.label, o), h = p && !d.icon ?
|
|
4859
|
+
const n = Ae(), { i18n: r } = z(), o = r.language || "en", i = (d, f) => typeof d == "string" ? d : d[f] || d.en || d.fr || Object.values(d)[0] || "", s = j(() => e.some((d) => "title" in d && "items" in d ? d.items.some((f) => !!f.icon) : !!d.icon), [e]), c = (d) => "title" in d && "items" in d, u = (d) => {
|
|
4860
|
+
const f = `/${d.path}`, g = d.openIn === "modal" || d.openIn === "drawer", p = d.openIn === "external", l = !g && !p && (n.pathname === f || n.pathname.startsWith(`${f}/`)), m = i(d.label, o), h = p && !d.icon ? Sn(d.url) : null, v = d.icon ?? h ?? null, w = v ? /* @__PURE__ */ t(
|
|
4878
4861
|
"img",
|
|
4879
4862
|
{
|
|
4880
4863
|
src: v,
|
|
@@ -4884,7 +4867,7 @@ const Fn = (e) => {
|
|
|
4884
4867
|
) : s ? /* @__PURE__ */ t("span", { className: "h-4 w-4 shrink-0" }) : null, T = /* @__PURE__ */ a(V, { children: [
|
|
4885
4868
|
w,
|
|
4886
4869
|
/* @__PURE__ */ t("span", { className: "truncate", children: m }),
|
|
4887
|
-
p ? /* @__PURE__ */ t(
|
|
4870
|
+
p ? /* @__PURE__ */ t(zi, { className: "ml-auto h-4 w-4 shrink-0 opacity-70" }) : null
|
|
4888
4871
|
] }), P = d.openIn === "modal" ? /* @__PURE__ */ t(
|
|
4889
4872
|
"button",
|
|
4890
4873
|
{
|
|
@@ -4911,7 +4894,7 @@ const Fn = (e) => {
|
|
|
4911
4894
|
children: T
|
|
4912
4895
|
}
|
|
4913
4896
|
) : /* @__PURE__ */ t(
|
|
4914
|
-
|
|
4897
|
+
Qe,
|
|
4915
4898
|
{
|
|
4916
4899
|
to: `/${d.path}`,
|
|
4917
4900
|
className: "flex items-center gap-2 w-full",
|
|
@@ -4919,7 +4902,7 @@ const Fn = (e) => {
|
|
|
4919
4902
|
}
|
|
4920
4903
|
);
|
|
4921
4904
|
return /* @__PURE__ */ t(
|
|
4922
|
-
|
|
4905
|
+
xt,
|
|
4923
4906
|
{
|
|
4924
4907
|
asChild: !0,
|
|
4925
4908
|
isActive: l,
|
|
@@ -4932,34 +4915,34 @@ const Fn = (e) => {
|
|
|
4932
4915
|
if (c(d)) {
|
|
4933
4916
|
const f = i(d.title, o);
|
|
4934
4917
|
return /* @__PURE__ */ a(
|
|
4935
|
-
|
|
4918
|
+
yt,
|
|
4936
4919
|
{
|
|
4937
4920
|
className: "mt-0",
|
|
4938
4921
|
children: [
|
|
4939
|
-
/* @__PURE__ */ t(
|
|
4940
|
-
/* @__PURE__ */ t(
|
|
4922
|
+
/* @__PURE__ */ t(wt, { className: "mb-1", children: f }),
|
|
4923
|
+
/* @__PURE__ */ t(kt, { children: /* @__PURE__ */ t(Ke, { className: "gap-0.5", children: d.items.map((g) => /* @__PURE__ */ t(qe, { children: u(g) }, g.path)) }) })
|
|
4941
4924
|
]
|
|
4942
4925
|
},
|
|
4943
4926
|
f
|
|
4944
4927
|
);
|
|
4945
4928
|
} else
|
|
4946
4929
|
return /* @__PURE__ */ t(
|
|
4947
|
-
|
|
4930
|
+
Ke,
|
|
4948
4931
|
{
|
|
4949
4932
|
className: "gap-0.5",
|
|
4950
|
-
children: /* @__PURE__ */ t(
|
|
4933
|
+
children: /* @__PURE__ */ t(qe, { children: u(d) })
|
|
4951
4934
|
},
|
|
4952
4935
|
d.path
|
|
4953
4936
|
);
|
|
4954
4937
|
}) });
|
|
4955
|
-
},
|
|
4938
|
+
}, Ri = ({
|
|
4956
4939
|
title: e,
|
|
4957
4940
|
logo: n,
|
|
4958
4941
|
startNav: r,
|
|
4959
4942
|
endItems: o
|
|
4960
4943
|
}) => /* @__PURE__ */ a(V, { children: [
|
|
4961
|
-
/* @__PURE__ */ t(
|
|
4962
|
-
|
|
4944
|
+
/* @__PURE__ */ t(an, { className: "border-b border-sidebar-border pb-4", children: (e || n) && /* @__PURE__ */ t(
|
|
4945
|
+
Qe,
|
|
4963
4946
|
{
|
|
4964
4947
|
to: "/",
|
|
4965
4948
|
className: "flex items-center pl-1 pr-3 py-2 text-lg font-semibold text-sidebar-foreground hover:text-sidebar-foreground/80 transition-colors",
|
|
@@ -4973,13 +4956,13 @@ const Fn = (e) => {
|
|
|
4973
4956
|
) : e ? /* @__PURE__ */ t("span", { className: "leading-none", children: e }) : null
|
|
4974
4957
|
}
|
|
4975
4958
|
) }),
|
|
4976
|
-
/* @__PURE__ */ t(
|
|
4977
|
-
o.length > 0 && /* @__PURE__ */ t(
|
|
4959
|
+
/* @__PURE__ */ t(bt, { className: "gap-1", children: /* @__PURE__ */ t(Vt, { navigation: r }) }),
|
|
4960
|
+
o.length > 0 && /* @__PURE__ */ t(ln, { children: /* @__PURE__ */ t(Vt, { navigation: o }) })
|
|
4978
4961
|
] });
|
|
4979
|
-
function
|
|
4962
|
+
function _i(e, n) {
|
|
4980
4963
|
return typeof e == "string" ? e : e[n] || e.en || e.fr || Object.values(e)[0] || "";
|
|
4981
4964
|
}
|
|
4982
|
-
const
|
|
4965
|
+
const Pi = 64, Gt = 4, Oi = 12, Wi = 6, Mi = (e) => e.startsWith("/icons/"), Bi = ({
|
|
4983
4966
|
item: e,
|
|
4984
4967
|
label: n,
|
|
4985
4968
|
isActive: r,
|
|
@@ -5029,14 +5012,14 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5029
5012
|
children: c
|
|
5030
5013
|
}
|
|
5031
5014
|
) : /* @__PURE__ */ t(
|
|
5032
|
-
|
|
5015
|
+
Qe,
|
|
5033
5016
|
{
|
|
5034
5017
|
to: s,
|
|
5035
5018
|
className: u,
|
|
5036
5019
|
children: c
|
|
5037
5020
|
}
|
|
5038
5021
|
);
|
|
5039
|
-
},
|
|
5022
|
+
}, zi = ({ className: e }) => /* @__PURE__ */ a(
|
|
5040
5023
|
"svg",
|
|
5041
5024
|
{
|
|
5042
5025
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5056,7 +5039,7 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5056
5039
|
/* @__PURE__ */ t("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
|
|
5057
5040
|
]
|
|
5058
5041
|
}
|
|
5059
|
-
),
|
|
5042
|
+
), Ui = ({ className: e }) => /* @__PURE__ */ t(
|
|
5060
5043
|
"svg",
|
|
5061
5044
|
{
|
|
5062
5045
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5072,7 +5055,7 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5072
5055
|
"aria-hidden": !0,
|
|
5073
5056
|
children: /* @__PURE__ */ t("path", { d: "m18 15-6-6-6 6" })
|
|
5074
5057
|
}
|
|
5075
|
-
),
|
|
5058
|
+
), Hi = ({ className: e }) => /* @__PURE__ */ t(
|
|
5076
5059
|
"svg",
|
|
5077
5060
|
{
|
|
5078
5061
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5088,7 +5071,7 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5088
5071
|
"aria-hidden": !0,
|
|
5089
5072
|
children: /* @__PURE__ */ t("path", { d: "m6 9 6 6 6-6" })
|
|
5090
5073
|
}
|
|
5091
|
-
),
|
|
5074
|
+
), $i = ({ className: e }) => /* @__PURE__ */ a(
|
|
5092
5075
|
"svg",
|
|
5093
5076
|
{
|
|
5094
5077
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5107,12 +5090,12 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5107
5090
|
/* @__PURE__ */ t("polyline", { points: "9 22 9 12 15 12 15 22" })
|
|
5108
5091
|
]
|
|
5109
5092
|
}
|
|
5110
|
-
),
|
|
5093
|
+
), ji = ({
|
|
5111
5094
|
items: e,
|
|
5112
5095
|
currentLanguage: n
|
|
5113
5096
|
}) => {
|
|
5114
|
-
const r =
|
|
5115
|
-
|
|
5097
|
+
const r = Ae(), [o, i] = _(!1), s = Z(null), [c, u] = _(0);
|
|
5098
|
+
pt(() => {
|
|
5116
5099
|
const l = s.current;
|
|
5117
5100
|
if (!l) return;
|
|
5118
5101
|
const m = new ResizeObserver((h) => {
|
|
@@ -5122,20 +5105,20 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5122
5105
|
return m.observe(l), u(l.getBoundingClientRect().width), () => m.disconnect();
|
|
5123
5106
|
}, []);
|
|
5124
5107
|
const { rowItems: d, overflowItems: f, hasMore: g } = j(() => {
|
|
5125
|
-
const l = e.slice(), m = Math.max(0, c -
|
|
5108
|
+
const l = e.slice(), m = Math.max(0, c - Oi * 2), h = Pi + Gt, v = c > 0 ? Math.floor((m + Gt) / h) : 5, w = Math.min(Math.max(0, v), Wi), k = w - 1, P = l.length <= k ? l.length : Math.max(0, w - 2), B = l.slice(0, P), U = new Set(B.map((Y) => Y.path)), H = l.filter((Y) => !U.has(Y.path));
|
|
5126
5109
|
return {
|
|
5127
5110
|
rowItems: B,
|
|
5128
5111
|
overflowItems: H,
|
|
5129
5112
|
hasMore: H.length > 0
|
|
5130
5113
|
};
|
|
5131
5114
|
}, [e, c]);
|
|
5132
|
-
|
|
5115
|
+
D(() => {
|
|
5133
5116
|
i(!1);
|
|
5134
5117
|
}, [r.pathname]);
|
|
5135
5118
|
const p = (l, m) => {
|
|
5136
|
-
const h = `/${l.path}`, w = !(l.openIn === "modal" || l.openIn === "drawer" || l.openIn === "external") && (r.pathname === h || r.pathname.startsWith(`${h}/`)), k = pe(l.label, n), T = l.openIn === "external" && !l.icon ?
|
|
5119
|
+
const h = `/${l.path}`, w = !(l.openIn === "modal" || l.openIn === "drawer" || l.openIn === "external") && (r.pathname === h || r.pathname.startsWith(`${h}/`)), k = pe(l.label, n), T = l.openIn === "external" && !l.icon ? Sn(l.url) : null, P = l.icon ?? T ?? null, B = P ? Mi(P) : !1;
|
|
5137
5120
|
return /* @__PURE__ */ t(
|
|
5138
|
-
|
|
5121
|
+
Bi,
|
|
5139
5122
|
{
|
|
5140
5123
|
item: l,
|
|
5141
5124
|
label: k,
|
|
@@ -5158,7 +5141,7 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5158
5141
|
children: [
|
|
5159
5142
|
/* @__PURE__ */ a("div", { className: "flex flex-row flex-nowrap items-center justify-center gap-1 px-3 overflow-x-hidden", children: [
|
|
5160
5143
|
/* @__PURE__ */ a(
|
|
5161
|
-
|
|
5144
|
+
Qe,
|
|
5162
5145
|
{
|
|
5163
5146
|
to: "/",
|
|
5164
5147
|
className: x(
|
|
@@ -5167,7 +5150,7 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5167
5150
|
),
|
|
5168
5151
|
"aria-label": "Home",
|
|
5169
5152
|
children: [
|
|
5170
|
-
/* @__PURE__ */ t("span", { className: "size-4 shrink-0 flex items-center justify-center [&_svg]:text-current", children: /* @__PURE__ */ t(
|
|
5153
|
+
/* @__PURE__ */ t("span", { className: "size-4 shrink-0 flex items-center justify-center [&_svg]:text-current", children: /* @__PURE__ */ t($i, { className: "size-4" }) }),
|
|
5171
5154
|
/* @__PURE__ */ t("span", { className: "text-[11px] leading-tight", children: "Home" })
|
|
5172
5155
|
]
|
|
5173
5156
|
}
|
|
@@ -5185,7 +5168,7 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5185
5168
|
"aria-expanded": o,
|
|
5186
5169
|
"aria-label": o ? "Show less" : "Show more",
|
|
5187
5170
|
children: [
|
|
5188
|
-
/* @__PURE__ */ t("span", { className: "size-4 shrink-0 flex items-center justify-center", children: o ? /* @__PURE__ */ t(
|
|
5171
|
+
/* @__PURE__ */ t("span", { className: "size-4 shrink-0 flex items-center justify-center", children: o ? /* @__PURE__ */ t(Hi, { className: "size-4" }) : /* @__PURE__ */ t(Ui, { className: "size-4" }) }),
|
|
5189
5172
|
/* @__PURE__ */ t("span", { className: "text-[11px] leading-tight", children: o ? "Less" : "More" })
|
|
5190
5173
|
]
|
|
5191
5174
|
}
|
|
@@ -5204,17 +5187,17 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5204
5187
|
]
|
|
5205
5188
|
}
|
|
5206
5189
|
);
|
|
5207
|
-
},
|
|
5208
|
-
const o =
|
|
5209
|
-
const g =
|
|
5190
|
+
}, Vi = ({ title: e, logo: n, navigation: r }) => {
|
|
5191
|
+
const o = Ae(), { i18n: i } = z(), s = i.language || "en", { startNav: c, endItems: u, navigationItems: d, mobileNavItems: f } = j(() => {
|
|
5192
|
+
const g = Ht(r, "desktop"), p = Ht(r, "mobile"), { start: l, end: m } = fn(g), h = Ne(g), v = Ne(p);
|
|
5210
5193
|
return {
|
|
5211
|
-
startNav:
|
|
5194
|
+
startNav: Zo(l),
|
|
5212
5195
|
endItems: m,
|
|
5213
5196
|
navigationItems: h,
|
|
5214
5197
|
mobileNavItems: v
|
|
5215
5198
|
};
|
|
5216
5199
|
}, [r]);
|
|
5217
|
-
return
|
|
5200
|
+
return D(() => {
|
|
5218
5201
|
if (!e) return;
|
|
5219
5202
|
const p = (o.pathname.replace(/^\/+|\/+$/g, "") || "").split("/")[0];
|
|
5220
5203
|
if (!p) {
|
|
@@ -5223,14 +5206,14 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5223
5206
|
}
|
|
5224
5207
|
const l = d.find((m) => m.path === p);
|
|
5225
5208
|
if (l) {
|
|
5226
|
-
const m =
|
|
5209
|
+
const m = _i(l.label, s);
|
|
5227
5210
|
document.title = `${m} | ${e}`;
|
|
5228
5211
|
} else
|
|
5229
5212
|
document.title = e;
|
|
5230
|
-
}, [o.pathname, e, d, s]), /* @__PURE__ */ t(
|
|
5213
|
+
}, [o.pathname, e, d, s]), /* @__PURE__ */ t(Et, { children: /* @__PURE__ */ t(sn, { children: /* @__PURE__ */ a(Dt, { navigationItems: d, children: [
|
|
5231
5214
|
/* @__PURE__ */ a("div", { className: "flex h-screen overflow-hidden", children: [
|
|
5232
|
-
/* @__PURE__ */ t(
|
|
5233
|
-
|
|
5215
|
+
/* @__PURE__ */ t(vt, { className: x("hidden md:flex shrink-0"), children: /* @__PURE__ */ t(
|
|
5216
|
+
Ri,
|
|
5234
5217
|
{
|
|
5235
5218
|
title: e,
|
|
5236
5219
|
logo: n,
|
|
@@ -5238,34 +5221,31 @@ const Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi
|
|
|
5238
5221
|
endItems: u
|
|
5239
5222
|
}
|
|
5240
5223
|
) }),
|
|
5241
|
-
/* @__PURE__ */ t("main", { className: "flex-1 flex flex-col overflow-hidden bg-background relative min-w-0", children: /* @__PURE__ */ t("div", { className: "flex-1 flex flex-col overflow-auto pb-16 md:pb-0", children: /* @__PURE__ */ t(
|
|
5224
|
+
/* @__PURE__ */ t("main", { className: "flex-1 flex flex-col overflow-hidden bg-background relative min-w-0", children: /* @__PURE__ */ t("div", { className: "flex-1 flex flex-col overflow-auto pb-16 md:pb-0", children: /* @__PURE__ */ t(mt, {}) }) })
|
|
5242
5225
|
] }),
|
|
5243
5226
|
/* @__PURE__ */ t(
|
|
5244
|
-
|
|
5227
|
+
ji,
|
|
5245
5228
|
{
|
|
5246
5229
|
items: f,
|
|
5247
5230
|
currentLanguage: s
|
|
5248
5231
|
}
|
|
5249
5232
|
)
|
|
5250
5233
|
] }) }) });
|
|
5251
|
-
},
|
|
5252
|
-
|
|
5234
|
+
}, Gi = ({ title: e, appIcon: n, logo: r, navigation: o }) => /* @__PURE__ */ t(
|
|
5235
|
+
Vi,
|
|
5253
5236
|
{
|
|
5254
5237
|
title: e,
|
|
5255
5238
|
appIcon: n,
|
|
5256
5239
|
logo: r,
|
|
5257
5240
|
navigation: o
|
|
5258
5241
|
}
|
|
5259
|
-
)
|
|
5260
|
-
|
|
5261
|
-
DefaultLayout: Qi
|
|
5262
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
5263
|
-
function ts(e, n) {
|
|
5242
|
+
);
|
|
5243
|
+
function Yi(e, n) {
|
|
5264
5244
|
return typeof e == "string" ? e : e[n] || e.en || e.fr || Object.values(e)[0] || "";
|
|
5265
5245
|
}
|
|
5266
|
-
function
|
|
5267
|
-
const r =
|
|
5268
|
-
return
|
|
5246
|
+
function Ki({ title: e, navigation: n }) {
|
|
5247
|
+
const r = Ae(), { i18n: o } = z(), i = o.language || "en", s = j(() => Ne(n), [n]);
|
|
5248
|
+
return D(() => {
|
|
5269
5249
|
if (!e) return;
|
|
5270
5250
|
const u = (r.pathname.replace(/^\/+|\/+$/g, "") || "").split("/")[0];
|
|
5271
5251
|
if (!u) {
|
|
@@ -5274,36 +5254,33 @@ function ns({ title: e, navigation: n }) {
|
|
|
5274
5254
|
}
|
|
5275
5255
|
const d = s.find((f) => f.path === u);
|
|
5276
5256
|
if (d) {
|
|
5277
|
-
const f =
|
|
5257
|
+
const f = Yi(d.label, i);
|
|
5278
5258
|
document.title = `${f} | ${e}`;
|
|
5279
5259
|
} else
|
|
5280
5260
|
document.title = e;
|
|
5281
|
-
}, [r.pathname, e, s, i]), /* @__PURE__ */ t(
|
|
5261
|
+
}, [r.pathname, e, s, i]), /* @__PURE__ */ t(Et, { children: /* @__PURE__ */ t(Dt, { navigationItems: s, children: /* @__PURE__ */ t("main", { className: "flex flex-col w-full h-screen overflow-hidden bg-background", children: /* @__PURE__ */ t(mt, {}) }) }) });
|
|
5282
5262
|
}
|
|
5283
|
-
const
|
|
5284
|
-
__proto__: null,
|
|
5285
|
-
FullscreenLayout: ns
|
|
5286
|
-
}, Symbol.toStringTag, { value: "Module" })), ot = (e) => {
|
|
5263
|
+
const rt = (e) => {
|
|
5287
5264
|
try {
|
|
5288
5265
|
const r = new URL(e).hostname;
|
|
5289
5266
|
return r ? `https://icons.duckduckgo.com/ip3/${r}.ico` : null;
|
|
5290
5267
|
} catch {
|
|
5291
5268
|
return null;
|
|
5292
5269
|
}
|
|
5293
|
-
},
|
|
5294
|
-
function
|
|
5270
|
+
}, Ge = (e) => e.startsWith("/icons/"), qi = () => `win-${Date.now()}-${Math.random().toString(36).slice(2)}`, Yt = 280, Kt = 200, Zi = 720, Ji = 480, ct = 48;
|
|
5271
|
+
function qt() {
|
|
5295
5272
|
return {
|
|
5296
5273
|
x: 0,
|
|
5297
5274
|
y: 0,
|
|
5298
5275
|
w: typeof window < "u" ? window.innerWidth : 800,
|
|
5299
|
-
h: typeof window < "u" ? window.innerHeight -
|
|
5276
|
+
h: typeof window < "u" ? window.innerHeight - ct : 600
|
|
5300
5277
|
};
|
|
5301
5278
|
}
|
|
5302
|
-
function
|
|
5279
|
+
function Xi(e, n, r) {
|
|
5303
5280
|
const o = `/${n}`, i = r.length > o.length ? r.slice(o.length + 1) : "";
|
|
5304
5281
|
return i ? `${e.endsWith("/") ? e : `${e}/`}${i}` : e;
|
|
5305
5282
|
}
|
|
5306
|
-
function
|
|
5283
|
+
function Qi({
|
|
5307
5284
|
win: e,
|
|
5308
5285
|
navItem: n,
|
|
5309
5286
|
currentLanguage: r,
|
|
@@ -5314,14 +5291,14 @@ function ls({
|
|
|
5314
5291
|
maxZIndex: u,
|
|
5315
5292
|
zIndex: d
|
|
5316
5293
|
}) {
|
|
5317
|
-
const f = pe(n.label, r), [g, p] =
|
|
5318
|
-
|
|
5294
|
+
const f = pe(n.label, r), [g, p] = _(e.bounds), [l, m] = _(!1), h = Z(g), v = Z(null), w = Z(null), k = Z(null), T = Z(null), P = Z(null);
|
|
5295
|
+
D(() => {
|
|
5319
5296
|
p(e.bounds);
|
|
5320
|
-
}, [e.bounds]),
|
|
5297
|
+
}, [e.bounds]), D(() => {
|
|
5321
5298
|
c(g);
|
|
5322
|
-
}, [g, c]),
|
|
5299
|
+
}, [g, c]), D(() => {
|
|
5323
5300
|
if (!l) return;
|
|
5324
|
-
const N = () => p(
|
|
5301
|
+
const N = () => p(qt());
|
|
5325
5302
|
return window.addEventListener("resize", N), () => window.removeEventListener("resize", N);
|
|
5326
5303
|
}, [l]);
|
|
5327
5304
|
const B = L((N) => {
|
|
@@ -5360,19 +5337,19 @@ function ls({
|
|
|
5360
5337
|
},
|
|
5361
5338
|
[g, l, i, B, U]
|
|
5362
5339
|
), Y = L(() => {
|
|
5363
|
-
l ? (p(h.current), m(!1)) : (h.current = { ...g }, p(
|
|
5340
|
+
l ? (p(h.current), m(!1)) : (h.current = { ...g }, p(qt()), m(!0));
|
|
5364
5341
|
}, [l, g]), C = L((N) => {
|
|
5365
5342
|
if (!k.current) return;
|
|
5366
|
-
const { edge: F, startX: $, startY: ge, startBounds: ee } = k.current, Rt = N.clientX - $,
|
|
5367
|
-
if (F.includes("e") && (
|
|
5368
|
-
const me = Math.max(
|
|
5369
|
-
|
|
5343
|
+
const { edge: F, startX: $, startY: ge, startBounds: ee } = k.current, Rt = N.clientX - $, _t = N.clientY - ge, ke = { ...ee };
|
|
5344
|
+
if (F.includes("e") && (ke.w = Math.max(Yt, ee.w + Rt)), F.includes("w")) {
|
|
5345
|
+
const me = Math.max(Yt, ee.w - Rt);
|
|
5346
|
+
ke.x = ee.x + ee.w - me, ke.w = me;
|
|
5370
5347
|
}
|
|
5371
|
-
if (F.includes("s") && (
|
|
5372
|
-
const me = Math.max(
|
|
5373
|
-
|
|
5348
|
+
if (F.includes("s") && (ke.h = Math.max(Kt, ee.h + _t)), F.includes("n")) {
|
|
5349
|
+
const me = Math.max(Kt, ee.h - _t);
|
|
5350
|
+
ke.y = ee.y + ee.h - me, ke.h = me;
|
|
5374
5351
|
}
|
|
5375
|
-
P.current =
|
|
5352
|
+
P.current = ke, T.current === null && (T.current = requestAnimationFrame(() => {
|
|
5376
5353
|
const me = P.current;
|
|
5377
5354
|
T.current = null, P.current = null, me && p(me);
|
|
5378
5355
|
}));
|
|
@@ -5398,9 +5375,9 @@ function ls({
|
|
|
5398
5375
|
},
|
|
5399
5376
|
[g, i, C, W]
|
|
5400
5377
|
), A = j(
|
|
5401
|
-
() =>
|
|
5378
|
+
() => Xi(e.baseUrl, e.path, e.pathname),
|
|
5402
5379
|
[e.baseUrl, e.path, e.pathname]
|
|
5403
|
-
),
|
|
5380
|
+
), I = o ? u : d;
|
|
5404
5381
|
return /* @__PURE__ */ a(
|
|
5405
5382
|
"div",
|
|
5406
5383
|
{
|
|
@@ -5411,7 +5388,7 @@ function ls({
|
|
|
5411
5388
|
top: g.y,
|
|
5412
5389
|
width: g.w,
|
|
5413
5390
|
height: g.h,
|
|
5414
|
-
zIndex:
|
|
5391
|
+
zIndex: I
|
|
5415
5392
|
},
|
|
5416
5393
|
onClick: i,
|
|
5417
5394
|
onMouseDown: i,
|
|
@@ -5429,7 +5406,7 @@ function ls({
|
|
|
5429
5406
|
alt: "",
|
|
5430
5407
|
className: x(
|
|
5431
5408
|
"h-4 w-4 shrink-0 rounded-sm object-cover",
|
|
5432
|
-
|
|
5409
|
+
Ge(e.icon) && "opacity-90 dark:opacity-100 dark:invert"
|
|
5433
5410
|
)
|
|
5434
5411
|
}
|
|
5435
5412
|
),
|
|
@@ -5443,7 +5420,7 @@ function ls({
|
|
|
5443
5420
|
},
|
|
5444
5421
|
className: "p-1 rounded cursor-pointer text-muted-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
5445
5422
|
"aria-label": l ? "Restore" : "Maximize",
|
|
5446
|
-
children: l ? /* @__PURE__ */ t(
|
|
5423
|
+
children: l ? /* @__PURE__ */ t(ts, { className: "h-4 w-4" }) : /* @__PURE__ */ t(es, { className: "h-4 w-4" })
|
|
5447
5424
|
}
|
|
5448
5425
|
),
|
|
5449
5426
|
/* @__PURE__ */ t(
|
|
@@ -5455,7 +5432,7 @@ function ls({
|
|
|
5455
5432
|
},
|
|
5456
5433
|
className: "p-1 rounded cursor-pointer text-muted-foreground hover:bg-destructive/20 hover:text-destructive transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
5457
5434
|
"aria-label": "Close",
|
|
5458
|
-
children: /* @__PURE__ */ t(
|
|
5435
|
+
children: /* @__PURE__ */ t(ns, { className: "h-4 w-4" })
|
|
5459
5436
|
}
|
|
5460
5437
|
)
|
|
5461
5438
|
]
|
|
@@ -5474,7 +5451,7 @@ function ls({
|
|
|
5474
5451
|
}
|
|
5475
5452
|
),
|
|
5476
5453
|
/* @__PURE__ */ t(
|
|
5477
|
-
|
|
5454
|
+
Xe,
|
|
5478
5455
|
{
|
|
5479
5456
|
url: A,
|
|
5480
5457
|
pathPrefix: e.path,
|
|
@@ -5510,7 +5487,7 @@ function ls({
|
|
|
5510
5487
|
}
|
|
5511
5488
|
);
|
|
5512
5489
|
}
|
|
5513
|
-
function
|
|
5490
|
+
function es({ className: e }) {
|
|
5514
5491
|
return /* @__PURE__ */ a(
|
|
5515
5492
|
"svg",
|
|
5516
5493
|
{
|
|
@@ -5534,7 +5511,7 @@ function cs({ className: e }) {
|
|
|
5534
5511
|
}
|
|
5535
5512
|
);
|
|
5536
5513
|
}
|
|
5537
|
-
function
|
|
5514
|
+
function ts({ className: e }) {
|
|
5538
5515
|
return /* @__PURE__ */ a(
|
|
5539
5516
|
"svg",
|
|
5540
5517
|
{
|
|
@@ -5574,7 +5551,7 @@ function ds({ className: e }) {
|
|
|
5574
5551
|
}
|
|
5575
5552
|
);
|
|
5576
5553
|
}
|
|
5577
|
-
function
|
|
5554
|
+
function ns({ className: e }) {
|
|
5578
5555
|
return /* @__PURE__ */ a(
|
|
5579
5556
|
"svg",
|
|
5580
5557
|
{
|
|
@@ -5596,7 +5573,7 @@ function us({ className: e }) {
|
|
|
5596
5573
|
}
|
|
5597
5574
|
);
|
|
5598
5575
|
}
|
|
5599
|
-
function
|
|
5576
|
+
function rs({ className: e }) {
|
|
5600
5577
|
return /* @__PURE__ */ t(
|
|
5601
5578
|
"svg",
|
|
5602
5579
|
{
|
|
@@ -5611,24 +5588,24 @@ function ps({ className: e }) {
|
|
|
5611
5588
|
}
|
|
5612
5589
|
);
|
|
5613
5590
|
}
|
|
5614
|
-
function
|
|
5591
|
+
function os() {
|
|
5615
5592
|
return typeof window < "u" && Intl.DateTimeFormat ? Intl.DateTimeFormat().resolvedOptions().timeZone : "UTC";
|
|
5616
5593
|
}
|
|
5617
|
-
function
|
|
5594
|
+
function is({
|
|
5618
5595
|
title: e,
|
|
5619
5596
|
appIcon: n,
|
|
5620
5597
|
logo: r,
|
|
5621
5598
|
navigation: o
|
|
5622
5599
|
}) {
|
|
5623
|
-
const { i18n: i } = z(), { settings: s } = q(), c = i.language || "en", u = s.region?.timezone ??
|
|
5624
|
-
const { start: y, end: A } =
|
|
5600
|
+
const { i18n: i } = z(), { settings: s } = q(), c = i.language || "en", u = s.region?.timezone ?? os(), { startNavItems: d, endNavItems: f, navigationItems: g } = j(() => {
|
|
5601
|
+
const { start: y, end: A } = fn(o);
|
|
5625
5602
|
return {
|
|
5626
|
-
startNavItems:
|
|
5603
|
+
startNavItems: Ne(y),
|
|
5627
5604
|
endNavItems: A,
|
|
5628
|
-
navigationItems:
|
|
5605
|
+
navigationItems: Ne(o)
|
|
5629
5606
|
};
|
|
5630
|
-
}, [o]), [p, l] =
|
|
5631
|
-
|
|
5607
|
+
}, [o]), [p, l] = _([]), [m, h] = _(null), [v, w] = _(!1), [k, T] = _(() => /* @__PURE__ */ new Date()), P = Z(null);
|
|
5608
|
+
D(() => {
|
|
5632
5609
|
const y = setInterval(() => T(/* @__PURE__ */ new Date()), 1e3);
|
|
5633
5610
|
return () => clearInterval(y);
|
|
5634
5611
|
}, []);
|
|
@@ -5637,11 +5614,11 @@ function ms({
|
|
|
5637
5614
|
[p.length]
|
|
5638
5615
|
), U = L(
|
|
5639
5616
|
(y) => {
|
|
5640
|
-
const A = typeof y.label == "string" ? y.label : pe(y.label, c),
|
|
5617
|
+
const A = typeof y.label == "string" ? y.label : pe(y.label, c), I = y.openIn === "external" && !y.icon ? rt(y.url) : null, N = y.icon ?? I ?? null, F = qi(), $ = {
|
|
5641
5618
|
x: 60 + p.length * 24,
|
|
5642
5619
|
y: 60 + p.length * 24,
|
|
5643
|
-
w:
|
|
5644
|
-
h:
|
|
5620
|
+
w: Zi,
|
|
5621
|
+
h: Ji
|
|
5645
5622
|
};
|
|
5646
5623
|
l((ge) => [
|
|
5647
5624
|
...ge,
|
|
@@ -5658,9 +5635,9 @@ function ms({
|
|
|
5658
5635
|
},
|
|
5659
5636
|
[c, p.length]
|
|
5660
5637
|
), H = L((y) => {
|
|
5661
|
-
l((A) => A.filter((
|
|
5638
|
+
l((A) => A.filter((I) => I.id !== y)), h((A) => A === y ? null : A);
|
|
5662
5639
|
}, []);
|
|
5663
|
-
|
|
5640
|
+
D(() => {
|
|
5664
5641
|
if (p.length === 0) {
|
|
5665
5642
|
h(null);
|
|
5666
5643
|
return;
|
|
@@ -5670,9 +5647,9 @@ function ms({
|
|
|
5670
5647
|
const Y = L((y) => {
|
|
5671
5648
|
h(y);
|
|
5672
5649
|
}, []), C = L((y, A) => {
|
|
5673
|
-
l((
|
|
5650
|
+
l((I) => I.map((N) => N.id === y ? { ...N, bounds: A } : N));
|
|
5674
5651
|
}, []);
|
|
5675
|
-
|
|
5652
|
+
D(() => {
|
|
5676
5653
|
if (!v) return;
|
|
5677
5654
|
const y = (A) => {
|
|
5678
5655
|
P.current && !P.current.contains(A.target) && w(!1);
|
|
@@ -5697,21 +5674,21 @@ function ms({
|
|
|
5697
5674
|
},
|
|
5698
5675
|
[U]
|
|
5699
5676
|
);
|
|
5700
|
-
return /* @__PURE__ */ t(
|
|
5677
|
+
return /* @__PURE__ */ t(Et, { children: /* @__PURE__ */ a(Dt, { navigationItems: g, children: [
|
|
5701
5678
|
/* @__PURE__ */ t(
|
|
5702
5679
|
"div",
|
|
5703
5680
|
{
|
|
5704
5681
|
className: "fixed inset-0 bg-muted/30",
|
|
5705
|
-
style: { paddingBottom:
|
|
5682
|
+
style: { paddingBottom: ct },
|
|
5706
5683
|
children: p.map((y, A) => {
|
|
5707
|
-
const
|
|
5708
|
-
if (!
|
|
5684
|
+
const I = g.find(($) => $.path === y.path);
|
|
5685
|
+
if (!I) return null;
|
|
5709
5686
|
const N = y.id === m, F = J.WINDOWS_WINDOW_BASE + A;
|
|
5710
5687
|
return /* @__PURE__ */ t(
|
|
5711
|
-
|
|
5688
|
+
Qi,
|
|
5712
5689
|
{
|
|
5713
5690
|
win: y,
|
|
5714
|
-
navItem:
|
|
5691
|
+
navItem: I,
|
|
5715
5692
|
currentLanguage: c,
|
|
5716
5693
|
isFocused: N,
|
|
5717
5694
|
onFocus: () => Y(y.id),
|
|
@@ -5730,7 +5707,7 @@ function ms({
|
|
|
5730
5707
|
{
|
|
5731
5708
|
className: "fixed left-0 right-0 bottom-0 flex items-center gap-1 px-2 border-t border-border bg-sidebar-background",
|
|
5732
5709
|
style: {
|
|
5733
|
-
height:
|
|
5710
|
+
height: ct,
|
|
5734
5711
|
zIndex: J.WINDOWS_TASKBAR,
|
|
5735
5712
|
paddingBottom: "env(safe-area-inset-bottom, 0px)"
|
|
5736
5713
|
},
|
|
@@ -5754,7 +5731,7 @@ function ms({
|
|
|
5754
5731
|
"aria-haspopup": "true",
|
|
5755
5732
|
"aria-label": "Start",
|
|
5756
5733
|
children: [
|
|
5757
|
-
/* @__PURE__ */ t(
|
|
5734
|
+
/* @__PURE__ */ t(rs, { className: "h-5 w-5" }),
|
|
5758
5735
|
/* @__PURE__ */ t("span", { className: "font-semibold text-sm hidden sm:inline", children: e || "Start" })
|
|
5759
5736
|
]
|
|
5760
5737
|
}
|
|
@@ -5767,7 +5744,7 @@ function ms({
|
|
|
5767
5744
|
children: [
|
|
5768
5745
|
/* @__PURE__ */ t("div", { className: "px-2 pb-2 border-b border-border mb-2", children: /* @__PURE__ */ t("span", { className: "text-sm font-semibold text-popover-foreground", children: e || "Applications" }) }),
|
|
5769
5746
|
/* @__PURE__ */ t("div", { className: "grid gap-0.5", children: d.filter((y) => !y.hidden).map((y) => {
|
|
5770
|
-
const A = typeof y.label == "string" ? y.label : pe(y.label, c),
|
|
5747
|
+
const A = typeof y.label == "string" ? y.label : pe(y.label, c), I = y.icon ?? (y.openIn === "external" ? rt(y.url) : null);
|
|
5771
5748
|
return /* @__PURE__ */ a(
|
|
5772
5749
|
"button",
|
|
5773
5750
|
{
|
|
@@ -5775,14 +5752,14 @@ function ms({
|
|
|
5775
5752
|
onClick: () => W(y),
|
|
5776
5753
|
className: "flex items-center gap-3 w-full px-3 py-2 text-left text-sm cursor-pointer text-popover-foreground hover:bg-accent hover:text-accent-foreground rounded-none transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
5777
5754
|
children: [
|
|
5778
|
-
|
|
5755
|
+
I ? /* @__PURE__ */ t(
|
|
5779
5756
|
"img",
|
|
5780
5757
|
{
|
|
5781
|
-
src:
|
|
5758
|
+
src: I,
|
|
5782
5759
|
alt: "",
|
|
5783
5760
|
className: x(
|
|
5784
5761
|
"h-5 w-5 shrink-0 rounded-sm object-cover",
|
|
5785
|
-
|
|
5762
|
+
Ge(I) && "opacity-90 dark:opacity-100 dark:invert"
|
|
5786
5763
|
)
|
|
5787
5764
|
}
|
|
5788
5765
|
) : /* @__PURE__ */ t("span", { className: "h-5 w-5 shrink-0 rounded-sm bg-muted" }),
|
|
@@ -5799,7 +5776,7 @@ function ms({
|
|
|
5799
5776
|
}
|
|
5800
5777
|
),
|
|
5801
5778
|
/* @__PURE__ */ t("div", { className: "flex-1 flex items-center gap-1 min-w-0 overflow-x-auto", children: p.map((y) => {
|
|
5802
|
-
const A = g.find((F) => F.path === y.path),
|
|
5779
|
+
const A = g.find((F) => F.path === y.path), I = A ? pe(A.label, c) : y.label, N = y.id === m;
|
|
5803
5780
|
return /* @__PURE__ */ a(
|
|
5804
5781
|
"button",
|
|
5805
5782
|
{
|
|
@@ -5812,7 +5789,7 @@ function ms({
|
|
|
5812
5789
|
"flex items-center gap-2 h-8 px-2 rounded min-w-0 max-w-[140px] shrink-0 cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
5813
5790
|
N ? "bg-sidebar-accent text-sidebar-accent-foreground" : "text-sidebar-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-foreground"
|
|
5814
5791
|
),
|
|
5815
|
-
title:
|
|
5792
|
+
title: I,
|
|
5816
5793
|
children: [
|
|
5817
5794
|
y.icon ? /* @__PURE__ */ t(
|
|
5818
5795
|
"img",
|
|
@@ -5821,18 +5798,18 @@ function ms({
|
|
|
5821
5798
|
alt: "",
|
|
5822
5799
|
className: x(
|
|
5823
5800
|
"h-4 w-4 shrink-0 rounded-sm object-cover",
|
|
5824
|
-
|
|
5801
|
+
Ge(y.icon) && "opacity-90 dark:opacity-100 dark:invert"
|
|
5825
5802
|
)
|
|
5826
5803
|
}
|
|
5827
5804
|
) : /* @__PURE__ */ t("span", { className: "h-4 w-4 shrink-0 rounded-sm bg-muted" }),
|
|
5828
|
-
/* @__PURE__ */ t("span", { className: "text-xs truncate", children:
|
|
5805
|
+
/* @__PURE__ */ t("span", { className: "text-xs truncate", children: I })
|
|
5829
5806
|
]
|
|
5830
5807
|
},
|
|
5831
5808
|
y.id
|
|
5832
5809
|
);
|
|
5833
5810
|
}) }),
|
|
5834
5811
|
f.length > 0 && /* @__PURE__ */ t("div", { className: "flex items-center gap-0.5 shrink-0 border-l border-sidebar-border pl-2 ml-1", children: f.map((y) => {
|
|
5835
|
-
const A = typeof y.label == "string" ? y.label : pe(y.label, c),
|
|
5812
|
+
const A = typeof y.label == "string" ? y.label : pe(y.label, c), I = y.icon ?? (y.openIn === "external" ? rt(y.url) : null);
|
|
5836
5813
|
return /* @__PURE__ */ a(
|
|
5837
5814
|
"button",
|
|
5838
5815
|
{
|
|
@@ -5841,14 +5818,14 @@ function ms({
|
|
|
5841
5818
|
className: "flex items-center gap-2 h-8 px-2 rounded cursor-pointer text-sidebar-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
5842
5819
|
title: A,
|
|
5843
5820
|
children: [
|
|
5844
|
-
|
|
5821
|
+
I ? /* @__PURE__ */ t(
|
|
5845
5822
|
"img",
|
|
5846
5823
|
{
|
|
5847
|
-
src:
|
|
5824
|
+
src: I,
|
|
5848
5825
|
alt: "",
|
|
5849
5826
|
className: x(
|
|
5850
5827
|
"h-4 w-4 shrink-0 rounded-sm object-cover",
|
|
5851
|
-
|
|
5828
|
+
Ge(I) && "opacity-90 dark:opacity-100 dark:invert"
|
|
5852
5829
|
)
|
|
5853
5830
|
}
|
|
5854
5831
|
) : /* @__PURE__ */ t("span", { className: "h-4 w-4 shrink-0 rounded-sm bg-muted" }),
|
|
@@ -5905,17 +5882,8 @@ function ms({
|
|
|
5905
5882
|
)
|
|
5906
5883
|
] }) });
|
|
5907
5884
|
}
|
|
5908
|
-
const
|
|
5909
|
-
|
|
5910
|
-
WindowsLayout: ms
|
|
5911
|
-
}, Symbol.toStringTag, { value: "Module" })), hs = ke(
|
|
5912
|
-
() => Promise.resolve(es).then((e) => ({ default: e.DefaultLayout }))
|
|
5913
|
-
), vs = ke(
|
|
5914
|
-
() => Promise.resolve(rs).then((e) => ({ default: e.FullscreenLayout }))
|
|
5915
|
-
), bs = ke(
|
|
5916
|
-
() => Promise.resolve(fs).then((e) => ({ default: e.WindowsLayout }))
|
|
5917
|
-
);
|
|
5918
|
-
function ys() {
|
|
5885
|
+
const ss = Gi, as = Ki, ls = is;
|
|
5886
|
+
function cs() {
|
|
5919
5887
|
return /* @__PURE__ */ t(
|
|
5920
5888
|
"div",
|
|
5921
5889
|
{
|
|
@@ -5924,31 +5892,19 @@ function ys() {
|
|
|
5924
5892
|
}
|
|
5925
5893
|
);
|
|
5926
5894
|
}
|
|
5927
|
-
function
|
|
5895
|
+
function ds({
|
|
5928
5896
|
layout: e = "sidebar",
|
|
5929
5897
|
title: n,
|
|
5930
5898
|
appIcon: r,
|
|
5931
5899
|
logo: o,
|
|
5932
5900
|
navigation: i
|
|
5933
5901
|
}) {
|
|
5934
|
-
const { settings: s } =
|
|
5902
|
+
const { settings: s } = vr(), c = s.layout ?? e;
|
|
5935
5903
|
let u, d;
|
|
5936
|
-
return c === "fullscreen" ? (u =
|
|
5904
|
+
return c === "fullscreen" ? (u = as, d = { title: n, navigation: i }) : c === "windows" ? (u = ls, d = { title: n, appIcon: r, logo: o, navigation: i }) : (u = ss, d = { title: n, appIcon: r, logo: o, navigation: i }), /* @__PURE__ */ t(Le, { fallback: /* @__PURE__ */ t(cs, {}), children: /* @__PURE__ */ t(u, { ...d }) });
|
|
5937
5905
|
}
|
|
5938
|
-
const
|
|
5939
|
-
|
|
5940
|
-
), xs = ke(
|
|
5941
|
-
() => Promise.resolve(ci).then((e) => ({ default: e.SettingsView }))
|
|
5942
|
-
), Ns = ke(
|
|
5943
|
-
() => Promise.resolve(gi).then((e) => ({
|
|
5944
|
-
default: e.CookiePreferencesView
|
|
5945
|
-
}))
|
|
5946
|
-
), Cs = ke(
|
|
5947
|
-
() => Promise.resolve(hi).then((e) => ({ default: e.ViewRoute }))
|
|
5948
|
-
), Ss = ke(
|
|
5949
|
-
() => Promise.resolve(yi).then((e) => ({ default: e.NotFoundView }))
|
|
5950
|
-
);
|
|
5951
|
-
function Pe() {
|
|
5906
|
+
const us = Kn, ps = ii, gs = li, ms = di, fs = pi;
|
|
5907
|
+
function _e() {
|
|
5952
5908
|
return /* @__PURE__ */ t(
|
|
5953
5909
|
"div",
|
|
5954
5910
|
{
|
|
@@ -5957,33 +5913,33 @@ function Pe() {
|
|
|
5957
5913
|
}
|
|
5958
5914
|
);
|
|
5959
5915
|
}
|
|
5960
|
-
const
|
|
5916
|
+
const hs = (e) => {
|
|
5961
5917
|
const n = [
|
|
5962
5918
|
{
|
|
5963
5919
|
path: "/",
|
|
5964
|
-
element: /* @__PURE__ */ t(
|
|
5965
|
-
errorElement: /* @__PURE__ */ t(
|
|
5920
|
+
element: /* @__PURE__ */ t(mt, {}),
|
|
5921
|
+
errorElement: /* @__PURE__ */ t(vi, {}),
|
|
5966
5922
|
children: [
|
|
5967
5923
|
{
|
|
5968
5924
|
// Settings route (if configured)
|
|
5969
5925
|
path: `${se.settings.replace(/^\//, "")}/*`,
|
|
5970
|
-
element: /* @__PURE__ */ t(
|
|
5926
|
+
element: /* @__PURE__ */ t(Le, { fallback: /* @__PURE__ */ t(_e, {}), children: /* @__PURE__ */ t(ps, {}) })
|
|
5971
5927
|
},
|
|
5972
5928
|
{
|
|
5973
5929
|
// Cookie preferences route
|
|
5974
5930
|
path: se.cookiePreferences.replace(/^\//, ""),
|
|
5975
|
-
element: /* @__PURE__ */ t(
|
|
5931
|
+
element: /* @__PURE__ */ t(Le, { fallback: /* @__PURE__ */ t(_e, {}), children: /* @__PURE__ */ t(gs, {}) })
|
|
5976
5932
|
},
|
|
5977
5933
|
{
|
|
5978
5934
|
// Catch-all route
|
|
5979
5935
|
path: "*",
|
|
5980
|
-
element: /* @__PURE__ */ t(
|
|
5936
|
+
element: /* @__PURE__ */ t(Le, { fallback: /* @__PURE__ */ t(_e, {}), children: /* @__PURE__ */ t(fs, {}) })
|
|
5981
5937
|
}
|
|
5982
5938
|
]
|
|
5983
5939
|
}
|
|
5984
5940
|
], r = {
|
|
5985
5941
|
element: /* @__PURE__ */ t(
|
|
5986
|
-
|
|
5942
|
+
ds,
|
|
5987
5943
|
{
|
|
5988
5944
|
layout: e.layout,
|
|
5989
5945
|
title: e.title,
|
|
@@ -5995,40 +5951,40 @@ const As = (e) => {
|
|
|
5995
5951
|
children: [
|
|
5996
5952
|
{
|
|
5997
5953
|
path: "/",
|
|
5998
|
-
element: /* @__PURE__ */ t(
|
|
5954
|
+
element: /* @__PURE__ */ t(Le, { fallback: /* @__PURE__ */ t(_e, {}), children: /* @__PURE__ */ t(us, {}) })
|
|
5999
5955
|
}
|
|
6000
5956
|
]
|
|
6001
5957
|
};
|
|
6002
5958
|
if (e.navigation && e.navigation.length > 0) {
|
|
6003
|
-
const o =
|
|
5959
|
+
const o = Ne(e.navigation);
|
|
6004
5960
|
o.forEach((i) => {
|
|
6005
5961
|
r.children.push({
|
|
6006
5962
|
path: `/${i.path}/*`,
|
|
6007
|
-
element: /* @__PURE__ */ t(
|
|
5963
|
+
element: /* @__PURE__ */ t(Le, { fallback: /* @__PURE__ */ t(_e, {}), children: /* @__PURE__ */ t(ms, { navigation: o }) })
|
|
6008
5964
|
});
|
|
6009
5965
|
});
|
|
6010
5966
|
}
|
|
6011
5967
|
return n[0].children.push(r), n;
|
|
6012
|
-
},
|
|
6013
|
-
const n =
|
|
6014
|
-
return
|
|
6015
|
-
},
|
|
6016
|
-
function
|
|
5968
|
+
}, vs = (e) => {
|
|
5969
|
+
const n = hs(e);
|
|
5970
|
+
return Mn(n);
|
|
5971
|
+
}, Te = ze("shellcore");
|
|
5972
|
+
function bs(e) {
|
|
6017
5973
|
return e.length === 0 ? [] : e.flatMap((n) => "title" in n && "items" in n ? n.items : [n]);
|
|
6018
5974
|
}
|
|
6019
|
-
function
|
|
5975
|
+
function ys(e, n) {
|
|
6020
5976
|
return typeof e == "string" ? e : e[n] || e.en || e.fr || Object.values(e)[0] || "";
|
|
6021
5977
|
}
|
|
6022
|
-
function
|
|
5978
|
+
function $e(e, n, r) {
|
|
6023
5979
|
if (!n?.length) return e;
|
|
6024
|
-
const o =
|
|
5980
|
+
const o = bs(n).map((i) => ({
|
|
6025
5981
|
path: i.path,
|
|
6026
5982
|
url: i.url,
|
|
6027
|
-
label:
|
|
5983
|
+
label: ys(i.label, r)
|
|
6028
5984
|
}));
|
|
6029
5985
|
return { ...e, navigation: { items: o } };
|
|
6030
5986
|
}
|
|
6031
|
-
const
|
|
5987
|
+
const Pe = "shellui:settings", An = () => typeof window < "u" && Intl ? Intl.DateTimeFormat().resolvedOptions().timeZone : "UTC", ne = {
|
|
6032
5988
|
developerFeatures: {
|
|
6033
5989
|
enabled: !1
|
|
6034
5990
|
},
|
|
@@ -6049,7 +6005,7 @@ const Oe = "shellui:settings", Tn = () => typeof window < "u" && Intl ? Intl.Dat
|
|
|
6049
6005
|
code: "en"
|
|
6050
6006
|
},
|
|
6051
6007
|
region: {
|
|
6052
|
-
timezone:
|
|
6008
|
+
timezone: An()
|
|
6053
6009
|
},
|
|
6054
6010
|
cookieConsent: {
|
|
6055
6011
|
acceptedHosts: [],
|
|
@@ -6059,14 +6015,14 @@ const Oe = "shellui:settings", Tn = () => typeof window < "u" && Intl ? Intl.Dat
|
|
|
6059
6015
|
enabled: !0
|
|
6060
6016
|
}
|
|
6061
6017
|
};
|
|
6062
|
-
function
|
|
6063
|
-
const { config: n } = K(), { i18n: r } = z(), o = Z(null), [i, s] =
|
|
6018
|
+
function ws({ children: e }) {
|
|
6019
|
+
const { config: n } = K(), { i18n: r } = z(), o = Z(null), [i, s] = _(() => {
|
|
6064
6020
|
let g;
|
|
6065
6021
|
if (b.initialSettings)
|
|
6066
6022
|
return g = b.initialSettings, o.current = g, g;
|
|
6067
6023
|
if (typeof window < "u")
|
|
6068
6024
|
try {
|
|
6069
|
-
const p = localStorage.getItem(
|
|
6025
|
+
const p = localStorage.getItem(Pe);
|
|
6070
6026
|
if (p) {
|
|
6071
6027
|
const l = JSON.parse(p);
|
|
6072
6028
|
return g = {
|
|
@@ -6090,7 +6046,7 @@ function Es({ children: e }) {
|
|
|
6090
6046
|
},
|
|
6091
6047
|
region: {
|
|
6092
6048
|
// Only use stored timezone if it exists, otherwise use browser's current timezone
|
|
6093
|
-
timezone: l.region?.timezone ||
|
|
6049
|
+
timezone: l.region?.timezone || An()
|
|
6094
6050
|
},
|
|
6095
6051
|
cookieConsent: {
|
|
6096
6052
|
acceptedHosts: Array.isArray(l.cookieConsent?.acceptedHosts) ? l.cookieConsent.acceptedHosts : ne.cookieConsent?.acceptedHosts ?? [],
|
|
@@ -6103,13 +6059,13 @@ function Es({ children: e }) {
|
|
|
6103
6059
|
}, o.current = g, g;
|
|
6104
6060
|
}
|
|
6105
6061
|
} catch (p) {
|
|
6106
|
-
|
|
6062
|
+
Te.error("Failed to load settings from localStorage:", { error: p });
|
|
6107
6063
|
}
|
|
6108
6064
|
return o.current = ne, ne;
|
|
6109
6065
|
});
|
|
6110
|
-
|
|
6066
|
+
D(() => {
|
|
6111
6067
|
o.current = i;
|
|
6112
|
-
}, [i]),
|
|
6068
|
+
}, [i]), D(() => {
|
|
6113
6069
|
if (typeof window > "u")
|
|
6114
6070
|
return;
|
|
6115
6071
|
const g = b.addMessageListener(
|
|
@@ -6118,24 +6074,24 @@ function Es({ children: e }) {
|
|
|
6118
6074
|
const v = m.payload.settings;
|
|
6119
6075
|
if (v && (s(v), window.parent === window))
|
|
6120
6076
|
try {
|
|
6121
|
-
localStorage.setItem(
|
|
6122
|
-
const w =
|
|
6077
|
+
localStorage.setItem(Pe, JSON.stringify(v));
|
|
6078
|
+
const w = $e(
|
|
6123
6079
|
v,
|
|
6124
6080
|
n?.navigation,
|
|
6125
6081
|
r.language || "en"
|
|
6126
6082
|
);
|
|
6127
|
-
|
|
6083
|
+
Te.info("Root Parent received settings update", { message: m }), b.propagateMessage({
|
|
6128
6084
|
type: "SHELLUI_SETTINGS",
|
|
6129
6085
|
payload: { settings: w }
|
|
6130
6086
|
});
|
|
6131
6087
|
} catch (w) {
|
|
6132
|
-
|
|
6088
|
+
Te.error("Failed to update settings from message:", { error: w });
|
|
6133
6089
|
}
|
|
6134
6090
|
}
|
|
6135
6091
|
), p = b.addMessageListener(
|
|
6136
6092
|
"SHELLUI_SETTINGS_REQUESTED",
|
|
6137
6093
|
() => {
|
|
6138
|
-
const m = o.current ?? ne, h =
|
|
6094
|
+
const m = o.current ?? ne, h = $e(
|
|
6139
6095
|
m,
|
|
6140
6096
|
n?.navigation,
|
|
6141
6097
|
r.language || "en"
|
|
@@ -6161,8 +6117,8 @@ function Es({ children: e }) {
|
|
|
6161
6117
|
const p = { ...i, ...g };
|
|
6162
6118
|
if (typeof window < "u" && window.parent === window)
|
|
6163
6119
|
try {
|
|
6164
|
-
localStorage.setItem(
|
|
6165
|
-
const l =
|
|
6120
|
+
localStorage.setItem(Pe, JSON.stringify(p)), s(p);
|
|
6121
|
+
const l = $e(
|
|
6166
6122
|
p,
|
|
6167
6123
|
n?.navigation,
|
|
6168
6124
|
r.language || "en"
|
|
@@ -6172,7 +6128,7 @@ function Es({ children: e }) {
|
|
|
6172
6128
|
payload: { settings: l }
|
|
6173
6129
|
});
|
|
6174
6130
|
} catch (l) {
|
|
6175
|
-
|
|
6131
|
+
Te.error("Failed to update settings in localStorage:", { error: l });
|
|
6176
6132
|
}
|
|
6177
6133
|
b.sendMessageToParent({
|
|
6178
6134
|
type: "SHELLUI_SETTINGS_UPDATED",
|
|
@@ -6189,7 +6145,7 @@ function Es({ children: e }) {
|
|
|
6189
6145
|
), d = L(() => {
|
|
6190
6146
|
if (typeof window < "u")
|
|
6191
6147
|
try {
|
|
6192
|
-
localStorage.removeItem(
|
|
6148
|
+
localStorage.removeItem(Pe);
|
|
6193
6149
|
const g = [];
|
|
6194
6150
|
for (let l = 0; l < localStorage.length; l++) {
|
|
6195
6151
|
const m = localStorage.key(l);
|
|
@@ -6198,8 +6154,8 @@ function Es({ children: e }) {
|
|
|
6198
6154
|
g.forEach((l) => localStorage.removeItem(l));
|
|
6199
6155
|
const p = ne;
|
|
6200
6156
|
if (s(p), window.parent === window) {
|
|
6201
|
-
localStorage.setItem(
|
|
6202
|
-
const l =
|
|
6157
|
+
localStorage.setItem(Pe, JSON.stringify(p));
|
|
6158
|
+
const l = $e(
|
|
6203
6159
|
p,
|
|
6204
6160
|
n?.navigation,
|
|
6205
6161
|
r.language || "en"
|
|
@@ -6212,9 +6168,9 @@ function Es({ children: e }) {
|
|
|
6212
6168
|
b.sendMessageToParent({
|
|
6213
6169
|
type: "SHELLUI_SETTINGS_UPDATED",
|
|
6214
6170
|
payload: { settings: p }
|
|
6215
|
-
}),
|
|
6171
|
+
}), Te.info("All app data has been reset");
|
|
6216
6172
|
} catch (g) {
|
|
6217
|
-
|
|
6173
|
+
Te.error("Failed to reset all data:", { error: g });
|
|
6218
6174
|
}
|
|
6219
6175
|
}, [n?.navigation, r.language]), f = j(
|
|
6220
6176
|
() => ({
|
|
@@ -6225,45 +6181,45 @@ function Es({ children: e }) {
|
|
|
6225
6181
|
}),
|
|
6226
6182
|
[i, c, u, d]
|
|
6227
6183
|
);
|
|
6228
|
-
return /* @__PURE__ */ t(
|
|
6184
|
+
return /* @__PURE__ */ t(Nt.Provider, { value: f, children: e });
|
|
6229
6185
|
}
|
|
6230
|
-
function
|
|
6186
|
+
function ks(e) {
|
|
6231
6187
|
const n = document.documentElement;
|
|
6232
6188
|
e ? n.classList.add("dark") : n.classList.remove("dark");
|
|
6233
6189
|
}
|
|
6234
|
-
function
|
|
6190
|
+
function xs() {
|
|
6235
6191
|
const { settings: e } = q(), { config: n } = K(), r = e.appearance?.theme || "system", o = e.appearance?.themeName || "default";
|
|
6236
|
-
|
|
6192
|
+
pt(() => {
|
|
6237
6193
|
const i = o;
|
|
6238
6194
|
n?.themes && n.themes.forEach((c) => {
|
|
6239
|
-
|
|
6195
|
+
cn(c);
|
|
6240
6196
|
});
|
|
6241
|
-
const s =
|
|
6197
|
+
const s = et(i) || et("default");
|
|
6242
6198
|
if (s) {
|
|
6243
6199
|
const u = r === "system" ? window.matchMedia("(prefers-color-scheme: dark)").matches : r === "dark";
|
|
6244
|
-
|
|
6200
|
+
ks(u), Wt(s, u);
|
|
6245
6201
|
} else {
|
|
6246
6202
|
console.error("[Theme] No theme definition found, using fallback");
|
|
6247
|
-
const c =
|
|
6203
|
+
const c = et("default");
|
|
6248
6204
|
if (c) {
|
|
6249
6205
|
const u = r === "dark" || r === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
6250
|
-
|
|
6206
|
+
Wt(c, u);
|
|
6251
6207
|
}
|
|
6252
6208
|
}
|
|
6253
6209
|
}, [r, o, n]);
|
|
6254
6210
|
}
|
|
6255
|
-
function
|
|
6256
|
-
return
|
|
6211
|
+
function Ns({ children: e }) {
|
|
6212
|
+
return xs(), /* @__PURE__ */ t(V, { children: e });
|
|
6257
6213
|
}
|
|
6258
|
-
function
|
|
6214
|
+
function Cs({ children: e }) {
|
|
6259
6215
|
const { settings: n } = q(), { config: r } = K(), o = n.language?.code || "en";
|
|
6260
|
-
return
|
|
6261
|
-
r?.language &&
|
|
6262
|
-
}, [r?.language]),
|
|
6263
|
-
|
|
6216
|
+
return D(() => {
|
|
6217
|
+
r?.language && dn(r.language);
|
|
6218
|
+
}, [r?.language]), D(() => {
|
|
6219
|
+
Ye.language !== o && Ye.changeLanguage(o);
|
|
6264
6220
|
}, [o]), /* @__PURE__ */ t(V, { children: e });
|
|
6265
6221
|
}
|
|
6266
|
-
const
|
|
6222
|
+
const Zt = X.Root, Fn = X.Portal, It = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
6267
6223
|
X.Overlay,
|
|
6268
6224
|
{
|
|
6269
6225
|
ref: r,
|
|
@@ -6273,8 +6229,8 @@ const Jt = X.Root, Ln = X.Portal, _t = E(({ className: e, ...n }, r) => /* @__PU
|
|
|
6273
6229
|
...n
|
|
6274
6230
|
}
|
|
6275
6231
|
));
|
|
6276
|
-
|
|
6277
|
-
const
|
|
6232
|
+
It.displayName = X.Overlay.displayName;
|
|
6233
|
+
const Ss = ft(
|
|
6278
6234
|
"fixed left-[50%] top-[50%] grid w-full min-w-0 max-w-[calc(100vw-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background py-6 shadow-lg box-border overflow-hidden sm:rounded-lg",
|
|
6279
6235
|
{
|
|
6280
6236
|
variants: {
|
|
@@ -6287,14 +6243,14 @@ const Ps = ht(
|
|
|
6287
6243
|
size: "default"
|
|
6288
6244
|
}
|
|
6289
6245
|
}
|
|
6290
|
-
),
|
|
6291
|
-
/* @__PURE__ */ t(
|
|
6246
|
+
), Tn = E(({ className: e, size: n = "default", children: r, style: o, ...i }, s) => /* @__PURE__ */ a(Fn, { children: [
|
|
6247
|
+
/* @__PURE__ */ t(It, {}),
|
|
6292
6248
|
/* @__PURE__ */ t(
|
|
6293
6249
|
X.Content,
|
|
6294
6250
|
{
|
|
6295
6251
|
ref: s,
|
|
6296
6252
|
"data-dialog-content": !0,
|
|
6297
|
-
className: x(
|
|
6253
|
+
className: x(Ss({ size: n }), "group", e),
|
|
6298
6254
|
"data-size": n,
|
|
6299
6255
|
style: { zIndex: J.ALERT_DIALOG_CONTENT, ...o },
|
|
6300
6256
|
...i,
|
|
@@ -6302,8 +6258,8 @@ const Ps = ht(
|
|
|
6302
6258
|
}
|
|
6303
6259
|
)
|
|
6304
6260
|
] }));
|
|
6305
|
-
|
|
6306
|
-
const
|
|
6261
|
+
Tn.displayName = X.Content.displayName;
|
|
6262
|
+
const Ln = ({ className: e, ...n }) => /* @__PURE__ */ t(
|
|
6307
6263
|
"div",
|
|
6308
6264
|
{
|
|
6309
6265
|
className: x(
|
|
@@ -6313,8 +6269,8 @@ const In = ({ className: e, ...n }) => /* @__PURE__ */ t(
|
|
|
6313
6269
|
...n
|
|
6314
6270
|
}
|
|
6315
6271
|
);
|
|
6316
|
-
|
|
6317
|
-
const
|
|
6272
|
+
Ln.displayName = "AlertDialogHeader";
|
|
6273
|
+
const En = ({ className: e, ...n }) => /* @__PURE__ */ t(
|
|
6318
6274
|
"div",
|
|
6319
6275
|
{
|
|
6320
6276
|
className: x(
|
|
@@ -6324,8 +6280,8 @@ const Dn = ({ className: e, ...n }) => /* @__PURE__ */ t(
|
|
|
6324
6280
|
...n
|
|
6325
6281
|
}
|
|
6326
6282
|
);
|
|
6327
|
-
|
|
6328
|
-
const
|
|
6283
|
+
En.displayName = "AlertDialogMedia";
|
|
6284
|
+
const Dn = ({ className: e, ...n }) => /* @__PURE__ */ t(
|
|
6329
6285
|
"div",
|
|
6330
6286
|
{
|
|
6331
6287
|
className: x(
|
|
@@ -6339,8 +6295,8 @@ const _n = ({ className: e, ...n }) => /* @__PURE__ */ t(
|
|
|
6339
6295
|
...n
|
|
6340
6296
|
}
|
|
6341
6297
|
);
|
|
6342
|
-
|
|
6343
|
-
const
|
|
6298
|
+
Dn.displayName = "AlertDialogFooter";
|
|
6299
|
+
const dt = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
6344
6300
|
X.Title,
|
|
6345
6301
|
{
|
|
6346
6302
|
ref: r,
|
|
@@ -6348,8 +6304,8 @@ const ut = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
|
6348
6304
|
...n
|
|
6349
6305
|
}
|
|
6350
6306
|
));
|
|
6351
|
-
|
|
6352
|
-
const
|
|
6307
|
+
dt.displayName = X.Title.displayName;
|
|
6308
|
+
const ut = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
6353
6309
|
X.Description,
|
|
6354
6310
|
{
|
|
6355
6311
|
ref: r,
|
|
@@ -6357,7 +6313,7 @@ const pt = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
|
|
|
6357
6313
|
...n
|
|
6358
6314
|
}
|
|
6359
6315
|
));
|
|
6360
|
-
|
|
6316
|
+
ut.displayName = X.Description.displayName;
|
|
6361
6317
|
const De = E(({ className: e, variant: n, size: r, ...o }, i) => /* @__PURE__ */ t(X.Action, { asChild: !0, children: /* @__PURE__ */ t(
|
|
6362
6318
|
S,
|
|
6363
6319
|
{
|
|
@@ -6369,7 +6325,7 @@ const De = E(({ className: e, variant: n, size: r, ...o }, i) => /* @__PURE__ */
|
|
|
6369
6325
|
}
|
|
6370
6326
|
) }));
|
|
6371
6327
|
De.displayName = X.Action.displayName;
|
|
6372
|
-
const
|
|
6328
|
+
const Oe = E(({ className: e, variant: n, size: r, ...o }, i) => /* @__PURE__ */ t(X.Cancel, { asChild: !0, children: /* @__PURE__ */ t(
|
|
6373
6329
|
S,
|
|
6374
6330
|
{
|
|
6375
6331
|
ref: i,
|
|
@@ -6379,8 +6335,8 @@ const We = E(({ className: e, variant: n, size: r, ...o }, i) => /* @__PURE__ */
|
|
|
6379
6335
|
...o
|
|
6380
6336
|
}
|
|
6381
6337
|
) }));
|
|
6382
|
-
|
|
6383
|
-
const
|
|
6338
|
+
Oe.displayName = X.Cancel.displayName;
|
|
6339
|
+
const As = 200, Fs = () => /* @__PURE__ */ a(
|
|
6384
6340
|
"svg",
|
|
6385
6341
|
{
|
|
6386
6342
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -6417,7 +6373,7 @@ const Os = 200, Ws = () => /* @__PURE__ */ a(
|
|
|
6417
6373
|
)
|
|
6418
6374
|
]
|
|
6419
6375
|
}
|
|
6420
|
-
),
|
|
6376
|
+
), Ts = ({ className: e }) => /* @__PURE__ */ t(
|
|
6421
6377
|
"svg",
|
|
6422
6378
|
{
|
|
6423
6379
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -6426,18 +6382,18 @@ const Os = 200, Ws = () => /* @__PURE__ */ a(
|
|
|
6426
6382
|
className: e,
|
|
6427
6383
|
children: /* @__PURE__ */ t("path", { d: "M164.49 163.51a12 12 0 1 1-17 0a12 12 0 0 1 17 0m-81-8a12 12 0 1 0 17 0a12 12 0 0 0-16.98 0Zm9-39a12 12 0 1 0-17 0a12 12 0 0 0 17-.02Zm48-1a12 12 0 1 0 0 17a12 12 0 0 0 0-17M232 128A104 104 0 1 1 128 24a8 8 0 0 1 8 8a40 40 0 0 0 40 40a8 8 0 0 1 8 8a40 40 0 0 0 40 40a8 8 0 0 1 8 8m-16.31 7.39A56.13 56.13 0 0 1 168.5 87.5a56.13 56.13 0 0 1-47.89-47.19a88 88 0 1 0 95.08 95.08" })
|
|
6428
6384
|
}
|
|
6429
|
-
),
|
|
6430
|
-
function
|
|
6431
|
-
const e =
|
|
6385
|
+
), In = Ce(void 0);
|
|
6386
|
+
function Ls() {
|
|
6387
|
+
const e = Se(In);
|
|
6432
6388
|
if (!e)
|
|
6433
6389
|
throw new Error("useDialog must be used within a DialogProvider");
|
|
6434
6390
|
return e;
|
|
6435
6391
|
}
|
|
6436
|
-
const
|
|
6437
|
-
const [n, r] =
|
|
6392
|
+
const Es = ({ children: e }) => {
|
|
6393
|
+
const [n, r] = _(null), [o, i] = _(!1), s = Z(null), c = L(() => {
|
|
6438
6394
|
s.current && clearTimeout(s.current), s.current = setTimeout(() => {
|
|
6439
6395
|
s.current = null, r(null);
|
|
6440
|
-
},
|
|
6396
|
+
}, As);
|
|
6441
6397
|
}, []), u = L(
|
|
6442
6398
|
(h) => {
|
|
6443
6399
|
i(h), !h && n && (n.from && n.from.length > 0 ? b.sendMessage({
|
|
@@ -6487,7 +6443,7 @@ const zs = ({ children: e }) => {
|
|
|
6487
6443
|
iconType: h.icon === "cookie" ? "cookie" : void 0
|
|
6488
6444
|
}), i(!0);
|
|
6489
6445
|
}, []);
|
|
6490
|
-
|
|
6446
|
+
D(() => {
|
|
6491
6447
|
if (typeof window > "u" || window.parent !== window)
|
|
6492
6448
|
return;
|
|
6493
6449
|
const h = b.addMessageListener("SHELLUI_DIALOG", (w) => {
|
|
@@ -6570,7 +6526,7 @@ const zs = ({ children: e }) => {
|
|
|
6570
6526
|
case "okCancel":
|
|
6571
6527
|
return /* @__PURE__ */ a(V, { children: [
|
|
6572
6528
|
/* @__PURE__ */ t(
|
|
6573
|
-
|
|
6529
|
+
Oe,
|
|
6574
6530
|
{
|
|
6575
6531
|
variant: "outline",
|
|
6576
6532
|
onClick: f,
|
|
@@ -6582,7 +6538,7 @@ const zs = ({ children: e }) => {
|
|
|
6582
6538
|
case "delete":
|
|
6583
6539
|
return /* @__PURE__ */ a(V, { children: [
|
|
6584
6540
|
/* @__PURE__ */ t(
|
|
6585
|
-
|
|
6541
|
+
Oe,
|
|
6586
6542
|
{
|
|
6587
6543
|
variant: "outline",
|
|
6588
6544
|
onClick: f,
|
|
@@ -6601,7 +6557,7 @@ const zs = ({ children: e }) => {
|
|
|
6601
6557
|
case "confirm":
|
|
6602
6558
|
return /* @__PURE__ */ a(V, { children: [
|
|
6603
6559
|
/* @__PURE__ */ t(
|
|
6604
|
-
|
|
6560
|
+
Oe,
|
|
6605
6561
|
{
|
|
6606
6562
|
variant: "outline",
|
|
6607
6563
|
onClick: f,
|
|
@@ -6612,7 +6568,7 @@ const zs = ({ children: e }) => {
|
|
|
6612
6568
|
] });
|
|
6613
6569
|
case "onlyCancel":
|
|
6614
6570
|
return /* @__PURE__ */ t(
|
|
6615
|
-
|
|
6571
|
+
Oe,
|
|
6616
6572
|
{
|
|
6617
6573
|
variant: "outline",
|
|
6618
6574
|
onClick: f,
|
|
@@ -6623,12 +6579,12 @@ const zs = ({ children: e }) => {
|
|
|
6623
6579
|
return /* @__PURE__ */ t(De, { onClick: d, children: v || "OK" });
|
|
6624
6580
|
}
|
|
6625
6581
|
}, m = () => !n || n.position !== "bottom-left" ? null : /* @__PURE__ */ t(
|
|
6626
|
-
|
|
6582
|
+
Zt,
|
|
6627
6583
|
{
|
|
6628
6584
|
open: o,
|
|
6629
6585
|
onOpenChange: u,
|
|
6630
|
-
children: /* @__PURE__ */ a(
|
|
6631
|
-
/* @__PURE__ */ t(
|
|
6586
|
+
children: /* @__PURE__ */ a(Fn, { children: [
|
|
6587
|
+
/* @__PURE__ */ t(It, { style: { zIndex: J.COOKIE_CONSENT_OVERLAY } }),
|
|
6632
6588
|
/* @__PURE__ */ a(
|
|
6633
6589
|
X.Content,
|
|
6634
6590
|
{
|
|
@@ -6651,12 +6607,12 @@ const zs = ({ children: e }) => {
|
|
|
6651
6607
|
{
|
|
6652
6608
|
className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10",
|
|
6653
6609
|
"aria-hidden": !0,
|
|
6654
|
-
children: /* @__PURE__ */ t(
|
|
6610
|
+
children: /* @__PURE__ */ t(Ts, { className: "h-5 w-5 text-primary" })
|
|
6655
6611
|
}
|
|
6656
6612
|
),
|
|
6657
6613
|
/* @__PURE__ */ a("div", { className: "flex-1 space-y-2", children: [
|
|
6658
|
-
/* @__PURE__ */ t(
|
|
6659
|
-
n.description && /* @__PURE__ */ t(
|
|
6614
|
+
/* @__PURE__ */ t(dt, { className: "text-base font-semibold leading-tight", children: n.title }),
|
|
6615
|
+
n.description && /* @__PURE__ */ t(ut, { className: "text-sm leading-relaxed", children: n.description })
|
|
6660
6616
|
] })
|
|
6661
6617
|
] }),
|
|
6662
6618
|
/* @__PURE__ */ t("div", { className: "flex items-center justify-between rounded-b-xl border-t border-border bg-muted/50 px-6 py-4 sm:px-7", children: l() })
|
|
@@ -6666,27 +6622,27 @@ const zs = ({ children: e }) => {
|
|
|
6666
6622
|
] })
|
|
6667
6623
|
}
|
|
6668
6624
|
);
|
|
6669
|
-
return /* @__PURE__ */ a(
|
|
6625
|
+
return /* @__PURE__ */ a(In.Provider, { value: { dialog: p }, children: [
|
|
6670
6626
|
e,
|
|
6671
6627
|
n && /* @__PURE__ */ t(V, { children: n.position === "bottom-left" ? m() : /* @__PURE__ */ t(
|
|
6672
|
-
|
|
6628
|
+
Zt,
|
|
6673
6629
|
{
|
|
6674
6630
|
open: o,
|
|
6675
6631
|
onOpenChange: u,
|
|
6676
|
-
children: /* @__PURE__ */ a(
|
|
6677
|
-
/* @__PURE__ */ a(
|
|
6678
|
-
n.mode === "delete" && /* @__PURE__ */ t(
|
|
6679
|
-
/* @__PURE__ */ t(
|
|
6680
|
-
n.description && /* @__PURE__ */ t(
|
|
6632
|
+
children: /* @__PURE__ */ a(Tn, { size: n.size ?? "default", children: [
|
|
6633
|
+
/* @__PURE__ */ a(Ln, { children: [
|
|
6634
|
+
n.mode === "delete" && /* @__PURE__ */ t(En, { className: "bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive", children: /* @__PURE__ */ t(Fs, {}) }),
|
|
6635
|
+
/* @__PURE__ */ t(dt, { children: n.title }),
|
|
6636
|
+
n.description && /* @__PURE__ */ t(ut, { children: n.description })
|
|
6681
6637
|
] }),
|
|
6682
|
-
/* @__PURE__ */ t(
|
|
6638
|
+
/* @__PURE__ */ t(Dn, { children: l() })
|
|
6683
6639
|
] })
|
|
6684
6640
|
}
|
|
6685
6641
|
) })
|
|
6686
6642
|
] });
|
|
6687
6643
|
};
|
|
6688
|
-
function
|
|
6689
|
-
const { t: e } = z("cookieConsent"), { config: n } = K(), { settings: r, updateSetting: o } = q(), { dialog: i } =
|
|
6644
|
+
function Jt() {
|
|
6645
|
+
const { t: e } = z("cookieConsent"), { config: n } = K(), { settings: r, updateSetting: o } = q(), { dialog: i } = Ls(), s = Z(!1), c = Z(!1), d = n?.cookieConsent?.cookies ?? [], f = r?.cookieConsent?.consentedCookieHosts ?? [], g = d.map((C) => C.host), p = d.filter((C) => C.category === "strict_necessary").map((C) => C.host), l = g.some((C) => !f.includes(C)), m = f.length === 0, h = !m && l, w = typeof window < "u" && window.parent === window && d.length > 0 && (m || l), k = e(h ? "titleRenewal" : "title"), T = e(h ? "descriptionRenewal" : "description"), P = L(() => {
|
|
6690
6646
|
o("cookieConsent", {
|
|
6691
6647
|
acceptedHosts: g,
|
|
6692
6648
|
consentedCookieHosts: g
|
|
@@ -6703,7 +6659,7 @@ function Xt() {
|
|
|
6703
6659
|
}, [B]), Y = L(() => {
|
|
6704
6660
|
s.current = !0, b.openDrawer({ url: `${se.cookiePreferences}?initial=true`, size: "420px" });
|
|
6705
6661
|
}, []);
|
|
6706
|
-
return
|
|
6662
|
+
return D(() => {
|
|
6707
6663
|
if (!w) {
|
|
6708
6664
|
c.current = !1;
|
|
6709
6665
|
return;
|
|
@@ -6734,47 +6690,47 @@ function Xt() {
|
|
|
6734
6690
|
i
|
|
6735
6691
|
]), null;
|
|
6736
6692
|
}
|
|
6737
|
-
const
|
|
6693
|
+
const Ds = () => {
|
|
6738
6694
|
const { config: e } = K(), { settings: n } = q();
|
|
6739
|
-
|
|
6695
|
+
D(() => {
|
|
6740
6696
|
if (e?.favicon) {
|
|
6741
6697
|
const o = document.querySelector('link[rel="icon"]');
|
|
6742
6698
|
o && (o.href = e.favicon);
|
|
6743
6699
|
}
|
|
6744
|
-
}, [e?.favicon]),
|
|
6700
|
+
}, [e?.favicon]), D(() => {
|
|
6745
6701
|
if (oe()) {
|
|
6746
|
-
|
|
6702
|
+
Ie();
|
|
6747
6703
|
return;
|
|
6748
6704
|
}
|
|
6749
6705
|
const o = n?.serviceWorker?.enabled ?? !0;
|
|
6750
6706
|
if (!e?.navigation || e.navigation.length === 0) {
|
|
6751
|
-
o && (console.warn("[Service Worker] Disabled: No navigation items configured"),
|
|
6707
|
+
o && (console.warn("[Service Worker] Disabled: No navigation items configured"), Ie());
|
|
6752
6708
|
return;
|
|
6753
6709
|
}
|
|
6754
|
-
o ?
|
|
6710
|
+
o ? pn({
|
|
6755
6711
|
enabled: !0
|
|
6756
|
-
}) :
|
|
6712
|
+
}) : Ie();
|
|
6757
6713
|
}, [n?.serviceWorker?.enabled, e?.navigation]);
|
|
6758
|
-
const r = j(() => e ?
|
|
6714
|
+
const r = j(() => e ? vs(e) : null, [e]);
|
|
6759
6715
|
return !e.navigation || e.navigation.length === 0 ? /* @__PURE__ */ a(V, { children: [
|
|
6760
|
-
/* @__PURE__ */ t(
|
|
6716
|
+
/* @__PURE__ */ t(Jt, {}),
|
|
6761
6717
|
/* @__PURE__ */ a("div", { style: { fontFamily: "system-ui, sans-serif", padding: "2rem" }, children: [
|
|
6762
6718
|
/* @__PURE__ */ t("h1", { children: e.title || "ShellUI" }),
|
|
6763
6719
|
/* @__PURE__ */ t("p", { children: "No navigation items configured." })
|
|
6764
6720
|
] })
|
|
6765
6721
|
] }) : r ? /* @__PURE__ */ a(V, { children: [
|
|
6766
|
-
/* @__PURE__ */ t(
|
|
6767
|
-
/* @__PURE__ */ t(
|
|
6722
|
+
/* @__PURE__ */ t(Jt, {}),
|
|
6723
|
+
/* @__PURE__ */ t(Bn, { router: r })
|
|
6768
6724
|
] }) : null;
|
|
6769
|
-
},
|
|
6770
|
-
const [e, n] =
|
|
6771
|
-
return
|
|
6725
|
+
}, Ys = () => {
|
|
6726
|
+
const [e, n] = _(!0);
|
|
6727
|
+
return pt(() => {
|
|
6772
6728
|
b.init().then(() => {
|
|
6773
6729
|
n(!1);
|
|
6774
6730
|
});
|
|
6775
|
-
}, []), e ? null : /* @__PURE__ */ t(
|
|
6731
|
+
}, []), e ? null : /* @__PURE__ */ t(Yn, { children: /* @__PURE__ */ t(ws, { children: /* @__PURE__ */ t(Ns, { children: /* @__PURE__ */ t(Cs, { children: /* @__PURE__ */ t(Es, { children: /* @__PURE__ */ t(Ds, {}) }) }) }) }) });
|
|
6776
6732
|
};
|
|
6777
|
-
function
|
|
6733
|
+
function Ks(e) {
|
|
6778
6734
|
const { config: n } = K(), { settings: r } = q();
|
|
6779
6735
|
return j(() => {
|
|
6780
6736
|
const i = n?.cookieConsent?.cookies ?? [], s = r?.cookieConsent?.acceptedHosts ?? [];
|
|
@@ -6782,17 +6738,17 @@ function oa(e) {
|
|
|
6782
6738
|
return { isAccepted: !0, needsConsent: !1 };
|
|
6783
6739
|
if (!new Set(i.map((f) => f.host)).has(e))
|
|
6784
6740
|
return { isAccepted: !0, needsConsent: !1 };
|
|
6785
|
-
const u = s.includes(e), d = s.length === 0 ||
|
|
6741
|
+
const u = s.includes(e), d = s.length === 0 || Vo();
|
|
6786
6742
|
return { isAccepted: u, needsConsent: d };
|
|
6787
6743
|
}, [n?.cookieConsent, r?.cookieConsent?.acceptedHosts, e]);
|
|
6788
6744
|
}
|
|
6789
6745
|
export {
|
|
6790
|
-
|
|
6791
|
-
|
|
6792
|
-
|
|
6793
|
-
|
|
6746
|
+
Ys as App,
|
|
6747
|
+
jo as getCookieConsentAccepted,
|
|
6748
|
+
Vo as getCookieConsentNeedsRenewal,
|
|
6749
|
+
Gs as getCookieConsentNewHosts,
|
|
6794
6750
|
se as urls,
|
|
6795
6751
|
K as useConfig,
|
|
6796
|
-
|
|
6752
|
+
Ks as useCookieConsent
|
|
6797
6753
|
};
|
|
6798
6754
|
//# sourceMappingURL=index.js.map
|