@shellui/core 0.0.12 → 0.0.14
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/{CookiePreferencesView-CIXBJWNt.js → CookiePreferencesView-Bb3hFqw1.js} +3 -3
- package/dist/{CookiePreferencesView-CIXBJWNt.js.map → CookiePreferencesView-Bb3hFqw1.js.map} +1 -1
- package/dist/{DefaultLayout-Bztmv2c_.js → DefaultLayout-D3IpgS4j.js} +4 -4
- package/dist/{DefaultLayout-Bztmv2c_.js.map → DefaultLayout-D3IpgS4j.js.map} +1 -1
- package/dist/{FullscreenLayout-DiX6dbkf.js → FullscreenLayout-Do9vAfl8.js} +3 -3
- package/dist/{FullscreenLayout-DiX6dbkf.js.map → FullscreenLayout-Do9vAfl8.js.map} +1 -1
- package/dist/{HomeView-C610YU6V.js → HomeView-DwckTuxz.js} +2 -2
- package/dist/{HomeView-C610YU6V.js.map → HomeView-DwckTuxz.js.map} +1 -1
- package/dist/{NotFoundView-D00gYlq-.js → NotFoundView-DD7azhz-.js} +2 -2
- package/dist/{NotFoundView-D00gYlq-.js.map → NotFoundView-DD7azhz-.js.map} +1 -1
- package/dist/{OverlayShell-CGjN4rTu.js → OverlayShell-kDY56DaN.js} +2 -2
- package/dist/{OverlayShell-CGjN4rTu.js.map → OverlayShell-kDY56DaN.js.map} +1 -1
- package/dist/{SettingsView-2QMtfS71.js → SettingsView-Bt4I-KDT.js} +4 -4
- package/dist/{SettingsView-2QMtfS71.js.map → SettingsView-Bt4I-KDT.js.map} +1 -1
- package/dist/{WindowsLayout-DkSNQDSb.js → WindowsLayout-CEqkRKyk.js} +3 -3
- package/dist/{WindowsLayout-DkSNQDSb.js.map → WindowsLayout-CEqkRKyk.js.map} +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/features/config/ConfigProvider.d.ts.map +1 -1
- package/dist/features/config/useConfig.d.ts.map +1 -1
- package/dist/{index-PsePV0Ng.js → index-CfvdAI_Y.js} +130 -122
- package/dist/index-CfvdAI_Y.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/{sidebar-Cvm_uv4l.js → sidebar-Dt-gibIZ.js} +2 -2
- package/dist/{sidebar-Cvm_uv4l.js.map → sidebar-Dt-gibIZ.js.map} +1 -1
- package/dist/{switch-BjkiJBIa.js → switch-CuKXfl3x.js} +2 -2
- package/dist/{switch-BjkiJBIa.js.map → switch-CuKXfl3x.js.map} +1 -1
- package/package.json +2 -2
- package/src/features/config/ConfigProvider.ts +20 -5
- package/src/features/config/useConfig.ts +14 -1
- package/dist/index-PsePV0Ng.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { jsx as i, jsxs as C, Fragment as
|
|
2
|
-
import { createContext as Se, useState as ne, createElement as st, useContext as me, forwardRef as G, lazy as M, Suspense as Y, useRef as ue, useEffect as z, useCallback as T, useMemo as
|
|
1
|
+
import { jsx as i, jsxs as C, Fragment as R } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as Se, useState as ne, createElement as st, useContext as me, forwardRef as G, lazy as M, Suspense as Y, useRef as ue, useEffect as z, useCallback as T, useMemo as Ee, useLayoutEffect as Ge } from "react";
|
|
3
3
|
import { useRouteError as at, isRouteErrorResponse as lt, Outlet as ct, createBrowserRouter as dt, RouterProvider as ut } from "react-router";
|
|
4
|
-
import { getLogger as
|
|
4
|
+
import { getLogger as Ae, shellui as m } from "@shellui/sdk";
|
|
5
5
|
import { useTranslation as Te, initReactI18next as pt } from "react-i18next";
|
|
6
6
|
import { Slot as gt } from "@radix-ui/react-slot";
|
|
7
7
|
import { cva as Ke } from "class-variance-authority";
|
|
@@ -9,18 +9,22 @@ import { clsx as ft } from "clsx";
|
|
|
9
9
|
import { twMerge as mt } from "tailwind-merge";
|
|
10
10
|
import we from "./constants/urls.js";
|
|
11
11
|
import pe from "i18next";
|
|
12
|
-
import * as
|
|
12
|
+
import * as E from "@radix-ui/react-alert-dialog";
|
|
13
13
|
import { Workbox as ht } from "workbox-window";
|
|
14
|
-
const K =
|
|
15
|
-
let
|
|
14
|
+
const K = Ae("shellcore"), qe = Se(null);
|
|
15
|
+
let Be = !1;
|
|
16
16
|
function vt(e) {
|
|
17
17
|
const [t] = ne(() => {
|
|
18
18
|
try {
|
|
19
|
-
|
|
19
|
+
let o = __SHELLUI_CONFIG__;
|
|
20
|
+
if (o === void 0 && typeof window < "u") {
|
|
21
|
+
const s = window;
|
|
22
|
+
s.__SHELLUI_CONFIG__ !== void 0 && (o = s.__SHELLUI_CONFIG__);
|
|
23
|
+
}
|
|
20
24
|
if (o != null && typeof o == "string")
|
|
21
25
|
try {
|
|
22
26
|
const s = JSON.parse(o);
|
|
23
|
-
return typeof window < "u" && s.runtime === "tauri" && (window.__SHELLUI_TAURI__ = !0), process.env.NODE_ENV === "development" && !
|
|
27
|
+
return typeof window < "u" && s.runtime === "tauri" && (window.__SHELLUI_TAURI__ = !0), process.env.NODE_ENV === "development" && !Be && (Be = !0, K.info("Config loaded from __SHELLUI_CONFIG__", {
|
|
24
28
|
hasNavigation: !!s.navigation,
|
|
25
29
|
navigationItems: s.navigation?.length || 0
|
|
26
30
|
})), s;
|
|
@@ -28,12 +32,12 @@ function vt(e) {
|
|
|
28
32
|
K.error("Failed to parse config JSON:", { error: s }), K.error("Config value (first 200 chars):", { value: o.substring(0, 200) });
|
|
29
33
|
}
|
|
30
34
|
const n = globalThis;
|
|
31
|
-
if (typeof n.__SHELLUI_CONFIG__ < "u") {
|
|
35
|
+
if (typeof n.__SHELLUI_CONFIG__ < "u" && o === void 0) {
|
|
32
36
|
const s = n.__SHELLUI_CONFIG__, l = typeof s == "string" ? JSON.parse(s) : s;
|
|
33
37
|
return typeof window < "u" && l.runtime === "tauri" && (window.__SHELLUI_TAURI__ = !0), process.env.NODE_ENV === "development" && K.warn("Config loaded from globalThis fallback (define may not have worked)"), l;
|
|
34
38
|
}
|
|
35
|
-
return K.warn(
|
|
36
|
-
"Config not found. Using empty config. Make sure shellui.config.ts is properly loaded
|
|
39
|
+
return process.env.NODE_ENV === "development" && K.warn(
|
|
40
|
+
"Config not found. Using empty config. Make sure shellui.config.ts is properly loaded and Vite define is configured correctly."
|
|
37
41
|
), {};
|
|
38
42
|
} catch (o) {
|
|
39
43
|
return K.error("Failed to load ShellUI config:", { error: o }), {};
|
|
@@ -43,8 +47,12 @@ function vt(e) {
|
|
|
43
47
|
}
|
|
44
48
|
function X() {
|
|
45
49
|
const e = me(qe);
|
|
46
|
-
if (e === null)
|
|
47
|
-
|
|
50
|
+
if (e === null) {
|
|
51
|
+
const t = new Error(
|
|
52
|
+
"useConfig must be used within a ConfigProvider. Make sure your app is wrapped with <ConfigProvider> and that Vite define is configured correctly."
|
|
53
|
+
);
|
|
54
|
+
throw typeof window < "u" && process.env.NODE_ENV === "development" && (console.error("[ShellUI] ConfigProvider error:", t), console.error("[ShellUI] Check that __SHELLUI_CONFIG__ is defined:", typeof window.__SHELLUI_CONFIG__)), t;
|
|
55
|
+
}
|
|
48
56
|
return e;
|
|
49
57
|
}
|
|
50
58
|
function $(...e) {
|
|
@@ -153,12 +161,12 @@ function St() {
|
|
|
153
161
|
throw new Error("useSettings must be used within a SettingsProvider");
|
|
154
162
|
return e;
|
|
155
163
|
}
|
|
156
|
-
const
|
|
157
|
-
() => import("./DefaultLayout-
|
|
158
|
-
),
|
|
159
|
-
() => import("./FullscreenLayout-
|
|
164
|
+
const Et = M(
|
|
165
|
+
() => import("./DefaultLayout-D3IpgS4j.js").then((e) => ({ default: e.DefaultLayout }))
|
|
166
|
+
), At = M(
|
|
167
|
+
() => import("./FullscreenLayout-Do9vAfl8.js").then((e) => ({ default: e.FullscreenLayout }))
|
|
160
168
|
), Tt = M(
|
|
161
|
-
() => import("./WindowsLayout-
|
|
169
|
+
() => import("./WindowsLayout-CEqkRKyk.js").then((e) => ({ default: e.WindowsLayout }))
|
|
162
170
|
);
|
|
163
171
|
function Lt() {
|
|
164
172
|
return /* @__PURE__ */ i(
|
|
@@ -178,15 +186,15 @@ function Nt({
|
|
|
178
186
|
}) {
|
|
179
187
|
const { settings: s } = St(), l = s.layout ?? e;
|
|
180
188
|
let c, d;
|
|
181
|
-
return l === "fullscreen" ? (c =
|
|
189
|
+
return l === "fullscreen" ? (c = At, d = { title: t, navigation: n }) : l === "windows" ? (c = Tt, d = { title: t, appIcon: r, logo: o, navigation: n }) : (c = Et, d = { title: t, appIcon: r, logo: o, navigation: n }), /* @__PURE__ */ i(Y, { fallback: /* @__PURE__ */ i(Lt, {}), children: /* @__PURE__ */ i(c, { ...d }) });
|
|
182
190
|
}
|
|
183
|
-
function
|
|
191
|
+
function Eo(e, t) {
|
|
184
192
|
return e == null ? "" : typeof e == "string" ? e : e[t] || e.en || e.fr || Object.values(e)[0] || "";
|
|
185
193
|
}
|
|
186
194
|
function Dt(e) {
|
|
187
195
|
return e.length === 0 ? [] : e.flatMap((t) => "title" in t && "items" in t ? t.items : t);
|
|
188
196
|
}
|
|
189
|
-
function
|
|
197
|
+
function Ao(e, t) {
|
|
190
198
|
if (e.length === 0) return [];
|
|
191
199
|
const r = t === "mobile", o = t === "desktop";
|
|
192
200
|
return e.map((n) => {
|
|
@@ -223,17 +231,17 @@ function Lo(e) {
|
|
|
223
231
|
return { start: t, end: r };
|
|
224
232
|
}
|
|
225
233
|
const It = M(
|
|
226
|
-
() => import("./HomeView-
|
|
227
|
-
), Rt = M(
|
|
228
|
-
() => import("./SettingsView-2QMtfS71.js").then((e) => ({ default: e.SettingsView }))
|
|
234
|
+
() => import("./HomeView-DwckTuxz.js").then((e) => ({ default: e.HomeView }))
|
|
229
235
|
), _t = M(
|
|
230
|
-
() => import("./
|
|
236
|
+
() => import("./SettingsView-Bt4I-KDT.js").then((e) => ({ default: e.SettingsView }))
|
|
237
|
+
), Rt = M(
|
|
238
|
+
() => import("./CookiePreferencesView-Bb3hFqw1.js").then((e) => ({
|
|
231
239
|
default: e.CookiePreferencesView
|
|
232
240
|
}))
|
|
233
241
|
), xt = M(
|
|
234
242
|
() => import("./ViewRoute-ChSPabOy.js").then((e) => ({ default: e.ViewRoute }))
|
|
235
|
-
),
|
|
236
|
-
() => import("./NotFoundView-
|
|
243
|
+
), Ot = M(
|
|
244
|
+
() => import("./NotFoundView-DD7azhz-.js").then((e) => ({ default: e.NotFoundView }))
|
|
237
245
|
);
|
|
238
246
|
function ee() {
|
|
239
247
|
return /* @__PURE__ */ i(
|
|
@@ -244,7 +252,7 @@ function ee() {
|
|
|
244
252
|
}
|
|
245
253
|
);
|
|
246
254
|
}
|
|
247
|
-
const
|
|
255
|
+
const Pt = (e) => {
|
|
248
256
|
const t = [
|
|
249
257
|
{
|
|
250
258
|
path: "/",
|
|
@@ -254,17 +262,17 @@ const Ot = (e) => {
|
|
|
254
262
|
{
|
|
255
263
|
// Settings route (if configured)
|
|
256
264
|
path: `${we.settings.replace(/^\//, "")}/*`,
|
|
257
|
-
element: /* @__PURE__ */ i(Y, { fallback: /* @__PURE__ */ i(ee, {}), children: /* @__PURE__ */ i(
|
|
265
|
+
element: /* @__PURE__ */ i(Y, { fallback: /* @__PURE__ */ i(ee, {}), children: /* @__PURE__ */ i(_t, {}) })
|
|
258
266
|
},
|
|
259
267
|
{
|
|
260
268
|
// Cookie preferences route
|
|
261
269
|
path: we.cookiePreferences.replace(/^\//, ""),
|
|
262
|
-
element: /* @__PURE__ */ i(Y, { fallback: /* @__PURE__ */ i(ee, {}), children: /* @__PURE__ */ i(
|
|
270
|
+
element: /* @__PURE__ */ i(Y, { fallback: /* @__PURE__ */ i(ee, {}), children: /* @__PURE__ */ i(Rt, {}) })
|
|
263
271
|
},
|
|
264
272
|
{
|
|
265
273
|
// Catch-all route
|
|
266
274
|
path: "*",
|
|
267
|
-
element: /* @__PURE__ */ i(Y, { fallback: /* @__PURE__ */ i(ee, {}), children: /* @__PURE__ */ i(
|
|
275
|
+
element: /* @__PURE__ */ i(Y, { fallback: /* @__PURE__ */ i(ee, {}), children: /* @__PURE__ */ i(Ot, {}) })
|
|
268
276
|
}
|
|
269
277
|
]
|
|
270
278
|
}
|
|
@@ -297,21 +305,21 @@ const Ot = (e) => {
|
|
|
297
305
|
}
|
|
298
306
|
return t[0].children.push(r), t;
|
|
299
307
|
}, Wt = (e) => {
|
|
300
|
-
const t =
|
|
308
|
+
const t = Pt(e);
|
|
301
309
|
return dt(t);
|
|
302
|
-
}, q =
|
|
303
|
-
function
|
|
310
|
+
}, q = Ae("shellcore");
|
|
311
|
+
function Ut(e) {
|
|
304
312
|
return e.length === 0 ? [] : e.flatMap((t) => "title" in t && "items" in t ? t.items : [t]);
|
|
305
313
|
}
|
|
306
|
-
function
|
|
314
|
+
function Bt(e, t) {
|
|
307
315
|
return typeof e == "string" ? e : e[t] || e.en || e.fr || Object.values(e)[0] || "";
|
|
308
316
|
}
|
|
309
317
|
function ae(e, t, r) {
|
|
310
318
|
if (!t?.length) return e;
|
|
311
|
-
const o =
|
|
319
|
+
const o = Ut(t).map((n) => ({
|
|
312
320
|
path: n.path,
|
|
313
321
|
url: n.url,
|
|
314
|
-
label:
|
|
322
|
+
label: Bt(n.label, r)
|
|
315
323
|
}));
|
|
316
324
|
return { ...e, navigation: { items: o } };
|
|
317
325
|
}
|
|
@@ -503,7 +511,7 @@ function Ht({ children: e }) {
|
|
|
503
511
|
} catch (p) {
|
|
504
512
|
q.error("Failed to reset all data:", { error: p });
|
|
505
513
|
}
|
|
506
|
-
}, [t?.navigation, r.language]), v =
|
|
514
|
+
}, [t?.navigation, r.language]), v = Ee(
|
|
507
515
|
() => ({
|
|
508
516
|
settings: n,
|
|
509
517
|
updateSettings: l,
|
|
@@ -991,7 +999,7 @@ function Gt() {
|
|
|
991
999
|
}, [r, o, t]);
|
|
992
1000
|
}
|
|
993
1001
|
function Kt({ children: e }) {
|
|
994
|
-
return Gt(), /* @__PURE__ */ i(
|
|
1002
|
+
return Gt(), /* @__PURE__ */ i(R, { children: e });
|
|
995
1003
|
}
|
|
996
1004
|
const qt = "Settings", Yt = "Welcome to {{title}}", Jt = "Select a navigation item to get started.", Zt = "Navigation error", Qt = "This URL is not configured in the app navigation.", Xt = { 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" }, er = {
|
|
997
1005
|
settings: qt,
|
|
@@ -1020,26 +1028,26 @@ const qt = "Settings", Yt = "Welcome to {{title}}", Jt = "Select a navigation it
|
|
|
1020
1028
|
reject: vr,
|
|
1021
1029
|
setPreferences: yr,
|
|
1022
1030
|
preferences: wr
|
|
1023
|
-
}, kr = "Paramètres", Fr = "Bienvenue sur {{title}}", Cr = "Sélectionnez un élément de navigation pour commencer.", Sr = "Erreur de navigation",
|
|
1031
|
+
}, kr = "Paramètres", Fr = "Bienvenue sur {{title}}", Cr = "Sélectionnez un élément de navigation pour commencer.", Sr = "Erreur de navigation", Er = "Cette URL n'est pas configurée dans la navigation de l'application.", Ar = { 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" }, Tr = {
|
|
1024
1032
|
settings: kr,
|
|
1025
1033
|
welcome: Fr,
|
|
1026
1034
|
getStarted: Cr,
|
|
1027
1035
|
navigationError: Sr,
|
|
1028
|
-
navigationNotAllowed:
|
|
1029
|
-
errorBoundary:
|
|
1030
|
-
}, Lr = "Paramètres", Nr = { preferences: "Préférences", system: "Système", developer: "Développeur" }, Dr = { appearance: "Apparence", languageAndRegion: "Langue et région", updateApp: "Mise à jour logicielle", advanced: "Avancé", dataPrivacy: "Confidentialité des données", develop: "Développement", serviceWorker: "Service Worker" }, Ir = { 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" }, Rr = { 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" } }, _r = { 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" }, xr = { 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." } } } } }, Pr = { 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." } } } }, Or = { 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." } }, Wr = { 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" } } } }, Br = {
|
|
1036
|
+
navigationNotAllowed: Er,
|
|
1037
|
+
errorBoundary: Ar
|
|
1038
|
+
}, Lr = "Paramètres", Nr = { preferences: "Préférences", system: "Système", developer: "Développeur" }, Dr = { appearance: "Apparence", languageAndRegion: "Langue et région", updateApp: "Mise à jour logicielle", advanced: "Avancé", dataPrivacy: "Confidentialité des données", develop: "Développement", serviceWorker: "Service Worker" }, Ir = { 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" }, _r = { 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" } }, Rr = { 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" }, xr = { 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." } } } } }, Or = { 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." } } } }, Pr = { 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." } }, Wr = { 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" } } } }, Ur = {
|
|
1031
1039
|
title: Lr,
|
|
1032
1040
|
categories: Nr,
|
|
1033
1041
|
routes: Dr,
|
|
1034
1042
|
updateApp: Ir,
|
|
1035
|
-
appearance:
|
|
1036
|
-
languageAndRegion:
|
|
1043
|
+
appearance: _r,
|
|
1044
|
+
languageAndRegion: Rr,
|
|
1037
1045
|
advanced: xr,
|
|
1038
|
-
dataPrivacy:
|
|
1039
|
-
caching:
|
|
1046
|
+
dataPrivacy: Or,
|
|
1047
|
+
caching: Pr,
|
|
1040
1048
|
develop: Wr
|
|
1041
|
-
},
|
|
1042
|
-
title:
|
|
1049
|
+
}, Br = "Votre vie privée compte", Hr = "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.", zr = "Nos cookies ont évolué", Mr = "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.", $r = "Tout accepter", jr = "Tout refuser", Vr = "Personnaliser", Gr = { 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" } }, Kr = {
|
|
1050
|
+
title: Br,
|
|
1043
1051
|
description: Hr,
|
|
1044
1052
|
titleRenewal: zr,
|
|
1045
1053
|
descriptionRenewal: Mr,
|
|
@@ -1058,7 +1066,7 @@ const qt = "Settings", Yt = "Welcome to {{title}}", Jt = "Select a navigation it
|
|
|
1058
1066
|
},
|
|
1059
1067
|
fr: {
|
|
1060
1068
|
common: Tr,
|
|
1061
|
-
settings:
|
|
1069
|
+
settings: Ur,
|
|
1062
1070
|
cookieConsent: Kr
|
|
1063
1071
|
}
|
|
1064
1072
|
}, Yr = (e) => {
|
|
@@ -1106,7 +1114,7 @@ function Jr({ children: e }) {
|
|
|
1106
1114
|
r?.language && Je(r.language);
|
|
1107
1115
|
}, [r?.language]), z(() => {
|
|
1108
1116
|
pe.language !== o && pe.changeLanguage(o);
|
|
1109
|
-
}, [o]), /* @__PURE__ */ i(
|
|
1117
|
+
}, [o]), /* @__PURE__ */ i(R, { children: e });
|
|
1110
1118
|
}
|
|
1111
1119
|
const fe = {
|
|
1112
1120
|
/** Sidebar trigger (above main content, below modals) */
|
|
@@ -1129,8 +1137,8 @@ const fe = {
|
|
|
1129
1137
|
WINDOWS_TASKBAR: 9e3,
|
|
1130
1138
|
/** Base z-index for windows; each window gets base + order */
|
|
1131
1139
|
WINDOWS_WINDOW_BASE: 9001
|
|
1132
|
-
}, Me =
|
|
1133
|
-
|
|
1140
|
+
}, Me = E.Root, Ze = E.Portal, De = G(({ className: e, ...t }, r) => /* @__PURE__ */ i(
|
|
1141
|
+
E.Overlay,
|
|
1134
1142
|
{
|
|
1135
1143
|
ref: r,
|
|
1136
1144
|
"data-dialog-overlay": !0,
|
|
@@ -1139,7 +1147,7 @@ const fe = {
|
|
|
1139
1147
|
...t
|
|
1140
1148
|
}
|
|
1141
1149
|
));
|
|
1142
|
-
De.displayName =
|
|
1150
|
+
De.displayName = E.Overlay.displayName;
|
|
1143
1151
|
const Zr = Ke(
|
|
1144
1152
|
"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",
|
|
1145
1153
|
{
|
|
@@ -1156,7 +1164,7 @@ const Zr = Ke(
|
|
|
1156
1164
|
), Qe = G(({ className: e, size: t = "default", children: r, style: o, ...n }, s) => /* @__PURE__ */ C(Ze, { children: [
|
|
1157
1165
|
/* @__PURE__ */ i(De, {}),
|
|
1158
1166
|
/* @__PURE__ */ i(
|
|
1159
|
-
|
|
1167
|
+
E.Content,
|
|
1160
1168
|
{
|
|
1161
1169
|
ref: s,
|
|
1162
1170
|
"data-dialog-content": !0,
|
|
@@ -1168,7 +1176,7 @@ const Zr = Ke(
|
|
|
1168
1176
|
}
|
|
1169
1177
|
)
|
|
1170
1178
|
] }));
|
|
1171
|
-
Qe.displayName =
|
|
1179
|
+
Qe.displayName = E.Content.displayName;
|
|
1172
1180
|
const Xe = ({ className: e, ...t }) => /* @__PURE__ */ i(
|
|
1173
1181
|
"div",
|
|
1174
1182
|
{
|
|
@@ -1207,24 +1215,24 @@ const tt = ({ className: e, ...t }) => /* @__PURE__ */ i(
|
|
|
1207
1215
|
);
|
|
1208
1216
|
tt.displayName = "AlertDialogFooter";
|
|
1209
1217
|
const be = G(({ className: e, ...t }, r) => /* @__PURE__ */ i(
|
|
1210
|
-
|
|
1218
|
+
E.Title,
|
|
1211
1219
|
{
|
|
1212
1220
|
ref: r,
|
|
1213
1221
|
className: $("text-lg font-semibold leading-none tracking-tight", e),
|
|
1214
1222
|
...t
|
|
1215
1223
|
}
|
|
1216
1224
|
));
|
|
1217
|
-
be.displayName =
|
|
1225
|
+
be.displayName = E.Title.displayName;
|
|
1218
1226
|
const ke = G(({ className: e, ...t }, r) => /* @__PURE__ */ i(
|
|
1219
|
-
|
|
1227
|
+
E.Description,
|
|
1220
1228
|
{
|
|
1221
1229
|
ref: r,
|
|
1222
1230
|
className: $("text-sm text-muted-foreground", e),
|
|
1223
1231
|
...t
|
|
1224
1232
|
}
|
|
1225
1233
|
));
|
|
1226
|
-
ke.displayName =
|
|
1227
|
-
const J = G(({ className: e, variant: t, size: r, ...o }, n) => /* @__PURE__ */ i(
|
|
1234
|
+
ke.displayName = E.Description.displayName;
|
|
1235
|
+
const J = G(({ className: e, variant: t, size: r, ...o }, n) => /* @__PURE__ */ i(E.Action, { asChild: !0, children: /* @__PURE__ */ i(
|
|
1228
1236
|
H,
|
|
1229
1237
|
{
|
|
1230
1238
|
ref: n,
|
|
@@ -1234,8 +1242,8 @@ const J = G(({ className: e, variant: t, size: r, ...o }, n) => /* @__PURE__ */
|
|
|
1234
1242
|
...o
|
|
1235
1243
|
}
|
|
1236
1244
|
) }));
|
|
1237
|
-
J.displayName =
|
|
1238
|
-
const re = G(({ className: e, variant: t, size: r, ...o }, n) => /* @__PURE__ */ i(
|
|
1245
|
+
J.displayName = E.Action.displayName;
|
|
1246
|
+
const re = G(({ className: e, variant: t, size: r, ...o }, n) => /* @__PURE__ */ i(E.Cancel, { asChild: !0, children: /* @__PURE__ */ i(
|
|
1239
1247
|
H,
|
|
1240
1248
|
{
|
|
1241
1249
|
ref: n,
|
|
@@ -1245,7 +1253,7 @@ const re = G(({ className: e, variant: t, size: r, ...o }, n) => /* @__PURE__ */
|
|
|
1245
1253
|
...o
|
|
1246
1254
|
}
|
|
1247
1255
|
) }));
|
|
1248
|
-
re.displayName =
|
|
1256
|
+
re.displayName = E.Cancel.displayName;
|
|
1249
1257
|
const Qr = 200, Xr = () => /* @__PURE__ */ C(
|
|
1250
1258
|
"svg",
|
|
1251
1259
|
{
|
|
@@ -1400,7 +1408,7 @@ const ro = ({ children: e }) => {
|
|
|
1400
1408
|
if (!t) return null;
|
|
1401
1409
|
const { mode: g, okLabel: F, cancelLabel: k, secondaryButton: y } = t;
|
|
1402
1410
|
if (y && t.position === "bottom-left")
|
|
1403
|
-
return /* @__PURE__ */ C(
|
|
1411
|
+
return /* @__PURE__ */ C(R, { children: [
|
|
1404
1412
|
/* @__PURE__ */ i(
|
|
1405
1413
|
H,
|
|
1406
1414
|
{
|
|
@@ -1434,7 +1442,7 @@ const ro = ({ children: e }) => {
|
|
|
1434
1442
|
case "ok":
|
|
1435
1443
|
return /* @__PURE__ */ i(J, { onClick: d, children: F || "OK" });
|
|
1436
1444
|
case "okCancel":
|
|
1437
|
-
return /* @__PURE__ */ C(
|
|
1445
|
+
return /* @__PURE__ */ C(R, { children: [
|
|
1438
1446
|
/* @__PURE__ */ i(
|
|
1439
1447
|
re,
|
|
1440
1448
|
{
|
|
@@ -1446,7 +1454,7 @@ const ro = ({ children: e }) => {
|
|
|
1446
1454
|
/* @__PURE__ */ i(J, { onClick: d, children: F || "OK" })
|
|
1447
1455
|
] });
|
|
1448
1456
|
case "delete":
|
|
1449
|
-
return /* @__PURE__ */ C(
|
|
1457
|
+
return /* @__PURE__ */ C(R, { children: [
|
|
1450
1458
|
/* @__PURE__ */ i(
|
|
1451
1459
|
re,
|
|
1452
1460
|
{
|
|
@@ -1465,7 +1473,7 @@ const ro = ({ children: e }) => {
|
|
|
1465
1473
|
)
|
|
1466
1474
|
] });
|
|
1467
1475
|
case "confirm":
|
|
1468
|
-
return /* @__PURE__ */ C(
|
|
1476
|
+
return /* @__PURE__ */ C(R, { children: [
|
|
1469
1477
|
/* @__PURE__ */ i(
|
|
1470
1478
|
re,
|
|
1471
1479
|
{
|
|
@@ -1496,7 +1504,7 @@ const ro = ({ children: e }) => {
|
|
|
1496
1504
|
children: /* @__PURE__ */ C(Ze, { children: [
|
|
1497
1505
|
/* @__PURE__ */ i(De, { style: { zIndex: fe.COOKIE_CONSENT_OVERLAY } }),
|
|
1498
1506
|
/* @__PURE__ */ C(
|
|
1499
|
-
|
|
1507
|
+
E.Content,
|
|
1500
1508
|
{
|
|
1501
1509
|
className: "fixed w-[calc(100%-32px)] max-w-[520px] rounded-xl border border-border bg-background text-foreground shadow-lg sm:w-full",
|
|
1502
1510
|
style: {
|
|
@@ -1534,7 +1542,7 @@ const ro = ({ children: e }) => {
|
|
|
1534
1542
|
);
|
|
1535
1543
|
return /* @__PURE__ */ C(rt.Provider, { value: { dialog: u }, children: [
|
|
1536
1544
|
e,
|
|
1537
|
-
t && /* @__PURE__ */ i(
|
|
1545
|
+
t && /* @__PURE__ */ i(R, { children: t.position === "bottom-left" ? f() : /* @__PURE__ */ i(
|
|
1538
1546
|
Me,
|
|
1539
1547
|
{
|
|
1540
1548
|
open: o,
|
|
@@ -1552,21 +1560,21 @@ const ro = ({ children: e }) => {
|
|
|
1552
1560
|
] });
|
|
1553
1561
|
};
|
|
1554
1562
|
function $e() {
|
|
1555
|
-
const { t: e } = Te("cookieConsent"), { config: t } = X(), { settings: r, updateSetting: o } = ie(), { dialog: n } = to(), s = ue(!1), l = ue(!1), d = t?.cookieConsent?.cookies ?? [], v = r?.cookieConsent?.consentedCookieHosts ?? [], p = d.map((j) => j.host), u = d.filter((j) => j.category === "strict_necessary").map((j) => j.host), a = p.some((j) => !v.includes(j)), f = v.length === 0, g = !f && a, k = typeof window < "u" && window.parent === window && d.length > 0 && (f || a), y = e(g ? "titleRenewal" : "title"),
|
|
1563
|
+
const { t: e } = Te("cookieConsent"), { config: t } = X(), { settings: r, updateSetting: o } = ie(), { dialog: n } = to(), s = ue(!1), l = ue(!1), d = t?.cookieConsent?.cookies ?? [], v = r?.cookieConsent?.consentedCookieHosts ?? [], p = d.map((j) => j.host), u = d.filter((j) => j.category === "strict_necessary").map((j) => j.host), a = p.some((j) => !v.includes(j)), f = v.length === 0, g = !f && a, k = typeof window < "u" && window.parent === window && d.length > 0 && (f || a), y = e(g ? "titleRenewal" : "title"), Re = e(g ? "descriptionRenewal" : "description"), xe = T(() => {
|
|
1556
1564
|
o("cookieConsent", {
|
|
1557
1565
|
acceptedHosts: p,
|
|
1558
1566
|
consentedCookieHosts: p
|
|
1559
1567
|
});
|
|
1560
|
-
}, [p, o]),
|
|
1568
|
+
}, [p, o]), Oe = T(() => {
|
|
1561
1569
|
o("cookieConsent", {
|
|
1562
1570
|
acceptedHosts: u,
|
|
1563
1571
|
consentedCookieHosts: p
|
|
1564
1572
|
});
|
|
1565
|
-
}, [u, p, o]),
|
|
1573
|
+
}, [u, p, o]), Pe = T(() => {
|
|
1566
1574
|
s.current = !0, xe();
|
|
1567
1575
|
}, [xe]), We = T(() => {
|
|
1568
|
-
s.current = !0,
|
|
1569
|
-
}, [
|
|
1576
|
+
s.current = !0, Oe();
|
|
1577
|
+
}, [Oe]), Ue = T(() => {
|
|
1570
1578
|
s.current = !0, m.openDrawer({ url: `${we.cookiePreferences}?initial=true`, size: "420px" });
|
|
1571
1579
|
}, []);
|
|
1572
1580
|
return z(() => {
|
|
@@ -1576,7 +1584,7 @@ function $e() {
|
|
|
1576
1584
|
}
|
|
1577
1585
|
l.current || (l.current = !0, m.propagateMessage({ type: "SHELLUI_CLOSE_MODAL", payload: {} }), m.propagateMessage({ type: "SHELLUI_CLOSE_DRAWER", payload: {} }), s.current = !1, n({
|
|
1578
1586
|
title: y,
|
|
1579
|
-
description:
|
|
1587
|
+
description: Re,
|
|
1580
1588
|
mode: "okCancel",
|
|
1581
1589
|
okLabel: e("accept"),
|
|
1582
1590
|
cancelLabel: e("reject"),
|
|
@@ -1584,19 +1592,19 @@ function $e() {
|
|
|
1584
1592
|
icon: "cookie",
|
|
1585
1593
|
secondaryButton: {
|
|
1586
1594
|
label: e("setPreferences"),
|
|
1587
|
-
onClick:
|
|
1595
|
+
onClick: Ue
|
|
1588
1596
|
},
|
|
1589
|
-
onOk:
|
|
1597
|
+
onOk: Pe,
|
|
1590
1598
|
onCancel: We
|
|
1591
1599
|
}));
|
|
1592
1600
|
}, [
|
|
1593
1601
|
k,
|
|
1594
1602
|
y,
|
|
1595
|
-
|
|
1603
|
+
Re,
|
|
1596
1604
|
e,
|
|
1597
|
-
|
|
1605
|
+
Pe,
|
|
1598
1606
|
We,
|
|
1599
|
-
|
|
1607
|
+
Ue,
|
|
1600
1608
|
n
|
|
1601
1609
|
]), null;
|
|
1602
1610
|
}
|
|
@@ -1607,7 +1615,7 @@ function Ie() {
|
|
|
1607
1615
|
if (t != null)
|
|
1608
1616
|
return typeof t == "string" ? JSON.parse(t) : t;
|
|
1609
1617
|
}
|
|
1610
|
-
function
|
|
1618
|
+
function _e() {
|
|
1611
1619
|
if (typeof window > "u")
|
|
1612
1620
|
return { acceptedHosts: [], consentedCookieHosts: [] };
|
|
1613
1621
|
try {
|
|
@@ -1625,13 +1633,13 @@ function Re() {
|
|
|
1625
1633
|
function no(e) {
|
|
1626
1634
|
const t = Ie();
|
|
1627
1635
|
if (!t?.cookieConsent?.cookies?.length || !new Set(t.cookieConsent.cookies.map((n) => n.host)).has(e)) return !0;
|
|
1628
|
-
const { acceptedHosts: o } =
|
|
1636
|
+
const { acceptedHosts: o } = _e();
|
|
1629
1637
|
return o.includes(e);
|
|
1630
1638
|
}
|
|
1631
1639
|
function io() {
|
|
1632
1640
|
const e = Ie();
|
|
1633
1641
|
if (!e?.cookieConsent?.cookies?.length) return !1;
|
|
1634
|
-
const { consentedCookieHosts: t } =
|
|
1642
|
+
const { consentedCookieHosts: t } = _e();
|
|
1635
1643
|
if (t.length === 0) return !0;
|
|
1636
1644
|
const r = new Set(e.cookieConsent.cookies.map((o) => o.host));
|
|
1637
1645
|
for (const o of r)
|
|
@@ -1641,7 +1649,7 @@ function io() {
|
|
|
1641
1649
|
function Io() {
|
|
1642
1650
|
const e = Ie();
|
|
1643
1651
|
if (!e?.cookieConsent?.cookies?.length) return [];
|
|
1644
|
-
const { consentedCookieHosts: t } =
|
|
1652
|
+
const { consentedCookieHosts: t } = _e(), r = new Set(t);
|
|
1645
1653
|
return e.cookieConsent.cookies.map((o) => o.host).filter((o) => !r.has(o));
|
|
1646
1654
|
}
|
|
1647
1655
|
const so = "shellui:settings";
|
|
@@ -1668,16 +1676,16 @@ function lo() {
|
|
|
1668
1676
|
}), Fe = !0;
|
|
1669
1677
|
});
|
|
1670
1678
|
}
|
|
1671
|
-
function
|
|
1679
|
+
function _o() {
|
|
1672
1680
|
Fe && import("@sentry/react").then((e) => {
|
|
1673
1681
|
e.close(), Fe = !1;
|
|
1674
1682
|
});
|
|
1675
1683
|
}
|
|
1676
1684
|
lo();
|
|
1677
|
-
const w =
|
|
1678
|
-
let h = null,
|
|
1685
|
+
const w = Ae("shellcore");
|
|
1686
|
+
let h = null, A = !1, S = null, V = null, ce = [], N = !1, de = !1, Z = null, x = !1, oe = !1, ot = typeof window < "u" ? Date.now() : 0;
|
|
1679
1687
|
const co = 5e3;
|
|
1680
|
-
let I = null,
|
|
1688
|
+
let I = null, O = null, _ = null, P = null, W = null, U = null, B = null;
|
|
1681
1689
|
function ve(e) {
|
|
1682
1690
|
if (!e) return !1;
|
|
1683
1691
|
const t = e;
|
|
@@ -1697,7 +1705,7 @@ const uo = 5e3;
|
|
|
1697
1705
|
async function D() {
|
|
1698
1706
|
const t = {
|
|
1699
1707
|
registered: await it(),
|
|
1700
|
-
updateAvailable:
|
|
1708
|
+
updateAvailable: A
|
|
1701
1709
|
};
|
|
1702
1710
|
ce.forEach((r) => r(t));
|
|
1703
1711
|
}
|
|
@@ -1839,7 +1847,7 @@ async function nt(e = { enabled: !0 }) {
|
|
|
1839
1847
|
type: "classic",
|
|
1840
1848
|
updateViaCache: "none"
|
|
1841
1849
|
// Always check network for service worker updates
|
|
1842
|
-
})), h && (I && (h.removeEventListener("waiting", I), I = null),
|
|
1850
|
+
})), h && (I && (h.removeEventListener("waiting", I), I = null), O && (h.removeEventListener("activated", O), O = null), _ && (h.removeEventListener("controlling", _), _ = null), P && (h.removeEventListener("registered", P), P = null), W && (h.removeEventListener("redundant", W), W = null), U && (navigator.serviceWorker.removeEventListener("error", U), U = null), B && (navigator.serviceWorker.removeEventListener("messageerror", B), B = null), de = !1), o && !de) {
|
|
1843
1851
|
de = !0;
|
|
1844
1852
|
const l = "shellui:update-available";
|
|
1845
1853
|
I = async () => {
|
|
@@ -1851,14 +1859,14 @@ async function nt(e = { enabled: !0 }) {
|
|
|
1851
1859
|
if (c) {
|
|
1852
1860
|
console.info(
|
|
1853
1861
|
"[Service Worker] Waiting event fired during auto-activation - skipping toast"
|
|
1854
|
-
),
|
|
1862
|
+
), A = !0, S = v, D();
|
|
1855
1863
|
return;
|
|
1856
1864
|
}
|
|
1857
1865
|
if (Z === p) {
|
|
1858
|
-
|
|
1866
|
+
A = !0, S = v, D();
|
|
1859
1867
|
return;
|
|
1860
1868
|
}
|
|
1861
|
-
if (Z = p,
|
|
1869
|
+
if (Z = p, A = !0, S = v, D(), e.onUpdateAvailable)
|
|
1862
1870
|
e.onUpdateAvailable();
|
|
1863
1871
|
else {
|
|
1864
1872
|
const u = () => {
|
|
@@ -1894,25 +1902,25 @@ async function nt(e = { enabled: !0 }) {
|
|
|
1894
1902
|
} catch (c) {
|
|
1895
1903
|
w.error("Error in waiting handler:", { error: c }), Z = null;
|
|
1896
1904
|
}
|
|
1897
|
-
}, h.addEventListener("waiting", I),
|
|
1905
|
+
}, h.addEventListener("waiting", I), O = (c) => {
|
|
1898
1906
|
const d = c ?? {};
|
|
1899
1907
|
console.info("[Service Worker] Service worker activated:", {
|
|
1900
1908
|
isUpdate: d.isUpdate,
|
|
1901
1909
|
isInitialRegistration: N
|
|
1902
|
-
}), D(),
|
|
1910
|
+
}), D(), A = !1, S = null, Z = null;
|
|
1903
1911
|
const v = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:intentional-update") === "true", p = x || v;
|
|
1904
1912
|
typeof window < "u" && sessionStorage.removeItem("shellui:service-worker:intentional-update"), d.isUpdate && !N && p ? (console.info("[Service Worker] Reloading page after intentional update"), window.location.reload()) : d.isUpdate && !N && !p && console.info(
|
|
1905
1913
|
"[Service Worker] Service worker auto-activated on page load - new version is now active"
|
|
1906
1914
|
), N = !1;
|
|
1907
|
-
}, h.addEventListener("activated",
|
|
1915
|
+
}, h.addEventListener("activated", O), _ = () => {
|
|
1908
1916
|
D();
|
|
1909
1917
|
const c = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:auto-activated") === "true", d = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:intentional-update") === "true", v = x || d || c;
|
|
1910
1918
|
c && typeof window < "u" && sessionStorage.removeItem("shellui:service-worker:auto-activated"), !N && v && (console.info(
|
|
1911
1919
|
c ? "[Service Worker] Auto-activated service worker took control - reloading to use new version" : "[Service Worker] User clicked Install Now - reloading to use new version"
|
|
1912
1920
|
), window.location.reload()), N = !1;
|
|
1913
|
-
}, h.addEventListener("controlling",
|
|
1921
|
+
}, h.addEventListener("controlling", _), P = () => {
|
|
1914
1922
|
D();
|
|
1915
|
-
}, h.addEventListener("registered",
|
|
1923
|
+
}, h.addEventListener("registered", P), W = (c) => {
|
|
1916
1924
|
w.info("Service worker became redundant:", c);
|
|
1917
1925
|
const d = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:intentional-update") === "true";
|
|
1918
1926
|
x || d || !!S ? (console.info(
|
|
@@ -1941,7 +1949,7 @@ async function nt(e = { enabled: !0 }) {
|
|
|
1941
1949
|
{ error: u }
|
|
1942
1950
|
);
|
|
1943
1951
|
});
|
|
1944
|
-
}, h.addEventListener("redundant", W),
|
|
1952
|
+
}, h.addEventListener("redundant", W), U = (c) => {
|
|
1945
1953
|
w.error("Service worker error event:", c);
|
|
1946
1954
|
const d = typeof window < "u" && sessionStorage.getItem("shellui:service-worker:intentional-update") === "true";
|
|
1947
1955
|
if (x || d)
|
|
@@ -1953,15 +1961,15 @@ async function nt(e = { enabled: !0 }) {
|
|
|
1953
1961
|
errorName: f
|
|
1954
1962
|
}));
|
|
1955
1963
|
}
|
|
1956
|
-
}, navigator.serviceWorker.addEventListener("error",
|
|
1964
|
+
}, navigator.serviceWorker.addEventListener("error", U), B = (c) => {
|
|
1957
1965
|
w.error("Service worker message error:", c);
|
|
1958
|
-
}, navigator.serviceWorker.addEventListener("messageerror",
|
|
1966
|
+
}, navigator.serviceWorker.addEventListener("messageerror", B);
|
|
1959
1967
|
}
|
|
1960
1968
|
await h.register();
|
|
1961
1969
|
const n = await navigator.serviceWorker.getRegistration();
|
|
1962
1970
|
if (n && n.waiting && I) {
|
|
1963
1971
|
const l = n.waiting.scriptURL;
|
|
1964
|
-
S === n.waiting &&
|
|
1972
|
+
S === n.waiting && A === !0 ? (A = !0, S = n.waiting, D()) : Z !== l ? (A = !0, S = n.waiting, I()) : (A = !0, S = n.waiting, D());
|
|
1965
1973
|
}
|
|
1966
1974
|
D(), setInterval(
|
|
1967
1975
|
() => {
|
|
@@ -2019,7 +2027,7 @@ async function Ve() {
|
|
|
2019
2027
|
}, 1e3);
|
|
2020
2028
|
};
|
|
2021
2029
|
h.addEventListener("controlling", r), S.postMessage({ type: "SKIP_WAITING" }), setTimeout(() => {
|
|
2022
|
-
|
|
2030
|
+
_ && h?.removeEventListener("controlling", _), navigator.serviceWorker.controller && t(), setTimeout(() => {
|
|
2023
2031
|
x = !1;
|
|
2024
2032
|
}, 1e3);
|
|
2025
2033
|
}, 2e3);
|
|
@@ -2036,7 +2044,7 @@ async function Q() {
|
|
|
2036
2044
|
const t = await caches.keys();
|
|
2037
2045
|
await Promise.all(t.map((r) => caches.delete(r)));
|
|
2038
2046
|
}
|
|
2039
|
-
h && (I && h.removeEventListener("waiting", I),
|
|
2047
|
+
h && (I && h.removeEventListener("waiting", I), O && h.removeEventListener("activated", O), _ && h.removeEventListener("controlling", _), P && h.removeEventListener("registered", P), W && h.removeEventListener("redundant", W), U && navigator.serviceWorker.removeEventListener("error", U), B && navigator.serviceWorker.removeEventListener("messageerror", B), I = null, O = null, _ = null, P = null, W = null, U = null, B = null, h = null), A = !1, S = null, N = !1, Z = null, de = !1, x = !1, D();
|
|
2040
2048
|
} catch (e) {
|
|
2041
2049
|
w.error("Failed to unregister service worker:", { error: e }), N = !1;
|
|
2042
2050
|
}
|
|
@@ -2051,18 +2059,18 @@ async function it() {
|
|
|
2051
2059
|
return !1;
|
|
2052
2060
|
}
|
|
2053
2061
|
}
|
|
2054
|
-
async function
|
|
2062
|
+
async function Ro() {
|
|
2055
2063
|
const e = await it();
|
|
2056
2064
|
let t = !1;
|
|
2057
2065
|
if (e && !se())
|
|
2058
2066
|
try {
|
|
2059
2067
|
const r = await navigator.serviceWorker.getRegistration();
|
|
2060
|
-
r?.waiting ? (t = !0,
|
|
2068
|
+
r?.waiting ? (t = !0, A = !0, S = r.waiting) : (t = !1, A = !1, S = null);
|
|
2061
2069
|
} catch (r) {
|
|
2062
|
-
w.error("Failed to check service worker registration:", { error: r }), t =
|
|
2070
|
+
w.error("Failed to check service worker registration:", { error: r }), t = A;
|
|
2063
2071
|
}
|
|
2064
2072
|
else
|
|
2065
|
-
t = !1,
|
|
2073
|
+
t = !1, A = !1, S = null;
|
|
2066
2074
|
return {
|
|
2067
2075
|
registered: e,
|
|
2068
2076
|
updateAvailable: t
|
|
@@ -2071,7 +2079,7 @@ async function _o() {
|
|
|
2071
2079
|
async function xo() {
|
|
2072
2080
|
se() || !h || await h.update();
|
|
2073
2081
|
}
|
|
2074
|
-
function
|
|
2082
|
+
function Oo(e) {
|
|
2075
2083
|
return ce.push(e), () => {
|
|
2076
2084
|
ce = ce.filter((t) => t !== e);
|
|
2077
2085
|
};
|
|
@@ -2097,18 +2105,18 @@ const po = () => {
|
|
|
2097
2105
|
enabled: !0
|
|
2098
2106
|
}) : Q();
|
|
2099
2107
|
}, [t?.serviceWorker?.enabled, e?.navigation]);
|
|
2100
|
-
const r =
|
|
2101
|
-
return !e.navigation || e.navigation.length === 0 ? /* @__PURE__ */ C(
|
|
2108
|
+
const r = Ee(() => e ? Wt(e) : null, [e]);
|
|
2109
|
+
return !e.navigation || e.navigation.length === 0 ? /* @__PURE__ */ C(R, { children: [
|
|
2102
2110
|
/* @__PURE__ */ i($e, {}),
|
|
2103
2111
|
/* @__PURE__ */ C("div", { style: { fontFamily: "system-ui, sans-serif", padding: "2rem" }, children: [
|
|
2104
2112
|
/* @__PURE__ */ i("h1", { children: e.title || "ShellUI" }),
|
|
2105
2113
|
/* @__PURE__ */ i("p", { children: "No navigation items configured." })
|
|
2106
2114
|
] })
|
|
2107
|
-
] }) : r ? /* @__PURE__ */ C(
|
|
2115
|
+
] }) : r ? /* @__PURE__ */ C(R, { children: [
|
|
2108
2116
|
/* @__PURE__ */ i($e, {}),
|
|
2109
2117
|
/* @__PURE__ */ i(ut, { router: r })
|
|
2110
2118
|
] }) : null;
|
|
2111
|
-
},
|
|
2119
|
+
}, Po = () => {
|
|
2112
2120
|
const [e, t] = ne(!0);
|
|
2113
2121
|
return Ge(() => {
|
|
2114
2122
|
m.init().then(() => {
|
|
@@ -2118,7 +2126,7 @@ const po = () => {
|
|
|
2118
2126
|
};
|
|
2119
2127
|
function Wo(e) {
|
|
2120
2128
|
const { config: t } = X(), { settings: r } = ie();
|
|
2121
|
-
return
|
|
2129
|
+
return Ee(() => {
|
|
2122
2130
|
const n = t?.cookieConsent?.cookies ?? [], s = r?.cookieConsent?.acceptedHosts ?? [];
|
|
2123
2131
|
if (!n.length)
|
|
2124
2132
|
return { isAccepted: !0, needsConsent: !1 };
|
|
@@ -2129,7 +2137,7 @@ function Wo(e) {
|
|
|
2129
2137
|
}, [t?.cookieConsent, r?.cookieConsent?.acceptedHosts, e]);
|
|
2130
2138
|
}
|
|
2131
2139
|
export {
|
|
2132
|
-
|
|
2140
|
+
Po as A,
|
|
2133
2141
|
H as B,
|
|
2134
2142
|
fe as Z,
|
|
2135
2143
|
ie as a,
|
|
@@ -2137,19 +2145,19 @@ export {
|
|
|
2137
2145
|
$ as c,
|
|
2138
2146
|
To as d,
|
|
2139
2147
|
jt as e,
|
|
2140
|
-
|
|
2148
|
+
Ao as f,
|
|
2141
2149
|
No as g,
|
|
2142
2150
|
Do as h,
|
|
2143
2151
|
se as i,
|
|
2144
|
-
|
|
2152
|
+
Oo as j,
|
|
2145
2153
|
Ve as k,
|
|
2146
|
-
|
|
2154
|
+
Ro as l,
|
|
2147
2155
|
xo as m,
|
|
2148
2156
|
lo as n,
|
|
2149
|
-
|
|
2157
|
+
_o as o,
|
|
2150
2158
|
Ce as p,
|
|
2151
2159
|
it as q,
|
|
2152
|
-
|
|
2160
|
+
Eo as r,
|
|
2153
2161
|
Lo as s,
|
|
2154
2162
|
no as t,
|
|
2155
2163
|
X as u,
|
|
@@ -2157,4 +2165,4 @@ export {
|
|
|
2157
2165
|
Io as w,
|
|
2158
2166
|
Wo as x
|
|
2159
2167
|
};
|
|
2160
|
-
//# sourceMappingURL=index-
|
|
2168
|
+
//# sourceMappingURL=index-CfvdAI_Y.js.map
|