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