@plumile/backoffice-react 0.1.91 → 0.1.92

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.
@@ -9,17 +9,17 @@ import { t as v } from "./PasswordResetCompleteScreen-Cgg96DPo.js";
9
9
  import { t as y } from "./PasswordResetRequestScreen-I1nFvGLd.js";
10
10
  import { t as ee } from "./VerifyEmailScreen-Br5KyHjg.js";
11
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";
12
+ import { i as ne, n as re, t as ie } from "./EntityFilterValue-BWUdPBwp.js";
13
+ import { i as b, t as ae } from "./EntityIdPickerDialog-Yhmr-WsV.js";
14
+ import { a as oe, i as se, r as ce, t as le } from "./BackofficeDetailPayload-P61MDRLE.js";
15
+ import { t as ue } from "./useBackofficeListUrlState-D4fx5O7u.js";
16
+ import { i as de, n as fe, r as pe, t as me } from "./mutationResult-CcQMY13J.js";
17
+ import { t as he } from "./pageResolution-hAQA5C6S.js";
18
+ import { n as ge, t as _e } from "./BackofficeRightPageLayout-DZQvIHnj.js";
19
+ import { StrictMode as ve, useCallback as x, useContext as ye, useEffect as S, useMemo as C, useRef as be, useState as w } from "react";
20
+ import { createInstance as xe } from "i18next";
21
+ import { I18nextProvider as Se, initReactI18next as Ce, useTranslation as T } from "react-i18next";
22
+ import { HttpRedirect as we, Link as E, RouterRenderer as Te, RoutingContext as Ee, createRouter as De, getResourcePage as D, r as Oe } from "@plumile/router";
23
23
  import { BackofficeTabs as ke, DetailPageTemplate as Ae, SidebarSearchSvg as je, Spinner as Me, ThemeProvider as Ne, cx as Pe } from "@plumile/ui";
24
24
  import Fe from "i18next-browser-languagedetector";
25
25
  import * as O from "react-relay";
@@ -63,9 +63,9 @@ function P(e, t, n) {
63
63
  }
