@plumile/backoffice-react 0.1.91 → 0.1.94

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.
Files changed (30) hide show
  1. package/lib/esm/{AcceptInvitationScreen-DLc4aovr.js → AcceptInvitationScreen-B1IPafwD.js} +2 -2
  2. package/lib/esm/{AcceptInvitationScreen-DLc4aovr.js.map → AcceptInvitationScreen-B1IPafwD.js.map} +1 -1
  3. package/lib/esm/{BackofficeAcceptInvitationPage-D0dZnrV7.js → BackofficeAcceptInvitationPage-CEtApVwL.js} +3 -3
  4. package/lib/esm/{BackofficeAcceptInvitationPage-D0dZnrV7.js.map → BackofficeAcceptInvitationPage-CEtApVwL.js.map} +1 -1
  5. package/lib/esm/{BackofficeLayoutPage-j3VUX3Tu.js → BackofficeLayoutPage-CKXS0nDO.js} +2 -2
  6. package/lib/esm/{BackofficeLayoutPage-j3VUX3Tu.js.map → BackofficeLayoutPage-CKXS0nDO.js.map} +1 -1
  7. package/lib/esm/{BackofficeLoginPage-BkQHm0x6.js → BackofficeLoginPage-Cc3kcOQV.js} +3 -3
  8. package/lib/esm/{BackofficeLoginPage-BkQHm0x6.js.map → BackofficeLoginPage-Cc3kcOQV.js.map} +1 -1
  9. package/lib/esm/backoffice-react.js +1010 -1004
  10. package/lib/esm/backoffice-react.js.map +1 -1
  11. package/lib/esm/{environment-BXoBq_6e.js → environment-DQfVyWHJ.js} +76 -51
  12. package/lib/esm/environment-DQfVyWHJ.js.map +1 -0
  13. package/lib/esm/{synchronizeAuthStatusQuery-1juorUEX.js → synchronizeAuthStatusQuery-BoPKMrP1.js} +2 -2
  14. package/lib/esm/{synchronizeAuthStatusQuery-1juorUEX.js.map → synchronizeAuthStatusQuery-BoPKMrP1.js.map} +1 -1
  15. package/lib/esm/{useAuth-BdSNpGqe.js → useAuth-CheTnq60.js} +2 -2
  16. package/lib/esm/{useAuth-BdSNpGqe.js.map → useAuth-CheTnq60.js.map} +1 -1
  17. package/lib/esm/{useBackofficeAuth-C16Euw2X.js → useBackofficeAuth-ers1FUGe.js} +2 -2
  18. package/lib/esm/{useBackofficeAuth-C16Euw2X.js.map → useBackofficeAuth-ers1FUGe.js.map} +1 -1
  19. package/lib/types/hooks/useConditionalSubscription.d.ts +1 -0
  20. package/lib/types/hooks/useConditionalSubscription.d.ts.map +1 -1
  21. package/lib/types/i18n/resources.d.ts +2 -0
  22. package/lib/types/i18n/resources.d.ts.map +1 -1
  23. package/lib/types/index.d.ts +2 -2
  24. package/lib/types/index.d.ts.map +1 -1
  25. package/lib/types/provider/BackofficeProvider.d.ts.map +1 -1
  26. package/lib/types/relay/RelayProvider.d.ts.map +1 -1
  27. package/lib/types/relay/environment.d.ts +13 -0
  28. package/lib/types/relay/environment.d.ts.map +1 -1
  29. package/package.json +5 -5
  30. package/lib/esm/environment-BXoBq_6e.js.map +0 -1
@@ -1,46 +1,46 @@
1
- import { i as e, n as t, r as n, t as r } from "./environment-BXoBq_6e.js";
2
- import { t as i } from "./useRelayEnvironment-vQ86aW-n.js";
3
- import { n as a, r as o, t as s } from "./useBackofficeReactTranslation-Btt58EIo.js";
4
- import { i as c, t as l } from "./sidebarUtils-CuwJ_3mD.js";
5
- import { a as u, i as d, n as f, r as p, t as m } from "./useAuth-BdSNpGqe.js";
6
- import { n as h, t as g } from "./synchronizeAuthStatusQuery-1juorUEX.js";
7
- import { t as _ } from "./AcceptInvitationScreen-DLc4aovr.js";
8
- import { t as v } from "./PasswordResetCompleteScreen-Cgg96DPo.js";
9
- import { t as y } from "./PasswordResetRequestScreen-I1nFvGLd.js";
10
- import { t as ee } from "./VerifyEmailScreen-Br5KyHjg.js";
11
- import { t as te } from "./BackofficeErrorBoundary-BwRVSDHU.js";
12
- import { i as b, n as ne, t as re } from "./EntityFilterValue-BWUdPBwp.js";
13
- import { i as x, t as ie } from "./EntityIdPickerDialog-Yhmr-WsV.js";
14
- import { a as ae, i as oe, r as se, t as ce } from "./BackofficeDetailPayload-P61MDRLE.js";
15
- import { t as le } from "./useBackofficeListUrlState-D4fx5O7u.js";
16
- import { i as ue, n as de, r as fe, t as pe } from "./mutationResult-CcQMY13J.js";
17
- import { t as me } from "./pageResolution-hAQA5C6S.js";
18
- import { n as he, t as ge } from "./BackofficeRightPageLayout-DZQvIHnj.js";
19
- import { StrictMode as _e, useCallback as S, useContext as ve, useEffect as C, useMemo as w, useRef as T, useState as E } from "react";
20
- import { createInstance as ye } from "i18next";
21
- import { I18nextProvider as be, initReactI18next as xe, useTranslation as Se } from "react-i18next";
22
- import { HttpRedirect as Ce, Link as we, RouterRenderer as Te, RoutingContext as Ee, createRouter as De, getResourcePage as D, r as Oe } from "@plumile/router";
23
- import { BackofficeTabs as ke, DetailPageTemplate as Ae, SidebarSearchSvg as je, Spinner as Me, ThemeProvider as Ne, cx as Pe } from "@plumile/ui";
24
- import Fe from "i18next-browser-languagedetector";
25
- import * as O from "react-relay";
26
- import { jsx as k, jsxs as A } from "react/jsx-runtime";
27
- import { BACKOFFICE_LIST_DEFAULTS as Ie } from "@plumile/backoffice-core/constants.js";
28
- import { resolveBackofficeLoadedFacetModule as j } from "@plumile/backoffice-core/resolve.js";
29
- import { buildBackofficeFallbackListHref as Le, buildBackofficeListLink as M } from "@plumile/backoffice-core/state/buildListHref.js";
30
- import { setWhereValue as Re } from "@plumile/backoffice-core/filters/where.js";
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./environment-DQfVyWHJ.js";
2
+ import { t as s } from "./useRelayEnvironment-vQ86aW-n.js";
3
+ import { n as c, r as l, t as u } from "./useBackofficeReactTranslation-Btt58EIo.js";
4
+ import { i as d, t as f } from "./sidebarUtils-CuwJ_3mD.js";
5
+ import { a as p, i as m, n as h, r as g, t as _ } from "./useAuth-CheTnq60.js";
6
+ import { n as v, t as y } from "./synchronizeAuthStatusQuery-BoPKMrP1.js";
7
+ import { t as b } from "./AcceptInvitationScreen-B1IPafwD.js";
8
+ import { t as ee } from "./PasswordResetCompleteScreen-Cgg96DPo.js";
9
+ import { t as te } from "./PasswordResetRequestScreen-I1nFvGLd.js";
10
+ import { t as ne } from "./VerifyEmailScreen-Br5KyHjg.js";
11
+ import { t as re } from "./BackofficeErrorBoundary-BwRVSDHU.js";
12
+ import { i as x, n as ie, t as ae } from "./EntityFilterValue-BWUdPBwp.js";
13
+ import { i as oe, t as se } from "./EntityIdPickerDialog-Yhmr-WsV.js";
14
+ import { a as ce, i as le, r as ue, t as de } from "./BackofficeDetailPayload-P61MDRLE.js";
15
+ import { t as fe } from "./useBackofficeListUrlState-D4fx5O7u.js";
16
+ import { i as pe, n as me, r as he, t as ge } from "./mutationResult-CcQMY13J.js";
17
+ import { t as _e } from "./pageResolution-hAQA5C6S.js";
18
+ import { n as ve, t as ye } from "./BackofficeRightPageLayout-DZQvIHnj.js";
19
+ import { StrictMode as be, useCallback as S, useContext as xe, useEffect as C, useMemo as w, useRef as Se, useState as T, useSyncExternalStore as Ce } from "react";
20
+ import { createInstance as we } from "i18next";
21
+ import { I18nextProvider as Te, initReactI18next as Ee, useTranslation as E } from "react-i18next";
22
+ import { HttpRedirect as D, Link as De, RouterRenderer as Oe, RoutingContext as ke, createRouter as Ae, getResourcePage as O, r as je } from "@plumile/router";
23
+ import { BackofficeTabs as Me, DetailPageTemplate as Ne, SidebarSearchSvg as Pe, Spinner as Fe, ThemeProvider as Ie, cx as Le } from "@plumile/ui";
24
+ import Re from "i18next-browser-languagedetector";
25
+ import * as k from "react-relay";
26
+ import { jsx as A, jsxs as j } from "react/jsx-runtime";
27
+ import { BACKOFFICE_LIST_DEFAULTS as ze } from "@plumile/backoffice-core/constants.js";
28
+ import { resolveBackofficeLoadedFacetModule as M } from "@plumile/backoffice-core/resolve.js";
29
+ import { buildBackofficeFallbackListHref as Be, buildBackofficeListLink as N } from "@plumile/backoffice-core/state/buildListHref.js";
30
+ import { setWhereValue as Ve } from "@plumile/backoffice-core/filters/where.js";
31
31
  //#region src/i18n/createI18nInstance.ts
