@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 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 Se, useState as R, createElement as Pn, useContext as Ae, forwardRef as E, useCallback as L, Children as it, isValidElement as On, cloneElement as Wn, useEffect as I, useMemo as j, useRef as Z, useLayoutEffect as gt, lazy as ke, Suspense as Ee } from "react";
3
- import { useLocation as Fe, useNavigate as mt, Routes as Ot, Route as He, Navigate as Qt, useRouteError as Mn, isRouteErrorResponse as Bn, Outlet as ft, Link as et, createBrowserRouter as zn, RouterProvider as Un } from "react-router";
4
- import { getLogger as Ue, shellui as b, addIframe as Hn, removeIframe as $n } from "@shellui/sdk";
5
- import { useTranslation as z, initReactI18next as jn } from "react-i18next";
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 Vn } from "clsx";
8
- import { twMerge as Gn } from "tailwind-merge";
9
- import { cva as ht } from "class-variance-authority";
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 Ke from "i18next";
12
- import { Workbox as Yn } from "workbox-window";
13
- import * as en from "@sentry/react";
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 Te = Ue("shellcore"), tn = Se(null);
19
- let Wt = !1;
20
- function qn(e) {
21
- const [n] = R(() => {
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" && !Wt && (Wt = !0, Te.info("Config loaded from __SHELLUI_CONFIG__", {
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
- Te.error("Failed to parse config JSON:", { error: s }), Te.error("Config value (first 200 chars):", { value: o.substring(0, 200) });
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" && Te.warn("Config loaded from globalThis fallback (define may not have worked)"), c;
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 Te.warn(
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 Te.error("Failed to load ShellUI config:", { error: o }), {};
42
+ return Fe.error("Failed to load ShellUI config:", { error: o }), {};
44
43
  }
45
44
  }), r = { config: n };
46
- return Pn(tn.Provider, { value: r }, e.children);
45
+ return Rn(Qt.Provider, { value: r }, e.children);
47
46
  }
48
47
  function K() {
49
- const e = Ae(tn);
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 Zn = () => {
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
- }, Jn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
68
- __proto__: null,
69
- HomeView: Zn
70
- }, Symbol.toStringTag, { value: "Module" }));
66
+ };
71
67
  function x(...e) {
72
- return Gn(Vn(e));
68
+ return jn($n(e));
73
69
  }