64
64
  return N(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 Ge(e) {
67
+ let { resources: t, lng: n, fallbackLng: r = "en", initOptions: i = {}, instance: a = xe(), useLanguageDetector: o = !1, detection: s } = e, { interpolation: c, ...l } = i;
68
+ o && a.use(Fe), a.use(Ce);
69
69
  try {
70
70
  let e = {
71
71
  ...l,
@@ -84,765 +84,777 @@ async function F(e) {
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 Ke = {
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."
151
+ description: "Use the passkey associated with {{email}}.",
152
+ title: "Use a passkey"
243
153
  },
244
- passwordLogin: {
245
- forgotPassword: "Forgot your password?",
246
- title: "Sign in"
154
+ subtitle: {
155
+ default: "Choose a sign-in method to continue.",
156
+ mfa: "Enter the verification code to continue."
247
157
  },
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"
274
- },
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."
346
186
  },
347
- listEmptyFiltered: {
348
- actions: { reset: "Reset filters" },
349
- description: "No results match the current filters."
187
+ form: {
188
+ label: "Verification code",
189
+ placeholder: "123456"
190
+ },
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..."
206
+ },
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."
361
218
  },
362
- placeholders: {
363
- search: "Search {{label}}",
364
- unresolved: "Unresolved ID"
219
+ form: {
220
+ emailLabel: "Email",
221
+ emailPlaceholder: "you@company.com"
365
222
  },
366
- sections: { default: "Filters" }
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
+ }, qe = {
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"
758
+ },
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"
827
797
  },
828
- tools: { output: "Résultat" }
829
- } }
830
- }, { RelayEnvironmentProvider: Je } = O, Ye = ({ children: e }) => /* @__PURE__ */ k(Je, {
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
+ }, F = (e) => typeof e == "object" && !!e && !Array.isArray(e), Je = (e) => F(e) ? e : {};
810
+ function Ye(...e) {
811
+ let t = {};
812
+ return e.forEach((e) => {
813
+ Object.entries(e).forEach(([e, n]) => {
814
+ let r = t[e];
815
+ if (F(r) && F(n)) {
816
+ t[e] = Ye(Je(r), Je(n));
817
+ return;
818
+ }
819
+ t[e] = n;
820
+ });
821
+ }), t;
822
+ }
823
+ //#endregion
824
+ //#region src/i18n/resources.ts
825
+ var Xe = {
826
+ en: { backofficeReact: Ke },
827
+ fr: { backofficeReact: qe }
828
+ }, Ze = (e) => typeof e == "object" && !!e, I = (e) => Ze(e) ? e : {};
829
+ function L(e = {}) {
830
+ let t = {}, n = Xe;
831
+ return new Set([...Object.keys(n), ...Object.keys(e)]).forEach((r) => {
832
+ let i = I(n[r]), a = I(e[r]);
833
+ t[r] = {
834
+ ...i,
835
+ ...a,
836
+ backofficeReact: Ye(I(i.backofficeReact), I(a.backofficeReact))
837
+ };
838
+ }), t;
839
+ }
840
+ //#endregion
841
+ //#region src/relay/RelayProvider.tsx
842
+ var { RelayEnvironmentProvider: Qe } = O, $e = ({ children: e }) => /* @__PURE__ */ k(Qe, {
831
843
  environment: t(),
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: R, usePreloadedQuery: et } = O, z = D("WrapperPage", async () => ({ default: (await import("@plumile/ui")).WrapperPage })), tt = D("BackofficeLayoutPage", async () => import("./BackofficeLayoutPage-j3VUX3Tu.js")), nt = D("BackofficeEntityListPage", async () => import("./BackofficeEntityListPage-C8Ucmc_E.js")), rt = D("BackofficeEntityDetailPage", async () => import("./BackofficeEntityDetailPage-DPFXbJxC.js")), it = D("BackofficeEntityDetailLayoutPage", async () => import("./BackofficeEntityDetailLayoutPage-DXjRqvcZ.js")), at = D("BackofficeEntityDetailUnknownPageRedirect", async () => import("./BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js")), ot = D("BackofficeDashboardPage", async () => import("./BackofficeDashboardPage-YWvoQODn.js")), st = D("BackofficeLoginPage", async () => import("./BackofficeLoginPage-BkQHm0x6.js")), ct = D("BackofficePasswordResetRequestPage", async () => import("./BackofficePasswordResetRequestPage-BJOrQXcy.js")), lt = D("BackofficePasswordResetCompletePage", async () => import("./BackofficePasswordResetCompletePage-CF_0t3Nq.js")), ut = D("BackofficeVerifyEmailPage", async () => import("./BackofficeVerifyEmailPage-C81LlsNM.js")), dt = D("BackofficeAcceptInvitationPage", async () => import("./BackofficeAcceptInvitationPage-D0dZnrV7.js")), ft = (e) => {
834
846
  let t = e.trim();
835
847
  return t === "" || t === "/" ? "" : t.replace(/^\/+|\/+$/g, "");
836
- }, R = (e) => {
848
+ }, pt = (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
+ }, mt = (e, t) => pt(B(e, t)), ht = (e, t) => {
855
+ let n = pt(e), r = t === "" ? "" : `/${t}`;
844
856
  return r !== "" && n.startsWith(r) ? n.slice(r.length).replace(/^\/+/, "") : n.replace(/^\/+/, "");
845
- }, ft = (e, t) => {
857
+ }, gt = (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
+ }, _t = (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 = Oe;
881
+ function vt(e) {
882
+ let { basePath: t, entityManifest: n, entityRegistry: r, sidebar: i, auth: a, dashboard: o } = e, s = ft(t), u = B(s, "login"), d = B(s, "login/reset"), f = B(s, "login/reset/complete"), p = B(s, "verify-email"), m = B(s, "accept-invitation"), h = mt(s, "login"), g = l(c(n, i)), _ = /* @__PURE__ */ new Map();
871
883
  g.forEach((e, t) => {
872
884
  _.set(t, e.groupId);
873
885
  });
874
886
  let v = /* @__PURE__ */ new WeakMap(), y = i?.permissionsQuery, ee = 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 : R(e.relayEnvironment, y, {}),
890
+ authStatusQuery: t.authStatusQuery == null ? null : R(e.relayEnvironment, t.authStatusQuery, {}, { fetchPolicy: "network-only" })
879
891
  };
880
- }, te = B({
892
+ }, te = V({
881
893
  path: "",
882
- resourcePage: rt,
894
+ resourcePage: ot,
883
895
  prepare: async () => (o == null || await o.load(), null),
884
896
  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 = [];
897
+ }), ne = Object.values(n).filter((e) => e.kind === "list-detail").map((e) => {
898
+ let t = e.routes.list, n = ht(t, s), i = [];
887
899
  if (e.hasList) {
888
- let t = B({
900
+ let t = V({
889
901
  path: "",
890
- resourcePage: $e,
902
+ resourcePage: nt,
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 = _t(n), l = o.parse(c), { pageSize: u } = Ie, 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 = R(t.relayEnvironment, a.query, f);
900
912
  return {
901
913
  entityId: e.id,
902
914
  entityManifest: e,
@@ -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: it,
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 = R(t.relayEnvironment, i.layoutPage.query, o.variables);
924
936
  return {
925
937
  entityId: e.id,
926
938
  entityManifest: e,
@@ -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: z,
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 we(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: rt,
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 = R(n.relayEnvironment, o.config.page.query, s.variables);
961
973
  return {
962
974
  entityId: e.id,
963
975
  entityManifest: e,
@@ -980,9 +992,9 @@ function mt(e) {
980
992
  });
981
993
  }
982
994
  })),
983
- B({
995
+ V({
984
996
  path: ":pagePath",
985
- resourcePage: nt,
997
+ resourcePage: at,
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 {
@@ -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: z
1011
1023
  });
1012
- }), ne = Object.values(n).filter((e) => e.kind === "tool").map((t) => {
1013
- let n = B({
1014
- path: dt(t.routes.list, s),
1024
+ }), re = Object.values(n).filter((e) => e.kind === "tool").map((t) => {
1025
+ let n = V({
1026
+ path: ht(t.routes.list, s),
1015
1027
  resourcePage: e.toolsOperationPage ?? null,
1016
1028
  prepare: async () => {
1017
1029
  let e = await r.loadToolEntity(t.id);
@@ -1032,17 +1044,17 @@ function mt(e) {
1032
1044
  }
1033
1045
  });
1034
1046
  return v.set(n, t.id), n;
1035
- }), re = B({
1047
+ }), ie = V({
1036
1048
  path: s,
1037
- resourcePage: Qe,
1049
+ resourcePage: tt,
1038
1050
  prepare: ee,
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 = gt(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 = et(u, o.authStatusQuery);
1044
1056
  let { isLoggedIn: e } = l;
1045
- if (!e) throw new Ce(h);
1057
+ if (!e) throw new we(h);
1046
1058
  }
1047
1059
  return /* @__PURE__ */ k(r, {
1048
1060
  permissionsQuery: i?.permissionsQuery,
@@ -1054,71 +1066,71 @@ function mt(e) {
1054
1066
  },
1055
1067
  children: [
1056
1068
  te,
1057
- ...b,
1058
- ...ne
1069
+ ...ne,
1070
+ ...re
1059
1071
  ]
1060
- }), x = [
1061
- B({
1072
+ }), b = [
1073
+ V({
1062
1074
  path: u,
1063
- resourcePage: it,
1075
+ resourcePage: st,
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: R(e.relayEnvironment, t.loginQuery, {}) };
1067
1079
  },
1068
1080
  render: ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ k(t, { prepared: e })
1069
1081
  }),
1070
- B({
1082
+ V({
1071
1083
  path: d,
1072
- resourcePage: at,
1084
+ resourcePage: ct,
1073
1085
  prepare: async () => (await a.passwordResetRequest.load(), null),
1074
1086
  render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ k(e, {})
1075
1087
  }),
1076
- B({
1088
+ V({
1077
1089
  path: f,
1078
- resourcePage: ot,
1090
+ resourcePage: lt,
1079
1091
  prepare: async () => (await a.passwordResetComplete.load(), null),
1080
1092
  render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ k(e, {})
1081
1093
  }),
1082
- B({
1094
+ V({
1083
1095
  path: p,
1084
- resourcePage: st,
1096
+ resourcePage: ut,
1085
1097
  prepare: async () => (await a.verifyEmail.load(), null),
1086
1098
  render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ k(e, {})
1087
1099
  })
1088
1100
  ];
1089
- return (a.hasAcceptInvitation === !0 || a.acceptInvitation != null) && x.push(B({
1101
+ return (a.hasAcceptInvitation === !0 || a.acceptInvitation != null) && b.push(V({
1090
1102
  path: m,
1091
- resourcePage: ct,
1103
+ resourcePage: dt,
1092
1104
  prepare: async () => (await a.acceptInvitation?.load(), null),
1093
1105
  render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ k(e, {})
1094
- })), x.push(re), x;
1106
+ })), b.push(ie), b;
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...";
1110
+ var yt = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop txvbqbv43 txvbqbva1", bt = "txvbqbva3", xt = () => {
1111
+ let { t: e, i18n: t } = T("backofficeReact", { useSuspense: !1 }), n = "Loading...";
1100
1112
  return t.isInitialized && (n = e("common.loading")), /* @__PURE__ */ A("div", {
1101
- className: ht,
1113
+ className: yt,
1102
1114
  role: "status",
1103
1115
  "aria-live": "polite",
1104
1116
  "aria-busy": "true",
1105
1117
  children: [/* @__PURE__ */ k(Me, { size: 28 }), /* @__PURE__ */ k("div", {
1106
- className: gt,
1118
+ className: bt,
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
+ }, St = "_11exksg1 txvbqbv45 txvbqbptp txvbqbt7y txvbqbdqg txvbqbl7g txvbqb2k txvbqbu7g txvbqbuwp", Ct = "_11exksg2 txvbqbcgg txvbqbuog", wt = () => /* @__PURE__ */ k("div", {
1123
+ className: St,
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__ */ k("div", { className: Ct })
1126
+ }), Tt = "cache-first", H = "detail-page", U = "detail-layout", W = "list", G = "picker", K = "tool", q = (e) => e.kind === "list-detail", Et = (e) => e.kind === "tool", J = (e, t, n) => t === H ? `${e}:${t}:${n ?? ""}` : `${e}:${t}`, Dt = (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
+ }, Ot = (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 ?? Tt) === "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 = Dt(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 () => {
1165
+ return i(J(n, W), r, async () => {
1154
1166
  let e = j(a, await o(), t);
1155
- if (e.kind !== U) throw Error(`Backoffice entity ${n} did not resolve to a list facet.`);
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 () => {
1176
+ return i(J(n, G), r, async () => {
1165
1177
  let e = j(a, await o(), t);
1166
- if (e.kind !== W) throw Error(`Backoffice entity ${n} did not resolve to a picker facet.`);
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 () => {
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 () => {
1174
1186
  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.`);
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 () => {
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 () => {
1183
1195
  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.`);
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 () => {
1201
+ let a = X(e, n);
1202
+ if (!Et(a)) throw Error(`Backoffice entity ${n} does not expose a tool facet.`);
1203
+ return i(J(n, K), r, async () => {
1192
1204
  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.`);
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
+ }, kt = (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
+ }])), At = ({ routes: e, instrumentations: t }) => {
1221
+ let n = i(), r = C(() => ({ relayEnvironment: n }), [n]), a = C(() => De(e, {
1210
1222
  context: r,
1211
1223
  instrumentations: t
1212
1224
  }), [
@@ -1214,19 +1226,19 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1214
1226
  e,
1215
1227
  r
1216
1228
  ]);
1217
- return C(() => () => {
1229
+ return S(() => () => {
1218
1230
  a.cleanup();
1219
1231
  }, [a]), /* @__PURE__ */ k(Ee.Provider, {
1220
1232
  value: a.context,
1221
1233
  children: /* @__PURE__ */ k(Te, {
1222
1234
  enableTransition: !0,
1223
- fallback: /* @__PURE__ */ k(_t, {}),
1224
- pending: /* @__PURE__ */ k(bt, {})
1235
+ fallback: /* @__PURE__ */ k(xt, {}),
1236
+ pending: /* @__PURE__ */ k(wt, {})
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;
1229
- C(() => {
1239
+ }, jt = (e) => {
1240
+ let t = Z(e.basePath ?? "/"), n = C(() => kt(e.entityManifest, t), [t, e.entityManifest]), i = C(() => Ot(n, { basePath: t }), [t, n]), o = e.graphql;
1241
+ S(() => {
1230
1242
  r({
1231
1243
  httpUrl: o.httpUrl ?? o.endpoint,
1232
1244
  wsUrl: o.wsUrl ?? o.wsEndpoint,
@@ -1243,24 +1255,14 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1243
1255
  o.wsEndpoint,
1244
1256
  o.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]);
1257
- return C(() => {
1258
+ let s = C(() => L(e.i18n?.resources ?? {}), [e.i18n?.resources]), c = C(() => e.i18n?.instance ?? xe(), [e.i18n?.instance]);
1259
+ return S(() => {
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({
1265
+ Ge({
1264
1266
  resources: s,
1265
1267
  lng: e.i18n?.lng,
1266
1268
  fallbackLng: e.i18n?.fallbackLng,
@@ -1281,10 +1283,10 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1281
1283
  e.i18n?.fallbackLng,
1282
1284
  e.i18n?.lng,
1283
1285
  e.i18n?.useLanguageDetector
1284
- ]), /* @__PURE__ */ k(_e, { children: /* @__PURE__ */ k(be, {
1286
+ ]), /* @__PURE__ */ k(ve, { children: /* @__PURE__ */ k(Se, {
1285
1287
  i18n: c,
1286
- children: /* @__PURE__ */ k(Ne, { children: /* @__PURE__ */ k(Ye, { children: /* @__PURE__ */ k(a, {
1287
- value: w(() => ({
1288
+ children: /* @__PURE__ */ k(Ne, { children: /* @__PURE__ */ k($e, { children: /* @__PURE__ */ k(a, {
1289
+ value: C(() => ({
1288
1290
  basePath: t,
1289
1291
  entities: n,
1290
1292
  entityManifest: n,
@@ -1304,8 +1306,8 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1304
1306
  e.graphql,
1305
1307
  e.sidebar
1306
1308
  ]),
1307
- children: /* @__PURE__ */ k(Et, {
1308
- routes: w(() => mt({
1309
+ children: /* @__PURE__ */ k(At, {
1310
+ routes: C(() => vt({
1309
1311
  basePath: t,
1310
1312
  entityManifest: n,
1311
1313
  entityRegistry: i,
@@ -1326,7 +1328,7 @@ var ht = "txvbqb9ip txvbqbai7 txvbqbcp txvbqbdoy txvbqbk5p txvbqbu7g txvbqbaop t
1326
1328
  })
1327
1329
  }) }) })
1328
1330
  }) });
1329
- }, Ot = (e) => {
1331
+ }, Mt = (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
+ }, Nt = (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 && Nt(e.path, n)) ?? null;
1344
1346
  }
1345
- function At(e, t, n) {
1347
+ function Pt(e, t, n) {
1346
1348
  let r = $(e, t);
1347
1349
  if (r != null) return r;
1348
1350
  let { [t]: i } = n ?? {};
@@ -1352,25 +1354,25 @@ function At(e, t, n) {
1352
1354
  }
1353
1355
  return $(e, `${t}Contains`) ?? null;
1354
1356
  }
1355
- function jt(e, t) {
1357
+ function Ft(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
+ var It = "hwnq700 txvbqb9jg txvbqbcp txvbqbdoy txvbqbtxp txvbqbc6p txvbqblag txvbqb1qy txvbqb1cp txvbqb1qg txvbqbf7 txvbqbv0t txvbqbva1 txvbqbv txvbqb3b txvbqb78 txvbqb6w txvbqb7k", Lt = "txvbqbtx7 txvbqbc67", Rt = (e, t) => e(t), zt = (e) => {
1363
+ let { t } = T(), { t: n } = s(), { filterColumnAliases: r } = o(), { whereKey: i, value: a, path: c, label: l, listConfig: u } = e, d = ne(), f = null;
1362
1364
  if (u == null ? d != null && (f = d.config) : f = u, f == null) return null;
1363
1365
  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, {
1366
+ if (p == null && c == null && (p = Pt(f, i, r)), p == null || !Ft(p, a)) return null;
1367
+ let m = Rt(p.label, t), h = l ?? n("filters.actions.filterBy", { label: m }), g = /* @__PURE__ */ k(je, {
1366
1368
  width: 14,
1367
1369
  height: 14,
1368
- className: Nt,
1370
+ className: Lt,
1369
1371
  "aria-hidden": "true"
1370
1372
  });
1371
1373
  if (d != null) return /* @__PURE__ */ k("button", {
1372
1374
  type: "button",
1373
- className: Mt,
1375
+ className: It,
1374
1376
  title: h,
1375
1377
  "aria-label": h,
1376
1378
  onClick: () => {
@@ -1379,35 +1381,35 @@ var Mt = "hwnq700 txvbqb9jg txvbqbcp txvbqbdoy txvbqbtxp txvbqbc6p txvbqblag txv
1379
1381
  children: g
1380
1382
  });
1381
1383
  let _ = Re(f.listDefaults?.where ?? f.list.defaultState?.where ?? null, i, a, c);
1382
- return /* @__PURE__ */ k(we, {
1384
+ return /* @__PURE__ */ k(E, {
1383
1385
  to: M(f, { where: _ }),
1384
- className: Mt,
1386
+ className: It,
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
+ }, Bt = "txvbqb9ip txvbqbai7 txvbqbap7", Vt = "txvbqb9ip txvbqbai7 txvbqbaop", Ht = "txvbqb9iy txvbqbbwy txvbqbap7 txvbqbcg", Ut = "txvbqb9ip txvbqbai7 txvbqbap7", Wt = "txvbqb9ip txvbqbai7 txvbqbap7", Gt = ({ summary: e, aside: t, children: n, className: r }) => {
1388
1390
  let i = null;
1389
1391
  e != null && (i = /* @__PURE__ */ k("div", {
1390
- className: Lt,
1392
+ className: Vt,
1391
1393
  children: e
1392
1394
  }));
1393
1395
  let a = null;
1394
1396
  t != null && (a = /* @__PURE__ */ k("aside", {
1395
- className: Bt,
1397
+ className: Wt,
1396
1398
  children: t
1397
1399
  }));
1398
1400
  let o = null;
1399
1401
  return (n != null || a != null) && (o = /* @__PURE__ */ k("div", {
1400
- className: zt,
1402
+ className: Ut,
1401
1403
  children: n
1402
1404
  })), /* @__PURE__ */ A("div", {
1403
- className: Pe(It, r),
1405
+ className: Pe(Bt, r),
1404
1406
  children: [i, /* @__PURE__ */ A("div", {
1405
- className: Rt,
1407
+ className: Ht,
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
+ }, Kt = "txvbqbv9z txvbqb3d txvbqbvwr", qt = ({ count: e, entity: t, where: n }) => {
1412
+ let { entities: r, entityRegistry: i } = o(), a = ye(Ee), s = 0;
1411
1413
  typeof e == "number" && Number.isFinite(e) && (s = e);
1412
1414
  let c = r[t];
1413
1415
  if (c == null) return /* @__PURE__ */ k("span", { children: s });
@@ -1421,9 +1423,9 @@ var Mt = "hwnq700 txvbqb9jg txvbqbcp txvbqbdoy txvbqbtxp txvbqbc6p txvbqblag txv
1421
1423
  hash: ""
1422
1424
  });
1423
1425
  };
1424
- return /* @__PURE__ */ k(we, {
1426
+ return /* @__PURE__ */ k(E, {
1425
1427
  to: u,
1426
- className: Ht,
1428
+ className: Kt,
1427
1429
  onClick: (e) => {
1428
1430
  if (l != null || a == null || e.defaultPrevented || e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;
1429
1431
  e.preventDefault();
@@ -1448,47 +1450,47 @@ var Mt = "hwnq700 txvbqb9jg txvbqbcp txvbqbdoy txvbqbtxp txvbqbc6p txvbqblag txv
1448
1450
  },
1449
1451
  children: s
1450
1452
  });
1451
- }, Wt = "txvbqb9ip", Gt = "txvbqb9ip txvbqbai7 txvbqbaop", Kt = ({ headerNode: e, tabs: t, activeId: n, children: r }) => {
1453
+ }, Jt = "txvbqb9ip", Yt = "txvbqb9ip txvbqbai7 txvbqbaop", Xt = ({ headerNode: e, tabs: t, activeId: n, children: r }) => {
1452
1454
  let i = null;
1453
1455
  return t != null && t.length > 1 && n != null && (i = /* @__PURE__ */ k(ke, {
1454
1456
  items: t,
1455
1457
  activeId: n,
1456
1458
  onChange: () => {},
1457
- className: Wt
1459
+ className: Jt
1458
1460
  })), /* @__PURE__ */ k(Ae, {
1459
1461
  headerNode: e,
1460
1462
  tabsNode: i,
1461
1463
  children: /* @__PURE__ */ k("div", {
1462
- className: Gt,
1464
+ className: Yt,
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
+ }, Zt = "txvbqb9jg txvbqbcp txvbqbany txvbqbajy", Qt = ({ children: e, className: t }) => /* @__PURE__ */ k("span", {
1469
+ className: Pe(Zt, t),
1468
1470
  children: e
1469
- }), Yt = [];
1470
- function Xt() {
1471
+ }), $t = [];
1472
+ function en() {
1471
1473
  return Reflect.get(O, "default") ?? O;
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 tn = en();
1476
+ function nn(e, t) {
1477
+ let n = tn.useRelayEnvironment(), [r, i] = w(null), { enabled: a = !0, deps: o = $t, getVariables: s } = t, c = x(() => {
1476
1478
  try {
1477
1479
  return s == null ? e.variables : s();
1478
1480
  } catch {
1479
1481
  return null;
1480
1482
  }
1481
- }, [e.variables, s]), l = w(() => c(), [c]), u = w(() => {
1483
+ }, [e.variables, s]), l = C(() => c(), [c]), u = C(() => {
1482
1484
  if (l == null) return null;
1483
1485
  try {
1484
1486
  return JSON.stringify(l);
1485
1487
  } catch {
1486
1488
  return null;
1487
1489
  }
1488
- }, [l]), d = !!a, f = d && l != null, p = T(null);
1489
- return C(() => {
1490
+ }, [l]), d = !!a, f = d && l != null, p = be(null);
1491
+ return S(() => {
1490
1492
  let t = null, r = c();
1491
- return d && r != null && (i(null), t = Zt.requestSubscription(n, {
1493
+ return d && r != null && (i(null), t = tn.requestSubscription(n, {
1492
1494
  subscription: e.subscription,
1493
1495
  variables: r,
1494
1496
  cacheConfig: e.cacheConfig,
@@ -1519,26 +1521,26 @@ function Qt(e, t) {
1519
1521
  }
1520
1522
  //#endregion
1521
1523
  //#region src/hooks/useCopyToClipboard.ts
1522
- var $t = "copy-to-clipboard-fallback";
1523
- function en(e) {
1524
+ var rn = "copy-to-clipboard-fallback";
1525
+ function an(e) {
1524
1526
  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");
1527
+ let t = document.getElementById(rn);
1528
+ t ?? (t = document.createElement("textarea"), t.id = rn, 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
1529
  }
1528
- function tn(e = 2e3) {
1529
- let [t, n] = E(null), r = T(null);
1530
- return C(() => () => {
1530
+ function on(e = 2e3) {
1531
+ let [t, n] = w(null), r = be(null);
1532
+ return S(() => () => {
1531
1533
  r.current != null && window.clearTimeout(r.current);
1532
1534
  }, []), {
1533
1535
  copiedKey: t,
1534
- copy: S(async (t, i) => {
1536
+ copy: x(async (t, i) => {
1535
1537
  let a = !1, o;
1536
1538
  if (typeof navigator < "u" && (o = navigator.clipboard), o != null) try {
1537
1539
  await o.writeText(t), a = !0;
1538
1540
  } catch {
1539
1541
  a = !1;
1540
1542
  }
1541
- return a ||= (en(t), !0), i != null && (n(i), r.current != null && window.clearTimeout(r.current), r.current = window.setTimeout(() => {
1543
+ return a ||= (an(t), !0), i != null && (n(i), r.current != null && window.clearTimeout(r.current), r.current = window.setTimeout(() => {
1542
1544
  n(null), r.current = null;
1543
1545
  }, e)), a;
1544
1546
  }, [e])
@@ -1546,26 +1548,26 @@ function tn(e = 2e3) {
1546
1548
  }
1547
1549
  //#endregion
1548
1550
  //#region src/hooks/useRefetchNeededReload.ts
1549
- function nn(e) {
1550
- let [t, n] = E(null);
1551
- return C(() => {
1551
+ function sn(e) {
1552
+ let [t, n] = w(null);
1553
+ return S(() => {
1552
1554
  n(null);
1553
1555
  }, [e]), {
1554
1556
  reason: t,
1555
- onRefetchNeeded: S((e) => {
1557
+ onRefetchNeeded: x((e) => {
1556
1558
  n(e ?? "UNKNOWN");
1557
1559
  }, []),
1558
- reload: S(() => {
1560
+ reload: x(() => {
1559
1561
  window.location.reload();
1560
1562
  }, []),
1561
- clear: S(() => {
1563
+ clear: x(() => {
1562
1564
  n(null);
1563
1565
  }, [])
1564
1566
  };
1565
1567
  }
1566
1568
  //#endregion
1567
1569
  //#region src/i18n/useReviewStatusLabel.ts
1568
- function rn() {
1570
+ function cn() {
1569
1571
  let { t: e } = s();
1570
1572
  function t(t) {
1571
1573
  if (t == null) return e("review.status.unknown");
@@ -1580,7 +1582,7 @@ function rn() {
1580
1582
  }
1581
1583
  //#endregion
1582
1584
  //#region src/modules/base64.ts
1583
- function an(e) {
1585
+ function ln(e) {
1584
1586
  if (typeof e != "string") throw TypeError("encodeUtf8ToBase64 expects a string input.");
1585
1587
  if (typeof globalThis.btoa == "function") {
1586
1588
  let t = encodeURIComponent(e).replace(/%([0-9A-F]{2})/g, (e, t) => String.fromCharCode(Number.parseInt(t, 16)));
@@ -1588,7 +1590,7 @@ function an(e) {
1588
1590
  }
1589
1591
  throw Error("No base64 encoder is available in this environment.");
1590
1592
  }
1591
- function on(e) {
1593
+ function un(e) {
1592
1594
  if (typeof e != "string") throw TypeError("decodeBase64ToUtf8 expects a string input.");
1593
1595
  if (typeof globalThis.atob == "function") {
1594
1596
  let t = globalThis.atob(e), n = Array.from(t, (e) => `%${e.charCodeAt(0).toString(16).padStart(2, "0")}`).join("");
@@ -1598,33 +1600,33 @@ function on(e) {
1598
1600
  }
1599
1601
  //#endregion
1600
1602
  //#region src/modules/formatFileSize.ts
1601
- var sn = [
1603
+ var dn = [
1602
1604
  "B",
1603
1605
  "KB",
1604
1606
  "MB",
1605
1607
  "GB",
1606
1608
  "TB"
1607
- ], cn = 1024, ln = (e, t) => {
1609
+ ], fn = 1024, pn = (e, t) => {
1608
1610
  if (t === "B") return Math.round(e).toString();
1609
1611
  let n = 1;
1610
1612
  return e >= 10 && (n = 0), e.toFixed(n);
1611
1613
  };
1612
- function un(e) {
1614
+ function mn(e) {
1613
1615
  let t = e;
1614
1616
  Number.isFinite(e) || (t = 0);
1615
1617
  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;
1618
+ for (; r >= fn && i < dn.length - 1;) r /= fn, i += 1;
1619
+ let a = dn[i] ?? "B", o = r;
1618
1620
  return n && (o = -r), {
1619
1621
  value: o,
1620
1622
  unit: a,
1621
- displayValue: ln(o, a)
1623
+ displayValue: pn(o, a)
1622
1624
  };
1623
1625
  }
1624
1626
  //#endregion
1625
1627
  //#region src/relay/createInlineReader.ts
1626
- var { readInlineData: dn } = O, fn = (e) => (t) => dn(e, t), pn = (e) => e;
1628
+ var { readInlineData: hn } = O, gn = (e) => (t) => hn(e, t), _n = (e) => e;
1627
1629
  //#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 };
1630
+ export { _ as AcceptInvitationScreen, oe as BackofficeDetailBadgeRow, se as BackofficeDetailField, le as BackofficeDetailPayload, ce as BackofficeDetailSection, te as BackofficeErrorBoundary, zt as BackofficeFilterAction, Qt as BackofficeInlineFilterRow, Gt as BackofficeOverviewLayout, jt as BackofficeProvider, qt as BackofficeRelatedCountLink, _e as BackofficeRightPageLayout, Xt as BackofficeTabbedDetailShell, ie as EntityFilterValue, re as EntityFilterValueText, b as EntityIdFilterField, ae as EntityIdPickerDialog, h as LoginFlow, v as PasswordResetCompleteScreen, y as PasswordResetRequestScreen, $e as RelayProvider, ee as VerifyEmailScreen, Xe as backofficeReactI18nResources, f as base64UrlToBuffer, p as bufferToBase64Url, ge as buildDataTableColumns, r as configureRelayEnvironment, Mt as createBackofficeLazyValue, Ge as createI18nInstance, gn as createInlineDataReader, m as createUseAuth, un as decodeBase64ToUtf8, ln as encodeUtf8ToBase64, mn as formatFileSize, t as getEnvironment, n as getNetwork, _n as identityView, d as mapWebAuthnRegistrationError, u as parseSignCount, me as requireField, fe as requireLinkedRecordId, e as resetRelayStore, pe as resolveAgentStartOutcome, de as resolveMutationOutcome, he as resolveVisibleDetailPages, g as synchronizeAuthStatusQuery, o as useBackofficeConfig, ue as useBackofficeListUrlState, nn as useConditionalSubscription, on as useCopyToClipboard, sn as useRefetchNeededReload, cn as useReviewStatusLabel, L as withBackofficeReactI18nResources };
1629
1631
 
1630
1632
  //# sourceMappingURL=backoffice-react.js.map