32
- var ze = { maximumFractionDigits: 2 }, Be = {
32
+ var He = { maximumFractionDigits: 2 }, Ue = {
33
33
  style: "currency",
34
34
  currency: "USD",
35
35
  maximumFractionDigits: 2
36
- }, Ve = { dateStyle: "medium" }, He = {
36
+ }, We = { dateStyle: "medium" }, Ge = {
37
37
  dateStyle: "medium",
38
38
  timeStyle: "short"
39
- }, Ue = { style: "percent" };
40
- function We(e) {
39
+ }, Ke = { style: "percent" };
40
+ function qe(e) {
41
41
  return Array.isArray(e) ? e[0] : e;
42
42
  }
43
- function N(e) {
43
+ function P(e) {
44
44
  if (e == null) return "";
45
45
  if (typeof e == "string" || typeof e == "number" || typeof e == "boolean" || typeof e == "bigint") return String(e);
46
46
  if (typeof e == "symbol") return e.toString();
@@ -51,21 +51,21 @@ function N(e) {
51
51
  return "";
52
52
  }
53
53
  }
54
- function P(e, t, n) {
55
- if (t == null) return N(e);
56
- let r = We(n);
57
- if (t === "number" && typeof e == "number") return new Intl.NumberFormat(r, ze).format(e);
58
- if (t === "currency" && typeof e == "number") return new Intl.NumberFormat(r, Be).format(e);
59
- if (t === "percent" && typeof e == "number") return new Intl.NumberFormat(r, Ue).format(e);
54
+ function F(e, t, n) {
55
+ if (t == null) return P(e);
56
+ let r = qe(n);
57
+ if (t === "number" && typeof e == "number") return new Intl.NumberFormat(r, He).format(e);
58
+ if (t === "currency" && typeof e == "number") return new Intl.NumberFormat(r, Ue).format(e);
59
+ if (t === "percent" && typeof e == "number") return new Intl.NumberFormat(r, Ke).format(e);
60
60
  if ((t === "date" || t === "datetime") && e != null) {
61
61
  let n;
62
- if (n = e instanceof Date ? e : typeof e == "string" || typeof e == "number" ? new Date(e) : new Date(N(e)), !Number.isNaN(n.getTime())) return t === "date" ? new Intl.DateTimeFormat(r, Ve).format(n) : new Intl.DateTimeFormat(r, He).format(n);
62
+ if (n = e instanceof Date ? e : typeof e == "string" || typeof e == "number" ? new Date(e) : new Date(P(e)), !Number.isNaN(n.getTime())) return t === "date" ? new Intl.DateTimeFormat(r, We).format(n) : new Intl.DateTimeFormat(r, Ge).format(n);
63
63
  }
64
- return N(e);
64
+ return P(e);
65
65
  }
66
- async function F(e) {
67
- let { resources: t, lng: n, fallbackLng: r = "en", initOptions: i = {}, instance: a = ye(), useLanguageDetector: o = !1, detection: s } = e, { interpolation: c, ...l } = i;
68
- o && a.use(Fe), a.use(xe);
66
+ async function Je(e) {
67
+ let { resources: t, lng: n, fallbackLng: r = "en", initOptions: i = {}, instance: a = we(), useLanguageDetector: o = !1, detection: s } = e, { interpolation: c, ...l } = i;
68
+ o && a.use(Re), a.use(Ee);
69
69
  try {
70
70
  let e = {
71
71
  ...l,
@@ -80,769 +80,781 @@ async function F(e) {
80
80
  let u = s ?? i.detection;
81
81
  o && u != null && (e.detection = u), await a.init(e);
82
82
  let { formatter: d } = a.services;
83
- d != null && (d.add("number", (e, t) => P(e, "number", t)), d.add("currency", (e, t) => P(e, "currency", t)), d.add("percent", (e, t) => P(e, "percent", t)), d.add("date", (e, t) => P(e, "date", t)), d.add("datetime", (e, t) => P(e, "datetime", t)));
83
+ d != null && (d.add("number", (e, t) => F(e, "number", t)), d.add("currency", (e, t) => F(e, "currency", t)), d.add("percent", (e, t) => F(e, "percent", t)), d.add("date", (e, t) => F(e, "date", t)), d.add("datetime", (e, t) => F(e, "datetime", t)));
84
84
  } catch {}
85
85
  return a;
86
86
  }
87
- //#endregion
88
- //#region src/i18n/mergeResourceLanguages.ts
89
- var I = (e) => typeof e == "object" && !!e && !Array.isArray(e), Ge = (e) => I(e) ? e : {};
90
- function Ke(...e) {
91
- let t = {};
92
- return e.forEach((e) => {
93
- Object.entries(e).forEach(([e, n]) => {
94
- let r = t[e];
95
- if (I(r) && I(n)) {
96
- t[e] = Ke(Ge(r), Ge(n));
97
- return;
87
+ var Ye = {
88
+ actions: {
89
+ form: {
90
+ cancel: "Cancel",
91
+ errors: {
92
+ invalidJson: "{{label}} must be valid JSON.",
93
+ invalidJsonArray: "{{label}} must be a valid JSON array.",
94
+ invalidJsonObject: "{{label}} must be a valid JSON object.",
95
+ invalidNumber: "{{label}} must be a valid number.",
96
+ invalidPayload: "The submitted payload is invalid.",
97
+ required: "{{label}} is required."
98
98
  }
99
- t[e] = n;
100
- });
101
- }), t;
102
- }
103
- //#endregion
104
- //#region src/i18n/resources.ts
105
- var qe = {
106
- en: { backofficeReact: {
107
- actions: {
108
- form: {
109
- cancel: "Cancel",
110
- errors: {
111
- invalidJson: "{{label}} must be valid JSON.",
112
- invalidJsonArray: "{{label}} must be a valid JSON array.",
113
- invalidJsonObject: "{{label}} must be a valid JSON object.",
114
- invalidNumber: "{{label}} must be a valid number.",
115
- invalidPayload: "The submitted payload is invalid.",
116
- required: "{{label}} is required."
117
- }
118
- },
119
- view: "View"
120
- },
121
- auth: {
122
- acceptInvitation: {
123
- actions: { backToLogin: "Back to login" },
124
- errors: {
125
- alreadyAccepted: "This invitation has already been accepted.",
126
- default: "Unable to accept invitation.",
127
- emailMismatch: "This invitation was sent to a different email address.",
128
- expired: "Invitation link has expired.",
129
- invalidToken: "Invitation link is invalid.",
130
- missingToken: "Invitation link is missing or invalid.",
131
- passwordMismatch: "Password and confirmation do not match.",
132
- passwordPolicyViolation: "Your password does not meet policy requirements.",
133
- rateLimited: "Too many attempts. Please try again later."
134
- },
135
- form: {
136
- confirmLabel: "Confirm password",
137
- confirmPlaceholder: "Confirm your password",
138
- passwordLabel: "Password",
139
- passwordPlaceholder: "Create a password",
140
- submit: "Accept invitation"
141
- },
142
- mfaSubtitle: "Enter the verification code to continue.",
143
- mfaTitle: "Verify your identity",
144
- status: {
145
- success: "Invitation accepted.",
146
- workingButton: "Working..."
147
- },
148
- subtitle: "Create your account to join.",
149
- title: "Accept invitation"
150
- },
151
- emailCapture: {
152
- continue: "Continue",
153
- description: "Enter your work email to continue.",
154
- emailLabel: "Work email",
155
- emailPlaceholder: "you@company.com",
156
- forgotPassword: "Forgot your password?"
157
- },
158
- loginFlow: {
159
- errors: {
160
- accountLocked: "Too many attempts. Try again later.",
161
- emailRequired: "Enter an email address to continue.",
162
- invalidCredentials: "Email or password is incorrect.",
163
- invalidEmail: "Enter a valid email address.",
164
- passkeyUnavailable: "Passkeys are not available.",
165
- rateLimited: "Too many attempts. Please try again later.",
166
- tryAgain: "Something went wrong. Please try again."
167
- },
168
- methods: { title: "Choose a sign-in method" },
169
- passkey: {
170
- description: "Use the passkey associated with {{email}}.",
171
- title: "Use a passkey"
172
- },
173
- subtitle: {
174
- default: "Choose a sign-in method to continue.",
175
- mfa: "Enter the verification code to continue."
176
- },
177
- title: {
178
- default: "Sign in",
179
- mfa: "Two-factor authentication"
180
- }
181
- },
182
- methodChooser: {
183
- actions: { back: "Back" },
184
- locked: "Too many attempts. Try again later.",
185
- lockedWithTime: "Too many attempts. Try again at {{time}}.",
186
- methods: {
187
- other: "{{method}}",
188
- passkey: "Passkey",
189
- password: "Password"
190
- },
191
- prompt: "Choose how to sign in for <strong>{{email}}</strong>."
192
- },
193
- mfa: {
194
- actions: {
195
- back: "Back",
196
- submit: "Verify"
197
- },
198
- errors: {
199
- expired: "Verification session expired. Please try again.",
200
- invalidChallenge: "Verification session is invalid. Restart the login.",
201
- invalidCode: "Invalid code. Try again.",
202
- shortCode: "Enter the 6-digit code.",
203
- tooManyAttempts: "Too many attempts. Try again later.",
204
- verificationFailed: "Verification failed. Try again."
205
- },
206
- form: {
207
- label: "Verification code",
208
- placeholder: "123456"
209
- },
210
- helper: {
211
- default: "Enter the 6-digit code from your authenticator.",
212
- withEmail: "Enter the 6-digit code sent to {{email}}."
213
- }
99
+ },
100
+ view: "View"
101
+ },
102
+ auth: {
103
+ acceptInvitation: {
104
+ actions: { backToLogin: "Back to login" },
105
+ errors: {
106
+ alreadyAccepted: "This invitation has already been accepted.",
107
+ default: "Unable to accept invitation.",
108
+ emailMismatch: "This invitation was sent to a different email address.",
109
+ expired: "Invitation link has expired.",
110
+ invalidToken: "Invitation link is invalid.",
111
+ missingToken: "Invitation link is missing or invalid.",
112
+ passwordMismatch: "Password and confirmation do not match.",
113
+ passwordPolicyViolation: "Your password does not meet policy requirements.",
114
+ rateLimited: "Too many attempts. Please try again later."
214
115
  },
215
- oidc: { buttons: {
216
- apple: "Continue with Apple",
217
- generic: "Continue with single sign-on",
218
- google: "Continue with Google"
219
- } },
116
+ form: {
117
+ confirmLabel: "Confirm password",
118
+ confirmPlaceholder: "Confirm your password",
119
+ passwordLabel: "Password",
120
+ passwordPlaceholder: "Create a password",
121
+ submit: "Accept invitation"
122
+ },
123
+ mfaSubtitle: "Enter the verification code to continue.",
124
+ mfaTitle: "Verify your identity",
125
+ status: {
126
+ success: "Invitation accepted.",
127
+ workingButton: "Working..."
128
+ },
129
+ subtitle: "Create your account to join.",
130
+ title: "Accept invitation"
131
+ },
132
+ emailCapture: {
133
+ continue: "Continue",
134
+ description: "Enter your work email to continue.",
135
+ emailLabel: "Work email",
136
+ emailPlaceholder: "you@company.com",
137
+ forgotPassword: "Forgot your password?"
138
+ },
139
+ loginFlow: {
140
+ errors: {
141
+ accountLocked: "Too many attempts. Try again later.",
142
+ emailRequired: "Enter an email address to continue.",
143
+ invalidCredentials: "Email or password is incorrect.",
144
+ invalidEmail: "Enter a valid email address.",
145
+ passkeyUnavailable: "Passkeys are not available.",
146
+ rateLimited: "Too many attempts. Please try again later.",
147
+ tryAgain: "Something went wrong. Please try again."
148
+ },
149
+ methods: { title: "Choose a sign-in method" },
220
150
  passkey: {
221
- actions: {
222
- showMethods: "Use another method",
223
- submit: "Continue with passkey",
224
- submitting: "Waiting for passkey..."
225
- },
226
- errors: {
227
- challengeExpired: "Passkey request expired. Try again.",
228
- emailRequired: "Enter your email to continue.",
229
- failed: "Passkey sign-in failed.",
230
- invalidAssertion: "Passkey response is invalid. Try again.",
231
- invalidChallenge: "Passkey request is invalid. Try again.",
232
- invalidEmail: "Enter a valid email address.",
233
- locked: "Too many attempts. Try again later.",
234
- lockedWithTime: "Too many attempts. Try again at {{time}}.",
235
- notAvailable: "Passkeys are not available on this device.",
236
- notFound: "No passkey found for this account."
237
- },
238
- form: {
239
- emailLabel: "Email",
240
- emailPlaceholder: "you@company.com"
241
- },
242
- helper: "Use a passkey instead of your password."
243
- },
244
- passwordLogin: {
245
- forgotPassword: "Forgot your password?",
246
- title: "Sign in"
151
+ description: "Use the passkey associated with {{email}}.",
152
+ title: "Use a passkey"
247
153
  },
248
- passwordResetComplete: {
249
- errors: {
250
- expired: "This reset link has expired.",
251
- invalid: "Reset link is invalid or expired.",
252
- minLength: "Password must be at least {{minLength}} characters.",
253
- mismatch: "Passwords do not match.",
254
- missingToken: "Reset link is missing or invalid.",
255
- policyViolation: "Your new password does not meet policy requirements."
256
- },
257
- form: {
258
- confirmLabel: "Confirm password",
259
- confirmPlaceholder: "Re-enter your password",
260
- description: "Enter a new password for your account.",
261
- passwordLabel: "Password",
262
- passwordPlaceholder: "Enter a new password",
263
- submit: "Update password",
264
- title: "New password"
265
- },
266
- subtitle: "Choose a strong password to secure your account.",
267
- success: {
268
- action: "Back to login",
269
- description: "Your password has been changed.",
270
- helper: "You can now sign in with your new password.",
271
- title: "Password updated"
272
- },
273
- title: "Set a new password"
154
+ subtitle: {
155
+ default: "Choose a sign-in method to continue.",
156
+ mfa: "Enter the verification code to continue."
274
157
  },
275
- passwordResetRequest: {
276
- errors: {
277
- emailRequired: "Enter an email address.",
278
- invalidEmail: "Please enter a valid email address.",
279
- rateLimited: "Too many requests. Please wait and try again.",
280
- startFailed: "Unable to start password reset."
281
- },
282
- form: {
283
- description: "Enter the email for your account.",
284
- emailLabel: "Email",
285
- emailPlaceholder: "you@company.com",
286
- submit: "Send reset link"
287
- },
288
- sent: {
289
- action: "Send another email",
290
- description: "We sent a reset link to {{email}}.",
291
- helper: "If you don't see it, check spam or try again.",
292
- title: "Check your email"
293
- },
294
- title: "Reset your password"
295
- },
296
- verifyEmail: {
297
- actions: {
298
- continue: "Continue",
299
- return: "Back to login"
300
- },
301
- errors: {
302
- alreadyVerified: "This email address is already verified.",
303
- expired: "This verification link has expired.",
304
- invalid: "Verification link is invalid or expired.",
305
- missingToken: "Verification link is missing or invalid."
306
- },
307
- status: {
308
- success: "Email verified. You can continue.",
309
- verifying: "Verifying...",
310
- verifyingButton: "Verifying"
311
- },
312
- subtitle: "Confirm your email address to continue.",
313
- title: "Verify your email"
158
+ title: {
159
+ default: "Sign in",
160
+ mfa: "Two-factor authentication"
314
161
  }
315
162
  },
316
- common: {
317
- actions: {
318
- change: "Change",
319
- clear: "Clear",
320
- close: "Close",
321
- copied: "Copied",
322
- copy: "Copy",
323
- pick: "Pick",
324
- retry: "Retry"
325
- },
326
- boolean: {
327
- no: "No",
328
- yes: "Yes"
329
- },
330
- loading: "Loading...",
331
- notAvailable: "N/A"
163
+ methodChooser: {
164
+ actions: { back: "Back" },
165
+ locked: "Too many attempts. Try again later.",
166
+ lockedWithTime: "Too many attempts. Try again at {{time}}.",
167
+ methods: {
168
+ other: "{{method}}",
169
+ passkey: "Passkey",
170
+ password: "Password"
171
+ },
172
+ prompt: "Choose how to sign in for <strong>{{email}}</strong>."
332
173
  },
333
- dashboard: {
174
+ mfa: {
334
175
  actions: {
335
- openList: "Open list",
336
- openTool: "Open tool"
176
+ back: "Back",
177
+ submit: "Verify"
337
178
  },
338
- subtitle: "Overview of the Work context.",
339
- title: "Dashboard"
340
- },
341
- detail: { notFound: "Not found" },
342
- emptyState: {
343
- listEmpty: {
344
- description: "There are no records to display.",
345
- title: "No results"
179
+ errors: {
180
+ expired: "Verification session expired. Please try again.",
181
+ invalidChallenge: "Verification session is invalid. Restart the login.",
182
+ invalidCode: "Invalid code. Try again.",
183
+ shortCode: "Enter the 6-digit code.",
184
+ tooManyAttempts: "Too many attempts. Try again later.",
185
+ verificationFailed: "Verification failed. Try again."
186
+ },
187
+ form: {
188
+ label: "Verification code",
189
+ placeholder: "123456"
346
190
  },
347
- listEmptyFiltered: {
348
- actions: { reset: "Reset filters" },
349
- description: "No results match the current filters."
191
+ helper: {
192
+ default: "Enter the 6-digit code from your authenticator.",
193
+ withEmail: "Enter the 6-digit code sent to {{email}}."
350
194
  }
351
195
  },
352
- filters: {
353
- actions: { filterBy: "Filter by {{label}}" },
354
- all: "All {{label}}",
355
- allFilters: "All filters",
356
- allFiltersWithCount_one: "All filters ({{count}})",
357
- allFiltersWithCount_other: "All filters ({{count}})",
358
- boolean: {
359
- no: "No",
360
- yes: "Yes"
196
+ oidc: { buttons: {
197
+ apple: "Continue with Apple",
198
+ generic: "Continue with single sign-on",
199
+ google: "Continue with Google"
200
+ } },
201
+ passkey: {
202
+ actions: {
203
+ showMethods: "Use another method",
204
+ submit: "Continue with passkey",
205
+ submitting: "Waiting for passkey..."
361
206
  },
362
- placeholders: {
363
- search: "Search {{label}}",
364
- unresolved: "Unresolved ID"
207
+ errors: {
208
+ challengeExpired: "Passkey request expired. Try again.",
209
+ emailRequired: "Enter your email to continue.",
210
+ failed: "Passkey sign-in failed.",
211
+ invalidAssertion: "Passkey response is invalid. Try again.",
212
+ invalidChallenge: "Passkey request is invalid. Try again.",
213
+ invalidEmail: "Enter a valid email address.",
214
+ locked: "Too many attempts. Try again later.",
215
+ lockedWithTime: "Too many attempts. Try again at {{time}}.",
216
+ notAvailable: "Passkeys are not available on this device.",
217
+ notFound: "No passkey found for this account."
365
218
  },
366
- sections: { default: "Filters" }
219
+ form: {
220
+ emailLabel: "Email",
221
+ emailPlaceholder: "you@company.com"
222
+ },
223
+ helper: "Use a passkey instead of your password."
367
224
  },
368
- flags: {
369
- agentManaged: {
370
- agentManaged: "Agent managed",
371
- userManaged: "User managed"
225
+ passwordLogin: {
226
+ forgotPassword: "Forgot your password?",
227
+ title: "Sign in"
228
+ },
229
+ passwordResetComplete: {
230
+ errors: {
231
+ expired: "This reset link has expired.",
232
+ invalid: "Reset link is invalid or expired.",
233
+ minLength: "Password must be at least {{minLength}} characters.",
234
+ mismatch: "Passwords do not match.",
235
+ missingToken: "Reset link is missing or invalid.",
236
+ policyViolation: "Your new password does not meet policy requirements."
372
237
  },
373
- capability: {
374
- allowed: "Allowed",
375
- denied: "Denied"
238
+ form: {
239
+ confirmLabel: "Confirm password",
240
+ confirmPlaceholder: "Re-enter your password",
241
+ description: "Enter a new password for your account.",
242
+ passwordLabel: "Password",
243
+ passwordPlaceholder: "Enter a new password",
244
+ submit: "Update password",
245
+ title: "New password"
246
+ },
247
+ subtitle: "Choose a strong password to secure your account.",
248
+ success: {
249
+ action: "Back to login",
250
+ description: "Your password has been changed.",
251
+ helper: "You can now sign in with your new password.",
252
+ title: "Password updated"
253
+ },
254
+ title: "Set a new password"
255
+ },
256
+ passwordResetRequest: {
257
+ errors: {
258
+ emailRequired: "Enter an email address.",
259
+ invalidEmail: "Please enter a valid email address.",
260
+ rateLimited: "Too many requests. Please wait and try again.",
261
+ startFailed: "Unable to start password reset."
376
262
  },
377
- default: {
378
- default: "Default",
379
- notDefault: "Not default"
263
+ form: {
264
+ description: "Enter the email for your account.",
265
+ emailLabel: "Email",
266
+ emailPlaceholder: "you@company.com",
267
+ submit: "Send reset link"
380
268
  },
381
- deployedProduction: {
382
- deployed: "Deployed",
383
- notDeployed: "Not deployed"
269
+ sent: {
270
+ action: "Send another email",
271
+ description: "We sent a reset link to {{email}}.",
272
+ helper: "If you don't see it, check spam or try again.",
273
+ title: "Check your email"
384
274
  },
385
- enabled: {
386
- disabled: "Disabled",
387
- enabled: "Enabled"
275
+ title: "Reset your password"
276
+ },
277
+ verifyEmail: {
278
+ actions: {
279
+ continue: "Continue",
280
+ return: "Back to login"
388
281
  },
389
- encrypted: {
390
- encrypted: "Encrypted",
391
- notEncrypted: "Not encrypted"
282
+ errors: {
283
+ alreadyVerified: "This email address is already verified.",
284
+ expired: "This verification link has expired.",
285
+ invalid: "Verification link is invalid or expired.",
286
+ missingToken: "Verification link is missing or invalid."
287
+ },
288
+ status: {
289
+ success: "Email verified. You can continue.",
290
+ verifying: "Verifying...",
291
+ verifyingButton: "Verifying"
292
+ },
293
+ subtitle: "Confirm your email address to continue.",
294
+ title: "Verify your email"
295
+ }
296
+ },
297
+ common: {
298
+ actions: {
299
+ change: "Change",
300
+ clear: "Clear",
301
+ close: "Close",
302
+ copied: "Copied",
303
+ copy: "Copy",
304
+ pick: "Pick",
305
+ retry: "Retry"
306
+ },
307
+ boolean: {
308
+ no: "No",
309
+ yes: "Yes"
310
+ },
311
+ loading: "Loading...",
312
+ notAvailable: "N/A"
313
+ },
314
+ dashboard: {
315
+ actions: {
316
+ openList: "Open list",
317
+ openTool: "Open tool"
318
+ },
319
+ subtitle: "Overview of the Work context.",
320
+ title: "Dashboard"
321
+ },
322
+ detail: { notFound: "Not found" },
323
+ emptyState: {
324
+ listEmpty: {
325
+ description: "There are no records to display.",
326
+ title: "No results"
327
+ },
328
+ listEmptyFiltered: {
329
+ actions: { reset: "Reset filters" },
330
+ description: "No results match the current filters."
331
+ }
332
+ },
333
+ filters: {
334
+ actions: { filterBy: "Filter by {{label}}" },
335
+ all: "All {{label}}",
336
+ allFilters: "All filters",
337
+ allFiltersWithCount_one: "All filters ({{count}})",
338
+ allFiltersWithCount_other: "All filters ({{count}})",
339
+ boolean: {
340
+ no: "No",
341
+ yes: "Yes"
342
+ },
343
+ placeholders: {
344
+ search: "Search {{label}}",
345
+ unresolved: "Unresolved ID"
346
+ },
347
+ sections: { default: "Filters" }
348
+ },
349
+ flags: {
350
+ agentManaged: {
351
+ agentManaged: "Agent managed",
352
+ userManaged: "User managed"
353
+ },
354
+ capability: {
355
+ allowed: "Allowed",
356
+ denied: "Denied"
357
+ },
358
+ default: {
359
+ default: "Default",
360
+ notDefault: "Not default"
361
+ },
362
+ deployedProduction: {
363
+ deployed: "Deployed",
364
+ notDeployed: "Not deployed"
365
+ },
366
+ enabled: {
367
+ disabled: "Disabled",
368
+ enabled: "Enabled"
369
+ },
370
+ encrypted: {
371
+ encrypted: "Encrypted",
372
+ notEncrypted: "Not encrypted"
373
+ },
374
+ failure: {
375
+ failed: "Failed",
376
+ ok: "OK"
377
+ },
378
+ forced: {
379
+ forced: "Forced",
380
+ normal: "Normal"
381
+ },
382
+ locked: {
383
+ locked: "Locked",
384
+ unlocked: "Unlocked"
385
+ }
386
+ },
387
+ format: {
388
+ currency: "{{value, currency}}",
389
+ number: "{{value, number}}",
390
+ percent: "{{value, percent}}"
391
+ },
392
+ history: "",
393
+ list: {
394
+ actions: {
395
+ refresh: "Refresh",
396
+ retry: "Retry"
397
+ },
398
+ errors: {
399
+ tableFailed: "The table failed to load.",
400
+ title: "Table error"
401
+ },
402
+ loadMore: {
403
+ end: "End of results",
404
+ loading: "Loading more…",
405
+ more: "More results available"
406
+ },
407
+ showing: "Showing {{shown, number}} of {{total, number}}",
408
+ title: ""
409
+ },
410
+ overview: "",
411
+ picker: {
412
+ errors: { loadFailed: "Failed to load." },
413
+ searchPlaceholder: { default: "Search..." },
414
+ searchRequired: "Enter an ID to search.",
415
+ title: "Select an ID",
416
+ unavailable: "Picker not available for {{entity}}."
417
+ },
418
+ relations: {
419
+ labelWithCount_one: "{{label}} ({{count}})",
420
+ labelWithCount_other: "{{label}} ({{count}})",
421
+ menu: { label: "Relations" },
422
+ viewList: "View list"
423
+ },
424
+ review: { status: {
425
+ approved: "Approved",
426
+ changesRequested: "Changes requested",
427
+ pending: "Pending",
428
+ unknown: "Unknown"
429
+ } },
430
+ sidebar: {
431
+ actions: {
432
+ pin: "Pin",
433
+ reorder: "Reorder",
434
+ unpin: "Unpin"
435
+ },
436
+ items: { dashboard: "Dashboard" },
437
+ profile: {
438
+ actions: { signOut: "Sign out" },
439
+ menuAriaLabel: "Open profile menu",
440
+ title: "Profile",
441
+ unknownUser: "Unknown user"
442
+ },
443
+ search: { placeholder: "Search…" },
444
+ sections: { pinned: "Pinned" }
445
+ },
446
+ tools: { output: "Output" }
447
+ }, Xe = {
448
+ actions: {
449
+ form: {
450
+ cancel: "Annuler",
451
+ errors: {
452
+ invalidJson: "{{label}} doit être un JSON valide.",
453
+ invalidJsonArray: "{{label}} doit être un tableau JSON valide.",
454
+ invalidJsonObject: "{{label}} doit être un objet JSON valide.",
455
+ invalidNumber: "{{label}} doit être un nombre valide.",
456
+ invalidPayload: "La charge utile soumise est invalide.",
457
+ required: "{{label}} est requis."
458
+ }
459
+ },
460
+ view: "Voir"
461
+ },
462
+ auth: {
463
+ acceptInvitation: {
464
+ actions: { backToLogin: "Retour à la connexion" },
465
+ errors: {
466
+ alreadyAccepted: "Cette invitation a déjà été acceptée.",
467
+ default: "Impossible d'accepter l'invitation.",
468
+ emailMismatch: "Cette invitation a été envoyée à une autre adresse email.",
469
+ expired: "Le lien d'invitation a expiré.",
470
+ invalidToken: "Le lien d'invitation est invalide.",
471
+ missingToken: "Le lien d'invitation est manquant ou invalide.",
472
+ passwordMismatch: "Le mot de passe et sa confirmation ne correspondent pas.",
473
+ passwordPolicyViolation: "Votre mot de passe ne respecte pas la politique de sécurité.",
474
+ rateLimited: "Trop de tentatives. Veuillez réessayer plus tard."
392
475
  },
393
- failure: {
394
- failed: "Failed",
395
- ok: "OK"
476
+ form: {
477
+ confirmLabel: "Confirmer le mot de passe",
478
+ confirmPlaceholder: "Confirmez votre mot de passe",
479
+ passwordLabel: "Mot de passe",
480
+ passwordPlaceholder: "Créez un mot de passe",
481
+ submit: "Accepter l'invitation"
482
+ },
483
+ mfaSubtitle: "Entrez le code de vérification pour continuer.",
484
+ mfaTitle: "Vérifiez votre identité",
485
+ status: {
486
+ success: "Invitation acceptée.",
487
+ workingButton: "Traitement..."
488
+ },
489
+ subtitle: "Créez votre compte pour rejoindre.",
490
+ title: "Accepter l'invitation"
491
+ },
492
+ emailCapture: {
493
+ continue: "Continuer",
494
+ description: "Entrez votre email professionnel pour continuer.",
495
+ emailLabel: "Email professionnel",
496
+ emailPlaceholder: "vous@entreprise.com",
497
+ forgotPassword: "Mot de passe oublié ?"
498
+ },
499
+ loginFlow: {
500
+ errors: {
501
+ accountLocked: "Trop de tentatives. Veuillez réessayer plus tard.",
502
+ emailRequired: "Entrez une adresse email pour continuer.",
503
+ invalidCredentials: "Email ou mot de passe incorrect.",
504
+ invalidEmail: "Entrez une adresse email valide.",
505
+ passkeyUnavailable: "Les passkeys ne sont pas disponibles.",
506
+ rateLimited: "Trop de tentatives. Veuillez réessayer plus tard.",
507
+ tryAgain: "Une erreur est survenue. Veuillez réessayer."
508
+ },
509
+ methods: { title: "Choisissez une méthode de connexion" },
510
+ passkey: {
511
+ description: "Utilisez la passkey associée à {{email}}.",
512
+ title: "Utiliser une passkey"
396
513
  },
397
- forced: {
398
- forced: "Forced",
399
- normal: "Normal"
514
+ subtitle: {
515
+ default: "Choisissez une méthode de connexion pour continuer.",
516
+ mfa: "Entrez le code de vérification pour continuer."
400
517
  },
401
- locked: {
402
- locked: "Locked",
403
- unlocked: "Unlocked"
518
+ title: {
519
+ default: "Se connecter",
520
+ mfa: "Authentification à deux facteurs"
404
521
  }
405
522
  },
406
- format: {
407
- currency: "{{value, currency}}",
408
- number: "{{value, number}}",
409
- percent: "{{value, percent}}"
523
+ methodChooser: {
524
+ actions: { back: "Retour" },
525
+ locked: "Trop de tentatives. Veuillez réessayer plus tard.",
526
+ lockedWithTime: "Trop de tentatives. Veuillez réessayer à {{time}}.",
527
+ methods: {
528
+ other: "{{method}}",
529
+ passkey: "Passkey",
530
+ password: "Mot de passe"
531
+ },
532
+ prompt: "Choisissez comment vous connecter pour <strong>{{email}}</strong>."
410
533
  },
411
- history: "",
412
- list: {
534
+ mfa: {
413
535
  actions: {
414
- refresh: "Refresh",
415
- retry: "Retry"
536
+ back: "Retour",
537
+ submit: "Vérifier"
416
538
  },
417
539
  errors: {
418
- tableFailed: "The table failed to load.",
419
- title: "Table error"
540
+ expired: "La session de vérification a expiré. Réessayez.",
541
+ invalidChallenge: "La session de vérification est invalide. Reprenez la connexion.",
542
+ invalidCode: "Code invalide. Réessayez.",
543
+ shortCode: "Entrez le code à 6 chiffres.",
544
+ tooManyAttempts: "Trop de tentatives. Veuillez réessayer plus tard.",
545
+ verificationFailed: "La vérification a échoué. Réessayez."
420
546
  },
421
- loadMore: {
422
- end: "End of results",
423
- loading: "Loading more…",
424
- more: "More results available"
547
+ form: {
548
+ label: "Code de vérification",
549
+ placeholder: "123456"
425
550
  },
426
- showing: "Showing {{shown, number}} of {{total, number}}",
427
- title: ""
428
- },
429
- overview: "",
430
- picker: {
431
- errors: { loadFailed: "Failed to load." },
432
- searchPlaceholder: { default: "Search..." },
433
- searchRequired: "Enter an ID to search.",
434
- title: "Select an ID",
435
- unavailable: "Picker not available for {{entity}}."
436
- },
437
- relations: {
438
- labelWithCount_one: "{{label}} ({{count}})",
439
- labelWithCount_other: "{{label}} ({{count}})",
440
- menu: { label: "Relations" },
441
- viewList: "View list"
442
- },
443
- review: { status: {
444
- approved: "Approved",
445
- changesRequested: "Changes requested",
446
- pending: "Pending",
447
- unknown: "Unknown"
551
+ helper: {
552
+ default: "Entrez le code à 6 chiffres de votre authentificateur.",
553
+ withEmail: "Entrez le code à 6 chiffres envoyé à {{email}}."
554
+ }
555
+ },
556
+ oidc: { buttons: {
557
+ apple: "Continuer avec Apple",
558
+ generic: "Continuer avec un SSO",
559
+ google: "Continuer avec Google"
448
560
  } },
449
- sidebar: {
561
+ passkey: {
450
562
  actions: {
451
- pin: "Pin",
452
- reorder: "Reorder",
453
- unpin: "Unpin"
563
+ showMethods: "Utiliser une autre méthode",
564
+ submit: "Continuer avec la passkey",
565
+ submitting: "En attente de la passkey..."
454
566
  },
455
- items: { dashboard: "Dashboard" },
456
- profile: {
457
- actions: { signOut: "Sign out" },
458
- menuAriaLabel: "Open profile menu",
459
- title: "Profile",
460
- unknownUser: "Unknown user"
461
- },
462
- search: { placeholder: "Search…" },
463
- sections: { pinned: "Pinned" }
464
- },
465
- tools: { output: "Output" }
466
- } },
467
- fr: { backofficeReact: {
468
- actions: {
469
- form: {
470
- cancel: "Annuler",
471
- errors: {
472
- invalidJson: "{{label}} doit être un JSON valide.",
473
- invalidJsonArray: "{{label}} doit être un tableau JSON valide.",
474
- invalidJsonObject: "{{label}} doit être un objet JSON valide.",
475
- invalidNumber: "{{label}} doit être un nombre valide.",
476
- invalidPayload: "La charge utile soumise est invalide.",
477
- required: "{{label}} est requis."
478
- }
479
- },
480
- view: "Voir"
481
- },
482
- auth: {
483
- acceptInvitation: {
484
- actions: { backToLogin: "Retour à la connexion" },
485
- errors: {
486
- alreadyAccepted: "Cette invitation a déjà été acceptée.",
487
- default: "Impossible d'accepter l'invitation.",
488
- emailMismatch: "Cette invitation a été envoyée à une autre adresse email.",
489
- expired: "Le lien d'invitation a expiré.",
490
- invalidToken: "Le lien d'invitation est invalide.",
491
- missingToken: "Le lien d'invitation est manquant ou invalide.",
492
- passwordMismatch: "Le mot de passe et sa confirmation ne correspondent pas.",
493
- passwordPolicyViolation: "Votre mot de passe ne respecte pas la politique de sécurité.",
494
- rateLimited: "Trop de tentatives. Veuillez réessayer plus tard."
495
- },
496
- form: {
497
- confirmLabel: "Confirmer le mot de passe",
498
- confirmPlaceholder: "Confirmez votre mot de passe",
499
- passwordLabel: "Mot de passe",
500
- passwordPlaceholder: "Créez un mot de passe",
501
- submit: "Accepter l'invitation"
502
- },
503
- mfaSubtitle: "Entrez le code de vérification pour continuer.",
504
- mfaTitle: "Vérifiez votre identité",
505
- status: {
506
- success: "Invitation acceptée.",
507
- workingButton: "Traitement..."
508
- },
509
- subtitle: "Créez votre compte pour rejoindre.",
510
- title: "Accepter l'invitation"
511
- },
512
- emailCapture: {
513
- continue: "Continuer",
514
- description: "Entrez votre email professionnel pour continuer.",
515
- emailLabel: "Email professionnel",
516
- emailPlaceholder: "vous@entreprise.com",
517
- forgotPassword: "Mot de passe oublié ?"
518
- },
519
- loginFlow: {
520
- errors: {
521
- accountLocked: "Trop de tentatives. Veuillez réessayer plus tard.",
522
- emailRequired: "Entrez une adresse email pour continuer.",
523
- invalidCredentials: "Email ou mot de passe incorrect.",
524
- invalidEmail: "Entrez une adresse email valide.",
525
- passkeyUnavailable: "Les passkeys ne sont pas disponibles.",
526
- rateLimited: "Trop de tentatives. Veuillez réessayer plus tard.",
527
- tryAgain: "Une erreur est survenue. Veuillez réessayer."
528
- },
529
- methods: { title: "Choisissez une méthode de connexion" },
530
- passkey: {
531
- description: "Utilisez la passkey associée à {{email}}.",
532
- title: "Utiliser une passkey"
533
- },
534
- subtitle: {
535
- default: "Choisissez une méthode de connexion pour continuer.",
536
- mfa: "Entrez le code de vérification pour continuer."
537
- },
538
- title: {
539
- default: "Se connecter",
540
- mfa: "Authentification à deux facteurs"
541
- }
542
- },
543
- methodChooser: {
544
- actions: { back: "Retour" },
567
+ errors: {
568
+ challengeExpired: "La demande de passkey a expiré. Réessayez.",
569
+ emailRequired: "Entrez votre email pour continuer.",
570
+ failed: "Échec de la connexion par passkey.",
571
+ invalidAssertion: "La réponse de passkey est invalide. Réessayez.",
572
+ invalidChallenge: "La demande de passkey est invalide. Réessayez.",
573
+ invalidEmail: "Entrez une adresse email valide.",
545
574
  locked: "Trop de tentatives. Veuillez réessayer plus tard.",
546
575
  lockedWithTime: "Trop de tentatives. Veuillez réessayer à {{time}}.",
547
- methods: {
548
- other: "{{method}}",
549
- passkey: "Passkey",
550
- password: "Mot de passe"
551
- },
552
- prompt: "Choisissez comment vous connecter pour <strong>{{email}}</strong>."
576
+ notAvailable: "Les passkeys ne sont pas disponibles sur cet appareil.",
577
+ notFound: "Aucune passkey n'est associée à ce compte."
553
578
  },
554
- mfa: {
555
- actions: {
556
- back: "Retour",
557
- submit: "Vérifier"
558
- },
559
- errors: {
560
- expired: "La session de vérification a expiré. Réessayez.",
561
- invalidChallenge: "La session de vérification est invalide. Reprenez la connexion.",
562
- invalidCode: "Code invalide. Réessayez.",
563
- shortCode: "Entrez le code à 6 chiffres.",
564
- tooManyAttempts: "Trop de tentatives. Veuillez réessayer plus tard.",
565
- verificationFailed: "La vérification a échoué. Réessayez."
566
- },
567
- form: {
568
- label: "Code de vérification",
569
- placeholder: "123456"
570
- },
571
- helper: {
572
- default: "Entrez le code à 6 chiffres de votre authentificateur.",
573
- withEmail: "Entrez le code à 6 chiffres envoyé à {{email}}."
574
- }
579
+ form: {
580
+ emailLabel: "Email",
581
+ emailPlaceholder: "vous@entreprise.com"
575
582
  },
576
- oidc: { buttons: {
577
- apple: "Continuer avec Apple",
578
- generic: "Continuer avec un SSO",
579
- google: "Continuer avec Google"
580
- } },
581
- passkey: {
582
- actions: {
583
- showMethods: "Utiliser une autre méthode",
584
- submit: "Continuer avec la passkey",
585
- submitting: "En attente de la passkey..."
586
- },
587
- errors: {
588
- challengeExpired: "La demande de passkey a expiré. Réessayez.",
589
- emailRequired: "Entrez votre email pour continuer.",
590
- failed: "Échec de la connexion par passkey.",
591
- invalidAssertion: "La réponse de passkey est invalide. Réessayez.",
592
- invalidChallenge: "La demande de passkey est invalide. Réessayez.",
593
- invalidEmail: "Entrez une adresse email valide.",
594
- locked: "Trop de tentatives. Veuillez réessayer plus tard.",
595
- lockedWithTime: "Trop de tentatives. Veuillez réessayer à {{time}}.",
596
- notAvailable: "Les passkeys ne sont pas disponibles sur cet appareil.",
597
- notFound: "Aucune passkey n'est associée à ce compte."
598
- },
599
- form: {
600
- emailLabel: "Email",
601
- emailPlaceholder: "vous@entreprise.com"
602
- },
603
- helper: "Utilisez une passkey à la place de votre mot de passe."
583
+ helper: "Utilisez une passkey à la place de votre mot de passe."
584
+ },
585
+ passwordLogin: {
586
+ forgotPassword: "Mot de passe oublié ?",
587
+ title: "Se connecter"
588
+ },
589
+ passwordResetComplete: {
590
+ errors: {
591
+ expired: "Ce lien de réinitialisation a expiré.",
592
+ invalid: "Le lien de réinitialisation est invalide ou expiré.",
593
+ minLength: "Le mot de passe doit contenir au moins {{minLength}} caractères.",
594
+ mismatch: "Les mots de passe ne correspondent pas.",
595
+ missingToken: "Le lien de réinitialisation est manquant ou invalide.",
596
+ policyViolation: "Votre nouveau mot de passe ne respecte pas la politique de sécurité."
604
597
  },
605
- passwordLogin: {
606
- forgotPassword: "Mot de passe oublié ?",
607
- title: "Se connecter"
598
+ form: {
599
+ confirmLabel: "Confirmer le mot de passe",
600
+ confirmPlaceholder: "Saisissez à nouveau votre mot de passe",
601
+ description: "Entrez un nouveau mot de passe pour votre compte.",
602
+ passwordLabel: "Mot de passe",
603
+ passwordPlaceholder: "Entrez un nouveau mot de passe",
604
+ submit: "Mettre à jour le mot de passe",
605
+ title: "Nouveau mot de passe"
606
+ },
607
+ subtitle: "Choisissez un mot de passe robuste pour sécuriser votre compte.",
608
+ success: {
609
+ action: "Retour à la connexion",
610
+ description: "Votre mot de passe a été modifié.",
611
+ helper: "Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.",
612
+ title: "Mot de passe mis à jour"
613
+ },
614
+ title: "Définir un nouveau mot de passe"
615
+ },
616
+ passwordResetRequest: {
617
+ errors: {
618
+ emailRequired: "Entrez une adresse email.",
619
+ invalidEmail: "Veuillez saisir une adresse email valide.",
620
+ rateLimited: "Trop de demandes. Veuillez patienter puis réessayer.",
621
+ startFailed: "Impossible de démarrer la réinitialisation."
608
622
  },
609
- passwordResetComplete: {
610
- errors: {
611
- expired: "Ce lien de réinitialisation a expiré.",
612
- invalid: "Le lien de réinitialisation est invalide ou expiré.",
613
- minLength: "Le mot de passe doit contenir au moins {{minLength}} caractères.",
614
- mismatch: "Les mots de passe ne correspondent pas.",
615
- missingToken: "Le lien de réinitialisation est manquant ou invalide.",
616
- policyViolation: "Votre nouveau mot de passe ne respecte pas la politique de sécurité."
617
- },
618
- form: {
619
- confirmLabel: "Confirmer le mot de passe",
620
- confirmPlaceholder: "Saisissez à nouveau votre mot de passe",
621
- description: "Entrez un nouveau mot de passe pour votre compte.",
622
- passwordLabel: "Mot de passe",
623
- passwordPlaceholder: "Entrez un nouveau mot de passe",
624
- submit: "Mettre à jour le mot de passe",
625
- title: "Nouveau mot de passe"
626
- },
627
- subtitle: "Choisissez un mot de passe robuste pour sécuriser votre compte.",
628
- success: {
629
- action: "Retour à la connexion",
630
- description: "Votre mot de passe a été modifié.",
631
- helper: "Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.",
632
- title: "Mot de passe mis à jour"
633
- },
634
- title: "Définir un nouveau mot de passe"
623
+ form: {
624
+ description: "Entrez l'email de votre compte.",
625
+ emailLabel: "Email",
626
+ emailPlaceholder: "vous@entreprise.com",
627
+ submit: "Envoyer le lien de réinitialisation"
635
628
  },
636
- passwordResetRequest: {
637
- errors: {
638
- emailRequired: "Entrez une adresse email.",
639
- invalidEmail: "Veuillez saisir une adresse email valide.",
640
- rateLimited: "Trop de demandes. Veuillez patienter puis réessayer.",
641
- startFailed: "Impossible de démarrer la réinitialisation."
642
- },
643
- form: {
644
- description: "Entrez l'email de votre compte.",
645
- emailLabel: "Email",
646
- emailPlaceholder: "vous@entreprise.com",
647
- submit: "Envoyer le lien de réinitialisation"
648
- },
649
- sent: {
650
- action: "Envoyer un autre email",
651
- description: "Nous avons envoyé un lien de réinitialisation à {{email}}.",
652
- helper: "Si vous ne le voyez pas, vérifiez les spams ou réessayez.",
653
- title: "Vérifiez votre email"
654
- },
655
- title: "Réinitialiser votre mot de passe"
629
+ sent: {
630
+ action: "Envoyer un autre email",
631
+ description: "Nous avons envoyé un lien de réinitialisation à {{email}}.",
632
+ helper: "Si vous ne le voyez pas, vérifiez les spams ou réessayez.",
633
+ title: "Vérifiez votre email"
656
634
  },
657
- verifyEmail: {
658
- actions: {
659
- continue: "Continuer",
660
- return: "Retour à la connexion"
661
- },
662
- errors: {
663
- alreadyVerified: "Cette adresse email est déjà vérifiée.",
664
- expired: "Ce lien de vérification a expiré.",
665
- invalid: "Le lien de vérification est invalide ou expiré.",
666
- missingToken: "Le lien de vérification est manquant ou invalide."
667
- },
668
- status: {
669
- success: "Email vérifié. Vous pouvez continuer.",
670
- verifying: "Vérification...",
671
- verifyingButton: "Vérification"
672
- },
673
- subtitle: "Confirmez votre adresse email pour continuer.",
674
- title: "Vérifier votre email"
675
- }
635
+ title: "Réinitialiser votre mot de passe"
676
636
  },
677
- common: {
637
+ verifyEmail: {
678
638
  actions: {
679
- change: "Modifier",
680
- clear: "Effacer",
681
- close: "Fermer",
682
- copied: "Copié",
683
- copy: "Copier",
684
- pick: "Choisir",
685
- retry: "Réessayer"
686
- },
687
- boolean: {
688
- no: "Non",
689
- yes: "Oui"
639
+ continue: "Continuer",
640
+ return: "Retour à la connexion"
690
641
  },
691
- loading: "Chargement...",
692
- notAvailable: "N/D"
642
+ errors: {
643
+ alreadyVerified: "Cette adresse email est déjà vérifiée.",
644
+ expired: "Ce lien de vérification a expiré.",
645
+ invalid: "Le lien de vérification est invalide ou expiré.",
646
+ missingToken: "Le lien de vérification est manquant ou invalide."
647
+ },
648
+ status: {
649
+ success: "Email vérifié. Vous pouvez continuer.",
650
+ verifying: "Vérification...",
651
+ verifyingButton: "Vérification"
652
+ },
653
+ subtitle: "Confirmez votre adresse email pour continuer.",
654
+ title: "Vérifier votre email"
655
+ }
656
+ },
657
+ common: {
658
+ actions: {
659
+ change: "Modifier",
660
+ clear: "Effacer",
661
+ close: "Fermer",
662
+ copied: "Copié",
663
+ copy: "Copier",
664
+ pick: "Choisir",
665
+ retry: "Réessayer"
693
666
  },
694
- dashboard: {
695
- actions: {
696
- openList: "Ouvrir la liste",
697
- openTool: "Ouvrir l'outil"
698
- },
699
- subtitle: "Vue d'ensemble du contexte Work.",
700
- title: "Tableau de bord"
701
- },
702
- detail: { notFound: "Introuvable" },
703
- emptyState: {
704
- listEmpty: {
705
- description: "Aucun enregistrement à afficher.",
706
- title: "Aucun résultat"
707
- },
708
- listEmptyFiltered: {
709
- actions: { reset: "Réinitialiser les filtres" },
710
- description: "Aucun résultat ne correspond aux filtres actuels."
711
- }
667
+ boolean: {
668
+ no: "Non",
669
+ yes: "Oui"
712
670
  },
713
- filters: {
714
- actions: { filterBy: "Filtrer par {{label}}" },
715
- all: "Tous {{label}}",
716
- allFilters: "Tous les filtres",
717
- allFiltersWithCount_one: "Tous les filtres ({{count}})",
718
- allFiltersWithCount_many: "Tous les filtres ({{count}})",
719
- allFiltersWithCount_other: "Tous les filtres ({{count}})",
720
- boolean: {
721
- no: "Non",
722
- yes: "Oui"
723
- },
724
- placeholders: {
725
- search: "Rechercher {{label}}",
726
- unresolved: "ID introuvable"
727
- },
728
- sections: { default: "Filtres" }
671
+ loading: "Chargement...",
672
+ notAvailable: "N/D"
673
+ },
674
+ dashboard: {
675
+ actions: {
676
+ openList: "Ouvrir la liste",
677
+ openTool: "Ouvrir l'outil"
729
678
  },
730
- flags: {
731
- agentManaged: {
732
- agentManaged: "Géré par un agent",
733
- userManaged: "Géré par un utilisateur"
734
- },
735
- capability: {
736
- allowed: "Autorisé",
737
- denied: "Refusé"
738
- },
739
- default: {
740
- default: "Par défaut",
741
- notDefault: "Non par défaut"
742
- },
743
- deployedProduction: {
744
- deployed: "Déployé",
745
- notDeployed: "Non déployé"
746
- },
747
- enabled: {
748
- disabled: "Désactivé",
749
- enabled: "Activé"
750
- },
751
- encrypted: {
752
- encrypted: "Chiffré",
753
- notEncrypted: "Non chiffré"
754
- },
755
- failure: {
756
- failed: "Échoué",
757
- ok: "OK"
758
- },
759
- forced: {
760
- forced: "Forcé",
761
- normal: "Normal"
762
- },
763
- locked: {
764
- locked: "Verrouillé",
765
- unlocked: "Déverrouillé"
766
- }
679
+ subtitle: "Vue d'ensemble du contexte Work.",
680
+ title: "Tableau de bord"
681
+ },
682
+ detail: { notFound: "Introuvable" },
683
+ emptyState: {
684
+ listEmpty: {
685
+ description: "Aucun enregistrement à afficher.",
686
+ title: "Aucun résultat"
767
687
  },
768
- format: {
769
- currency: "{{value, currency}}",
770
- number: "{{value, number}}",
771
- percent: "{{value, percent}}"
688
+ listEmptyFiltered: {
689
+ actions: { reset: "Réinitialiser les filtres" },
690
+ description: "Aucun résultat ne correspond aux filtres actuels."
691
+ }
692
+ },
693
+ filters: {
694
+ actions: { filterBy: "Filtrer par {{label}}" },
695
+ all: "Tous {{label}}",
696
+ allFilters: "Tous les filtres",
697
+ allFiltersWithCount_one: "Tous les filtres ({{count}})",
698
+ allFiltersWithCount_many: "Tous les filtres ({{count}})",
699
+ allFiltersWithCount_other: "Tous les filtres ({{count}})",
700
+ boolean: {
701
+ no: "Non",
702
+ yes: "Oui"
772
703
  },
773
- history: "",
774
- list: {
775
- actions: {
776
- refresh: "Actualiser",
777
- retry: "Réessayer"
778
- },
779
- errors: {
780
- tableFailed: "Le tableau n'a pas pu se charger.",
781
- title: "Erreur du tableau"
782
- },
783
- loadMore: {
784
- end: "Fin des résultats",
785
- loading: "Chargement…",
786
- more: "Plus de résultats disponibles"
787
- },
788
- showing: "Affichage de {{shown, number}} sur {{total, number}}",
789
- title: ""
790
- },
791
- overview: "",
792
- picker: {
793
- errors: { loadFailed: "Échec du chargement." },
794
- searchPlaceholder: { default: "Rechercher..." },
795
- searchRequired: "Saisissez un ID pour rechercher.",
796
- title: "Sélectionner un ID",
797
- unavailable: "Sélecteur indisponible pour {{entity}}."
798
- },
799
- relations: {
800
- labelWithCount_one: "{{label}} ({{count}})",
801
- labelWithCount_many: "{{label}} ({{count}})",
802
- labelWithCount_other: "{{label}} ({{count}})",
803
- menu: { label: "Relations" },
804
- viewList: "Voir la liste"
805
- },
806
- review: { status: {
807
- approved: "Approuvé",
808
- changesRequested: "Modifications demandées",
809
- pending: "En attente",
810
- unknown: "Inconnu"
811
- } },
812
- sidebar: {
813
- actions: {
814
- pin: "Épingler",
815
- reorder: "Réordonner",
816
- unpin: "Désépingler"
817
- },
818
- items: { dashboard: "Tableau de bord" },
819
- profile: {
820
- actions: { signOut: "Se déconnecter" },
821
- menuAriaLabel: "Ouvrir le menu profil",
822
- title: "Profil",
823
- unknownUser: "Utilisateur inconnu"
824
- },
825
- search: { placeholder: "Rechercher..." },
826
- sections: { pinned: "Épinglés" }
704
+ placeholders: {
705
+ search: "Rechercher {{label}}",
706
+ unresolved: "ID introuvable"
707
+ },
708
+ sections: { default: "Filtres" }
709
+ },
710
+ flags: {
711
+ agentManaged: {
712
+ agentManaged: "Géré par un agent",
713
+ userManaged: "Géré par un utilisateur"
714
+ },
715
+ capability: {
716
+ allowed: "Autorisé",
717
+ denied: "Refusé"
718
+ },
719
+ default: {
720
+ default: "Par défaut",
721
+ notDefault: "Non par défaut"
722
+ },
723
+ deployedProduction: {
724
+ deployed: "Déployé",
725
+ notDeployed: "Non déployé"
726
+ },
727
+ enabled: {
728
+ disabled: "Désactivé",
729
+ enabled: "Activé"
730
+ },
731
+ encrypted: {
732
+ encrypted: "Chiffré",
733
+ notEncrypted: "Non chiffré"
734
+ },
735
+ failure: {
736
+ failed: "Échoué",
737
+ ok: "OK"
738
+ },
739
+ forced: {
740
+ forced: "Forcé",
741
+ normal: "Normal"
742
+ },
743
+ locked: {
744
+ locked: "Verrouillé",
745
+ unlocked: "Déverrouillé"
746
+ }
747
+ },
748
+ format: {
749
+ currency: "{{value, currency}}",
750
+ number: "{{value, number}}",
751
+ percent: "{{value, percent}}"
752
+ },
753
+ history: "",
754
+ list: {
755
+ actions: {
756
+ refresh: "Actualiser",
757
+ retry: "Réessayer"
827
758
  },
828
- tools: { output: "Résultat" }
829
- } }
830
- }, { RelayEnvironmentProvider: Je } = O, Ye = ({ children: e }) => /* @__PURE__ */ k(Je, {
831
- environment: t(),
759
+ errors: {
760
+ tableFailed: "Le tableau n'a pas pu se charger.",
761
+ title: "Erreur du tableau"
762
+ },
763
+ loadMore: {
764
+ end: "Fin des résultats",
765
+ loading: "Chargement…",
766
+ more: "Plus de résultats disponibles"
767
+ },
768
+ showing: "Affichage de {{shown, number}} sur {{total, number}}",
769
+ title: ""
770
+ },
771
+ overview: "",
772
+ picker: {
773
+ errors: { loadFailed: "Échec du chargement." },
774
+ searchPlaceholder: { default: "Rechercher..." },
775
+ searchRequired: "Saisissez un ID pour rechercher.",
776
+ title: "Sélectionner un ID",
777
+ unavailable: "Sélecteur indisponible pour {{entity}}."
778
+ },
779
+ relations: {
780
+ labelWithCount_one: "{{label}} ({{count}})",
781
+ labelWithCount_many: "{{label}} ({{count}})",
782
+ labelWithCount_other: "{{label}} ({{count}})",
783
+ menu: { label: "Relations" },
784
+ viewList: "Voir la liste"
785
+ },
786
+ review: { status: {
787
+ approved: "Approuvé",
788
+ changesRequested: "Modifications demandées",
789
+ pending: "En attente",
790
+ unknown: "Inconnu"
791
+ } },
792
+ sidebar: {
793
+ actions: {
794
+ pin: "Épingler",
795
+ reorder: "Réordonner",
796
+ unpin: "Désépingler"
797
+ },
798
+ items: { dashboard: "Tableau de bord" },
799
+ profile: {
800
+ actions: { signOut: "Se déconnecter" },
801
+ menuAriaLabel: "Ouvrir le menu profil",
802
+ title: "Profil",
803
+ unknownUser: "Utilisateur inconnu"
804
+ },
805
+ search: { placeholder: "Rechercher..." },
806
+ sections: { pinned: "Épinglés" }
807
+ },
808
+ tools: { output: "Résultat" }
809
+ }, I = (e) => typeof e == "object" && !!e && !Array.isArray(e), L = (e) => I(e) ? e : {};
810
+ function Ze(...e) {
811
+ let t = {};
812
+ return e.forEach((e) => {
813
+ Object.entries(e).forEach(([e, n]) => {
814
+ let r = t[e];
815
+ if (I(r) && I(n)) {
816
+ t[e] = Ze(L(r), L(n));
817
+ return;
818
+ }
819
+ t[e] = n;
820
+ });
821
+ }), t;
822
+ }
823
+ //#endregion
824
+ //#region src/i18n/resources.ts
825
+ var Qe = {
826
+ en: { backofficeReact: Ye },
827
+ fr: { backofficeReact: Xe }
828
+ }, $e = (e) => typeof e == "object" && !!e, R = (e) => $e(e) ? e : {};
829
+ function et(e = {}) {
830
+ let t = {}, n = Qe;
831
+ return new Set([...Object.keys(n), ...Object.keys(e)]).forEach((r) => {
832
+ let i = R(n[r]), a = R(e[r]);
833
+ t[r] = {
834
+ ...i,
835
+ ...a,
836
+ backofficeReact: Ze(R(i.backofficeReact), R(a.backofficeReact))
837
+ };
838
+ }), t;
839
+ }
840
+ //#endregion
841
+ //#region src/relay/RelayProvider.tsx
842
+ var { RelayEnvironmentProvider: tt } = k, nt = ({ children: e }) => (Ce(a, () => t().generation, () => t().generation), /* @__PURE__ */ A(tt, {
843
+ environment: n(),
832
844
  children: e
833
- }), { loadQuery: L, usePreloadedQuery: Xe } = O, Ze = D("WrapperPage", async () => ({ default: (await import("@plumile/ui")).WrapperPage })), Qe = D("BackofficeLayoutPage", async () => import("./BackofficeLayoutPage-j3VUX3Tu.js")), $e = D("BackofficeEntityListPage", async () => import("./BackofficeEntityListPage-C8Ucmc_E.js")), et = D("BackofficeEntityDetailPage", async () => import("./BackofficeEntityDetailPage-DPFXbJxC.js")), tt = D("BackofficeEntityDetailLayoutPage", async () => import("./BackofficeEntityDetailLayoutPage-DXjRqvcZ.js")), nt = D("BackofficeEntityDetailUnknownPageRedirect", async () => import("./BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js")), rt = D("BackofficeDashboardPage", async () => import("./BackofficeDashboardPage-YWvoQODn.js")), it = D("BackofficeLoginPage", async () => import("./BackofficeLoginPage-BkQHm0x6.js")), at = D("BackofficePasswordResetRequestPage", async () => import("./BackofficePasswordResetRequestPage-BJOrQXcy.js")), ot = D("BackofficePasswordResetCompletePage", async () => import("./BackofficePasswordResetCompletePage-CF_0t3Nq.js")), st = D("BackofficeVerifyEmailPage", async () => import("./BackofficeVerifyEmailPage-C81LlsNM.js")), ct = D("BackofficeAcceptInvitationPage", async () => import("./BackofficeAcceptInvitationPage-D0dZnrV7.js")), lt = (e) => {
845
+ })), { loadQuery: z, usePreloadedQuery: rt } = k, it = O("WrapperPage", async () => ({ default: (await import("@plumile/ui")).WrapperPage })), at = O("BackofficeLayoutPage", async () => import("./BackofficeLayoutPage-CKXS0nDO.js")), ot = O("BackofficeEntityListPage", async () => import("./BackofficeEntityListPage-C8Ucmc_E.js")), st = O("BackofficeEntityDetailPage", async () => import("./BackofficeEntityDetailPage-DPFXbJxC.js")), ct = O("BackofficeEntityDetailLayoutPage", async () => import("./BackofficeEntityDetailLayoutPage-DXjRqvcZ.js")), lt = O("BackofficeEntityDetailUnknownPageRedirect", async () => import("./BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js")), ut = O("BackofficeDashboardPage", async () => import("./BackofficeDashboardPage-YWvoQODn.js")), dt = O("BackofficeLoginPage", async () => import("./BackofficeLoginPage-Cc3kcOQV.js")), ft = O("BackofficePasswordResetRequestPage", async () => import("./BackofficePasswordResetRequestPage-BJOrQXcy.js")), pt = O("BackofficePasswordResetCompletePage", async () => import("./BackofficePasswordResetCompletePage-CF_0t3Nq.js")), mt = O("BackofficeVerifyEmailPage", async () => import("./BackofficeVerifyEmailPage-C81LlsNM.js")), ht = O("BackofficeAcceptInvitationPage", async () => import("./BackofficeAcceptInvitationPage-CEtApVwL.js")), gt = (e) => {
834
846
  let t = e.trim();
835
847
  return t === "" || t === "/" ? "" : t.replace(/^\/+|\/+$/g, "");
836
- }, R = (e) => {
848
+ }, _t = (e) => {
837
849
  let t = e.trim();
838
850
  return t === "" ? "/" : `/${t}`.replace(/\/+/g, "/");
839
- }, z = (e, t) => {
851
+ }, B = (e, t) => {
840
852
  let n = t.replace(/^\/+|\/+$/g, "");
841
853
  return e === "" ? n : n === "" ? e : `${e}/${n}`;
842
- }, ut = (e, t) => R(z(e, t)), dt = (e, t) => {
843
- let n = R(e), r = t === "" ? "" : `/${t}`;
854
+ }, vt = (e, t) => _t(B(e, t)), yt = (e, t) => {
855
+ let n = _t(e), r = t === "" ? "" : `/${t}`;
844
856
  return r !== "" && n.startsWith(r) ? n.slice(r.length).replace(/^\/+/, "") : n.replace(/^\/+/, "");
845
- }, ft = (e, t) => {
857
+ }, bt = (e, t) => {
846
858
  if (e?.routes == null) return null;
847
859
  for (let n = e.routes.length - 1; n >= 0; --n) {
848
860
  let r = e.routes[n];
@@ -852,7 +864,7 @@ var qe = {
852
864
  }
853
865
  }
854
866
  return null;
855
- }, pt = (e) => {
867
+ }, xt = (e) => {
856
868
  let t = new URLSearchParams();
857
869
  return Object.entries(e).forEach(([e, n]) => {
858
870
  if (n != null) {
@@ -865,38 +877,38 @@ var qe = {
865
877
  t.set(e, String(n));
866
878
  }
867
879
  }), t;
868
- }, B = Oe;
869
- function mt(e) {
870
- let { basePath: t, entityManifest: n, entityRegistry: r, sidebar: i, auth: a, dashboard: o } = e, s = lt(t), u = z(s, "login"), d = z(s, "login/reset"), f = z(s, "login/reset/complete"), p = z(s, "verify-email"), m = z(s, "accept-invitation"), h = ut(s, "login"), g = l(c(n, i)), _ = /* @__PURE__ */ new Map();
880
+ }, V = je;
881
+ function St(e) {
882
+ let { basePath: t, entityManifest: n, entityRegistry: r, sidebar: i, auth: a, dashboard: o } = e, s = gt(t), c = B(s, "login"), l = B(s, "login/reset"), u = B(s, "login/reset/complete"), p = B(s, "verify-email"), m = B(s, "accept-invitation"), h = vt(s, "login"), g = f(d(n, i)), _ = /* @__PURE__ */ new Map();
871
883
  g.forEach((e, t) => {
872
884
  _.set(t, e.groupId);
873
885
  });
874
- let v = /* @__PURE__ */ new WeakMap(), y = i?.permissionsQuery, ee = async ({ context: e }) => {
886
+ let v = /* @__PURE__ */ new WeakMap(), y = i?.permissionsQuery, b = async ({ context: e }) => {
875
887
  let t = await a.session.load();
876
888
  return {
877
- permissionsQuery: y == null ? null : L(e.relayEnvironment, y, {}),
878
- authStatusQuery: t.authStatusQuery == null ? null : L(e.relayEnvironment, t.authStatusQuery, {}, { fetchPolicy: "network-only" })
889
+ permissionsQuery: y == null ? null : z(e.relayEnvironment, y, {}),
890
+ authStatusQuery: t.authStatusQuery == null ? null : z(e.relayEnvironment, t.authStatusQuery, {}, { fetchPolicy: "network-only" })
879
891
  };
880
- }, te = B({
892
+ }, ee = V({
881
893
  path: "",
882
- resourcePage: rt,
894
+ resourcePage: ut,
883
895
  prepare: async () => (o == null || await o.load(), null),
884
- render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ k(e, {})
885
- }), b = Object.values(n).filter((e) => e.kind === "list-detail").map((e) => {
886
- let t = e.routes.list, n = dt(t, s), i = [];
896
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
897
+ }), te = Object.values(n).filter((e) => e.kind === "list-detail").map((e) => {
898
+ let t = e.routes.list, n = yt(t, s), i = [];
887
899
  if (e.hasList) {
888
- let t = B({
900
+ let t = V({
889
901
  path: "",
890
- resourcePage: $e,
902
+ resourcePage: ot,
891
903
  prepare: async ({ context: t, query: n }) => {
892
904
  let { config: i } = await r.loadListEntity(e.id), { list: a, listUrlCodec: o, listDefaults: s } = i;
893
905
  if (o == null || s == null) throw Error(`Backoffice entity ${e.id} does not expose a list configuration.`);
894
- let c = pt(n), l = o.parse(c), { pageSize: u } = Ie, d = {
906
+ let c = xt(n), l = o.parse(c), { pageSize: u } = ze, d = {
895
907
  where: l.where,
896
908
  sort: l.sort ?? s.sort,
897
909
  count: u,
898
910
  cursor: null
899
- }, f = a.buildVariables == null ? d : a.buildVariables(d), p = L(t.relayEnvironment, a.query, f);
911
+ }, f = a.buildVariables == null ? d : a.buildVariables(d), p = z(t.relayEnvironment, a.query, f);
900
912
  return {
901
913
  entityId: e.id,
902
914
  entityManifest: e,
@@ -907,7 +919,7 @@ function mt(e) {
907
919
  render: ({ prepared: e, Component: t }) => {
908
920
  if (t == null) return null;
909
921
  let n = e;
910
- return /* @__PURE__ */ k(t, {
922
+ return /* @__PURE__ */ A(t, {
911
923
  entityManifest: n.entityManifest,
912
924
  config: n.entityConfig,
913
925
  prepared: n
@@ -916,11 +928,11 @@ function mt(e) {
916
928
  });
917
929
  v.set(t, e.id), i.push(t);
918
930
  }
919
- let a = B({
931
+ let a = V({
920
932
  path: ":id",
921
- resourcePage: tt,
933
+ resourcePage: ct,
922
934
  prepare: async ({ context: t, variables: n }) => {
923
- let { config: i } = await r.loadDetailLayoutEntity(e.id), a = String(n.id ?? ""), o = i.layoutPage.buildVariables == null ? { variables: { id: a } } : i.layoutPage.buildVariables({ id: a }), s = L(t.relayEnvironment, i.layoutPage.query, o.variables);
935
+ let { config: i } = await r.loadDetailLayoutEntity(e.id), a = String(n.id ?? ""), o = i.layoutPage.buildVariables == null ? { variables: { id: a } } : i.layoutPage.buildVariables({ id: a }), s = z(t.relayEnvironment, i.layoutPage.query, o.variables);
924
936
  return {
925
937
  entityId: e.id,
926
938
  entityManifest: e,
@@ -932,7 +944,7 @@ function mt(e) {
932
944
  render: ({ children: e, prepared: t, Component: n }) => {
933
945
  if (n == null) return null;
934
946
  let r = t;
935
- return /* @__PURE__ */ k(n, {
947
+ return /* @__PURE__ */ A(n, {
936
948
  entityManifest: r.entityManifest,
937
949
  config: r.entityConfig,
938
950
  prepared: r,
@@ -940,9 +952,9 @@ function mt(e) {
940
952
  });
941
953
  },
942
954
  children: [
943
- B({
955
+ V({
944
956
  path: "",
945
- resourcePage: Ze,
957
+ resourcePage: it,
946
958
  prepare: ({ variables: t }) => {
947
959
  let n = String(t.id ?? "").trim();
948
960
  return { redirectTo: n === "" ? null : e.routes.detailPage(n, e.defaultDetailPageId ?? "overview") };
@@ -950,14 +962,14 @@ function mt(e) {
950
962
  render: ({ prepared: e }) => {
951
963
  let t = e.redirectTo ?? null;
952
964
  if (t == null) return null;
953
- throw new Ce(t);
965
+ throw new D(t);
954
966
  }
955
967
  }),
956
- ...(e.detailPages ?? []).map((t) => B({
968
+ ...(e.detailPages ?? []).map((t) => V({
957
969
  path: t.pathSegment,
958
- resourcePage: et,
970
+ resourcePage: st,
959
971
  prepare: async ({ context: n, variables: i }) => {
960
- let a = String(i.id ?? ""), o = await r.loadDetailPageEntity(e.id, t.id), s = o.config.page.buildVariables == null ? { variables: { id: a } } : o.config.page.buildVariables({ id: a }), c = L(n.relayEnvironment, o.config.page.query, s.variables);
972
+ let a = String(i.id ?? ""), o = await r.loadDetailPageEntity(e.id, t.id), s = o.config.page.buildVariables == null ? { variables: { id: a } } : o.config.page.buildVariables({ id: a }), c = z(n.relayEnvironment, o.config.page.query, s.variables);
961
973
  return {
962
974
  entityId: e.id,
963
975
  entityManifest: e,
@@ -973,16 +985,16 @@ function mt(e) {
973
985
  render: ({ prepared: e, Component: t }) => {
974
986
  if (t == null) return null;
975
987
  let n = e;
976
- return /* @__PURE__ */ k(t, {
988
+ return /* @__PURE__ */ A(t, {
977
989
  entityManifest: n.entityManifest,
978
990
  config: n.entityConfig,
979
991
  prepared: n
980
992
  });
981
993
  }
982
994
  })),
983
- B({
995
+ V({
984
996
  path: ":pagePath",
985
- resourcePage: nt,
997
+ resourcePage: lt,
986
998
  prepare: async ({ variables: t }) => {
987
999
  let n = await r.loadDetailLayoutEntity(e.id), i = String(t.id ?? ""), a = String(t.pagePath ?? "");
988
1000
  return {
@@ -995,7 +1007,7 @@ function mt(e) {
995
1007
  render: ({ prepared: e, Component: t }) => {
996
1008
  if (t == null) return null;
997
1009
  let n = e;
998
- return /* @__PURE__ */ k(t, {
1010
+ return /* @__PURE__ */ A(t, {
999
1011
  entityManifest: n.entityManifest,
1000
1012
  config: n.entityConfig,
1001
1013
  prepared: n
@@ -1004,14 +1016,14 @@ function mt(e) {
1004
1016
  })
1005
1017
  ]
1006
1018
  });
1007
- return v.set(a, e.id), i.push(a), B({
1019
+ return v.set(a, e.id), i.push(a), V({
1008
1020
  path: n,
1009
1021
  children: i,
1010
- resourcePage: Ze
1022
+ resourcePage: it
1011
1023
  });
1012
1024
  }), ne = Object.values(n).filter((e) => e.kind === "tool").map((t) => {
1013
- let n = B({
1014
- path: dt(t.routes.list, s),
1025
+ let n = V({
1026
+ path: yt(t.routes.list, s),
1015
1027
  resourcePage: e.toolsOperationPage ?? null,
1016
1028
  prepare: async () => {
1017
1029
  let e = await r.loadToolEntity(t.id);
@@ -1024,7 +1036,7 @@ function mt(e) {
1024
1036
  render: ({ prepared: e, Component: t }) => {
1025
1037
  if (t == null) return null;
1026
1038
  let n = e;
1027
- return /* @__PURE__ */ k(t, {
1039
+ return /* @__PURE__ */ A(t, {
1028
1040
  entityManifest: n.entityManifest,
1029
1041
  operation: n.entityConfig.tool.operation,
1030
1042
  toolId: n.entityConfig.id
@@ -1032,19 +1044,19 @@ function mt(e) {
1032
1044
  }
1033
1045
  });
1034
1046
  return v.set(n, t.id), n;
1035
- }), re = B({
1047
+ }), re = V({
1036
1048
  path: s,
1037
- resourcePage: Qe,
1038
- prepare: ee,
1049
+ resourcePage: at,
1050
+ prepare: b,
1039
1051
  render: ({ children: e, prepared: t, route: n, Component: r }) => {
1040
1052
  if (r == null) return null;
1041
- let o = t, s = ft(n, v), c = s == null ? null : _.get(s) ?? null, l = null, u = a.session.get()?.authStatusQuery ?? null;
1053
+ let o = t, s = bt(n, v), c = s == null ? null : _.get(s) ?? null, l = null, u = a.session.get()?.authStatusQuery ?? null;
1042
1054
  if (u != null && o?.authStatusQuery != null) {
1043
- l = Xe(u, o.authStatusQuery);
1055
+ l = rt(u, o.authStatusQuery);
1044
1056
  let { isLoggedIn: e } = l;
1045
- if (!e) throw new Ce(h);
1057
+ if (!e) throw new D(h);
1046
1058
  }
1047
- return /* @__PURE__ */ k(r, {
1059
+ return /* @__PURE__ */ A(r, {
1048
1060
  permissionsQuery: i?.permissionsQuery,
1049
1061
  prepared: o?.permissionsQuery ?? null,
1050
1062
  authStatus: l,
@@ -1053,72 +1065,72 @@ function mt(e) {
1053
1065
  });
1054
1066
  },
1055
1067
  children: [
1056
- te,
1057
- ...b,
1068
+ ee,
1069
+ ...te,
1058
1070
  ...ne
1059
1071
  ]
1060
1072
  }), x = [
1061
- B({
1062
- path: u,
1063
- resourcePage: it,
1073
+ V({
1074
+ path: c,
1075
+ resourcePage: dt,
1064
1076
  prepare: async ({ context: e }) => {
1065
1077
  let t = await a.login.load();
1066
- return { query: L(e.relayEnvironment, t.loginQuery, {}) };
1078
+ return { query: z(e.relayEnvironment, t.loginQuery, {}) };
1067
1079
  },
1068
- render: ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ k(t, { prepared: e })
1080
+ render: ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ A(t, { prepared: e })
1069
1081
  }),
1070
- B({
1071
- path: d,
1072
- resourcePage: at,
1082
+ V({
1083
+ path: l,
1084
+ resourcePage: ft,
1073
1085
  prepare: async () => (await a.passwordResetRequest.load(), null),
1074
- render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ k(e, {})
1086
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
1075
1087
  }),
1076
- B({
1077
- path: f,
1078
- resourcePage: ot,
1088
+ V({
1089
+ path: u,
1090
+ resourcePage: pt,
1079
1091
  prepare: async () => (await a.passwordResetComplete.load(), null),
1080
- render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ k(e, {})
1092
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
1081
1093
  }),
1082
- B({
1094
+ V({
1083
1095
  path: p,
1084
- resourcePage: st,
1096
+ resourcePage: mt,
1085
1097
  prepare: async () => (await a.verifyEmail.load(), null),
1086
- render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ k(e, {})
1098
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
1087
1099
  })
1088
1100
  ];
1089
- return (a.hasAcceptInvitation === !0 || a.acceptInvitation != null) && x.push(B({
1101
+ return (a.hasAcceptInvitation === !0 || a.acceptInvitation != null) && x.push(V({
1090
1102
  path: m,
1091
- resourcePage: ct,
1103
+ resourcePage: ht,
1092
1104
  prepare: async () => (await a.acceptInvitation?.load(), null),
1093
- render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ k(e, {})
1105
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
1094
1106
  })), x.push(re), x;
1095
1107
  }
1096
1108
  //#endregion
1097
1109
  //#region src/components/backoffice/routing/backofficeRouteFallback.css.ts
1098
- var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop txvbqbv43 txvbqbva1", gt = "txvbqbva3", _t = () => {
1099
- let { t: e, i18n: t } = Se("backofficeReact", { useSuspense: !1 }), n = "Loading...";
1100
- return t.isInitialized && (n = e("common.loading")), /* @__PURE__ */ A("div", {
1101
- className: ht,
1110
+ var Ct = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop txvbqbv43 txvbqbva1", wt = "txvbqbva3", Tt = () => {
1111
+ let { t: e, i18n: t } = E("backofficeReact", { useSuspense: !1 }), n = "Loading...";
1112
+ return t.isInitialized && (n = e("common.loading")), /* @__PURE__ */ j("div", {
1113
+ className: Ct,
1102
1114
  role: "status",
1103
1115
  "aria-live": "polite",
1104
1116
  "aria-busy": "true",
1105
- children: [/* @__PURE__ */ k(Me, { size: 28 }), /* @__PURE__ */ k("div", {
1106
- className: gt,
1117
+ children: [/* @__PURE__ */ A(Fe, { size: 28 }), /* @__PURE__ */ A("div", {
1118
+ className: wt,
1107
1119
  children: n
1108
1120
  })]
1109
1121
  });
1110
- }, vt = "_11exksg1 txvbqbv45 txvbqbptp txvbqbt7y txvbqbdqg txvbqbl7g txvbqb2k txvbqbu7g txvbqbuwp", yt = "_11exksg2 txvbqbcgg txvbqbuog", bt = () => /* @__PURE__ */ k("div", {
1111
- className: vt,
1122
+ }, Et = "_11exksg1 txvbqbv45 txvbqbptp txvbqbt7y txvbqbdqg txvbqbl7g txvbqb2k txvbqbu7g txvbqbuwp", Dt = "_11exksg2 txvbqbcgg txvbqbuog", Ot = () => /* @__PURE__ */ A("div", {
1123
+ className: Et,
1112
1124
  "aria-hidden": "true",
1113
- children: /* @__PURE__ */ k("div", { className: yt })
1114
- }), xt = "cache-first", V = "detail-page", H = "detail-layout", U = "list", W = "picker", G = "tool", K = (e) => e.kind === "list-detail", St = (e) => e.kind === "tool", q = (e, t, n) => t === V ? `${e}:${t}:${n ?? ""}` : `${e}:${t}`, Ct = (e) => e instanceof Error ? e : Error(String(e)), J = (e) => e?.status !== "loaded" || e.module == null ? null : e.module, Y = (e, t) => {
1125
+ children: /* @__PURE__ */ A("div", { className: Dt })
1126
+ }), kt = "cache-first", H = "detail-page", U = "detail-layout", W = "list", G = "picker", K = "tool", q = (e) => e.kind === "list-detail", At = (e) => e.kind === "tool", J = (e, t, n) => t === H ? `${e}:${t}:${n ?? ""}` : `${e}:${t}`, jt = (e) => e instanceof Error ? e : Error(String(e)), Y = (e) => e?.status !== "loaded" || e.module == null ? null : e.module, X = (e, t) => {
1115
1127
  let n = e[t];
1116
1128
  if (n == null) throw Error(`Unknown backoffice entity: ${t}`);
1117
1129
  return n;
1118
- }, wt = (e, t) => {
1130
+ }, Mt = (e, t) => {
1119
1131
  let n = /* @__PURE__ */ new Map(), r = (t) => e[t] ?? null, i = async (e, t, r) => {
1120
- if ((t?.mode ?? xt) === "cache-first") {
1121
- let t = J(n.get(e));
1132
+ if ((t?.mode ?? kt) === "cache-first") {
1133
+ let t = Y(n.get(e));
1122
1134
  if (t != null) return t;
1123
1135
  let r = n.get(e);
1124
1136
  if (r?.status === "loading" && r.promise != null) return r.promise;
@@ -1127,7 +1139,7 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1127
1139
  status: "loaded",
1128
1140
  module: t
1129
1141
  }), t)).catch((t) => {
1130
- let r = Ct(t);
1142
+ let r = jt(t);
1131
1143
  throw n.set(e, {
1132
1144
  status: "error",
1133
1145
  error: r
@@ -1140,73 +1152,73 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1140
1152
  };
1141
1153
  return {
1142
1154
  getManifest: r,
1143
- getLoadedListEntity: (e) => J(n.get(q(e, U))),
1144
- getLoadedPickerEntity: (e) => J(n.get(q(e, W))),
1145
- getLoadedDetailLayoutEntity: (e) => J(n.get(q(e, H))),
1146
- getLoadedDetailPageEntity: (e, t) => J(n.get(q(e, V, t))),
1147
- getLoadedToolEntity: (e) => J(n.get(q(e, G))),
1155
+ getLoadedListEntity: (e) => Y(n.get(J(e, W))),
1156
+ getLoadedPickerEntity: (e) => Y(n.get(J(e, G))),
1157
+ getLoadedDetailLayoutEntity: (e) => Y(n.get(J(e, U))),
1158
+ getLoadedDetailPageEntity: (e, t) => Y(n.get(J(e, H, t))),
1159
+ getLoadedToolEntity: (e) => Y(n.get(J(e, K))),
1148
1160
  loadListEntity: async (n, r) => {
1149
- let a = Y(e, n);
1150
- if (!K(a)) throw Error(`Backoffice entity ${n} does not expose a list facet.`);
1161
+ let a = X(e, n);
1162
+ if (!q(a)) throw Error(`Backoffice entity ${n} does not expose a list facet.`);
1151
1163
  let o = a.facets.list;
1152
1164
  if (o == null) throw Error(`Backoffice entity ${n} does not expose a list facet.`);
1153
- return i(q(n, U), r, async () => {
1154
- let e = j(a, await o(), t);
1155
- if (e.kind !== U) throw Error(`Backoffice entity ${n} did not resolve to a list facet.`);
1165
+ return i(J(n, W), r, async () => {
1166
+ let e = M(a, await o(), t);
1167
+ if (e.kind !== W) throw Error(`Backoffice entity ${n} did not resolve to a list facet.`);
1156
1168
  return e;
1157
1169
  });
1158
1170
  },
1159
1171
  loadPickerEntity: async (n, r) => {
1160
- let a = Y(e, n);
1161
- if (!K(a)) throw Error(`Backoffice entity ${n} does not expose a picker facet.`);
1172
+ let a = X(e, n);
1173
+ if (!q(a)) throw Error(`Backoffice entity ${n} does not expose a picker facet.`);
1162
1174
  let o = a.facets.picker;
1163
1175
  if (o == null) throw Error(`Backoffice entity ${n} does not expose a picker facet.`);
1164
- return i(q(n, W), r, async () => {
1165
- let e = j(a, await o(), t);
1166
- if (e.kind !== W) throw Error(`Backoffice entity ${n} did not resolve to a picker facet.`);
1176
+ return i(J(n, G), r, async () => {
1177
+ let e = M(a, await o(), t);
1178
+ if (e.kind !== G) throw Error(`Backoffice entity ${n} did not resolve to a picker facet.`);
1167
1179
  return e;
1168
1180
  });
1169
1181
  },
1170
1182
  loadDetailLayoutEntity: async (n, r) => {
1171
- let a = Y(e, n);
1172
- if (!K(a)) throw Error(`Backoffice entity ${n} does not expose a detail-layout facet.`);
1173
- return i(q(n, H), r, async () => {
1174
- let e = j(a, await a.facets.detailLayout(), t);
1175
- if (e.kind !== H) throw Error(`Backoffice entity ${n} did not resolve to a detail-layout facet.`);
1183
+ let a = X(e, n);
1184
+ if (!q(a)) throw Error(`Backoffice entity ${n} does not expose a detail-layout facet.`);
1185
+ return i(J(n, U), r, async () => {
1186
+ let e = M(a, await a.facets.detailLayout(), t);
1187
+ if (e.kind !== U) throw Error(`Backoffice entity ${n} did not resolve to a detail-layout facet.`);
1176
1188
  return e;
1177
1189
  });
1178
1190
  },
1179
1191
  loadDetailPageEntity: async (n, r, a) => {
1180
- let o = Y(e, n);
1181
- if (!K(o)) throw Error(`Backoffice entity ${n} does not expose a detail-page facet.`);
1182
- return i(q(n, V, r), a, async () => {
1183
- let e = j(o, await o.facets.detailPage(r), t);
1184
- if (e.kind !== V) throw Error(`Backoffice entity ${n} did not resolve to a detail-page facet.`);
1192
+ let o = X(e, n);
1193
+ if (!q(o)) throw Error(`Backoffice entity ${n} does not expose a detail-page facet.`);
1194
+ return i(J(n, H, r), a, async () => {
1195
+ let e = M(o, await o.facets.detailPage(r), t);
1196
+ if (e.kind !== H) throw Error(`Backoffice entity ${n} did not resolve to a detail-page facet.`);
1185
1197
  return e;
1186
1198
  });
1187
1199
  },
1188
1200
  loadToolEntity: async (n, r) => {
1189
- let a = Y(e, n);
1190
- if (!St(a)) throw Error(`Backoffice entity ${n} does not expose a tool facet.`);
1191
- return i(q(n, G), r, async () => {
1192
- let e = j(a, await a.facets.tool(), t);
1193
- if (e.kind !== G) throw Error(`Backoffice entity ${n} did not resolve to a tool facet.`);
1201
+ let a = X(e, n);
1202
+ if (!At(a)) throw Error(`Backoffice entity ${n} does not expose a tool facet.`);
1203
+ return i(J(n, K), r, async () => {
1204
+ let e = M(a, await a.facets.tool(), t);
1205
+ if (e.kind !== K) throw Error(`Backoffice entity ${n} did not resolve to a tool facet.`);
1194
1206
  return e;
1195
1207
  });
1196
1208
  }
1197
1209
  };
1198
- }, X = (e) => e.trim() === "" || e === "/" ? "/" : e.startsWith("/") ? e.endsWith("/") ? e.slice(0, -1) : e : `/${e}`, Z = (e, t) => {
1199
- let n = X(t), r = X(e);
1210
+ }, Z = (e) => e.trim() === "" || e === "/" ? "/" : e.startsWith("/") ? e.endsWith("/") ? e.slice(0, -1) : e : `/${e}`, Q = (e, t) => {
1211
+ let n = Z(t), r = Z(e);
1200
1212
  return r === "/" || n === r || n.startsWith(`${r}/`) ? n : n === "/" ? r : `${r}${n}`;
1201
- }, Tt = (e, t) => Object.fromEntries(Object.entries(e).map(([e, n]) => [e, {
1213
+ }, Nt = (e, t) => Object.fromEntries(Object.entries(e).map(([e, n]) => [e, {
1202
1214
  ...n,
1203
1215
  routes: {
1204
- list: Z(t, n.routes.list),
1205
- detail: (e) => Z(t, n.routes.detail(e)),
1206
- detailPage: (e, r) => Z(t, n.routes.detailPage(e, r))
1216
+ list: Q(t, n.routes.list),
1217
+ detail: (e) => Q(t, n.routes.detail(e)),
1218
+ detailPage: (e, r) => Q(t, n.routes.detailPage(e, r))
1207
1219
  }
1208
- }])), Q = (e) => typeof e == "object" && !Array.isArray(e) ? e : {}, Et = ({ routes: e, instrumentations: t }) => {
1209
- let n = i(), r = w(() => ({ relayEnvironment: n }), [n]), a = w(() => De(e, {
1220
+ }])), Pt = ({ routes: e, instrumentations: t }) => {
1221
+ let n = s(), r = w(() => ({ relayEnvironment: n }), [n]), i = w(() => Ae(e, {
1210
1222
  context: r,
1211
1223
  instrumentations: t
1212
1224
  }), [
@@ -1215,53 +1227,43 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1215
1227
  r
1216
1228
  ]);
1217
1229
  return C(() => () => {
1218
- a.cleanup();
1219
- }, [a]), /* @__PURE__ */ k(Ee.Provider, {
1220
- value: a.context,
1221
- children: /* @__PURE__ */ k(Te, {
1230
+ i.cleanup();
1231
+ }, [i]), /* @__PURE__ */ A(ke.Provider, {
1232
+ value: i.context,
1233
+ children: /* @__PURE__ */ A(Oe, {
1222
1234
  enableTransition: !0,
1223
- fallback: /* @__PURE__ */ k(_t, {}),
1224
- pending: /* @__PURE__ */ k(bt, {})
1235
+ fallback: /* @__PURE__ */ A(Tt, {}),
1236
+ pending: /* @__PURE__ */ A(Ot, {})
1225
1237
  })
1226
1238
  });
1227
- }, Dt = (e) => {
1228
- let t = X(e.basePath ?? "/"), n = w(() => Tt(e.entityManifest, t), [t, e.entityManifest]), i = w(() => wt(n, { basePath: t }), [t, n]), o = e.graphql;
1239
+ }, Ft = (e) => {
1240
+ let t = Z(e.basePath ?? "/"), n = w(() => Nt(e.entityManifest, t), [t, e.entityManifest]), r = w(() => Mt(n, { basePath: t }), [t, n]), i = e.graphql;
1229
1241
  C(() => {
1230
- r({
1231
- httpUrl: o.httpUrl ?? o.endpoint,
1232
- wsUrl: o.wsUrl ?? o.wsEndpoint,
1233
- getDataId: o.getDataId,
1234
- logEvents: o.logEvents,
1235
- getAuthHeaders: o.getAuthHeaders
1242
+ o({
1243
+ httpUrl: i.httpUrl ?? i.endpoint,
1244
+ wsUrl: i.wsUrl ?? i.wsEndpoint,
1245
+ getDataId: i.getDataId,
1246
+ logEvents: i.logEvents,
1247
+ getAuthHeaders: i.getAuthHeaders
1236
1248
  });
1237
1249
  }, [
1238
- o.endpoint,
1239
- o.getAuthHeaders,
1240
- o.getDataId,
1241
- o.httpUrl,
1242
- o.logEvents,
1243
- o.wsEndpoint,
1244
- o.wsUrl
1250
+ i.endpoint,
1251
+ i.getAuthHeaders,
1252
+ i.getDataId,
1253
+ i.httpUrl,
1254
+ i.logEvents,
1255
+ i.wsEndpoint,
1256
+ i.wsUrl
1245
1257
  ]);
1246
- let s = w(() => {
1247
- let t = e.i18n?.resources ?? {}, n = qe, r = new Set([...Object.keys(n), ...Object.keys(t)]), i = {};
1248
- return r.forEach((e) => {
1249
- let r = Q(n[e]), a = Q(t[e]);
1250
- i[e] = {
1251
- ...r,
1252
- ...a,
1253
- backofficeReact: Ke(Q(r.backofficeReact), Q(a.backofficeReact))
1254
- };
1255
- }), i;
1256
- }, [e.i18n?.resources]), c = w(() => e.i18n?.instance ?? ye(), [e.i18n?.instance]);
1258
+ let a = w(() => et(e.i18n?.resources ?? {}), [e.i18n?.resources]), s = w(() => e.i18n?.instance ?? we(), [e.i18n?.instance]);
1257
1259
  return C(() => {
1258
1260
  let t = e.i18n?.initOptions ?? {}, n = t.defaultNS ?? "translations", r = t.ns ?? [
1259
1261
  "backofficeReact",
1260
1262
  "translations",
1261
1263
  "ui"
1262
1264
  ];
1263
- F({
1264
- resources: s,
1265
+ Je({
1266
+ resources: a,
1265
1267
  lng: e.i18n?.lng,
1266
1268
  fallbackLng: e.i18n?.fallbackLng,
1267
1269
  initOptions: {
@@ -1269,26 +1271,26 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1269
1271
  defaultNS: n,
1270
1272
  ns: r
1271
1273
  },
1272
- instance: c,
1274
+ instance: s,
1273
1275
  useLanguageDetector: e.i18n?.useLanguageDetector,
1274
1276
  detection: e.i18n?.detection
1275
1277
  }).catch(console.error);
1276
1278
  }, [
1277
- c,
1278
1279
  s,
1280
+ a,
1279
1281
  e.i18n?.initOptions,
1280
1282
  e.i18n?.detection,
1281
1283
  e.i18n?.fallbackLng,
1282
1284
  e.i18n?.lng,
1283
1285
  e.i18n?.useLanguageDetector
1284
- ]), /* @__PURE__ */ k(_e, { children: /* @__PURE__ */ k(be, {
1285
- i18n: c,
1286
- children: /* @__PURE__ */ k(Ne, { children: /* @__PURE__ */ k(Ye, { children: /* @__PURE__ */ k(a, {
1286
+ ]), /* @__PURE__ */ A(be, { children: /* @__PURE__ */ A(Te, {
1287
+ i18n: s,
1288
+ children: /* @__PURE__ */ A(Ie, { children: /* @__PURE__ */ A(nt, { children: /* @__PURE__ */ A(c, {
1287
1289
  value: w(() => ({
1288
1290
  basePath: t,
1289
1291
  entities: n,
1290
1292
  entityManifest: n,
1291
- entityRegistry: i,
1293
+ entityRegistry: r,
1292
1294
  filterColumnAliases: e.filterColumnAliases,
1293
1295
  sidebar: e.sidebar,
1294
1296
  dashboard: e.dashboard,
@@ -1299,16 +1301,16 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1299
1301
  e.auth,
1300
1302
  e.dashboard,
1301
1303
  n,
1302
- i,
1304
+ r,
1303
1305
  e.filterColumnAliases,
1304
1306
  e.graphql,
1305
1307
  e.sidebar
1306
1308
  ]),
1307
- children: /* @__PURE__ */ k(Et, {
1308
- routes: w(() => mt({
1309
+ children: /* @__PURE__ */ A(Pt, {
1310
+ routes: w(() => St({
1309
1311
  basePath: t,
1310
1312
  entityManifest: n,
1311
- entityRegistry: i,
1313
+ entityRegistry: r,
1312
1314
  sidebar: e.sidebar,
1313
1315
  auth: e.auth,
1314
1316
  dashboard: e.dashboard,
@@ -1316,7 +1318,7 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1316
1318
  }), [
1317
1319
  t,
1318
1320
  n,
1319
- i,
1321
+ r,
1320
1322
  e.auth,
1321
1323
  e.dashboard,
1322
1324
  e.toolsOperationPage,
@@ -1326,7 +1328,7 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1326
1328
  })
1327
1329
  }) }) })
1328
1330
  }) });
1329
- }, Ot = (e) => {
1331
+ }, It = (e) => {
1330
1332
  let t = null, n = null;
1331
1333
  return {
1332
1334
  get: () => t,
@@ -1334,15 +1336,15 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1334
1336
  n = null;
1335
1337
  }), n)
1336
1338
  };
1337
- }, kt = (e, t) => {
1339
+ }, Lt = (e, t) => {
1338
1340
  let n = e ?? [], r = t ?? [];
1339
1341
  return n.length === r.length ? n.every((e, t) => e === r[t]) : !1;
1340
1342
  };
1341
1343
  function $(e, t, n) {
1342
1344
  let { filters: r } = e.list;
1343
- return r.find((e) => String(e.whereKey ?? e.id) === t && kt(e.path, n)) ?? null;
1345
+ return r.find((e) => String(e.whereKey ?? e.id) === t && Lt(e.path, n)) ?? null;
1344
1346
  }
1345
- function At(e, t, n) {
1347
+ function Rt(e, t, n) {
1346
1348
  let r = $(e, t);
1347
1349
  if (r != null) return r;
1348
1350
  let { [t]: i } = n ?? {};
@@ -1352,80 +1354,80 @@ function At(e, t, n) {
1352
1354
  }
1353
1355
  return $(e, `${t}Contains`) ?? null;
1354
1356
  }
1355
- function jt(e, t) {
1357
+ function zt(e, t) {
1356
1358
  return t == null ? !1 : e.kind === "boolean" ? typeof t == "boolean" : e.kind === "entityId" ? typeof t == "string" && t.trim() !== "" : typeof t == "number" ? String(t).trim() !== "" : typeof t == "string" ? t.trim() !== "" : !1;
1357
1359
  }
1358
1360
  //#endregion
1359
1361
  //#region src/components/backoffice/filters/backofficeFilterAction.css.ts
1360
- var Mt = "hwnq700 txvbqb9jg txvbqbcp txvbqbdoy txvbqbtxp txvbqbc6p txvbqblag txvbqb1qy txvbqb1cp txvbqb1qg txvbqbf7 txvbqbv0t txvbqbva1 txvbqbv txvbqb3b txvbqb78 txvbqb6w txvbqb7k", Nt = "txvbqbtx7 txvbqbc67", Pt = (e, t) => e(t), Ft = (e) => {
1361
- let { t } = Se(), { t: n } = s(), { filterColumnAliases: r } = o(), { whereKey: i, value: a, path: c, label: l, listConfig: u } = e, d = b(), f = null;
1362
- if (u == null ? d != null && (f = d.config) : f = u, f == null) return null;
1363
- let p = $(f, i, c);
1364
- if (p == null && c == null && (p = At(f, i, r)), p == null || !jt(p, a)) return null;
1365
- let m = Pt(p.label, t), h = l ?? n("filters.actions.filterBy", { label: m }), g = /* @__PURE__ */ k(je, {
1362
+ var Bt = "hwnq700 txvbqb9jg txvbqbcp txvbqbdoy txvbqbtxp txvbqbc6p txvbqblag txvbqb1qy txvbqb1cp txvbqb1qg txvbqbf7 txvbqbv0t txvbqbva1 txvbqbv txvbqb3b txvbqb78 txvbqb6w txvbqb7k", Vt = "txvbqbtx7 txvbqbc67", Ht = (e, t) => e(t), Ut = (e) => {
1363
+ let { t } = E(), { t: n } = u(), { filterColumnAliases: r } = l(), { whereKey: i, value: a, path: o, label: s, listConfig: c } = e, d = x(), f = null;
1364
+ if (c == null ? d != null && (f = d.config) : f = c, f == null) return null;
1365
+ let p = $(f, i, o);
1366
+ if (p == null && o == null && (p = Rt(f, i, r)), p == null || !zt(p, a)) return null;
1367
+ let m = Ht(p.label, t), h = s ?? n("filters.actions.filterBy", { label: m }), g = /* @__PURE__ */ A(Pe, {
1366
1368
  width: 14,
1367
1369
  height: 14,
1368
- className: Nt,
1370
+ className: Vt,
1369
1371
  "aria-hidden": "true"
1370
1372
  });
1371
- if (d != null) return /* @__PURE__ */ k("button", {
1373
+ if (d != null) return /* @__PURE__ */ A("button", {
1372
1374
  type: "button",
1373
- className: Mt,
1375
+ className: Bt,
1374
1376
  title: h,
1375
1377
  "aria-label": h,
1376
1378
  onClick: () => {
1377
- d.applyFilter(i, a, c);
1379
+ d.applyFilter(i, a, o);
1378
1380
  },
1379
1381
  children: g
1380
1382
  });
1381
- let _ = Re(f.listDefaults?.where ?? f.list.defaultState?.where ?? null, i, a, c);
1382
- return /* @__PURE__ */ k(we, {
1383
- to: M(f, { where: _ }),
1384
- className: Mt,
1383
+ let _ = Ve(f.listDefaults?.where ?? f.list.defaultState?.where ?? null, i, a, o);
1384
+ return /* @__PURE__ */ A(De, {
1385
+ to: N(f, { where: _ }),
1386
+ className: Bt,
1385
1387
  children: g
1386
1388
  });
1387
- }, It = "txvbqb9ip txvbqbai7 txvbqbap7", Lt = "txvbqb9ip txvbqbai7 txvbqbaop", Rt = "txvbqb9iy txvbqbbwy txvbqbap7 txvbqbcg", zt = "txvbqb9ip txvbqbai7 txvbqbap7", Bt = "txvbqb9ip txvbqbai7 txvbqbap7", Vt = ({ summary: e, aside: t, children: n, className: r }) => {
1389
+ }, Wt = "txvbqb9ip txvbqbai7 txvbqbap7", Gt = "txvbqb9ip txvbqbai7 txvbqbaop", Kt = "txvbqb9iy txvbqbbwy txvbqbap7 txvbqbcg", qt = "txvbqb9ip txvbqbai7 txvbqbap7", Jt = "txvbqb9ip txvbqbai7 txvbqbap7", Yt = ({ summary: e, aside: t, children: n, className: r }) => {
1388
1390
  let i = null;
1389
- e != null && (i = /* @__PURE__ */ k("div", {
1390
- className: Lt,
1391
+ e != null && (i = /* @__PURE__ */ A("div", {
1392
+ className: Gt,
1391
1393
  children: e
1392
1394
  }));
1393
1395
  let a = null;
1394
- t != null && (a = /* @__PURE__ */ k("aside", {
1395
- className: Bt,
1396
+ t != null && (a = /* @__PURE__ */ A("aside", {
1397
+ className: Jt,
1396
1398
  children: t
1397
1399
  }));
1398
1400
  let o = null;
1399
- return (n != null || a != null) && (o = /* @__PURE__ */ k("div", {
1400
- className: zt,
1401
+ return (n != null || a != null) && (o = /* @__PURE__ */ A("div", {
1402
+ className: qt,
1401
1403
  children: n
1402
- })), /* @__PURE__ */ A("div", {
1403
- className: Pe(It, r),
1404
- children: [i, /* @__PURE__ */ A("div", {
1405
- className: Rt,
1404
+ })), /* @__PURE__ */ j("div", {
1405
+ className: Le(Wt, r),
1406
+ children: [i, /* @__PURE__ */ j("div", {
1407
+ className: Kt,
1406
1408
  children: [o, a]
1407
1409
  })]
1408
1410
  });
1409
- }, Ht = "txvbqbv9z txvbqb3d txvbqbvwr", Ut = ({ count: e, entity: t, where: n }) => {
1410
- let { entities: r, entityRegistry: i } = o(), a = ve(Ee), s = 0;
1411
- typeof e == "number" && Number.isFinite(e) && (s = e);
1412
- let c = r[t];
1413
- if (c == null) return /* @__PURE__ */ k("span", { children: s });
1414
- let l = i.getLoadedListEntity(t), u;
1415
- u = l == null ? Le(c.routes.list, n) : M(l.config, { where: n });
1411
+ }, Xt = "txvbqbv9z txvbqb3d txvbqbvwr", Zt = ({ count: e, entity: t, where: n }) => {
1412
+ let { entities: r, entityRegistry: i } = l(), a = xe(ke), o = 0;
1413
+ typeof e == "number" && Number.isFinite(e) && (o = e);
1414
+ let s = r[t];
1415
+ if (s == null) return /* @__PURE__ */ A("span", { children: o });
1416
+ let c = i.getLoadedListEntity(t), u;
1417
+ u = c == null ? Be(s.routes.list, n) : N(c.config, { where: n });
1416
1418
  let d = async (e) => {
1417
- let r = M((await i.loadListEntity(t)).config, { where: n }), a = "";
1419
+ let r = N((await i.loadListEntity(t)).config, { where: n }), a = "";
1418
1420
  r.search !== "" && (a = `?${r.search}`), e.push({
1419
1421
  pathname: r.pathname,
1420
1422
  search: a,
1421
1423
  hash: ""
1422
1424
  });
1423
1425
  };
1424
- return /* @__PURE__ */ k(we, {
1426
+ return /* @__PURE__ */ A(De, {
1425
1427
  to: u,
1426
- className: Ht,
1428
+ className: Xt,
1427
1429
  onClick: (e) => {
1428
- if (l != null || a == null || e.defaultPrevented || e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;
1430
+ if (c != null || a == null || e.defaultPrevented || e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;
1429
1431
  e.preventDefault();
1430
1432
  let { history: t } = a;
1431
1433
  d(t).catch(() => {
@@ -1446,87 +1448,91 @@ var Mt = "hwnq700 txvbqb9jg txvbqbcp txvbqbdoy txvbqbtxp txvbqbc6p txvbqblag txv
1446
1448
  });
1447
1449
  });
1448
1450
  },
1449
- children: s
1451
+ children: o
1450
1452
  });
1451
- }, Wt = "txvbqb9ip", Gt = "txvbqb9ip txvbqbai7 txvbqbaop", Kt = ({ headerNode: e, tabs: t, activeId: n, children: r }) => {
1453
+ }, Qt = "txvbqb9ip", $t = "txvbqb9ip txvbqbai7 txvbqbaop", en = ({ headerNode: e, tabs: t, activeId: n, children: r }) => {
1452
1454
  let i = null;
1453
- return t != null && t.length > 1 && n != null && (i = /* @__PURE__ */ k(ke, {
1455
+ return t != null && t.length > 1 && n != null && (i = /* @__PURE__ */ A(Me, {
1454
1456
  items: t,
1455
1457
  activeId: n,
1456
1458
  onChange: () => {},
1457
- className: Wt
1458
- })), /* @__PURE__ */ k(Ae, {
1459
+ className: Qt
1460
+ })), /* @__PURE__ */ A(Ne, {
1459
1461
  headerNode: e,
1460
1462
  tabsNode: i,
1461
- children: /* @__PURE__ */ k("div", {
1462
- className: Gt,
1463
+ children: /* @__PURE__ */ A("div", {
1464
+ className: $t,
1463
1465
  children: r
1464
1466
  })
1465
1467
  });
1466
- }, qt = "txvbqb9jg txvbqbcp txvbqbany txvbqbajy", Jt = ({ children: e, className: t }) => /* @__PURE__ */ k("span", {
1467
- className: Pe(qt, t),
1468
+ }, tn = "txvbqb9jg txvbqbcp txvbqbany txvbqbajy", nn = ({ children: e, className: t }) => /* @__PURE__ */ A("span", {
1469
+ className: Le(tn, t),
1468
1470
  children: e
1469
- }), Yt = [];
1470
- function Xt() {
1471
- return Reflect.get(O, "default") ?? O;
1471
+ }), rn = [];
1472
+ function an() {
1473
+ return Reflect.get(k, "default") ?? k;
1472
1474
  }
1473
- var Zt = Xt();
1474
- function Qt(e, t) {
1475
- let n = Zt.useRelayEnvironment(), [r, i] = E(null), { enabled: a = !0, deps: o = Yt, getVariables: s } = t, c = S(() => {
1475
+ var on = an();
1476
+ function sn(e, n) {
1477
+ let r = on.useRelayEnvironment(), [i, o] = T(null), [s, c] = T(!1), [l, u] = T(!1), d = Ce(a, () => t().generation, () => t().generation), { enabled: f = !0, deps: p = rn, getVariables: m } = n, h = S(() => {
1476
1478
  try {
1477
- return s == null ? e.variables : s();
1479
+ return m == null ? e.variables : m();
1478
1480
  } catch {
1479
1481
  return null;
1480
1482
  }
1481
- }, [e.variables, s]), l = w(() => c(), [c]), u = w(() => {
1482
- if (l == null) return null;
1483
+ }, [e.variables, m]), g = w(() => h(), [h]), _ = w(() => {
1484
+ if (g == null) return null;
1483
1485
  try {
1484
- return JSON.stringify(l);
1486
+ return JSON.stringify(g);
1485
1487
  } catch {
1486
1488
  return null;
1487
1489
  }
1488
- }, [l]), d = !!a, f = d && l != null, p = T(null);
1490
+ }, [g]), v = !!f, y = v && g != null && s && i == null && !l, b = Se(null);
1489
1491
  return C(() => {
1490
- let t = null, r = c();
1491
- return d && r != null && (i(null), t = Zt.requestSubscription(n, {
1492
+ let t = null, n = h();
1493
+ return v && n != null && (o(null), u(!1), c(!0), t = on.requestSubscription(r, {
1492
1494
  subscription: e.subscription,
1493
- variables: r,
1495
+ variables: n,
1494
1496
  cacheConfig: e.cacheConfig,
1495
1497
  configs: e.configs,
1496
- onCompleted: e.onCompleted,
1498
+ onCompleted: () => {
1499
+ u(!0), c(!1), e.onCompleted?.();
1500
+ },
1497
1501
  onError: (t) => {
1498
- i(t), e.onError?.(t);
1502
+ o(t), c(!1), e.onError?.(t);
1499
1503
  },
1500
1504
  onNext: e.onNext,
1501
1505
  updater: e.updater
1502
- }), p.current = t), () => {
1503
- if (t != null) try {
1506
+ }), b.current = t), () => {
1507
+ if (c(!1), t != null) try {
1504
1508
  t.dispose();
1505
1509
  } catch {}
1506
- p.current === t && (p.current = null);
1510
+ b.current === t && (b.current = null);
1507
1511
  };
1508
1512
  }, [
1509
1513
  e,
1510
- o,
1511
- n,
1512
- d,
1513
- c,
1514
- u
1514
+ p,
1515
+ r,
1516
+ v,
1517
+ h,
1518
+ _,
1519
+ d
1515
1520
  ]), {
1516
- active: f,
1517
- error: r
1521
+ active: y,
1522
+ completed: l,
1523
+ error: i
1518
1524
  };
1519
1525
  }
1520
1526
  //#endregion
1521
1527
  //#region src/hooks/useCopyToClipboard.ts
1522
- var $t = "copy-to-clipboard-fallback";
1523
- function en(e) {
1528
+ var cn = "copy-to-clipboard-fallback";
1529
+ function ln(e) {
1524
1530
  if (typeof document > "u") return;
1525
- let t = document.getElementById($t);
1526
- t ?? (t = document.createElement("textarea"), t.id = $t, t.setAttribute("readonly", ""), t.style.position = "absolute", t.style.left = "-9999px", t.style.top = "0", t.style.opacity = "0", document.body.appendChild(t)), t.value = e, t.select(), document.execCommand("copy");
1531
+ let t = document.getElementById(cn);
1532
+ t ?? (t = document.createElement("textarea"), t.id = cn, t.setAttribute("readonly", ""), t.style.position = "absolute", t.style.left = "-9999px", t.style.top = "0", t.style.opacity = "0", document.body.appendChild(t)), t.value = e, t.select(), document.execCommand("copy");
1527
1533
  }
1528
- function tn(e = 2e3) {
1529
- let [t, n] = E(null), r = T(null);
1534
+ function un(e = 2e3) {
1535
+ let [t, n] = T(null), r = Se(null);
1530
1536
  return C(() => () => {
1531
1537
  r.current != null && window.clearTimeout(r.current);
1532
1538
  }, []), {
@@ -1538,7 +1544,7 @@ function tn(e = 2e3) {
1538
1544
  } catch {
1539
1545
  a = !1;
1540
1546
  }
1541
- return a ||= (en(t), !0), i != null && (n(i), r.current != null && window.clearTimeout(r.current), r.current = window.setTimeout(() => {
1547
+ return a ||= (ln(t), !0), i != null && (n(i), r.current != null && window.clearTimeout(r.current), r.current = window.setTimeout(() => {
1542
1548
  n(null), r.current = null;
1543
1549
  }, e)), a;
1544
1550
  }, [e])
@@ -1546,8 +1552,8 @@ function tn(e = 2e3) {
1546
1552
  }
1547
1553
  //#endregion
1548
1554
  //#region src/hooks/useRefetchNeededReload.ts
1549
- function nn(e) {
1550
- let [t, n] = E(null);
1555
+ function dn(e) {
1556
+ let [t, n] = T(null);
1551
1557
  return C(() => {
1552
1558
  n(null);
1553
1559
  }, [e]), {
@@ -1565,8 +1571,8 @@ function nn(e) {
1565
1571
  }
1566
1572
  //#endregion
1567
1573
  //#region src/i18n/useReviewStatusLabel.ts
1568
- function rn() {
1569
- let { t: e } = s();
1574
+ function fn() {
1575
+ let { t: e } = u();
1570
1576
  function t(t) {
1571
1577
  if (t == null) return e("review.status.unknown");
1572
1578
  switch (t) {
@@ -1580,7 +1586,7 @@ function rn() {
1580
1586
  }
1581
1587
  //#endregion
1582
1588
  //#region src/modules/base64.ts
1583
- function an(e) {
1589
+ function pn(e) {
1584
1590
  if (typeof e != "string") throw TypeError("encodeUtf8ToBase64 expects a string input.");
1585
1591
  if (typeof globalThis.btoa == "function") {
1586
1592
  let t = encodeURIComponent(e).replace(/%([0-9A-F]{2})/g, (e, t) => String.fromCharCode(Number.parseInt(t, 16)));
@@ -1588,7 +1594,7 @@ function an(e) {
1588
1594
  }
1589
1595
  throw Error("No base64 encoder is available in this environment.");
1590
1596
  }
1591
- function on(e) {
1597
+ function mn(e) {
1592
1598
  if (typeof e != "string") throw TypeError("decodeBase64ToUtf8 expects a string input.");
1593
1599
  if (typeof globalThis.atob == "function") {
1594
1600
  let t = globalThis.atob(e), n = Array.from(t, (e) => `%${e.charCodeAt(0).toString(16).padStart(2, "0")}`).join("");
@@ -1598,33 +1604,33 @@ function on(e) {
1598
1604
  }
1599
1605
  //#endregion
1600
1606
  //#region src/modules/formatFileSize.ts
1601
- var sn = [
1607
+ var hn = [
1602
1608
  "B",
1603
1609
  "KB",
1604
1610
  "MB",
1605
1611
  "GB",
1606
1612
  "TB"
1607
- ], cn = 1024, ln = (e, t) => {
1613
+ ], gn = 1024, _n = (e, t) => {
1608
1614
  if (t === "B") return Math.round(e).toString();
1609
1615
  let n = 1;
1610
1616
  return e >= 10 && (n = 0), e.toFixed(n);
1611
1617
  };
1612
- function un(e) {
1618
+ function vn(e) {
1613
1619
  let t = e;
1614
1620
  Number.isFinite(e) || (t = 0);
1615
1621
  let n = t < 0, r = Math.abs(t), i = 0;
1616
- for (; r >= cn && i < sn.length - 1;) r /= cn, i += 1;
1617
- let a = sn[i] ?? "B", o = r;
1622
+ for (; r >= gn && i < hn.length - 1;) r /= gn, i += 1;
1623
+ let a = hn[i] ?? "B", o = r;
1618
1624
  return n && (o = -r), {
1619
1625
  value: o,
1620
1626
  unit: a,
1621
- displayValue: ln(o, a)
1627
+ displayValue: _n(o, a)
1622
1628
  };
1623
1629
  }
1624
1630
  //#endregion
1625
1631
  //#region src/relay/createInlineReader.ts
1626
- var { readInlineData: dn } = O, fn = (e) => (t) => dn(e, t), pn = (e) => e;
1632
+ var { readInlineData: yn } = k, bn = (e) => (t) => yn(e, t), xn = (e) => e;
1627
1633
  //#endregion
1628
- export { _ as AcceptInvitationScreen, ae as BackofficeDetailBadgeRow, oe as BackofficeDetailField, ce as BackofficeDetailPayload, se as BackofficeDetailSection, te as BackofficeErrorBoundary, Ft as BackofficeFilterAction, Jt as BackofficeInlineFilterRow, Vt as BackofficeOverviewLayout, Dt as BackofficeProvider, Ut as BackofficeRelatedCountLink, ge as BackofficeRightPageLayout, Kt as BackofficeTabbedDetailShell, re as EntityFilterValue, ne as EntityFilterValueText, x as EntityIdFilterField, ie as EntityIdPickerDialog, h as LoginFlow, v as PasswordResetCompleteScreen, y as PasswordResetRequestScreen, Ye as RelayProvider, ee as VerifyEmailScreen, qe as backofficeReactI18nResources, f as base64UrlToBuffer, p as bufferToBase64Url, he as buildDataTableColumns, r as configureRelayEnvironment, Ot as createBackofficeLazyValue, F as createI18nInstance, fn as createInlineDataReader, m as createUseAuth, on as decodeBase64ToUtf8, an as encodeUtf8ToBase64, un as formatFileSize, t as getEnvironment, n as getNetwork, pn as identityView, d as mapWebAuthnRegistrationError, u as parseSignCount, pe as requireField, de as requireLinkedRecordId, e as resetRelayStore, fe as resolveAgentStartOutcome, ue as resolveMutationOutcome, me as resolveVisibleDetailPages, g as synchronizeAuthStatusQuery, o as useBackofficeConfig, le as useBackofficeListUrlState, Qt as useConditionalSubscription, tn as useCopyToClipboard, nn as useRefetchNeededReload, rn as useReviewStatusLabel };
1634
+ export { b as AcceptInvitationScreen, ce as BackofficeDetailBadgeRow, le as BackofficeDetailField, de as BackofficeDetailPayload, ue as BackofficeDetailSection, re as BackofficeErrorBoundary, Ut as BackofficeFilterAction, nn as BackofficeInlineFilterRow, Yt as BackofficeOverviewLayout, Ft as BackofficeProvider, Zt as BackofficeRelatedCountLink, ye as BackofficeRightPageLayout, en as BackofficeTabbedDetailShell, ae as EntityFilterValue, ie as EntityFilterValueText, oe as EntityIdFilterField, se as EntityIdPickerDialog, v as LoginFlow, ee as PasswordResetCompleteScreen, te as PasswordResetRequestScreen, nt as RelayProvider, ne as VerifyEmailScreen, Qe as backofficeReactI18nResources, h as base64UrlToBuffer, g as bufferToBase64Url, ve as buildDataTableColumns, o as configureRelayEnvironment, It as createBackofficeLazyValue, Je as createI18nInstance, bn as createInlineDataReader, _ as createUseAuth, mn as decodeBase64ToUtf8, pn as encodeUtf8ToBase64, vn as formatFileSize, n as getEnvironment, i as getNetwork, t as getRelayTransportSnapshot, xn as identityView, m as mapWebAuthnRegistrationError, p as parseSignCount, e as reconnectRelayWebSocket, ge as requireField, me as requireLinkedRecordId, r as resetRelayStore, he as resolveAgentStartOutcome, pe as resolveMutationOutcome, _e as resolveVisibleDetailPages, a as subscribeRelayTransport, y as synchronizeAuthStatusQuery, l as useBackofficeConfig, fe as useBackofficeListUrlState, sn as useConditionalSubscription, un as useCopyToClipboard, dn as useRefetchNeededReload, fn as useReviewStatusLabel, et as withBackofficeReactI18nResources };
1629
1635
 
1630
1636
  //# sourceMappingURL=backoffice-react.js.map