74
- const nn = E(({ ...e }, n) => /* @__PURE__ */ t(
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
- nn.displayName = "Breadcrumb";
83
- const rn = E(
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
- rn.displayName = "BreadcrumbList";
97
- const st = E(
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
- st.displayName = "BreadcrumbItem";
108
- const Xn = E(({ asChild: e, className: n, ...r }, o) => /* @__PURE__ */ t(
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
- Xn.displayName = "BreadcrumbLink";
117
- const on = E(
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
- on.displayName = "BreadcrumbPage";
131
- const sn = ({ children: e, className: n, ...r }) => /* @__PURE__ */ t(
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
- sn.displayName = "BreadcrumbSeparator";
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
- }, an = Se(void 0), vt = () => {
178
- const e = Ae(an);
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
- }, ln = ({ children: e }) => {
183
- const [n, r] = R(!1), o = L(() => {
178
+ }, sn = ({ children: e }) => {
179
+ const [n, r] = _(!1), o = L(() => {
184
180
  r((i) => !i);
185
181
  }, []);
186
- return /* @__PURE__ */ t(an.Provider, { value: { isCollapsed: n, toggle: o }, children: e });
187
- }, bt = E(
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 } = vt();
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
- bt.displayName = "Sidebar";
207
- const Qn = () => /* @__PURE__ */ a(
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
- ), er = () => /* @__PURE__ */ a(
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
- ), tr = E(
243
+ ), Xn = E(
248
244
  ({ className: e, ...n }, r) => {
249
- const { toggle: o, isCollapsed: i } = vt();
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(Qn, {}) : /* @__PURE__ */ t(er, {})
258
+ children: i ? /* @__PURE__ */ t(Zn, {}) : /* @__PURE__ */ t(Jn, {})
263
259
  }
264
260
  );
265
261
  }
266
262
  );
267
- tr.displayName = "SidebarTrigger";
268
- const cn = E(
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
- cn.displayName = "SidebarHeader";
279
- const yt = E(
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
- yt.displayName = "SidebarContent";
290
- const dn = E(
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
- dn.displayName = "SidebarFooter";
301
- const wt = E(
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
- wt.displayName = "SidebarGroup";
312
- const kt = E(
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
- kt.displayName = "SidebarGroupLabel";
327
- const nr = E(({ className: e, asChild: n = !1, ...r }, o) => /* @__PURE__ */ t(
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
- nr.displayName = "SidebarGroupAction";
339
- const xt = E(
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
- xt.displayName = "SidebarGroupContent";
350
- const rr = ht(
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
- ), Nt = E(({ className: e, variant: n, size: r, asChild: o = !1, isActive: i, children: s, ...c }, u) => {
370
- const { isCollapsed: d } = vt();
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
- rr({ variant: n, size: r }),
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
- Nt.displayName = "SidebarMenuButton";
388
- const qe = E(
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
- qe.displayName = "SidebarMenu";
399
- const Ze = E(
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
- Ze.displayName = "SidebarMenuItem";
410
- const or = E(({ className: e, asChild: n = !1, ...r }, o) => /* @__PURE__ */ t(
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
- or.displayName = "SidebarMenuAction";
422
- const ir = E(
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
- ir.displayName = "SidebarMenuBadge";
436
- const sr = E(({ className: e, showIcon: n = !1, ...r }, o) => /* @__PURE__ */ a(
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
- sr.displayName = "SidebarMenuSkeleton";
452
- const ar = E(
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
- ar.displayName = "SidebarMenuSub";
466
- const lr = E(({ className: e, asChild: n = !1, size: r = "md", isActive: o, ...i }, s) => /* @__PURE__ */ t(
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
- lr.displayName = "SidebarMenuSubButton";
483
- const cr = E(
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
- cr.displayName = "SidebarMenuSubItem";
494
- const dr = () => /* @__PURE__ */ t(
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
- ), ur = () => /* @__PURE__ */ a(
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
- ), pr = () => /* @__PURE__ */ t(
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
- ), gr = () => /* @__PURE__ */ a(
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
- ), mr = () => /* @__PURE__ */ a(
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
- ), fr = () => /* @__PURE__ */ t(
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
- ), hr = () => /* @__PURE__ */ t(
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
- ), vr = () => /* @__PURE__ */ t(
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
- ), br = () => /* @__PURE__ */ a(
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
- ), yr = () => /* @__PURE__ */ a(
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
- ), Ct = Se(void 0);
682
- function wr() {
683
- const e = Ae(Ct);
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 = Ae(Ct);
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 kr = ht(
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(kr({ variant: n, size: r, className: e })),
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 St = E(
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: it.map(n, (i, s) => {
738
- if (On(i)) {
739
- const c = s === 0, u = s === it.count(n) - 1;
740
- return Wn(i, {
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
- St.displayName = "ButtonGroup";
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 xr = {
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
- }, Nr = {
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
- }, Cr = {
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
- }, At = /* @__PURE__ */ new Map([
1148
- ["default", xr],
1149
- ["blue", Nr],
1150
- ["warm-yellow", Cr]
1143
+ }, St = /* @__PURE__ */ new Map([
1144
+ ["default", yr],
1145
+ ["blue", wr],
1146
+ ["warm-yellow", kr]
1151
1147
  ]);
1152
- function un(e) {
1153
- At.set(e.name, e);
1148
+ function cn(e) {
1149
+ St.set(e.name, e);
1154
1150
  }
1155
- function tt(e) {
1156
- return At.get(e);
1151
+ function et(e) {
1152
+ return St.get(e);
1157
1153
  }
1158
- function Sr() {
1159
- return Array.from(At.values());
1154
+ function xr() {
1155
+ return Array.from(St.values());
1160
1156
  }
1161
- function Mt(e, n) {
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 Ar = () => /* @__PURE__ */ a(
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
- ), Fr = () => /* @__PURE__ */ t(
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
- ), Tr = () => /* @__PURE__ */ a(
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
- ), Lr = ({
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
- }, Er = () => {
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] = R([]);
1380
- I(() => {
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
- un(p);
1383
- }), u(Sr());
1378
+ cn(p);
1379
+ }), u(xr());
1384
1380
  }, [o]);
1385
- const [d, f] = R(() => typeof window > "u" ? !1 : i === "dark" || i === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches);
1386
- I(() => {
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: Ar },
1403
- { value: "dark", label: e("appearance.themes.dark"), icon: Fr },
1404
- { value: "system", label: e("appearance.themes.system"), icon: Tr }
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(St, { children: g.map((p) => {
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
- Lr,
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
- }, Ir = "Settings", Dr = "Welcome to {{title}}", _r = "Select a navigation item to get started.", Rr = "Navigation error", Pr = "This URL is not configured in the app navigation.", Or = { 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" }, Wr = {
1484
- settings: Ir,
1485
- welcome: Dr,
1486
- getStarted: _r,
1487
- navigationError: Rr,
1488
- navigationNotAllowed: Pr,
1489
- errorBoundary: Or
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: Mr,
1492
- categories: Br,
1493
- routes: zr,
1494
- updateApp: Ur,
1495
- appearance: Hr,
1496
- languageAndRegion: $r,
1497
- advanced: jr,
1498
- dataPrivacy: Vr,
1499
- caching: Gr,
1500
- develop: Yr
1501
- }, qr = "We value your privacy", Zr = "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.", Jr = "Our cookies have changed", Xr = "We've updated our cookie policy with new features or services. Please review and confirm your preferences to continue with the best experience.", Qr = "Accept all", eo = "Reject all", to = "Set preferences", no = { 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" } }, ro = {
1502
- title: qr,
1503
- description: Zr,
1504
- titleRenewal: Jr,
1505
- descriptionRenewal: Xr,
1506
- accept: Qr,
1507
- reject: eo,
1508
- setPreferences: to,
1509
- preferences: no
1510
- }, oo = "Paramètres", io = "Bienvenue sur {{title}}", so = "Sélectionnez un élément de navigation pour commencer.", ao = "Erreur de navigation", lo = "Cette URL n'est pas configurée dans la navigation de l'application.", co = { 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" }, uo = {
1511
- settings: oo,
1512
- welcome: io,
1513
- getStarted: so,
1514
- navigationError: ao,
1515
- navigationNotAllowed: lo,
1516
- errorBoundary: co
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: po,
1519
- categories: go,
1520
- routes: mo,
1521
- updateApp: fo,
1522
- appearance: ho,
1523
- languageAndRegion: vo,
1524
- advanced: bo,
1525
- dataPrivacy: yo,
1526
- caching: wo,
1527
- develop: ko
1528
- }, No = "Votre vie privée compte", Co = "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.", So = "Nos cookies ont évolué", Ao = "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.", Fo = "Tout accepter", To = "Tout refuser", Lo = "Personnaliser", Eo = { 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" } }, Io = {
1529
- title: No,
1530
- description: Co,
1531
- titleRenewal: So,
1532
- descriptionRenewal: Ao,
1533
- accept: Fo,
1534
- reject: To,
1535
- setPreferences: Lo,
1536
- preferences: Eo
1537
- }, Je = [
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
- ], Do = {
1536
+ ], Lo = {
1541
1537
  en: {
1542
- common: Wr,
1543
- settings: Kr,
1544
- cookieConsent: ro
1538
+ common: _r,
1539
+ settings: Vr,
1540
+ cookieConsent: eo
1545
1541
  },
1546
1542
  fr: {
1547
- common: uo,
1548
- settings: xo,
1549
- cookieConsent: Io
1543
+ common: ao,
1544
+ settings: yo,
1545
+ cookieConsent: To
1550
1546
  }
1551
- }, _o = (e) => {
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 Bt = !1;
1565
- const pn = (e) => {
1566
- const r = (e ? Array.isArray(e) ? e : [e] : Je.map((s) => s.code)).filter(
1567
- (s) => Je.some((c) => c.code === s)
1568
- ), o = r.length > 0 ? r : ["en"], i = _o(o);
1569
- return Bt ? Ke.changeLanguage(i) : (Ke.use(jn).init({
1570
- resources: Do,
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
- }), Bt = !0), o;
1579
+ }), Mt = !0), o;
1584
1580
  };
1585
- pn();
1586
- const Ro = (e) => {
1587
- const n = e ? Array.isArray(e) ? e : [e] : Je.map((r) => r.code);
1588
- return Je.filter((r) => n.includes(r.code));
1589
- }, Ft = E(
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
- Ft.displayName = "Select";
1604
- const Po = () => /* @__PURE__ */ a(
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
- ), Oo = () => /* @__PURE__ */ a(
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
- ), Wo = [
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
- ], zt = (e, n, r) => {
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
- }, Ut = (e, n, r) => {
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
- }, Mo = () => typeof Intl < "u" ? Intl.DateTimeFormat().resolvedOptions().timeZone : "UTC", Bo = (e, n = "en") => {
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
- }, zo = () => {
1753
- const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), { config: o } = K(), i = n.language?.code || "en", s = Mo(), c = n.region?.timezone || s, u = c === s, d = Ro(o?.language), f = () => {
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] = R(() => {
1751
+ }, [g, p] = _(() => {
1756
1752
  const l = /* @__PURE__ */ new Date();
1757
1753
  return {
1758
- date: zt(l, c, i),
1759
- time: Ut(l, c, i)
1754
+ date: Bt(l, c, i),
1755
+ time: zt(l, c, i)
1760
1756
  };
1761
1757
  });
1762
- return I(() => {
1758
+ return D(() => {
1763
1759
  const l = () => {
1764
1760
  const h = /* @__PURE__ */ new Date();
1765
1761
  p({
1766
- date: zt(h, c, i),
1767
- time: Ut(h, c, i)
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(St, { children: d.map((l) => {
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(Po, {}),
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
- Ft,
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: Wo.map((l) => /* @__PURE__ */ t(
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(Oo, {}),
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: Bo(c, i) }),
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 = Ue("shellcore");
1884
- let _ = null, Q = !1, G = null, Ne = null, Ve = [], re = !1, Ge = !1, Ie = null, ue = !1, Me = !1, gn = typeof window < "u" ? Date.now() : 0;
1885
- const Uo = 5e3;
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 nt(e) {
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 (nt(window)) return !0;
1890
+ if (tt(window)) return !0;
1895
1891
  try {
1896
- if (window !== window.top && nt(window.top) || window.parent && window.parent !== window && nt(window.parent)) return !0;
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 $e = null, Ht = 0;
1902
- const Ho = 5e3;
1897
+ let He = null, Ut = 0;
1898
+ const Bo = 5e3;
1903
1899
  async function le() {
1904
1900
  const n = {
1905
- registered: await Tt(),
1901
+ registered: await Ft(),
1906
1902
  updateAvailable: Q
1907
1903
  };
1908
- Ve.forEach((r) => r(n));
1904
+ je.forEach((r) => r(n));
1909
1905
  }
1910
- async function rt(e) {
1911
- const n = Date.now() - gn;
1912
- if (Me || n < Uo) {
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: ${Me}, timeSinceStart: ${n}ms`
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 _e(), typeof window < "u") {
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 ze() {
1961
+ async function Be() {
1966
1962
  const e = Date.now();
1967
- return $e && e - Ht < Ho || ($e = (async () => {
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
- })(), Ht = e), $e;
1994
+ })(), Ut = e), He;
1999
1995
  }
2000
- async function mn(e = { enabled: !0 }) {
1996
+ async function pn(e = { enabled: !0 }) {
2001
1997
  if (!("serviceWorker" in navigator))
2002
1998
  return;
2003
1999
  if (oe()) {
2004
- await _e(), _ = null;
2000
+ await Ie(), R = null;
2005
2001
  return;
2006
2002
  }
2007
2003
  if (!e.enabled) {
2008
- await _e(), _ = null;
2004
+ await Ie(), R = null;
2009
2005
  return;
2010
2006
  }
2011
- if (!await ze()) {
2012
- Ne || setTimeout(async () => {
2013
- const r = await ze();
2014
- r && !Ne ? mn(e) : r || O.warn("Service worker file not found. Service workers may not be available.");
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 Ne || (Ne = (async () => {
2019
- Me = !0, gn = Date.now();
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, _.update();
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 (_ || (_ = new Yn("/sw.js", {
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
- })), _ && (ce && (_.removeEventListener("waiting", ce), ce = null), fe && (_.removeEventListener("activated", fe), fe = null), de && (_.removeEventListener("controlling", de), de = null), he && (_.removeEventListener("registered", he), he = null), ve && (_.removeEventListener("redundant", ve), ve = null), be && (navigator.serviceWorker.removeEventListener("error", be), be = null), ye && (navigator.serviceWorker.removeEventListener("messageerror", ye), ye = null), Ge = !1), o && !Ge) {
2049
- Ge = !0;
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 (Ie === g) {
2059
+ if (Ee === g) {
2064
2060
  Q = !0, G = f, le();
2065
2061
  return;
2066
2062
  }
2067
- if (Ie = g, Q = !0, G = f, le(), e.onUpdateAvailable)
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 ? Xe().catch((l) => {
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, Xe().catch((m) => {
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 }), Ie = null;
2097
+ O.error("Error in waiting handler:", { error: u }), Ee = null;
2102
2098
  }
2103
- }, _.addEventListener("waiting", ce), fe = (u) => {
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, Ie = 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
- }, _.addEventListener("activated", fe), de = () => {
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
- }, _.addEventListener("controlling", de), he = () => {
2115
+ }, R.addEventListener("controlling", de), he = () => {
2120
2116
  le();
2121
- }, _.addEventListener("registered", he), ve = (u) => {
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
- ), rt(
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
- }, _.addEventListener("redundant", ve), be = (u) => {
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") ? rt(`Service worker error: ${l}`) : (console.warn("[Service Worker] Non-critical error, ignoring:", l), O.warn("Service worker non-critical error, not disabling:", {
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 _.register();
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()) : Ie !== c ? (Q = !0, G = i.waiting, ce()) : (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
- _ && e.enabled && _.update();
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 && _ && e.enabled && _.update();
2181
- }, document.addEventListener("visibilitychange", s)), Me = !1;
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 rt(`Registration failed: ${o}`) : (console.warn(
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
- Me = !1, Ne = null;
2185
+ We = !1, xe = null;
2190
2186
  }
2191
- })(), Ne);
2187
+ })(), xe);
2192
2188
  }
2193
- async function Xe() {
2194
- if (!(!_ || !G))
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(), _?.removeEventListener("controlling", r), setTimeout(() => {
2219
+ n(), R?.removeEventListener("controlling", r), setTimeout(() => {
2224
2220
  ue = !1;
2225
2221
  }, 1e3);
2226
2222
  };
2227
- _.addEventListener("controlling", r), G.postMessage({ type: "SKIP_WAITING" }), setTimeout(() => {
2228
- de && _?.removeEventListener("controlling", de), navigator.serviceWorker.controller && n(), setTimeout(() => {
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 _e() {
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
- _ && (ce && _.removeEventListener("waiting", ce), fe && _.removeEventListener("activated", fe), de && _.removeEventListener("controlling", de), he && _.removeEventListener("registered", he), ve && _.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, _ = null), Q = !1, G = null, re = !1, Ie = null, Ge = !1, ue = !1, le();
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 Tt() {
2251
- if (!("serviceWorker" in navigator) || oe() || !await ze())
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 Be() {
2261
- const e = await Tt();
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 $o() {
2278
- oe() || !_ || await _.update();
2273
+ async function zo() {
2274
+ oe() || !R || await R.update();
2279
2275
  }
2280
- function fn(e) {
2281
- return Ve.push(e), () => {
2282
- Ve = Ve.filter((n) => n !== e);
2276
+ function gn(e) {
2277
+ return je.push(e), () => {
2278
+ je = je.filter((n) => n !== e);
2283
2279
  };
2284
2280
  }
2285
- const jo = Ue("shellcore"), Vo = () => {
2286
- const { t: e } = z("settings"), { config: n } = K(), { settings: r } = q(), [o, i] = R(!1), [s, c] = R(!1), [u, d] = R(!1), [f, g] = R(!1), p = r?.serviceWorker?.enabled ?? !0;
2287
- I(() => oe() ? void 0 : ((async () => {
2288
- const w = await Be();
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
- })(), fn((w) => {
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 Be()).updateAvailable)
2293
+ if ((await Me()).updateAvailable)
2298
2294
  return;
2299
- await $o(), await new Promise((v) => setTimeout(v, 1e3)), o || (await Be()).updateAvailable || (d(!0), window.setTimeout(() => d(!1), 3e3));
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), jo.error("Failed to check for service worker update:", { error: h });
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 Xe();
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(pr, {}),
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 Go = "shellui:settings";
2441
- function Lt() {
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 Et() {
2443
+ function Lt() {
2448
2444
  if (typeof window > "u")
2449
2445
  return { acceptedHosts: [], consentedCookieHosts: [] };
2450
2446
  try {
2451
- const e = localStorage.getItem(Go);
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 Yo(e) {
2463
- const n = Lt();
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 } = Et();
2461
+ const { acceptedHosts: o } = Lt();
2466
2462
  return o.includes(e);
2467
2463
  }
2468
- function Ko() {
2469
- const e = Lt();
2464
+ function Vo() {
2465
+ const e = Tt();
2470
2466
  if (!e?.cookieConsent?.cookies?.length) return !1;
2471
- const { consentedCookieHosts: n } = Et();
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 na() {
2479
- const e = Lt();
2474
+ function Gs() {
2475
+ const e = Tt();
2480
2476
  if (!e?.cookieConsent?.cookies?.length) return [];
2481
- const { consentedCookieHosts: n } = Et(), r = new Set(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 qo = "shellui:settings";
2485
- let at = !1;
2486
- function Zo() {
2480
+ const Go = "shellui:settings";
2481
+ let st = !1;
2482
+ function Yo() {
2487
2483
  if (typeof window > "u") return !0;
2488
- if (!Yo("sentry.io")) return !1;
2484
+ if (!jo("sentry.io")) return !1;
2489
2485
  try {
2490
- const e = localStorage.getItem(qo);
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 hn() {
2497
- if (!Zo())
2492
+ function mn() {
2493
+ if (!Yo())
2498
2494
  return;
2499
2495
  const e = globalThis, n = e.__SHELLUI_SENTRY_DSN__;
2500
- !n || typeof n != "string" || Promise.resolve(en).then((r) => {
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
- }), at = !0;
2501
+ }), st = !0;
2506
2502
  });
2507
2503
  }
2508
- function Jo() {
2509
- at && Promise.resolve(en).then((e) => {
2510
- e.close(), at = !1;
2504
+ function Ko() {
2505
+ st && import("@sentry/react").then((e) => {
2506
+ e.close(), st = !1;
2511
2507
  });
2512
2508
  }
2513
- hn();
2514
- const Xo = () => {
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 ? hn() : Jo();
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 Ce(e) {
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 $t(e, n) {
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 Qo(e) {
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 vn(e) {
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 ei = () => {
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
- }, ti = () => {
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
- }, ni = () => {
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
- }, ri = () => {
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
- }, oi = () => {
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 ? Ce(o?.navigation ?? []).filter(
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
- Ft,
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(ei, {}),
3225
- /* @__PURE__ */ t(ti, {}),
3226
- /* @__PURE__ */ t(ni, {}),
3227
- /* @__PURE__ */ t(ri, {})
3220
+ /* @__PURE__ */ t(Jo, {}),
3221
+ /* @__PURE__ */ t(Xo, {}),
3222
+ /* @__PURE__ */ t(Qo, {}),
3223
+ /* @__PURE__ */ t(ei, {})
3228
3224
  ] })
3229
3225
  ] })
3230
3226
  ] });
3231
- }, ii = () => {
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
- }, si = () => {
3323
- const { t: e } = z("settings"), { settings: n, updateSetting: r } = q(), [o, i] = R(!1), [s, c] = R(!1), [u, d] = R(!0), [f, g] = R(!0), p = n?.serviceWorker?.enabled ?? !0;
3324
- I(() => {
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 ze();
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 Be();
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 ze();
3345
+ const B = await Be();
3350
3346
  if (n?.serviceWorker?.enabled ?? !0)
3351
3347
  if (g(B), B) {
3352
- const H = await Be();
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 = fn((P) => {
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 Tt();
3365
+ const k = await Ft();
3370
3366
  i(k);
3371
3367
  }
3372
3368
  }, 1e3);
3373
3369
  }, m = async () => {
3374
3370
  try {
3375
- await Xe();
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
- }, ai = (e) => [
3521
+ }, oi = (e) => [
3526
3522
  {
3527
3523
  name: e("routes.appearance"),
3528
- icon: dr,
3524
+ icon: ar,
3529
3525
  path: "appearance",
3530
- element: /* @__PURE__ */ t(Er, {})
3526
+ element: /* @__PURE__ */ t(Fr, {})
3531
3527
  },
3532
3528
  {
3533
3529
  name: e("routes.languageAndRegion"),
3534
- icon: ur,
3530
+ icon: lr,
3535
3531
  path: "language-and-region",
3536
- element: /* @__PURE__ */ t(zo, {})
3532
+ element: /* @__PURE__ */ t(Wo, {})
3537
3533
  },
3538
3534
  {
3539
3535
  name: e("routes.updateApp"),
3540
- icon: br,
3536
+ icon: fr,
3541
3537
  path: "update-app",
3542
- element: /* @__PURE__ */ t(Vo, {})
3538
+ element: /* @__PURE__ */ t(Ho, {})
3543
3539
  },
3544
3540
  {
3545
3541
  name: e("routes.advanced"),
3546
- icon: gr,
3542
+ icon: dr,
3547
3543
  path: "advanced",
3548
- element: /* @__PURE__ */ t(Xo, {})
3544
+ element: /* @__PURE__ */ t(qo, {})
3549
3545
  },
3550
3546
  {
3551
3547
  name: e("routes.dataPrivacy"),
3552
- icon: vr,
3548
+ icon: mr,
3553
3549
  path: "data-privacy",
3554
- element: /* @__PURE__ */ t(ii, {})
3550
+ element: /* @__PURE__ */ t(ni, {})
3555
3551
  },
3556
3552
  {
3557
3553
  name: e("routes.develop"),
3558
- icon: mr,
3554
+ icon: ur,
3559
3555
  path: "developpers",
3560
- element: /* @__PURE__ */ t(oi, {})
3556
+ element: /* @__PURE__ */ t(ti, {})
3561
3557
  },
3562
3558
  ...oe() ? [] : [
3563
3559
  {
3564
3560
  name: e("routes.serviceWorker"),
3565
- icon: yr,
3561
+ icon: hr,
3566
3562
  path: "service-worker",
3567
- element: /* @__PURE__ */ t(si, {})
3563
+ element: /* @__PURE__ */ t(ri, {})
3568
3564
  }
3569
3565
  ]
3570
- ], li = () => {
3571
- const e = Fe(), n = mt(), { settings: r } = q(), { config: o } = K(), { t: i } = z("settings"), [s, c] = R(() => oe());
3572
- I(() => {
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
- }, []), I(() => {
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(() => ai(i), [i]), d = j(() => s ? u.filter((v) => v.path !== "service-worker") : u, [u, s]), f = j(() => r.developerFeatures.enabled ? d : d.filter(
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(ln, { children: /* @__PURE__ */ a("div", { className: "flex h-full w-full overflow-hidden items-start", children: [
3618
- /* @__PURE__ */ t(bt, { className: "hidden md:flex", children: /* @__PURE__ */ t(yt, { children: g.map((v) => /* @__PURE__ */ a(wt, { children: [
3619
- /* @__PURE__ */ t(kt, { children: v.title }),
3620
- /* @__PURE__ */ t(xt, { children: /* @__PURE__ */ t(qe, { children: v.routes.map((w) => /* @__PURE__ */ t(Ze, { children: /* @__PURE__ */ t(
3621
- Nt,
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(fr, {}) })
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(hr, {})
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(Ot, { children: [
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
- He,
3702
+ Ue,
3707
3703
  {
3708
3704
  index: !0,
3709
3705
  element: f.length > 0 ? /* @__PURE__ */ t(
3710
- Qt,
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
- He,
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(nn, { children: /* @__PURE__ */ a(rn, { children: [
3731
- /* @__PURE__ */ t(st, { children: i("title") }),
3732
- /* @__PURE__ */ t(sn, {}),
3733
- /* @__PURE__ */ t(st, { children: /* @__PURE__ */ t(on, { children: l.name }) })
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(Ot, { children: [
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
- He,
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
- He,
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
- }, ci = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
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 ui(e, n) {
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 pi() {
3772
- const { t: e, i18n: n } = z("cookieConsent"), { config: r } = K(), { settings: o, updateSetting: i } = q(), s = Fe(), 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(
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] = R(() => [
3768
+ ), l = o?.cookieConsent?.acceptedHosts ?? [], [m, h] = _(() => [
3776
3769
  .../* @__PURE__ */ new Set([...l, ...p])
3777
3770
  ]), v = Z(!1);
3778
- I(() => {
3771
+ D(() => {
3779
3772
  u && h([.../* @__PURE__ */ new Set([...l, ...p])]);
3780
- }, [u, l, p]), I(() => {
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]), I(() => () => {
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 D = new Set(y);
3812
- return A.filter((N) => !D.has(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: di.map((C) => {
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: (D) => T(C, D),
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((D) => {
3893
- const N = m.includes(D.host);
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: D.name }),
3901
- D.description && /* @__PURE__ */ t("p", { className: "text-xs text-muted-foreground mt-0.5 line-clamp-2", children: pe(D.description, d) }),
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: D.host }),
3896
+ /* @__PURE__ */ t("span", { children: I.host }),
3904
3897
  /* @__PURE__ */ t("span", { children: "•" }),
3905
- /* @__PURE__ */ t("span", { children: ui(D.durationSeconds, e) }),
3898
+ /* @__PURE__ */ t("span", { children: ai(I.durationSeconds, e) }),
3906
3899
  /* @__PURE__ */ t("span", { children: "•" }),
3907
- /* @__PURE__ */ t("span", { className: "capitalize", children: D.type.replace("_", " ") })
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(D.host, F),
3915
- "aria-label": D.name
3907
+ onCheckedChange: (F) => k(I.host, F),
3908
+ "aria-label": I.name
3916
3909
  }
3917
3910
  )
3918
3911
  ]
3919
3912
  },
3920
- D.host
3913
+ I.host
3921
3914
  );
3922
3915
  }) })
3923
3916
  ]
@@ -3961,11 +3954,7 @@ function pi() {
3961
3954
  ] })
3962
3955
  ] });
3963
3956
  }
3964
- const gi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
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 jt = Ue("shellcore"), Qe = ({
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 = mt(), s = Z(null), c = Z(!1), [u] = R(e), [d, f] = R(!0);
3984
- return I(() => {
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 = Hn(s.current);
3976
+ const g = zn(s.current);
3988
3977
  return () => {
3989
- $n(g);
3978
+ Un(g);
3990
3979
  };
3991
- }, []), I(() => {
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]), 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
- }, []), I(() => {
4012
+ }, []), D(() => {
4024
4013
  if (!d) return;
4025
4014
  const g = setTimeout(() => {
4026
- jt.info("ContentView: Timeout expired, hiding loading overlay"), f(!1);
4015
+ $t.info("ContentView: Timeout expired, hiding loading overlay"), f(!1);
4027
4016
  }, 400);
4028
4017
  return () => clearTimeout(g);
4029
- }, [d]), I(() => {
4018
+ }, [d]), D(() => {
4030
4019
  s.current && !c.current && s.current.src !== e && (s.current.src = e, f(!0));
4031
- }, [e]), I(() => {
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
- jt.debug("Could not inject stylesheet wait script:", { error: l });
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]), I(() => {
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(mi, {})
4092
+ d && /* @__PURE__ */ t(ci, {})
4104
4093
  ] });
4105
- }, fi = ({ navigation: e }) => {
4106
- const r = Fe().pathname, o = j(() => e.find((u) => {
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
- Qt,
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
- Qe,
4110
+ Xe,
4122
4111
  {
4123
4112
  url: c,
4124
4113
  pathPrefix: o.path,
4125
4114
  navItem: o
4126
4115
  }
4127
4116
  );
4128
- }, hi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4129
- __proto__: null,
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
- }, yi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4175
- __proto__: null,
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 ki(e) {
4186
- return Bn(e) ? e.data?.message ?? e.statusText ?? "Something went wrong" : e instanceof Error ? e.message : String(e);
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 xi(e) {
4171
+ function fi(e) {
4189
4172
  return e instanceof Error && e.stack ? e.stack : null;
4190
4173
  }
4191
- function Ni(e) {
4192
- const n = ki(e), r = xi(e);
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 Ci() {
4200
- const e = Mn(), { t: n } = z("common"), r = wi(e), o = Ni(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 Si = (e) => {
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
- }, bn = Se(void 0), yn = () => {
4256
- const e = Ae(bn);
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
- }, Ai = ({ children: e }) => {
4261
- const [n, r] = R(!1), [o, i] = R(null), s = L((u) => {
4262
- const d = u ? Si(u) : null;
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 I(() => {
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(bn.Provider, { value: { isOpen: n, modalUrl: o, openModal: s, closeModal: c }, children: e });
4281
- }, Fi = (e) => {
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
- }, Vt = "right", wn = Se(void 0), Ti = () => {
4296
- const e = Ae(wn);
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
- }, Li = ({ children: e }) => {
4301
- const { closeModal: n } = yn(), [r, o] = R(!1), [i, s] = R(null), [c, u] = R(Vt), [d, f] = R(null), g = L(
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 ? Fi(m) : null;
4305
- s(h), u(l?.position ?? Vt), f(l?.size ?? null), o(!0);
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 I(() => {
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(wn.Provider, { value: { isOpen: r, drawerUrl: i, position: c, size: d, openDrawer: g, closeDrawer: p }, children: e });
4325
- }, Ei = Se(void 0), Ii = ({ children: e }) => {
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 I(() => {
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(Ei.Provider, { value: { toast: n }, children: e });
4508
+ }, [n]), /* @__PURE__ */ t(Ni.Provider, { value: { toast: n }, children: e });
4526
4509
  };
4527
- function It({ children: e }) {
4528
- return /* @__PURE__ */ t(Ai, { children: /* @__PURE__ */ t(Li, { children: /* @__PURE__ */ t(Ii, { children: e }) }) });
4510
+ function Et({ children: e }) {
4511
+ return /* @__PURE__ */ t(yi, { children: /* @__PURE__ */ t(xi, { children: /* @__PURE__ */ t(Ci, { children: e }) }) });
4529
4512
  }
4530
- const Di = ae.Root, _i = ae.Portal, kn = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
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
- kn.displayName = ae.Overlay.displayName;
4541
- const xn = E(
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 = it.count(n) > 2, u = L(
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(_i, { children: [
4550
- /* @__PURE__ */ t(kn, {}),
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
- xn.displayName = ae.Content.displayName;
4596
- const lt = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
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
- lt.displayName = ae.Title.displayName;
4605
- const ct = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
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
- ct.displayName = ae.Description.displayName;
4614
- const Nn = ({
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
- Nn.displayName = "Drawer";
4629
- const Ri = ie.Trigger;
4630
- Ri.displayName = "DrawerTrigger";
4631
- const Cn = ie.Portal;
4632
- Cn.displayName = "DrawerPortal";
4633
- const Sn = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
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
- Sn.displayName = ie.Overlay.displayName;
4644
- const Pi = {
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
- }, An = E(
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(Cn, { children: [
4653
- /* @__PURE__ */ t(Sn, {}),
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", Pi[u], e),
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
- An.displayName = "DrawerContent";
4705
- const Oi = ie.Close;
4706
- Oi.displayName = "DrawerClose";
4707
- const Wi = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
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
- Wi.displayName = ie.Title.displayName;
4716
- const Mi = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
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
- Mi.displayName = ie.Description.displayName;
4725
- const Bi = ({ ...e }) => {
4707
+ Di.displayName = ie.Description.displayName;
4708
+ const Ii = ({ ...e }) => {
4726
4709
  const { settings: n } = q();
4727
4710
  return /* @__PURE__ */ t(
4728
- Kn,
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 = mt(), { isOpen: o, modalUrl: i, closeModal: s } = yn(), {
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
- } = Ti(), { t: p, i18n: l } = z("common"), m = l.language || "en";
4759
- return I(() => {
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]), I(() => {
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
- Di,
4772
+ Si,
4790
4773
  {
4791
4774
  open: o,
4792
4775
  onOpenChange: s,
4793
- children: /* @__PURE__ */ t(xn, { className: "max-w-4xl w-full h-[80vh] max-h-[680px] flex flex-col p-0 overflow-hidden", children: i ? /* @__PURE__ */ a(V, { children: [
4794
- /* @__PURE__ */ t(lt, { className: "sr-only", children: pe(
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(ct, { className: "sr-only", children: p("modalContent") ?? "Modal content" }),
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
- Qe,
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(lt, { className: "sr-only", children: "Error: Modal URL is undefined" }),
4817
- /* @__PURE__ */ t(ct, { className: "sr-only", children: "The openModal function was called without a valid URL parameter." }),
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
- Nn,
4814
+ kn,
4832
4815
  {
4833
4816
  open: c,
4834
4817
  onOpenChange: (h) => !h && g(),
4835
4818
  direction: d,
4836
4819
  children: /* @__PURE__ */ t(
4837
- An,
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
- Qe,
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(Bi, {})
4846
+ /* @__PURE__ */ t(Ii, {})
4864
4847
  ] });
4865
4848
  }
4866
- const Fn = (e) => {
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
- }, Gt = ({
4856
+ }, Vt = ({
4874
4857
  navigation: e
4875
4858
  }) => {
4876
- const n = Fe(), { 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) => {
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 ? Fn(d.url) : null, v = d.icon ?? h ?? null, w = v ? /* @__PURE__ */ t(
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(Yi, { className: "ml-auto h-4 w-4 shrink-0 opacity-70" }) : null
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
- et,
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
- Nt,
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
- wt,
4918
+ yt,
4936
4919
  {
4937
4920
  className: "mt-0",
4938
4921
  children: [
4939
- /* @__PURE__ */ t(kt, { className: "mb-1", children: f }),
4940
- /* @__PURE__ */ t(xt, { children: /* @__PURE__ */ t(qe, { className: "gap-0.5", children: d.items.map((g) => /* @__PURE__ */ t(Ze, { children: u(g) }, g.path)) }) })
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
- qe,
4930
+ Ke,
4948
4931
  {
4949
4932
  className: "gap-0.5",
4950
- children: /* @__PURE__ */ t(Ze, { children: u(d) })
4933
+ children: /* @__PURE__ */ t(qe, { children: u(d) })
4951
4934
  },
4952
4935
  d.path
4953
4936
  );
4954
4937
  }) });
4955
- }, zi = ({
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(cn, { className: "border-b border-sidebar-border pb-4", children: (e || n) && /* @__PURE__ */ t(
4962
- et,
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(yt, { className: "gap-1", children: /* @__PURE__ */ t(Gt, { navigation: r }) }),
4977
- o.length > 0 && /* @__PURE__ */ t(dn, { children: /* @__PURE__ */ t(Gt, { navigation: o }) })
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 Ui(e, n) {
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 Hi = 64, Yt = 4, $i = 12, ji = 6, Vi = (e) => e.startsWith("/icons/"), Gi = ({
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
- et,
5015
+ Qe,
5033
5016
  {
5034
5017
  to: s,
5035
5018
  className: u,
5036
5019
  children: c
5037
5020
  }
5038
5021
  );
5039
- }, Yi = ({ className: e }) => /* @__PURE__ */ a(
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
- ), Ki = ({ className: e }) => /* @__PURE__ */ t(
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
- ), qi = ({ className: e }) => /* @__PURE__ */ t(
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
- ), Zi = ({ className: e }) => /* @__PURE__ */ a(
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
- ), Ji = ({
5093
+ ), ji = ({
5111
5094
  items: e,
5112
5095
  currentLanguage: n
5113
5096
  }) => {
5114
- const r = Fe(), [o, i] = R(!1), s = Z(null), [c, u] = R(0);
5115
- gt(() => {
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 - $i * 2), h = Hi + Yt, v = c > 0 ? Math.floor((m + Yt) / h) : 5, w = Math.min(Math.max(0, v), ji), 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));
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
- I(() => {
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 ? Fn(l.url) : null, P = l.icon ?? T ?? null, B = P ? Vi(P) : !1;
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
- Gi,
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
- et,
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(Zi, { className: "size-4" }) }),
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(qi, { className: "size-4" }) : /* @__PURE__ */ t(Ki, { className: "size-4" }) }),
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
- }, Xi = ({ title: e, logo: n, navigation: r }) => {
5208
- const o = Fe(), { i18n: i } = z(), s = i.language || "en", { startNav: c, endItems: u, navigationItems: d, mobileNavItems: f } = j(() => {
5209
- const g = $t(r, "desktop"), p = $t(r, "mobile"), { start: l, end: m } = vn(g), h = Ce(g), v = Ce(p);
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: Qo(l),
5194
+ startNav: Zo(l),
5212
5195
  endItems: m,
5213
5196
  navigationItems: h,
5214
5197
  mobileNavItems: v
5215
5198
  };
5216
5199
  }, [r]);
5217
- return I(() => {
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 = Ui(l.label, s);
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(It, { children: /* @__PURE__ */ t(ln, { children: /* @__PURE__ */ a(Dt, { navigationItems: d, children: [
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(bt, { className: x("hidden md:flex shrink-0"), children: /* @__PURE__ */ t(
5233
- zi,
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(ft, {}) }) })
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
- Ji,
5227
+ ji,
5245
5228
  {
5246
5229
  items: f,
5247
5230
  currentLanguage: s
5248
5231
  }
5249
5232
  )
5250
5233
  ] }) }) });
5251
- }, Qi = ({ title: e, appIcon: n, logo: r, navigation: o }) => /* @__PURE__ */ t(
5252
- Xi,
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
- ), es = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5260
- __proto__: null,
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 ns({ title: e, navigation: n }) {
5267
- const r = Fe(), { i18n: o } = z(), i = o.language || "en", s = j(() => Ce(n), [n]);
5268
- return I(() => {
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 = ts(d.label, i);
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(It, { 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(ft, {}) }) }) });
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 rs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
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
- }, Ye = (e) => e.startsWith("/icons/"), os = () => `win-${Date.now()}-${Math.random().toString(36).slice(2)}`, Kt = 280, qt = 200, is = 720, ss = 480, dt = 48;
5294
- function Zt() {
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 - dt : 600
5276
+ h: typeof window < "u" ? window.innerHeight - ct : 600
5300
5277
  };
5301
5278
  }
5302
- function as(e, n, r) {
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 ls({
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] = R(e.bounds), [l, m] = R(!1), h = Z(g), v = Z(null), w = Z(null), k = Z(null), T = Z(null), P = Z(null);
5318
- I(() => {
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]), I(() => {
5297
+ }, [e.bounds]), D(() => {
5321
5298
  c(g);
5322
- }, [g, c]), I(() => {
5299
+ }, [g, c]), D(() => {
5323
5300
  if (!l) return;
5324
- const N = () => p(Zt());
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(Zt()), m(!0));
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 - $, Pt = N.clientY - ge, xe = { ...ee };
5367
- if (F.includes("e") && (xe.w = Math.max(Kt, ee.w + Rt)), F.includes("w")) {
5368
- const me = Math.max(Kt, ee.w - Rt);
5369
- xe.x = ee.x + ee.w - me, xe.w = me;
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") && (xe.h = Math.max(qt, ee.h + Pt)), F.includes("n")) {
5372
- const me = Math.max(qt, ee.h - Pt);
5373
- xe.y = ee.y + ee.h - me, xe.h = me;
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 = xe, T.current === null && (T.current = requestAnimationFrame(() => {
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
- () => as(e.baseUrl, e.path, e.pathname),
5378
+ () => Xi(e.baseUrl, e.path, e.pathname),
5402
5379
  [e.baseUrl, e.path, e.pathname]
5403
- ), D = o ? u : d;
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: D
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
- Ye(e.icon) && "opacity-90 dark:opacity-100 dark:invert"
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(ds, { className: "h-4 w-4" }) : /* @__PURE__ */ t(cs, { className: "h-4 w-4" })
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(us, { className: "h-4 w-4" })
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
- Qe,
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 cs({ className: e }) {
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 ds({ className: e }) {
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 us({ className: e }) {
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 ps({ className: e }) {
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 gs() {
5591
+ function os() {
5615
5592
  return typeof window < "u" && Intl.DateTimeFormat ? Intl.DateTimeFormat().resolvedOptions().timeZone : "UTC";
5616
5593
  }
5617
- function ms({
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 ?? gs(), { startNavItems: d, endNavItems: f, navigationItems: g } = j(() => {
5624
- const { start: y, end: A } = vn(o);
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: Ce(y),
5603
+ startNavItems: Ne(y),
5627
5604
  endNavItems: A,
5628
- navigationItems: Ce(o)
5605
+ navigationItems: Ne(o)
5629
5606
  };
5630
- }, [o]), [p, l] = R([]), [m, h] = R(null), [v, w] = R(!1), [k, T] = R(() => /* @__PURE__ */ new Date()), P = Z(null);
5631
- I(() => {
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), D = y.openIn === "external" && !y.icon ? ot(y.url) : null, N = y.icon ?? D ?? null, F = os(), $ = {
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: is,
5644
- h: ss
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((D) => D.id !== y)), h((A) => A === y ? null : A);
5638
+ l((A) => A.filter((I) => I.id !== y)), h((A) => A === y ? null : A);
5662
5639
  }, []);
5663
- I(() => {
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((D) => D.map((N) => N.id === y ? { ...N, bounds: A } : N));
5650
+ l((I) => I.map((N) => N.id === y ? { ...N, bounds: A } : N));
5674
5651
  }, []);
5675
- I(() => {
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(It, { children: /* @__PURE__ */ a(Dt, { navigationItems: g, children: [
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: dt },
5682
+ style: { paddingBottom: ct },
5706
5683
  children: p.map((y, A) => {
5707
- const D = g.find(($) => $.path === y.path);
5708
- if (!D) return null;
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
- ls,
5688
+ Qi,
5712
5689
  {
5713
5690
  win: y,
5714
- navItem: D,
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: dt,
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(ps, { className: "h-5 w-5" }),
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), D = y.icon ?? (y.openIn === "external" ? ot(y.url) : null);
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
- D ? /* @__PURE__ */ t(
5755
+ I ? /* @__PURE__ */ t(
5779
5756
  "img",
5780
5757
  {
5781
- src: D,
5758
+ src: I,
5782
5759
  alt: "",
5783
5760
  className: x(
5784
5761
  "h-5 w-5 shrink-0 rounded-sm object-cover",
5785
- Ye(D) && "opacity-90 dark:opacity-100 dark:invert"
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), D = A ? pe(A.label, c) : y.label, N = y.id === m;
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: D,
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
- Ye(y.icon) && "opacity-90 dark:opacity-100 dark:invert"
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: D })
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), D = y.icon ?? (y.openIn === "external" ? ot(y.url) : null);
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
- D ? /* @__PURE__ */ t(
5821
+ I ? /* @__PURE__ */ t(
5845
5822
  "img",
5846
5823
  {
5847
- src: D,
5824
+ src: I,
5848
5825
  alt: "",
5849
5826
  className: x(
5850
5827
  "h-4 w-4 shrink-0 rounded-sm object-cover",
5851
- Ye(D) && "opacity-90 dark:opacity-100 dark:invert"
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 fs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5909
- __proto__: null,
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 ws({
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 } = wr(), c = s.layout ?? e;
5902
+ const { settings: s } = vr(), c = s.layout ?? e;
5935
5903
  let u, d;
5936
- return c === "fullscreen" ? (u = vs, d = { title: n, navigation: i }) : c === "windows" ? (u = bs, d = { title: n, appIcon: r, logo: o, navigation: i }) : (u = hs, d = { title: n, appIcon: r, logo: o, navigation: i }), /* @__PURE__ */ t(Ee, { fallback: /* @__PURE__ */ t(ys, {}), children: /* @__PURE__ */ t(u, { ...d }) });
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 ks = ke(
5939
- () => Promise.resolve(Jn).then((e) => ({ default: e.HomeView }))
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 As = (e) => {
5916
+ const hs = (e) => {
5961
5917
  const n = [
5962
5918
  {
5963
5919
  path: "/",
5964
- element: /* @__PURE__ */ t(ft, {}),
5965
- errorElement: /* @__PURE__ */ t(Ci, {}),
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(Ee, { fallback: /* @__PURE__ */ t(Pe, {}), children: /* @__PURE__ */ t(xs, {}) })
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(Ee, { fallback: /* @__PURE__ */ t(Pe, {}), children: /* @__PURE__ */ t(Ns, {}) })
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(Ee, { fallback: /* @__PURE__ */ t(Pe, {}), children: /* @__PURE__ */ t(Ss, {}) })
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
- ws,
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(Ee, { fallback: /* @__PURE__ */ t(Pe, {}), children: /* @__PURE__ */ t(ks, {}) })
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 = Ce(e.navigation);
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(Ee, { fallback: /* @__PURE__ */ t(Pe, {}), children: /* @__PURE__ */ t(Cs, { navigation: o }) })
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
- }, Fs = (e) => {
6013
- const n = As(e);
6014
- return zn(n);
6015
- }, Le = Ue("shellcore");
6016
- function Ts(e) {
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 Ls(e, n) {
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 je(e, n, r) {
5978
+ function $e(e, n, r) {
6023
5979
  if (!n?.length) return e;
6024
- const o = Ts(n).map((i) => ({
5980
+ const o = bs(n).map((i) => ({
6025
5981
  path: i.path,
6026
5982
  url: i.url,
6027
- label: Ls(i.label, r)
5983
+ label: ys(i.label, r)
6028
5984
  }));
6029
5985
  return { ...e, navigation: { items: o } };
6030
5986
  }
6031
- const Oe = "shellui:settings", Tn = () => typeof window < "u" && Intl ? Intl.DateTimeFormat().resolvedOptions().timeZone : "UTC", ne = {
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: Tn()
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 Es({ children: e }) {
6063
- const { config: n } = K(), { i18n: r } = z(), o = Z(null), [i, s] = R(() => {
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(Oe);
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 || Tn()
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
- Le.error("Failed to load settings from localStorage:", { error: p });
6062
+ Te.error("Failed to load settings from localStorage:", { error: p });
6107
6063
  }
6108
6064
  return o.current = ne, ne;
6109
6065
  });
6110
- I(() => {
6066
+ D(() => {
6111
6067
  o.current = i;
6112
- }, [i]), 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(Oe, JSON.stringify(v));
6122
- const w = je(
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
- Le.info("Root Parent received settings update", { message: m }), b.propagateMessage({
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
- Le.error("Failed to update settings from message:", { error: w });
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 = je(
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(Oe, JSON.stringify(p)), s(p);
6165
- const l = je(
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
- Le.error("Failed to update settings in localStorage:", { error: l });
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(Oe);
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(Oe, JSON.stringify(p));
6202
- const l = je(
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
- }), Le.info("All app data has been reset");
6171
+ }), Te.info("All app data has been reset");
6216
6172
  } catch (g) {
6217
- Le.error("Failed to reset all data:", { error: g });
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(Ct.Provider, { value: f, children: e });
6184
+ return /* @__PURE__ */ t(Nt.Provider, { value: f, children: e });
6229
6185
  }
6230
- function Is(e) {
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 Ds() {
6190
+ function xs() {
6235
6191
  const { settings: e } = q(), { config: n } = K(), r = e.appearance?.theme || "system", o = e.appearance?.themeName || "default";
6236
- gt(() => {
6192
+ pt(() => {
6237
6193
  const i = o;
6238
6194
  n?.themes && n.themes.forEach((c) => {
6239
- un(c);
6195
+ cn(c);
6240
6196
  });
6241
- const s = tt(i) || tt("default");
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
- Is(u), Mt(s, u);
6200
+ ks(u), Wt(s, u);
6245
6201
  } else {
6246
6202
  console.error("[Theme] No theme definition found, using fallback");
6247
- const c = tt("default");
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
- Mt(c, u);
6206
+ Wt(c, u);
6251
6207
  }
6252
6208
  }
6253
6209
  }, [r, o, n]);
6254
6210
  }
6255
- function _s({ children: e }) {
6256
- return Ds(), /* @__PURE__ */ t(V, { children: e });
6211
+ function Ns({ children: e }) {
6212
+ return xs(), /* @__PURE__ */ t(V, { children: e });
6257
6213
  }
6258
- function Rs({ children: e }) {
6214
+ function Cs({ children: e }) {
6259
6215
  const { settings: n } = q(), { config: r } = K(), o = n.language?.code || "en";
6260
- return I(() => {
6261
- r?.language && pn(r.language);
6262
- }, [r?.language]), I(() => {
6263
- Ke.language !== o && Ke.changeLanguage(o);
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 Jt = X.Root, Ln = X.Portal, _t = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
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
- _t.displayName = X.Overlay.displayName;
6277
- const Ps = ht(
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
- ), En = E(({ className: e, size: n = "default", children: r, style: o, ...i }, s) => /* @__PURE__ */ a(Ln, { children: [
6291
- /* @__PURE__ */ t(_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(Ps({ size: n }), "group", e),
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
- En.displayName = X.Content.displayName;
6306
- const In = ({ className: e, ...n }) => /* @__PURE__ */ t(
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
- In.displayName = "AlertDialogHeader";
6317
- const Dn = ({ className: e, ...n }) => /* @__PURE__ */ t(
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
- Dn.displayName = "AlertDialogMedia";
6328
- const _n = ({ className: e, ...n }) => /* @__PURE__ */ t(
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
- _n.displayName = "AlertDialogFooter";
6343
- const ut = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
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
- ut.displayName = X.Title.displayName;
6352
- const pt = E(({ className: e, ...n }, r) => /* @__PURE__ */ t(
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
- pt.displayName = X.Description.displayName;
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 We = E(({ className: e, variant: n, size: r, ...o }, i) => /* @__PURE__ */ t(X.Cancel, { asChild: !0, children: /* @__PURE__ */ t(
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
- We.displayName = X.Cancel.displayName;
6383
- const Os = 200, Ws = () => /* @__PURE__ */ a(
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
- ), Ms = ({ className: e }) => /* @__PURE__ */ t(
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
- ), Rn = Se(void 0);
6430
- function Bs() {
6431
- const e = Ae(Rn);
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 zs = ({ children: e }) => {
6437
- const [n, r] = R(null), [o, i] = R(!1), s = Z(null), c = L(() => {
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
- }, Os);
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
- I(() => {
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
- We,
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
- We,
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
- We,
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
- We,
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
- Jt,
6582
+ Zt,
6627
6583
  {
6628
6584
  open: o,
6629
6585
  onOpenChange: u,
6630
- children: /* @__PURE__ */ a(Ln, { children: [
6631
- /* @__PURE__ */ t(_t, { style: { zIndex: J.COOKIE_CONSENT_OVERLAY } }),
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(Ms, { className: "h-5 w-5 text-primary" })
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(ut, { className: "text-base font-semibold leading-tight", children: n.title }),
6659
- n.description && /* @__PURE__ */ t(pt, { className: "text-sm leading-relaxed", children: n.description })
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(Rn.Provider, { value: { dialog: p }, children: [
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
- Jt,
6628
+ Zt,
6673
6629
  {
6674
6630
  open: o,
6675
6631
  onOpenChange: u,
6676
- children: /* @__PURE__ */ a(En, { size: n.size ?? "default", children: [
6677
- /* @__PURE__ */ a(In, { children: [
6678
- n.mode === "delete" && /* @__PURE__ */ t(Dn, { className: "bg-destructive/10 text-destructive dark:bg-destructive/20 dark:text-destructive", children: /* @__PURE__ */ t(Ws, {}) }),
6679
- /* @__PURE__ */ t(ut, { children: n.title }),
6680
- n.description && /* @__PURE__ */ t(pt, { children: n.description })
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(_n, { children: l() })
6638
+ /* @__PURE__ */ t(Dn, { children: l() })
6683
6639
  ] })
6684
6640
  }
6685
6641
  ) })
6686
6642
  ] });
6687
6643
  };
6688
- function Xt() {
6689
- const { t: e } = z("cookieConsent"), { config: n } = K(), { settings: r, updateSetting: o } = q(), { dialog: i } = Bs(), 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(() => {
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 I(() => {
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 Us = () => {
6693
+ const Ds = () => {
6738
6694
  const { config: e } = K(), { settings: n } = q();
6739
- I(() => {
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]), I(() => {
6700
+ }, [e?.favicon]), D(() => {
6745
6701
  if (oe()) {
6746
- _e();
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"), _e());
6707
+ o && (console.warn("[Service Worker] Disabled: No navigation items configured"), Ie());
6752
6708
  return;
6753
6709
  }
6754
- o ? mn({
6710
+ o ? pn({
6755
6711
  enabled: !0
6756
- }) : _e();
6712
+ }) : Ie();
6757
6713
  }, [n?.serviceWorker?.enabled, e?.navigation]);
6758
- const r = j(() => e ? Fs(e) : null, [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(Xt, {}),
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(Xt, {}),
6767
- /* @__PURE__ */ t(Un, { router: r })
6722
+ /* @__PURE__ */ t(Jt, {}),
6723
+ /* @__PURE__ */ t(Bn, { router: r })
6768
6724
  ] }) : null;
6769
- }, ra = () => {
6770
- const [e, n] = R(!0);
6771
- return gt(() => {
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(qn, { children: /* @__PURE__ */ t(Es, { children: /* @__PURE__ */ t(_s, { children: /* @__PURE__ */ t(Rs, { children: /* @__PURE__ */ t(zs, { children: /* @__PURE__ */ t(Us, {}) }) }) }) }) });
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 oa(e) {
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 || Ko();
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
- ra as App,
6791
- Yo as getCookieConsentAccepted,
6792
- Ko as getCookieConsentNeedsRenewal,
6793
- na as getCookieConsentNewHosts,
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
- oa as useCookieConsent
6752
+ Ks as useCookieConsent
6797
6753
  };
6798
6754
  //# sourceMappingURL=index.js.map