@plumile/backoffice-react 0.2.11 → 0.2.12
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/README.md +3 -0
- package/lib/esm/auth/authRefreshNotice.css.js +1 -1
- package/lib/esm/auth/login/OidcButtons.js +16 -15
- package/lib/esm/auth/login/OidcButtons.js.map +1 -1
- package/lib/esm/auth/login/loginPage.css.js +1 -1
- package/lib/esm/auth/pages/AcceptInvitationScreen.js +7 -9
- package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +1 -1
- package/lib/esm/auth/pages/PasswordResetCompleteScreen.js +7 -9
- package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +1 -1
- package/lib/esm/auth/pages/PasswordResetRequestScreen.js +1 -1
- package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +1 -1
- package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js +1 -1
- package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js +1 -1
- package/lib/esm/components/backoffice/billing/BackofficeBillingUsageChart.js +1 -1
- package/lib/esm/components/backoffice/billing/backofficeBillingUsageChart.css.js +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js +6 -6
- package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js +13 -13
- package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js +1 -1
- package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js +1 -1
- package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +1 -1
- package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +1 -1
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js +1 -1
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js.map +1 -1
- package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +1 -1
- package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js +5 -5
- package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js +1 -1
- package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +1 -1
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +2 -2
- package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +1 -1
- package/lib/esm/components/backoffice/links/BackofficeLinkContent.js +1 -1
- package/lib/esm/components/backoffice/links/backofficeLink.css.js +1 -1
- package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +1 -1
- package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js +1 -1
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +1 -1
- package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +1 -1
- package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +1 -1
- package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +1 -1
- package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +1 -1
- package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +1 -1
- package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +1 -1
- package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js +5 -5
- package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js +2 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +1 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js +1 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js +1 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js +1 -1
- package/lib/esm/hooks/useBackofficeSidebarPins.js +1 -1
- package/lib/esm/hooks/useBackofficeSidebarPins.js.map +1 -1
- package/lib/esm/hooks/useSidebarGroupCollapse.js +1 -1
- package/lib/esm/hooks/useSidebarGroupCollapse.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +1 -1
- package/lib/esm/pages/BackofficeLayoutPage.js +2 -2
- package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -1
- package/lib/esm/pages/backofficeDashboardPage.css.js +1 -1
- package/lib/esm/pages/backofficeEntityDetailPage.css.js +1 -1
- package/lib/esm/pages/backofficeEntityListPage.css.js +1 -1
- package/lib/esm/storybook/backofficeDashboardPageStory.css.js +1 -1
- package/lib/esm/storybook/relay/RelayStory.css.js +1 -1
- package/lib/esm/style.css +1 -1
- package/lib/types/auth/login/OidcButtons.d.ts.map +1 -1
- package/lib/types/auth/pages/AcceptInvitationScreen.d.ts.map +1 -1
- package/lib/types/auth/pages/PasswordResetCompleteScreen.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/deferredFilterSearchInput.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts.map +1 -1
- package/package.json +11 -11
package/README.md
CHANGED
|
@@ -66,6 +66,9 @@ packages.
|
|
|
66
66
|
- `AcceptInvitationScreen`
|
|
67
67
|
- `PasswordResetRequestScreen`
|
|
68
68
|
- `PasswordResetCompleteScreen`
|
|
69
|
+
- Invitation acceptance and password reset use the shared `PasswordField`
|
|
70
|
+
reveal/hide controls while retaining new-password autocomplete and the
|
|
71
|
+
screen-owned password validation.
|
|
69
72
|
- `VerifyEmailScreen`
|
|
70
73
|
- `createUseAuth`
|
|
71
74
|
- `AuthRefreshNotice` keeps the backoffice session-refresh subscription and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/auth/authRefreshNotice.css.ts
|
|
3
|
-
var e = "tc0xii0
|
|
3
|
+
var e = "tc0xii0 txvbqbk6s txvbqb2mn txvbqb1j5 txvbqb1lr txvbqb16q txvbqbbx0 txvbqbcbg txvbqb19c";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { e as root };
|
|
6
6
|
|
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
import { brandGhostButton as e,
|
|
2
|
-
import { useBackofficeReactTranslation as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { brandGhostButton as e, footer as t, stack as n } from "./loginPage.css.js";
|
|
2
|
+
import { useBackofficeReactTranslation as r } from "../../i18n/useBackofficeReactTranslation.js";
|
|
3
|
+
import { cx as i } from "@plumile/ui/theme";
|
|
4
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
5
|
+
import { Button as o } from "@plumile/ui/button";
|
|
5
6
|
//#region src/auth/login/OidcButtons.tsx
|
|
6
|
-
var
|
|
7
|
-
let { t:
|
|
8
|
-
return
|
|
9
|
-
className: t,
|
|
10
|
-
children:
|
|
11
|
-
let n =
|
|
12
|
-
t === "GOOGLE" ? n =
|
|
13
|
-
let
|
|
14
|
-
return /* @__PURE__ */
|
|
7
|
+
var s = "/auth/oidc/start", c = ({ providers: c }) => {
|
|
8
|
+
let { t: l } = r();
|
|
9
|
+
return c.length === 0 ? null : /* @__PURE__ */ a("div", {
|
|
10
|
+
className: i(n, t),
|
|
11
|
+
children: c.map((t) => {
|
|
12
|
+
let n = l("auth.oidc.buttons.generic");
|
|
13
|
+
t === "GOOGLE" ? n = l("auth.oidc.buttons.google") : t === "APPLE" && (n = l("auth.oidc.buttons.apple"));
|
|
14
|
+
let r = t.toLowerCase();
|
|
15
|
+
return /* @__PURE__ */ a(o, {
|
|
15
16
|
type: "button",
|
|
16
17
|
variant: "soft",
|
|
17
18
|
className: e,
|
|
18
19
|
onClick: () => {
|
|
19
|
-
window.location.assign(`${
|
|
20
|
+
window.location.assign(`${s}?provider=${r}`);
|
|
20
21
|
},
|
|
21
22
|
tone: "neutral",
|
|
22
23
|
children: n
|
|
@@ -25,6 +26,6 @@ var a = "/auth/oidc/start", o = ({ providers: o }) => {
|
|
|
25
26
|
});
|
|
26
27
|
};
|
|
27
28
|
//#endregion
|
|
28
|
-
export {
|
|
29
|
+
export { c as OidcButtons };
|
|
29
30
|
|
|
30
31
|
//# sourceMappingURL=OidcButtons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OidcButtons.js","names":[],"sources":["../../../../src/auth/login/OidcButtons.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { Button } from '@plumile/ui/button';\n\nimport type { OidcProviderKind } from '../../modules/sharedSchemaTypes.js';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './loginPage.css.js';\n\nconst OIDC_START_PATH = '/auth/oidc/start';\n\ntype Props = {\n providers: readonly OidcProviderKind[];\n};\n\nexport const OidcButtons = ({ providers }: Props): JSX.Element | null => {\n const { t } = useBackofficeReactTranslation();\n\n if (providers.length === 0) {\n return null;\n }\n\n return (\n <div className={styles.stack}>\n {providers.map((provider) => {\n let label = t('auth.oidc.buttons.generic');\n if (provider === 'GOOGLE') {\n label = t('auth.oidc.buttons.google');\n } else if (provider === 'APPLE') {\n label = t('auth.oidc.buttons.apple');\n }\n const providerName = provider.toLowerCase();\n return (\n <Button\n key={provider}\n type=\"button\"\n variant=\"soft\"\n className={styles.brandGhostButton}\n onClick={() => {\n window.location.assign(\n `${OIDC_START_PATH}?provider=${providerName}`,\n );\n }}\n tone=\"neutral\"\n >\n {label}\n </Button>\n );\n })}\n </div>\n );\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"OidcButtons.js","names":[],"sources":["../../../../src/auth/login/OidcButtons.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { Button } from '@plumile/ui/button';\nimport { cx } from '@plumile/ui/theme';\n\nimport type { OidcProviderKind } from '../../modules/sharedSchemaTypes.js';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './loginPage.css.js';\n\nconst OIDC_START_PATH = '/auth/oidc/start';\n\ntype Props = {\n providers: readonly OidcProviderKind[];\n};\n\nexport const OidcButtons = ({ providers }: Props): JSX.Element | null => {\n const { t } = useBackofficeReactTranslation();\n\n if (providers.length === 0) {\n return null;\n }\n\n return (\n <div className={cx(styles.stack, styles.footer)}>\n {providers.map((provider) => {\n let label = t('auth.oidc.buttons.generic');\n if (provider === 'GOOGLE') {\n label = t('auth.oidc.buttons.google');\n } else if (provider === 'APPLE') {\n label = t('auth.oidc.buttons.apple');\n }\n const providerName = provider.toLowerCase();\n return (\n <Button\n key={provider}\n type=\"button\"\n variant=\"soft\"\n className={styles.brandGhostButton}\n onClick={() => {\n window.location.assign(\n `${OIDC_START_PATH}?provider=${providerName}`,\n );\n }}\n tone=\"neutral\"\n >\n {label}\n </Button>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;;;AAUA,IAAM,IAAkB,oBAMX,KAAe,EAAE,mBAA2C;CACvE,IAAM,EAAE,SAAM,EAA8B;CAM5C,OAJI,EAAU,WAAW,IAChB,OAIP,kBAAC,OAAD;EAAK,WAAW,EAAG,GAAc,CAAa;EAC3C,UAAA,EAAU,KAAK,MAAa;GAC3B,IAAI,IAAQ,EAAE,2BAA2B;GACzC,AAAI,MAAa,WACf,IAAQ,EAAE,0BAA0B,IAC3B,MAAa,YACtB,IAAQ,EAAE,yBAAyB;GAErC,IAAM,IAAe,EAAS,YAAY;GAC1C,OACE,kBAAC,GAAD;IAEE,MAAK;IACL,SAAQ;IACR,WAAW;IACX,eAAe;KACb,OAAO,SAAS,OACd,GAAG,EAAgB,YAAY,GACjC;IACF;IACA,MAAK;IAEJ,UAAA;GACK,GAZD,CAYC;EAEZ,CAAC;CACE,CAAA;AAET"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/auth/login/loginPage.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqb5m2 txvbqb6mq txvbqb6su", t = "txvbqb5m2 txvbqb6mq txvbqbla8", n = "txvbqbei txvbqb6o4 txvbqb1s4 txvbqb1rd", r = "txvbqb2ny txvbqbei txvbqb5m2 txvbqb6sa txvbqbax6 txvbqb8r4", i = "txvbqbbg txvbqb856 txvbqb1cw txvbqbnj txvbqbgg", a = "txvbqb2ny txvbqb5m2 txvbqb1d5 txvbqb6sk txvbqb8pg txvbqbawm", o = "w8yhmy0 txvbqb8y txvbqbkk txvbqbn6 txvbqbf4 txvbqbv txvbqb1dg txvbqbf5e txvbqb3p txvbqb7y txvbqb7j txvbqb89 txvbqbodq txvbqbpwu", s = "txvbqb132 txvbqb12m txvbqb13u txvbqb13j txvbqbis8 txvbqbji2", c = "txvbqb5m2 txvbqb6mq txvbqb6su", l = "txvbqbla8", u = "txvbqb1s4 txvbqb6oy txvbqb1dh txvbqbf4 txvbqb1oa", d = "txvbqbaww", f = "w8yhmy1 txvbqbjf txvbqbls txvbqbn8 txvbqbf4 txvbqbbe txvbqb7y txvbqb7h txvbqb89";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { a as actionsRow, c as block, f as brandGhostButton, r as divider, i as dividerLine, d as footer, t as formSurface, l as fullWidth, n as helper, o as inlineLink, s as panel, u as panelTitle, e as stack };
|
|
6
6
|
|
|
@@ -3,7 +3,7 @@ import { AuthPanel as n } from "../login/AuthPanel.js";
|
|
|
3
3
|
import { useBackofficeReactTranslation as r } from "../../i18n/useBackofficeReactTranslation.js";
|
|
4
4
|
import { MfaChallengeForm as i } from "../login/MfaChallengeForm.js";
|
|
5
5
|
import { useCallback as a, useMemo as o, useState as s } from "react";
|
|
6
|
-
import { AuthLayout as c, Form as l, FormError as u,
|
|
6
|
+
import { AuthLayout as c, Form as l, FormError as u, PasswordField as d } from "@plumile/ui";
|
|
7
7
|
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
8
8
|
import { Button as m } from "@plumile/ui/button";
|
|
9
9
|
//#region src/auth/pages/AcceptInvitationScreen.tsx
|
|
@@ -78,12 +78,11 @@ var h = ({ auth: h, onSuccessRedirect: g, onBackToLogin: _, token: v }) => {
|
|
|
78
78
|
k != null && j == null ? /* @__PURE__ */ f(u, { children: k }) : null,
|
|
79
79
|
/* @__PURE__ */ f(d, {
|
|
80
80
|
label: y("auth.acceptInvitation.form.passwordLabel"),
|
|
81
|
-
error: j === "password" ? k :
|
|
81
|
+
error: j === "password" ? k ?? void 0 : void 0,
|
|
82
82
|
name: "password",
|
|
83
|
-
type: "password",
|
|
84
83
|
value: C,
|
|
85
|
-
|
|
86
|
-
w(e
|
|
84
|
+
onValueChange: (e) => {
|
|
85
|
+
w(e), A(null), M(null), x === "error" && S("idle");
|
|
87
86
|
},
|
|
88
87
|
placeholder: y("auth.acceptInvitation.form.passwordPlaceholder"),
|
|
89
88
|
autoComplete: "new-password",
|
|
@@ -91,12 +90,11 @@ var h = ({ auth: h, onSuccessRedirect: g, onBackToLogin: _, token: v }) => {
|
|
|
91
90
|
}),
|
|
92
91
|
/* @__PURE__ */ f(d, {
|
|
93
92
|
label: y("auth.acceptInvitation.form.confirmLabel"),
|
|
94
|
-
error: j === "passwordConfirmation" ? k :
|
|
93
|
+
error: j === "passwordConfirmation" ? k ?? void 0 : void 0,
|
|
95
94
|
name: "password-confirmation",
|
|
96
|
-
type: "password",
|
|
97
95
|
value: T,
|
|
98
|
-
|
|
99
|
-
E(e
|
|
96
|
+
onValueChange: (e) => {
|
|
97
|
+
E(e), A(null), M(null), x === "error" && S("idle");
|
|
100
98
|
},
|
|
101
99
|
placeholder: y("auth.acceptInvitation.form.confirmPlaceholder"),
|
|
102
100
|
autoComplete: "new-password",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcceptInvitationScreen.js","names":[],"sources":["../../../../src/auth/pages/AcceptInvitationScreen.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { Button } from '@plumile/ui/button';\nimport { FormError,
|
|
1
|
+
{"version":3,"file":"AcceptInvitationScreen.js","names":[],"sources":["../../../../src/auth/pages/AcceptInvitationScreen.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { Button } from '@plumile/ui/button';\nimport { FormError, PasswordField, Form, AuthLayout } from '@plumile/ui';\n\nimport type { UseAuthReturn } from '../../hooks/useAuth.js';\nimport { MfaChallengeForm } from '../login/MfaChallengeForm.js';\nimport { AuthPanel } from '../login/AuthPanel.js';\nimport * as styles from '../login/loginPage.css.js';\n\ntype AcceptanceState = 'pending' | 'mfa' | 'completed' | 'error' | 'idle';\ntype InvitationErrorField = 'password' | 'passwordConfirmation' | null;\n\ntype Props = {\n auth: UseAuthReturn;\n onSuccessRedirect: () => void;\n onBackToLogin: () => void;\n token?: string;\n};\n\nexport const AcceptInvitationScreen = ({\n auth,\n onSuccessRedirect,\n onBackToLogin,\n token,\n}: Props): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const { acceptInvitation } = auth;\n const [status, setStatus] = useState<AcceptanceState>('idle');\n const [password, setPassword] = useState('');\n const [passwordConfirmation, setPasswordConfirmation] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [errorField, setErrorField] = useState<InvitationErrorField>(null);\n\n const resolvedToken = useMemo(() => {\n if (token != null) {\n return token;\n }\n if (typeof window === 'undefined') {\n return '';\n }\n const params = new URLSearchParams(window.location.search);\n return params.get('token') ?? '';\n }, [token]);\n\n const handleSubmit = useCallback(\n (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n setErrorField(null);\n if (resolvedToken === '') {\n setErrorMessage(t('auth.acceptInvitation.errors.missingToken'));\n setStatus('error');\n return;\n }\n\n if (password === '') {\n setErrorMessage(\n t('auth.acceptInvitation.errors.passwordPolicyViolation'),\n );\n setErrorField('password');\n setStatus('error');\n return;\n }\n\n if (passwordConfirmation === '') {\n setErrorMessage(t('auth.acceptInvitation.errors.passwordMismatch'));\n setErrorField('passwordConfirmation');\n setStatus('error');\n return;\n }\n\n if (password !== passwordConfirmation) {\n setErrorMessage(t('auth.acceptInvitation.errors.passwordMismatch'));\n setErrorField('passwordConfirmation');\n setStatus('error');\n return;\n }\n\n setStatus('pending');\n setErrorMessage(null);\n setIsSubmitting(true);\n\n // eslint-disable-next-line no-void\n void acceptInvitation({\n token: resolvedToken,\n password,\n passwordConfirmation,\n })\n .then((result) => {\n if (result === 'mfa-required') {\n setStatus('mfa');\n return;\n }\n setStatus('completed');\n onSuccessRedirect();\n })\n .catch(() => {\n setStatus('error');\n setErrorMessage(t('auth.acceptInvitation.errors.default'));\n })\n .finally(() => {\n setIsSubmitting(false);\n });\n },\n [\n acceptInvitation,\n onSuccessRedirect,\n password,\n passwordConfirmation,\n resolvedToken,\n t,\n ],\n );\n\n const handleMfaSuccess = useCallback(() => {\n setStatus('completed');\n onSuccessRedirect();\n }, [onSuccessRedirect]);\n\n const handleRetry = useCallback(() => {\n setStatus('idle');\n setErrorMessage(null);\n setErrorField(null);\n setIsSubmitting(false);\n }, []);\n\n if (status === 'mfa') {\n return (\n <AuthLayout\n title={t('auth.acceptInvitation.mfaTitle')}\n subtitle={t('auth.acceptInvitation.mfaSubtitle')}\n >\n <MfaChallengeForm\n auth={auth}\n onSuccess={handleMfaSuccess}\n onBack={() => {\n auth.reset();\n handleRetry();\n }}\n />\n </AuthLayout>\n );\n }\n\n let content: JSX.Element;\n if (status === 'completed') {\n content = (\n <AuthPanel>\n <p className={styles.helper}>\n {t('auth.acceptInvitation.status.success')}\n </p>\n </AuthPanel>\n );\n } else {\n content = (\n <AuthPanel description={t('auth.acceptInvitation.subtitle')}>\n <Form\n className={styles.formSurface}\n onSubmit={handleSubmit}\n noValidate\n initialFocus=\"first-form-control\"\n >\n {errorMessage != null && errorField == null ? (\n <FormError>{errorMessage}</FormError>\n ) : null}\n <PasswordField\n label={t('auth.acceptInvitation.form.passwordLabel')}\n error={\n errorField === 'password'\n ? (errorMessage ?? undefined)\n : undefined\n }\n name=\"password\"\n value={password}\n onValueChange={(value) => {\n setPassword(value);\n setErrorMessage(null);\n setErrorField(null);\n if (status === 'error') {\n setStatus('idle');\n }\n }}\n placeholder={t('auth.acceptInvitation.form.passwordPlaceholder')}\n autoComplete=\"new-password\"\n required\n />\n <PasswordField\n label={t('auth.acceptInvitation.form.confirmLabel')}\n error={\n errorField === 'passwordConfirmation'\n ? (errorMessage ?? undefined)\n : undefined\n }\n name=\"password-confirmation\"\n value={passwordConfirmation}\n onValueChange={(value) => {\n setPasswordConfirmation(value);\n setErrorMessage(null);\n setErrorField(null);\n if (status === 'error') {\n setStatus('idle');\n }\n }}\n placeholder={t('auth.acceptInvitation.form.confirmPlaceholder')}\n autoComplete=\"new-password\"\n required\n />\n <Button type=\"submit\" loading={isSubmitting}>\n {status === 'pending'\n ? t('auth.acceptInvitation.status.workingButton')\n : t('auth.acceptInvitation.form.submit')}\n </Button>\n <Button\n type=\"button\"\n variant=\"soft\"\n onClick={onBackToLogin}\n tone=\"neutral\"\n >\n {t('auth.acceptInvitation.actions.backToLogin')}\n </Button>\n </Form>\n </AuthPanel>\n );\n }\n\n return (\n <AuthLayout title={t('auth.acceptInvitation.title')}>{content}</AuthLayout>\n );\n};\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { brandGhostButton as e, formSurface as t, helper as n } from "../login/l
|
|
|
2
2
|
import { AuthPanel as r } from "../login/AuthPanel.js";
|
|
3
3
|
import { useBackofficeReactTranslation as i } from "../../i18n/useBackofficeReactTranslation.js";
|
|
4
4
|
import { useCallback as a, useMemo as o, useState as s } from "react";
|
|
5
|
-
import { AuthLayout as c, Form as l, FormError as u,
|
|
5
|
+
import { AuthLayout as c, Form as l, FormError as u, PasswordField as d } from "@plumile/ui";
|
|
6
6
|
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
7
7
|
import { Button as m } from "@plumile/ui/button";
|
|
8
8
|
//#region src/auth/pages/PasswordResetCompleteScreen.tsx
|
|
@@ -66,12 +66,11 @@ var h = 8, g = ({ onBackToLogin: g, onCompletePasswordReset: _, token: v }) => {
|
|
|
66
66
|
E != null && O == null ? /* @__PURE__ */ f(u, { children: E }) : null,
|
|
67
67
|
/* @__PURE__ */ f(d, {
|
|
68
68
|
label: y("auth.passwordResetComplete.form.passwordLabel"),
|
|
69
|
-
error: O === "password" ? E :
|
|
69
|
+
error: O === "password" ? E ?? void 0 : void 0,
|
|
70
70
|
name: "new-password",
|
|
71
|
-
type: "password",
|
|
72
71
|
value: b,
|
|
73
|
-
|
|
74
|
-
x(e
|
|
72
|
+
onValueChange: (e) => {
|
|
73
|
+
x(e), D(null), k(null);
|
|
75
74
|
},
|
|
76
75
|
placeholder: y("auth.passwordResetComplete.form.passwordPlaceholder"),
|
|
77
76
|
autoComplete: "new-password",
|
|
@@ -79,12 +78,11 @@ var h = 8, g = ({ onBackToLogin: g, onCompletePasswordReset: _, token: v }) => {
|
|
|
79
78
|
}),
|
|
80
79
|
/* @__PURE__ */ f(d, {
|
|
81
80
|
label: y("auth.passwordResetComplete.form.confirmLabel"),
|
|
82
|
-
error: O === "passwordConfirm" ? E :
|
|
81
|
+
error: O === "passwordConfirm" ? E ?? void 0 : void 0,
|
|
83
82
|
name: "confirm-password",
|
|
84
|
-
type: "password",
|
|
85
83
|
value: S,
|
|
86
|
-
|
|
87
|
-
C(e
|
|
84
|
+
onValueChange: (e) => {
|
|
85
|
+
C(e), D(null), k(null);
|
|
88
86
|
},
|
|
89
87
|
placeholder: y("auth.passwordResetComplete.form.confirmPlaceholder"),
|
|
90
88
|
autoComplete: "new-password",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasswordResetCompleteScreen.js","names":[],"sources":["../../../../src/auth/pages/PasswordResetCompleteScreen.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { Button } from '@plumile/ui/button';\nimport { FormError,
|
|
1
|
+
{"version":3,"file":"PasswordResetCompleteScreen.js","names":[],"sources":["../../../../src/auth/pages/PasswordResetCompleteScreen.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { Button } from '@plumile/ui/button';\nimport { FormError, PasswordField, Form, AuthLayout } from '@plumile/ui';\n\nimport * as styles from '../login/loginPage.css.js';\nimport { AuthPanel } from '../login/AuthPanel.js';\n\nconst MIN_PASSWORD_LENGTH = 8;\ntype PasswordResetErrorField = 'password' | 'passwordConfirm' | null;\n\ntype Props = {\n onBackToLogin: () => void;\n onCompletePasswordReset: (input: {\n newPassword: string;\n token: string;\n }) => Promise<boolean>;\n token?: string;\n};\n\nexport const PasswordResetCompleteScreen = ({\n onBackToLogin,\n onCompletePasswordReset,\n token,\n}: Props): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n const [password, setPassword] = useState('');\n const [passwordConfirm, setPasswordConfirm] = useState('');\n const [status, setStatus] = useState<'idle' | 'completed'>('idle');\n const [error, setError] = useState<string | null>(null);\n const [errorField, setErrorField] = useState<PasswordResetErrorField>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const resolvedToken = useMemo(() => {\n if (token != null) {\n return token;\n }\n if (typeof window === 'undefined') {\n return '';\n }\n const params = new URLSearchParams(window.location.search);\n return params.get('token') ?? '';\n }, [token]);\n\n const handleSubmit = useCallback(\n (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n setError(null);\n setErrorField(null);\n\n if (resolvedToken === '') {\n setError(t('auth.passwordResetComplete.errors.missingToken'));\n return;\n }\n\n if (password.length < MIN_PASSWORD_LENGTH) {\n setError(\n t('auth.passwordResetComplete.errors.minLength', {\n minLength: MIN_PASSWORD_LENGTH,\n }),\n );\n setErrorField('password');\n return;\n }\n\n if (password !== passwordConfirm) {\n setError(t('auth.passwordResetComplete.errors.mismatch'));\n setErrorField('passwordConfirm');\n return;\n }\n\n setIsSubmitting(true);\n\n const completePasswordReset = async (): Promise<void> => {\n try {\n const success = await onCompletePasswordReset({\n newPassword: password,\n token: resolvedToken,\n });\n if (success) {\n setStatus('completed');\n } else {\n setError(t('auth.passwordResetComplete.errors.invalid'));\n }\n } catch (mutationError) {\n setError(\n mutationError instanceof Error\n ? mutationError.message\n : t('auth.passwordResetComplete.errors.invalid'),\n );\n } finally {\n setIsSubmitting(false);\n }\n };\n\n completePasswordReset().catch(() => {\n return undefined;\n });\n },\n [onCompletePasswordReset, password, passwordConfirm, resolvedToken, t],\n );\n\n let content: JSX.Element;\n if (status === 'completed') {\n content = (\n <AuthPanel\n title={t('auth.passwordResetComplete.success.title')}\n description={t('auth.passwordResetComplete.success.description')}\n footer={\n <Button\n type=\"button\"\n variant=\"soft\"\n className={styles.brandGhostButton}\n onClick={onBackToLogin}\n tone=\"neutral\"\n >\n {t('auth.passwordResetComplete.success.action')}\n </Button>\n }\n >\n <p className={styles.helper}>\n {t('auth.passwordResetComplete.success.helper')}\n </p>\n </AuthPanel>\n );\n } else {\n content = (\n <AuthPanel\n title={t('auth.passwordResetComplete.form.title')}\n description={t('auth.passwordResetComplete.form.description')}\n >\n <Form\n className={styles.formSurface}\n onSubmit={handleSubmit}\n noValidate\n initialFocus=\"first-form-control\"\n >\n {error != null && errorField == null ? (\n <FormError>{error}</FormError>\n ) : null}\n <PasswordField\n label={t('auth.passwordResetComplete.form.passwordLabel')}\n error={errorField === 'password' ? (error ?? undefined) : undefined}\n name=\"new-password\"\n value={password}\n onValueChange={(value) => {\n setPassword(value);\n setError(null);\n setErrorField(null);\n }}\n placeholder={t(\n 'auth.passwordResetComplete.form.passwordPlaceholder',\n )}\n autoComplete=\"new-password\"\n required\n />\n <PasswordField\n label={t('auth.passwordResetComplete.form.confirmLabel')}\n error={\n errorField === 'passwordConfirm'\n ? (error ?? undefined)\n : undefined\n }\n name=\"confirm-password\"\n value={passwordConfirm}\n onValueChange={(value) => {\n setPasswordConfirm(value);\n setError(null);\n setErrorField(null);\n }}\n placeholder={t(\n 'auth.passwordResetComplete.form.confirmPlaceholder',\n )}\n autoComplete=\"new-password\"\n required\n />\n <Button type=\"submit\" loading={isSubmitting}>\n {t('auth.passwordResetComplete.form.submit')}\n </Button>\n </Form>\n </AuthPanel>\n );\n }\n\n return (\n <AuthLayout\n title={t('auth.passwordResetComplete.title')}\n subtitle={t('auth.passwordResetComplete.subtitle')}\n >\n {content}\n </AuthLayout>\n );\n};\n"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ var m = ({ onStartPasswordReset: m }) => {
|
|
|
10
10
|
let { i18n: h, t: g } = r(), [_, v] = o(""), [y, b] = o("idle"), [x, S] = o(null), [C, w] = o(!1), [T, E] = o(!1), D = a(() => {
|
|
11
11
|
let e = h.language.trim();
|
|
12
12
|
if (e !== "") return e;
|
|
13
|
-
if (
|
|
13
|
+
if (typeof navigator < "u") return navigator.language;
|
|
14
14
|
}, [h.language]), O = i((e) => {
|
|
15
15
|
if (e.preventDefault(), S(null), w(!1), _.trim() === "") {
|
|
16
16
|
S(g("auth.passwordResetRequest.errors.emailRequired")), w(!0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasswordResetRequestScreen.js","names":[],"sources":["../../../../src/auth/pages/PasswordResetRequestScreen.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { Button } from '@plumile/ui/button';\nimport { FormError, FormField, Form, AuthLayout } from '@plumile/ui';\n\nimport * as styles from '../login/loginPage.css.js';\nimport { AuthPanel } from '../login/AuthPanel.js';\n\ntype Props = {\n onStartPasswordReset: (input: {\n email: string;\n locale?: string;\n }) => Promise<boolean>;\n};\n\nexport const PasswordResetRequestScreen = ({\n onStartPasswordReset,\n}: Props): JSX.Element => {\n const { i18n, t } = useBackofficeReactTranslation();\n const [email, setEmail] = useState('');\n const [status, setStatus] = useState<'idle' | 'sent'>('idle');\n const [error, setError] = useState<string | null>(null);\n const [hasEmailError, setHasEmailError] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const locale = useMemo(() => {\n const language = i18n.language.trim();\n if (language !== '') {\n return language;\n }\n if (typeof navigator === 'undefined') {\n return undefined;\n }\n return navigator.language;\n }, [i18n.language]);\n\n const handleSubmit = useCallback(\n (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n setError(null);\n setHasEmailError(false);\n\n if (email.trim() === '') {\n setError(t('auth.passwordResetRequest.errors.emailRequired'));\n setHasEmailError(true);\n return;\n }\n\n const emailInput = event.currentTarget.elements.namedItem('email');\n if (\n emailInput instanceof HTMLInputElement &&\n !emailInput.validity.valid\n ) {\n setError(t('auth.passwordResetRequest.errors.invalidEmail'));\n setHasEmailError(true);\n return;\n }\n\n setIsSubmitting(true);\n onStartPasswordReset({\n email: email.trim(),\n locale,\n })\n .then((success) => {\n if (success) {\n setStatus('sent');\n } else {\n setError(t('auth.passwordResetRequest.errors.startFailed'));\n }\n })\n .catch((mutationError) => {\n setError(\n mutationError instanceof Error\n ? mutationError.message\n : t('auth.passwordResetRequest.errors.startFailed'),\n );\n })\n .finally(() => {\n setIsSubmitting(false);\n });\n },\n [email, locale, onStartPasswordReset, t],\n );\n\n let content: JSX.Element;\n if (status === 'sent') {\n content = (\n <AuthPanel\n title={t('auth.passwordResetRequest.sent.title')}\n description={t('auth.passwordResetRequest.sent.description', { email })}\n footer={\n <Button\n type=\"button\"\n variant=\"soft\"\n onClick={() => {\n setStatus('idle');\n }}\n tone=\"neutral\"\n >\n {t('auth.passwordResetRequest.sent.action')}\n </Button>\n }\n >\n <p className={styles.helper}>\n {t('auth.passwordResetRequest.sent.helper')}\n </p>\n </AuthPanel>\n );\n } else {\n content = (\n <AuthPanel description={t('auth.passwordResetRequest.form.description')}>\n <Form\n className={styles.formSurface}\n onSubmit={handleSubmit}\n noValidate\n initialFocus=\"first-form-control\"\n >\n {error != null && !hasEmailError ? (\n <FormError>{error}</FormError>\n ) : null}\n <FormField\n label={t('auth.passwordResetRequest.form.emailLabel')}\n error={hasEmailError ? error : null}\n name=\"email\"\n type=\"email\"\n value={email}\n onChange={(event) => {\n setEmail(event.target.value);\n setError(null);\n setHasEmailError(false);\n }}\n placeholder={t('auth.passwordResetRequest.form.emailPlaceholder')}\n autoComplete=\"email\"\n required\n />\n <Button type=\"submit\" loading={isSubmitting}>\n {t('auth.passwordResetRequest.form.submit')}\n </Button>\n </Form>\n </AuthPanel>\n );\n }\n\n return (\n <AuthLayout title={t('auth.passwordResetRequest.title')}>\n {content}\n </AuthLayout>\n );\n};\n"],"mappings":";;;;;;;;AAsBA,IAAa,KAA8B,EACzC,8BACwB;CACxB,IAAM,EAAE,SAAM,SAAM,EAA8B,GAC5C,CAAC,GAAO,KAAY,EAAS,EAAE,GAC/B,CAAC,GAAQ,KAAa,EAA0B,MAAM,GACtD,CAAC,GAAO,KAAY,EAAwB,IAAI,GAChD,CAAC,GAAe,KAAoB,EAAS,EAAK,GAClD,CAAC,GAAc,KAAmB,EAAS,EAAK,GAEhD,IAAS,QAAc;EAC3B,IAAM,IAAW,EAAK,SAAS,KAAK;EACpC,IAAI,MAAa,IACf,OAAO;EAEL,
|
|
1
|
+
{"version":3,"file":"PasswordResetRequestScreen.js","names":[],"sources":["../../../../src/auth/pages/PasswordResetRequestScreen.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { Button } from '@plumile/ui/button';\nimport { FormError, FormField, Form, AuthLayout } from '@plumile/ui';\n\nimport * as styles from '../login/loginPage.css.js';\nimport { AuthPanel } from '../login/AuthPanel.js';\n\ntype Props = {\n onStartPasswordReset: (input: {\n email: string;\n locale?: string;\n }) => Promise<boolean>;\n};\n\nexport const PasswordResetRequestScreen = ({\n onStartPasswordReset,\n}: Props): JSX.Element => {\n const { i18n, t } = useBackofficeReactTranslation();\n const [email, setEmail] = useState('');\n const [status, setStatus] = useState<'idle' | 'sent'>('idle');\n const [error, setError] = useState<string | null>(null);\n const [hasEmailError, setHasEmailError] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const locale = useMemo(() => {\n const language = i18n.language.trim();\n if (language !== '') {\n return language;\n }\n if (typeof navigator === 'undefined') {\n return undefined;\n }\n return navigator.language;\n }, [i18n.language]);\n\n const handleSubmit = useCallback(\n (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n setError(null);\n setHasEmailError(false);\n\n if (email.trim() === '') {\n setError(t('auth.passwordResetRequest.errors.emailRequired'));\n setHasEmailError(true);\n return;\n }\n\n const emailInput = event.currentTarget.elements.namedItem('email');\n if (\n emailInput instanceof HTMLInputElement &&\n !emailInput.validity.valid\n ) {\n setError(t('auth.passwordResetRequest.errors.invalidEmail'));\n setHasEmailError(true);\n return;\n }\n\n setIsSubmitting(true);\n onStartPasswordReset({\n email: email.trim(),\n locale,\n })\n .then((success) => {\n if (success) {\n setStatus('sent');\n } else {\n setError(t('auth.passwordResetRequest.errors.startFailed'));\n }\n })\n .catch((mutationError) => {\n setError(\n mutationError instanceof Error\n ? mutationError.message\n : t('auth.passwordResetRequest.errors.startFailed'),\n );\n })\n .finally(() => {\n setIsSubmitting(false);\n });\n },\n [email, locale, onStartPasswordReset, t],\n );\n\n let content: JSX.Element;\n if (status === 'sent') {\n content = (\n <AuthPanel\n title={t('auth.passwordResetRequest.sent.title')}\n description={t('auth.passwordResetRequest.sent.description', { email })}\n footer={\n <Button\n type=\"button\"\n variant=\"soft\"\n onClick={() => {\n setStatus('idle');\n }}\n tone=\"neutral\"\n >\n {t('auth.passwordResetRequest.sent.action')}\n </Button>\n }\n >\n <p className={styles.helper}>\n {t('auth.passwordResetRequest.sent.helper')}\n </p>\n </AuthPanel>\n );\n } else {\n content = (\n <AuthPanel description={t('auth.passwordResetRequest.form.description')}>\n <Form\n className={styles.formSurface}\n onSubmit={handleSubmit}\n noValidate\n initialFocus=\"first-form-control\"\n >\n {error != null && !hasEmailError ? (\n <FormError>{error}</FormError>\n ) : null}\n <FormField\n label={t('auth.passwordResetRequest.form.emailLabel')}\n error={hasEmailError ? error : null}\n name=\"email\"\n type=\"email\"\n value={email}\n onChange={(event) => {\n setEmail(event.target.value);\n setError(null);\n setHasEmailError(false);\n }}\n placeholder={t('auth.passwordResetRequest.form.emailPlaceholder')}\n autoComplete=\"email\"\n required\n />\n <Button type=\"submit\" loading={isSubmitting}>\n {t('auth.passwordResetRequest.form.submit')}\n </Button>\n </Form>\n </AuthPanel>\n );\n }\n\n return (\n <AuthLayout title={t('auth.passwordResetRequest.title')}>\n {content}\n </AuthLayout>\n );\n};\n"],"mappings":";;;;;;;;AAsBA,IAAa,KAA8B,EACzC,8BACwB;CACxB,IAAM,EAAE,SAAM,SAAM,EAA8B,GAC5C,CAAC,GAAO,KAAY,EAAS,EAAE,GAC/B,CAAC,GAAQ,KAAa,EAA0B,MAAM,GACtD,CAAC,GAAO,KAAY,EAAwB,IAAI,GAChD,CAAC,GAAe,KAAoB,EAAS,EAAK,GAClD,CAAC,GAAc,KAAmB,EAAS,EAAK,GAEhD,IAAS,QAAc;EAC3B,IAAM,IAAW,EAAK,SAAS,KAAK;EACpC,IAAI,MAAa,IACf,OAAO;EAEL,WAAO,YAAc,KAGzB,OAAO,UAAU;CACnB,GAAG,CAAC,EAAK,QAAQ,CAAC,GAEZ,IAAe,GAClB,MAAsC;EAKrC,IAJA,EAAM,eAAe,GACrB,EAAS,IAAI,GACb,EAAiB,EAAK,GAElB,EAAM,KAAK,MAAM,IAAI;GAEvB,AADA,EAAS,EAAE,gDAAgD,CAAC,GAC5D,EAAiB,EAAI;GACrB;EACF;EAEA,IAAM,IAAa,EAAM,cAAc,SAAS,UAAU,OAAO;EACjE,IACE,aAAsB,oBACtB,CAAC,EAAW,SAAS,OACrB;GAEA,AADA,EAAS,EAAE,+CAA+C,CAAC,GAC3D,EAAiB,EAAI;GACrB;EACF;EAGA,AADA,EAAgB,EAAI,GACpB,EAAqB;GACnB,OAAO,EAAM,KAAK;GAClB;EACF,CAAC,CAAC,CACC,MAAM,MAAY;GACjB,AAAI,IACF,EAAU,MAAM,IAEhB,EAAS,EAAE,8CAA8C,CAAC;EAE9D,CAAC,CAAC,CACD,OAAO,MAAkB;GACxB,EACE,aAAyB,QACrB,EAAc,UACd,EAAE,8CAA8C,CACtD;EACF,CAAC,CAAC,CACD,cAAc;GACb,EAAgB,EAAK;EACvB,CAAC;CACL,GACA;EAAC;EAAO;EAAQ;EAAsB;CAAC,CACzC,GAEI;CA2DJ,OA1DA,AAwBE,IAxBE,MAAW,SAEX,kBAAC,GAAD;EACE,OAAO,EAAE,sCAAsC;EAC/C,aAAa,EAAE,8CAA8C,EAAE,SAAM,CAAC;EACtE,QACE,kBAAC,GAAD;GACE,MAAK;GACL,SAAQ;GACR,eAAe;IACb,EAAU,MAAM;GAClB;GACA,MAAK;GAEJ,UAAA,EAAE,uCAAuC;EACpC,CAAA;EAGV,UAAA,kBAAC,KAAD;GAAG,WAAW;GACX,UAAA,EAAE,uCAAuC;EACzC,CAAA;CACM,CAAA,IAIX,kBAAC,GAAD;EAAW,aAAa,EAAE,4CAA4C;EACpE,UAAA,kBAAC,GAAD;GACE,WAAW;GACX,UAAU;GACV,YAAA;GACA,cAAa;GAJf,UAAA;IAMG,KAAS,QAAQ,CAAC,IACjB,kBAAC,GAAD,EAAA,UAAY,EAAiB,CAAA,IAC3B;IACJ,kBAAC,GAAD;KACE,OAAO,EAAE,2CAA2C;KACpD,OAAO,IAAgB,IAAQ;KAC/B,MAAK;KACL,MAAK;KACL,OAAO;KACP,WAAW,MAAU;MAGnB,AAFA,EAAS,EAAM,OAAO,KAAK,GAC3B,EAAS,IAAI,GACb,EAAiB,EAAK;KACxB;KACA,aAAa,EAAE,iDAAiD;KAChE,cAAa;KACb,UAAA;IACD,CAAA;IACD,kBAAC,GAAD;KAAQ,MAAK;KAAS,SAAS;KAC5B,UAAA,EAAE,uCAAuC;IACpC,CAAA;GACJ;;CACG,CAAA,GAKb,kBAAC,GAAD;EAAY,OAAO,EAAE,iCAAiC;EACnD,UAAA;CACS,CAAA;AAEhB"}
|
|
@@ -564,7 +564,7 @@ var { commitMutation: me, useRelayEnvironment: he } = b, x = (e, t) => e(t), S =
|
|
|
564
564
|
})
|
|
565
565
|
}) }),
|
|
566
566
|
$ && /* @__PURE__ */ v("div", {
|
|
567
|
-
className: "
|
|
567
|
+
className: "txvbqb5m2 txvbqb6mq txvbqb6sa",
|
|
568
568
|
children: [z != null && Q != null && /* @__PURE__ */ _(oe, {
|
|
569
569
|
badgeLabel: Q,
|
|
570
570
|
copyCode: z,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/backoffice/actions/backofficeEntityActionFormDialog.css.ts
|
|
2
|
-
var e = "
|
|
2
|
+
var e = "txvbqb5m2 txvbqb6mq txvbqb6sk", t = "txvbqb5m2 txvbqb8ow txvbqb1d5 txvbqb6sa", n = "txvbqbkk txvbqb1s4 txvbqbe1y txvbqbf5e", r = "txvbqb6o4 txvbqb1df txvbqbeh txvbqbf5e", i = "txvbqb9ge txvbqbfq", a = "txvbqb5m2 txvbqb6mq txvbqb6sa", o = "txvbqb5m2 txvbqb6mq txvbqb6sa", s = "txvbqb6nu txvbqbfq", c = "txvbqb6nu txvbqbe6", l = "txvbqb5mw txvbqb2ny txvbqb6sa txvbqbire txvbqbjgy txvbqbnc txvbqban txvbqblp txvbqbn8 txvbqbja txvbqbei txvbqb6o4 txvbqb19b";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { t as actions, a as checkboxGroup, c as fieldDescription, s as fieldError, n as fieldset, e as form, l as lazyFallback, r as legend, i as requiredMark, o as resultSection };
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/backoffice/billing/backofficeBillingUsageChart.css.ts
|
|
2
|
-
var e = "
|
|
2
|
+
var e = "txvbqb5m2 txvbqb6mq txvbqb6sk", t = "txvbqb6p8 txvbqb6pk txvbqb1dg txvbqbeh txvbqb1s4", n = "txvbqb6nu txvbqbej txvbqb1s4";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { n as rangeText, e as root, t as totalValue };
|
|
5
5
|
|
|
@@ -41,15 +41,15 @@ var f = (e) => {
|
|
|
41
41
|
h != null && /* @__PURE__ */ o(d, { status: h })
|
|
42
42
|
]
|
|
43
43
|
}), m != null && /* @__PURE__ */ o("div", {
|
|
44
|
-
className: "
|
|
44
|
+
className: "txvbqb6o4 txvbqbei txvbqb20h",
|
|
45
45
|
children: m
|
|
46
46
|
})]
|
|
47
47
|
}), b.length > 0 && /* @__PURE__ */ o("div", {
|
|
48
|
-
className: "
|
|
48
|
+
className: "txvbqb5m2 txvbqb2ny txvbqb8ow txvbqb6sa txvbqb1d5",
|
|
49
49
|
children: b.map(f)
|
|
50
50
|
})]
|
|
51
51
|
}), g != null && g.length > 0 && /* @__PURE__ */ o("div", {
|
|
52
|
-
className: "
|
|
52
|
+
className: "txvbqb5mc txvbqb6sk txvbqb7qg",
|
|
53
53
|
children: g.map((e) => {
|
|
54
54
|
let t = e.value;
|
|
55
55
|
return e.copyValue != null && e.copyValue !== "" && (t = /* @__PURE__ */ o(u, {
|
|
@@ -59,12 +59,12 @@ var f = (e) => {
|
|
|
59
59
|
copyLabel: y("common.actions.copy"),
|
|
60
60
|
copiedLabel: y("common.actions.copied")
|
|
61
61
|
})), /* @__PURE__ */ s("div", {
|
|
62
|
-
className: "
|
|
62
|
+
className: "txvbqb5m2 txvbqb6mq txvbqb6s0 txvbqbe1y",
|
|
63
63
|
children: [/* @__PURE__ */ o("span", {
|
|
64
|
-
className: "
|
|
64
|
+
className: "txvbqb6nu txvbqb6k txvbqb1og txvbqbei",
|
|
65
65
|
children: e.label
|
|
66
66
|
}), /* @__PURE__ */ o("span", {
|
|
67
|
-
className: "
|
|
67
|
+
className: "txvbqb6o4 txvbqbeh txvbqb20h",
|
|
68
68
|
children: t
|
|
69
69
|
})]
|
|
70
70
|
}, e.id);
|
|
@@ -42,52 +42,52 @@ var c = ({ title: c, rows: l, totals: u, emptyLabel: d, columnLabels: f }) => {
|
|
|
42
42
|
return /* @__PURE__ */ a(n, { ...t }, e.id);
|
|
43
43
|
})
|
|
44
44
|
}), l.length > 0 && /* @__PURE__ */ o("div", {
|
|
45
|
-
className: "
|
|
45
|
+
className: "txvbqb5mc txvbqb6sa",
|
|
46
46
|
children: [/* @__PURE__ */ o("div", {
|
|
47
|
-
className: "_13200uy0
|
|
47
|
+
className: "_13200uy0 txvbqb5mc txvbqb6sk txvbqb2ny",
|
|
48
48
|
children: [
|
|
49
49
|
/* @__PURE__ */ a("span", {
|
|
50
|
-
className: "
|
|
50
|
+
className: "txvbqb6nu txvbqb6k txvbqb1og txvbqbei",
|
|
51
51
|
children: h.name
|
|
52
52
|
}),
|
|
53
53
|
/* @__PURE__ */ a("span", {
|
|
54
|
-
className: "
|
|
54
|
+
className: "txvbqb6nu txvbqb6k txvbqb1og txvbqbei",
|
|
55
55
|
children: h.rawCost
|
|
56
56
|
}),
|
|
57
57
|
/* @__PURE__ */ a("span", {
|
|
58
|
-
className: "
|
|
58
|
+
className: "txvbqb6nu txvbqb6k txvbqb1og txvbqbei",
|
|
59
59
|
children: h.markup
|
|
60
60
|
}),
|
|
61
61
|
/* @__PURE__ */ a("span", {
|
|
62
|
-
className: "
|
|
62
|
+
className: "txvbqb6nu txvbqb6k txvbqb1og txvbqbei",
|
|
63
63
|
children: h.charged
|
|
64
64
|
}),
|
|
65
65
|
/* @__PURE__ */ a("span", {
|
|
66
|
-
className: "
|
|
66
|
+
className: "txvbqb6nu txvbqb6k txvbqb1og txvbqbei",
|
|
67
67
|
children: h.events
|
|
68
68
|
})
|
|
69
69
|
]
|
|
70
70
|
}), l.map((e) => /* @__PURE__ */ o("div", {
|
|
71
|
-
className: "_13200uy0
|
|
71
|
+
className: "_13200uy0 txvbqb5mc txvbqb6sk txvbqb2ny",
|
|
72
72
|
children: [
|
|
73
73
|
/* @__PURE__ */ a("span", {
|
|
74
|
-
className: i("
|
|
74
|
+
className: i("txvbqb6o4 txvbqbeh txvbqb20h", "txvbqb1df"),
|
|
75
75
|
children: e.label
|
|
76
76
|
}),
|
|
77
77
|
/* @__PURE__ */ a("span", {
|
|
78
|
-
className: "
|
|
78
|
+
className: "txvbqb6o4 txvbqbeh txvbqb20h",
|
|
79
79
|
children: e.rawCost ?? m
|
|
80
80
|
}),
|
|
81
81
|
/* @__PURE__ */ a("span", {
|
|
82
|
-
className: "
|
|
82
|
+
className: "txvbqb6o4 txvbqbeh txvbqb20h",
|
|
83
83
|
children: e.markup ?? m
|
|
84
84
|
}),
|
|
85
85
|
/* @__PURE__ */ a("span", {
|
|
86
|
-
className: "
|
|
86
|
+
className: "txvbqb6o4 txvbqbeh txvbqb20h",
|
|
87
87
|
children: e.charged ?? m
|
|
88
88
|
}),
|
|
89
89
|
/* @__PURE__ */ a("span", {
|
|
90
|
-
className: "
|
|
90
|
+
className: "txvbqb6o4 txvbqbeh txvbqb20h",
|
|
91
91
|
children: e.eventsCount ?? e.quantity ?? m
|
|
92
92
|
})
|
|
93
93
|
]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/backoffice/detail/backofficeDetailErrorList.css.ts
|
|
2
|
-
var e = "
|
|
2
|
+
var e = "txvbqb5m2 txvbqb6mq txvbqb6su", t = "txvbqb5m2 txvbqb6mq txvbqb6sa txvbqbf68 txvbqbne", n = "txvbqblp txvbqbn8 txvbqbja txvbqbam", r = "txvbqb5m2 txvbqb6mq txvbqb6s0", i = "txvbqb1da txvbqb6o4 txvbqbej", a = "txvbqb1dg", o = "txvbqb6o4";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { i as code, o as details, r as header, t as item, n as itemSurface, e as list, a as message };
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/backoffice/detail/backofficeDetailLayout.css.ts
|
|
2
|
-
var e = "
|
|
2
|
+
var e = "txvbqb5mc txvbqb7l6 txvbqb7lj txvbqb6su txvbqb2no txvbqbe1y", t = "txvbqb5m2 txvbqb6mq txvbqb6su txvbqbe1y", n = "txvbqb5m2 txvbqb6mq txvbqb6su txvbqbe1y", r = "txvbqb5m2 txvbqb6mq txvbqb6su";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as layout, t as primary, n as secondary, r as stacked };
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/backoffice/detail/backofficeEntitySummaryHeader.css.ts
|
|
2
|
-
var e = "
|
|
2
|
+
var e = "txvbqb5m2 txvbqb6mq txvbqb6su txvbqbf6i txvbqbnd txvbqbak txvbqblp txvbqbn8 txvbqbjc", t = "txvbqb5m2 txvbqb8pg txvbqb2no txvbqb6su txvbqb1d5", n = "txvbqb5m2 txvbqb6mq txvbqb6sa txvbqbe1y", r = "txvbqb5m2 txvbqb2ny txvbqb6sa txvbqb1d5", i = "txvbqb6p8 txvbqb1rw txvbqb1dg txvbqbeh txvbqb20h", a = "txvbqb6o4 txvbqbei txvbqb20h", o = "txvbqb5m2 txvbqb2ny txvbqb8ow txvbqb6sa txvbqb1d5", s = "txvbqb5mc txvbqb6sk txvbqb7qg", c = "txvbqb5m2 txvbqb6mq txvbqb6s0 txvbqbe1y", l = "txvbqb6nu txvbqb6k txvbqb1og txvbqbei", u = "txvbqb6o4 txvbqbeh txvbqb20h";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { o as actions, n as identity, s as meta, c as metaItem, l as metaLabel, u as metaValue, e as root, a as subtitle, i as title, r as titleRow, t as top };
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/backoffice/detail/backofficeRelationsSummaryGrid.css.ts
|
|
2
|
-
var e = "
|
|
2
|
+
var e = "txvbqb5mc txvbqb6sk txvbqb7qg", t = "txvbqb5m2 txvbqb6mq txvbqb6s0 txvbqbf68 txvbqbnc txvbqbak txvbqblp txvbqbn8 txvbqbjc txvbqbe1y", n = "txvbqb6nu txvbqb6k txvbqb1og txvbqbei", r = "txvbqb6oy txvbqb1dg txvbqbeh", i = "txvbqb6o4 txvbqbei txvbqb20h";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { r as count, i as description, e as grid, t as item, n as label };
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/detail/backofficeUsageCostBreakdown.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqb5m2 txvbqb6mq txvbqb6sk", t = "txvbqb5mc txvbqb6sa", n = "_13200uy0 txvbqb5mc txvbqb6sk txvbqb2ny", r = "txvbqb6nu txvbqb6k txvbqb1og txvbqbei", i = "txvbqb6o4 txvbqbeh txvbqb20h", a = "txvbqb1df";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { i as cell, e as content, r as header, a as label, n as row, t as table };
|
|
6
6
|
|
|
@@ -70,7 +70,7 @@ var h = (h) => {
|
|
|
70
70
|
return /* @__PURE__ */ u("div", {
|
|
71
71
|
className: r,
|
|
72
72
|
children: z ?? /* @__PURE__ */ u("div", {
|
|
73
|
-
className: "
|
|
73
|
+
className: "txvbqb1cw txvbqbe1y txvbqb5m2 txvbqb2ny txvbqbf4k",
|
|
74
74
|
children: P
|
|
75
75
|
})
|
|
76
76
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/backoffice/filters/backofficeFilterAction.css.ts
|
|
2
|
-
var e = "hwnq700
|
|
2
|
+
var e = "hwnq700 txvbqb5mw txvbqb2ny txvbqb8om txvbqb1d2 txvbqbkzo txvbqb7uc txvbqbf5e txvbqbnc txvbqblp txvbqbn8 txvbqbja txvbqbam txvbqbf4 txvbqbv txvbqb3p txvbqb7y txvbqb7h txvbqb89 txvbqbo8m txvbqbmji txvbqbndi qbwcue5 qbwcue4 txvbqbozt txvbqbpu1 qbwcue3", t = "txvbqbkyu txvbqb7ti";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as action, t as icon };
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* empty css */
|
|
2
2
|
//#region src/components/backoffice/filters/deferredFilterSearchInput.css.ts
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "txvbqbla8", t = "txvbqb5mw txvbqb2ny txvbqb7fw txvbqbe64", n = "ds2thc0 txvbqb6 txvbqb5mw txvbqb2ny txvbqb8om txvbqbkzo txvbqb7uc txvbqbf5e txvbqbnc txvbqbkk txvbqb8y txvbqbej txvbqbv txvbqb7y txvbqb7h txvbqb89", r = "txvbqb5mw txvbqbkzo txvbqb7uc txvbqb1d2";
|
|
4
4
|
//#endregion
|
|
5
5
|
export { n as actionButton, r as actionButtonSpacer, t as actions, e as container };
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferredFilterSearchInput.css.js","names":[],"sources":["../../../../../src/components/backoffice/filters/deferredFilterSearchInput.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { sprinkles, vars } from '@plumile/ui/theme';\n\nexport const container = sprinkles({\n width: 'full',\n});\n\nexport const actions =
|
|
1
|
+
{"version":3,"file":"deferredFilterSearchInput.css.js","names":[],"sources":["../../../../../src/components/backoffice/filters/deferredFilterSearchInput.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { sprinkles, vars } from '@plumile/ui/theme';\n\nexport const container = sprinkles({\n width: 'full',\n});\n\nexport const actions = sprinkles({\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n minWidth: 15,\n});\n\nexport const actionButton = style([\n sprinkles({\n appearance: 'none',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 7,\n height: 7,\n padding: 0,\n borderRadius: 'md',\n borderWidth: 0,\n backgroundColor: 'transparent',\n color: 'textMuted',\n cursor: 'pointer',\n transitionProperty: 'colors',\n transitionDuration: 120,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n '&:hover:not(:disabled)': {\n color: vars.colors.text,\n backgroundColor: vars.colors.surfaceMuted,\n },\n '&:focus-visible': {\n outline: `2px solid ${vars.colors.primary}`,\n outlineOffset: '2px',\n },\n '&:disabled': {\n cursor: 'not-allowed',\n opacity: 0.45,\n },\n },\n },\n]);\n\nexport const actionButtonSpacer = sprinkles({\n display: 'inline-flex',\n width: 7,\n height: 7,\n flexShrink: 0,\n});\n"],"mappings":""}
|