@plumile/backoffice-react 0.1.76 → 0.1.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +25 -0
  2. package/lib/esm/{AcceptInvitationScreen-CNLlSbdx.js → AcceptInvitationScreen-b2yaZeKV.js} +4 -4
  3. package/lib/esm/{AcceptInvitationScreen-CNLlSbdx.js.map → AcceptInvitationScreen-b2yaZeKV.js.map} +1 -1
  4. package/lib/esm/{AuthPanel-ttoH9YxE.js → AuthPanel-Co626p7A.js} +2 -2
  5. package/lib/esm/{AuthPanel-ttoH9YxE.js.map → AuthPanel-Co626p7A.js.map} +1 -1
  6. package/lib/esm/{BackofficeAcceptInvitationPage-DRxM1Z-U.js → BackofficeAcceptInvitationPage-BBHL6VvG.js} +7 -7
  7. package/lib/esm/{BackofficeAcceptInvitationPage-DRxM1Z-U.js.map → BackofficeAcceptInvitationPage-BBHL6VvG.js.map} +1 -1
  8. package/lib/esm/{sprinkles.css.ts.vanilla-n-NK_DwW.js → BackofficeConfigContext-R0t1owTI.js} +1 -1
  9. package/lib/esm/BackofficeConfigContext-R0t1owTI.js.map +1 -0
  10. package/lib/esm/{BackofficeDashboardPage-GKyT60qb.js → BackofficeDashboardPage-B5_YC1ZL.js} +5 -5
  11. package/lib/esm/BackofficeDashboardPage-B5_YC1ZL.js.map +1 -0
  12. package/lib/esm/{BackofficeDetailPayload-B-qs8Fai.js → BackofficeDetailPayload-CbsZKnw6.js} +10 -10
  13. package/lib/esm/BackofficeDetailPayload-CbsZKnw6.js.map +1 -0
  14. package/lib/esm/{BackofficeEntityActionFormDialog-FHlW0vys.js → BackofficeEntityActionFormDialog-BzKi1eyv.js} +19 -19
  15. package/lib/esm/BackofficeEntityActionFormDialog-BzKi1eyv.js.map +1 -0
  16. package/lib/esm/{BackofficeEntityDetailPage-CdrMXu5a.js → BackofficeEntityDetailPage-CE4tl5ZJ.js} +11 -11
  17. package/lib/esm/BackofficeEntityDetailPage-CE4tl5ZJ.js.map +1 -0
  18. package/lib/esm/{BackofficeEntityListPage-BxgqdFpL.js → BackofficeEntityListPage-CtLI15-L.js} +7 -7
  19. package/lib/esm/BackofficeEntityListPage-CtLI15-L.js.map +1 -0
  20. package/lib/esm/{BackofficeLayoutPage-k9OkLfXb.js → BackofficeLayoutPage-DpvTzwtK.js} +6 -6
  21. package/lib/esm/BackofficeLayoutPage-DpvTzwtK.js.map +1 -0
  22. package/lib/esm/{BackofficeLoginPage-C64BcxMw.js → BackofficeLoginPage-BeihjFO2.js} +8 -8
  23. package/lib/esm/{BackofficeLoginPage-C64BcxMw.js.map → BackofficeLoginPage-BeihjFO2.js.map} +1 -1
  24. package/lib/esm/{BackofficePasswordResetCompletePage-BA7kkUxN.js → BackofficePasswordResetCompletePage-CkaMaFNT.js} +6 -6
  25. package/lib/esm/{BackofficePasswordResetCompletePage-BA7kkUxN.js.map → BackofficePasswordResetCompletePage-CkaMaFNT.js.map} +1 -1
  26. package/lib/esm/{BackofficePasswordResetRequestPage-B9wSZcyn.js → BackofficePasswordResetRequestPage-Df8mcLkC.js} +6 -6
  27. package/lib/esm/{BackofficePasswordResetRequestPage-B9wSZcyn.js.map → BackofficePasswordResetRequestPage-Df8mcLkC.js.map} +1 -1
  28. package/lib/esm/{BackofficeRightPageLayout-ktdlvTZJ.js → BackofficeRightPageLayout-D7QRE8KZ.js} +3 -3
  29. package/lib/esm/BackofficeRightPageLayout-D7QRE8KZ.js.map +1 -0
  30. package/lib/esm/{BackofficeVerifyEmailPage-CAzMqo2K.js → BackofficeVerifyEmailPage-CE_6-wGN.js} +5 -5
  31. package/lib/esm/{BackofficeVerifyEmailPage-CAzMqo2K.js.map → BackofficeVerifyEmailPage-CE_6-wGN.js.map} +1 -1
  32. package/lib/esm/{EntityFilterValue-SC_jkj4O.js → EntityFilterValue-Bn9VGr2M.js} +2 -2
  33. package/lib/esm/{EntityFilterValue-SC_jkj4O.js.map → EntityFilterValue-Bn9VGr2M.js.map} +1 -1
  34. package/lib/esm/{EntityIdPickerDialog-FMC5Hx_I.js → EntityIdPickerDialog-D_qAlrU6.js} +4 -4
  35. package/lib/esm/EntityIdPickerDialog-D_qAlrU6.js.map +1 -0
  36. package/lib/esm/{LazyBackofficeEntityActionFormDialog-DOEgoIfT.js → LazyBackofficeEntityActionFormDialog-DndjG4kV.js} +5 -5
  37. package/lib/esm/LazyBackofficeEntityActionFormDialog-DndjG4kV.js.map +1 -0
  38. package/lib/esm/{PasswordResetCompleteScreen-C4GQdavL.js → PasswordResetCompleteScreen-CWxk9AWl.js} +3 -3
  39. package/lib/esm/{PasswordResetCompleteScreen-C4GQdavL.js.map → PasswordResetCompleteScreen-CWxk9AWl.js.map} +1 -1
  40. package/lib/esm/{PasswordResetRequestScreen-aUY_yDqM.js → PasswordResetRequestScreen-DBIHOmsl.js} +3 -3
  41. package/lib/esm/{PasswordResetRequestScreen-aUY_yDqM.js.map → PasswordResetRequestScreen-DBIHOmsl.js.map} +1 -1
  42. package/lib/esm/{VerifyEmailScreen-2DuHJgdY.js → VerifyEmailScreen-CUOEwmf1.js} +2 -2
  43. package/lib/esm/{VerifyEmailScreen-2DuHJgdY.js.map → VerifyEmailScreen-CUOEwmf1.js.map} +1 -1
  44. package/lib/esm/backoffice-react.js +21 -21
  45. package/lib/esm/backoffice-react.js.map +1 -1
  46. package/lib/esm/loginPage.css-4M4PrzUn.js +12 -0
  47. package/lib/esm/loginPage.css-4M4PrzUn.js.map +1 -0
  48. package/lib/esm/style.css +1 -1
  49. package/lib/esm/{synchronizeAuthStatusQuery-lLR0XFew.js → synchronizeAuthStatusQuery-Ba776lwa.js} +4 -4
  50. package/lib/esm/{synchronizeAuthStatusQuery-lLR0XFew.js.map → synchronizeAuthStatusQuery-Ba776lwa.js.map} +1 -1
  51. package/lib/esm/{useAuth-AczFS-oL.js → useAuth-DzWJXJ_9.js} +2 -2
  52. package/lib/esm/{useAuth-AczFS-oL.js.map → useAuth-DzWJXJ_9.js.map} +1 -1
  53. package/lib/esm/{useBackofficeAuth-BHteJQzA.js → useBackofficeAuth-L9k9i9BI.js} +3 -3
  54. package/lib/esm/{useBackofficeAuth-BHteJQzA.js.map → useBackofficeAuth-L9k9i9BI.js.map} +1 -1
  55. package/lib/esm/{useBackofficeLazyValue-B0-ckL6e.js → useBackofficeLazyValue-Dnii1_dE.js} +2 -2
  56. package/lib/esm/{useBackofficeLazyValue-B0-ckL6e.js.map → useBackofficeLazyValue-Dnii1_dE.js.map} +1 -1
  57. package/lib/types/auth/login/loginPage.css.d.ts.map +1 -1
  58. package/lib/types/components/backoffice/detail/backofficeDetailRelationLink.css.d.ts.map +1 -1
  59. package/lib/types/components/backoffice/filters/backofficeFilterAction.css.d.ts.map +1 -1
  60. package/lib/types/components/backoffice/layout/backofficeSidebarActions.css.d.ts.map +1 -1
  61. package/lib/types/components/backoffice/routing/backofficeRoutePendingBar.css.d.ts.map +1 -1
  62. package/package.json +5 -5
  63. package/lib/esm/BackofficeDashboardPage-GKyT60qb.js.map +0 -1
  64. package/lib/esm/BackofficeDetailPayload-B-qs8Fai.js.map +0 -1
  65. package/lib/esm/BackofficeEntityActionFormDialog-FHlW0vys.js.map +0 -1
  66. package/lib/esm/BackofficeEntityDetailPage-CdrMXu5a.js.map +0 -1
  67. package/lib/esm/BackofficeEntityListPage-BxgqdFpL.js.map +0 -1
  68. package/lib/esm/BackofficeLayoutPage-k9OkLfXb.js.map +0 -1
  69. package/lib/esm/BackofficeRightPageLayout-ktdlvTZJ.js.map +0 -1
  70. package/lib/esm/EntityIdPickerDialog-FMC5Hx_I.js.map +0 -1
  71. package/lib/esm/LazyBackofficeEntityActionFormDialog-DOEgoIfT.js.map +0 -1
  72. package/lib/esm/loginPage.css-BDQJNcSr.js +0 -12
  73. package/lib/esm/loginPage.css-BDQJNcSr.js.map +0 -1
  74. package/lib/esm/sprinkles.css.ts.vanilla-n-NK_DwW.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordResetCompleteScreen-C4GQdavL.js","names":[],"sources":["../../src/auth/pages/PasswordResetCompleteScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { AuthLayout, Button, FormError, FormField } from '@plumile/ui';\n\nimport * as styles from '../login/loginPage.css.js';\nimport AuthPanel from '../login/AuthPanel.js';\n\nconst MIN_PASSWORD_LENGTH = 8;\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 } = useSharedTranslation();\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 [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\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 return;\n }\n\n if (password !== passwordConfirm) {\n setError(t('auth.passwordResetComplete.errors.mismatch'));\n return;\n }\n\n setIsSubmitting(true);\n // TODO: fix that !\n // eslint-disable-next-line no-void\n void onCompletePasswordReset({\n newPassword: password,\n token: resolvedToken,\n })\n .then((success) => {\n if (success) {\n setStatus('completed');\n } else {\n setError(t('auth.passwordResetComplete.errors.invalid'));\n }\n })\n .catch((mutationError) => {\n setError(\n mutationError instanceof Error\n ? mutationError.message\n : t('auth.passwordResetComplete.errors.invalid'),\n );\n })\n .finally(() => {\n setIsSubmitting(false);\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=\"secondary\"\n className={styles.brandGhostButton}\n onClick={onBackToLogin}\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 className={styles.formSurface} onSubmit={handleSubmit} noValidate>\n {error != null ? <FormError>{error}</FormError> : null}\n <FormField\n label={t('auth.passwordResetComplete.form.passwordLabel')}\n name=\"new-password\"\n type=\"password\"\n value={password}\n onChange={(event) => {\n setPassword(event.target.value);\n setError(null);\n }}\n placeholder={t(\n 'auth.passwordResetComplete.form.passwordPlaceholder',\n )}\n autoComplete=\"new-password\"\n required\n />\n <FormField\n label={t('auth.passwordResetComplete.form.confirmLabel')}\n name=\"confirm-password\"\n type=\"password\"\n value={passwordConfirm}\n onChange={(event) => {\n setPasswordConfirm(event.target.value);\n setError(null);\n }}\n placeholder={t(\n 'auth.passwordResetComplete.form.confirmPlaceholder',\n )}\n autoComplete=\"new-password\"\n required\n />\n <Button type=\"submit\" isLoading={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":";;;;;;AAeA,IAAM,IAAsB,GAWf,KAA+B,EAC1C,kBACA,4BACA,eACwB;CACxB,IAAM,EAAE,SAAM,GAAsB,EAC9B,CAAC,GAAU,KAAe,EAAS,GAAG,EACtC,CAAC,GAAiB,KAAsB,EAAS,GAAG,EACpD,CAAC,GAAQ,KAAa,EAA+B,OAAO,EAC5D,CAAC,GAAO,KAAY,EAAwB,KAAK,EACjD,CAAC,GAAc,KAAmB,EAAS,GAAM,EAEjD,IAAgB,QAChB,MAGA,OAAO,SAAW,MACb,KAEM,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C,IAAI,QAAQ,IAAI,KAC7B,CAAC,EAAM,CAAC,EAEL,IAAe,GAClB,MAAsC;AAIrC,MAHA,EAAM,gBAAgB,EACtB,EAAS,KAAK,EAEV,MAAkB,IAAI;AACxB,KAAS,EAAE,iDAAiD,CAAC;AAC7D;;AAGF,MAAI,EAAS,SAAS,GAAqB;AACzC,KACE,EAAE,+CAA+C,EAC/C,WAAW,GACZ,CAAC,CACH;AACD;;AAGF,MAAI,MAAa,GAAiB;AAChC,KAAS,EAAE,6CAA6C,CAAC;AACzD;;AAMG,EAHL,EAAgB,GAAK,EAGhB,EAAwB;GAC3B,aAAa;GACb,OAAO;GACR,CAAC,CACC,MAAM,MAAY;AACjB,GAAI,IACF,EAAU,YAAY,GAEtB,EAAS,EAAE,4CAA4C,CAAC;IAE1D,CACD,OAAO,MAAkB;AACxB,KACE,aAAyB,QACrB,EAAc,UACd,EAAE,4CAA4C,CACnD;IACD,CACD,cAAc;AACb,KAAgB,GAAM;IACtB;IAEN;EAAC;EAAyB;EAAU;EAAiB;EAAe;EAAE,CACvE,EAEG;AAoEJ,QAnEA,AAsBE,IAtBE,MAAW,cAEX,kBAAC,GAAD;EACE,OAAO,EAAE,2CAA2C;EACpD,aAAa,EAAE,iDAAiD;EAChE,QACE,kBAAC,GAAD;GACE,MAAK;GACL,SAAQ;GACR,WAAW;GACX,SAAS;aAER,EAAE,4CAA4C;GACxC,CAAA;YAGX,kBAAC,KAAD;GAAG,WAAW;aACX,EAAE,4CAA4C;GAC7C,CAAA;EACM,CAAA,GAIZ,kBAAC,GAAD;EACE,OAAO,EAAE,wCAAwC;EACjD,aAAa,EAAE,8CAA8C;YAE7D,kBAAC,QAAD;GAAM,WAAW;GAAoB,UAAU;GAAc,YAAA;aAA7D;IACG,KAAS,OAAwC,OAAjC,kBAAC,GAAD,EAAA,UAAY,GAAkB,CAAA;IAC/C,kBAAC,GAAD;KACE,OAAO,EAAE,gDAAgD;KACzD,MAAK;KACL,MAAK;KACL,OAAO;KACP,WAAW,MAAU;AAEnB,MADA,EAAY,EAAM,OAAO,MAAM,EAC/B,EAAS,KAAK;;KAEhB,aAAa,EACX,sDACD;KACD,cAAa;KACb,UAAA;KACA,CAAA;IACF,kBAAC,GAAD;KACE,OAAO,EAAE,+CAA+C;KACxD,MAAK;KACL,MAAK;KACL,OAAO;KACP,WAAW,MAAU;AAEnB,MADA,EAAmB,EAAM,OAAO,MAAM,EACtC,EAAS,KAAK;;KAEhB,aAAa,EACX,qDACD;KACD,cAAa;KACb,UAAA;KACA,CAAA;IACF,kBAAC,GAAD;KAAQ,MAAK;KAAS,WAAW;eAC9B,EAAE,yCAAyC;KACrC,CAAA;IACJ;;EACG,CAAA,EAKd,kBAAC,GAAD;EACE,OAAO,EAAE,mCAAmC;EAC5C,UAAU,EAAE,sCAAsC;YAEjD;EACU,CAAA"}
1
+ {"version":3,"file":"PasswordResetCompleteScreen-CWxk9AWl.js","names":[],"sources":["../../src/auth/pages/PasswordResetCompleteScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { AuthLayout, Button, FormError, FormField } from '@plumile/ui';\n\nimport * as styles from '../login/loginPage.css.js';\nimport AuthPanel from '../login/AuthPanel.js';\n\nconst MIN_PASSWORD_LENGTH = 8;\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 } = useSharedTranslation();\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 [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\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 return;\n }\n\n if (password !== passwordConfirm) {\n setError(t('auth.passwordResetComplete.errors.mismatch'));\n return;\n }\n\n setIsSubmitting(true);\n // TODO: fix that !\n // eslint-disable-next-line no-void\n void onCompletePasswordReset({\n newPassword: password,\n token: resolvedToken,\n })\n .then((success) => {\n if (success) {\n setStatus('completed');\n } else {\n setError(t('auth.passwordResetComplete.errors.invalid'));\n }\n })\n .catch((mutationError) => {\n setError(\n mutationError instanceof Error\n ? mutationError.message\n : t('auth.passwordResetComplete.errors.invalid'),\n );\n })\n .finally(() => {\n setIsSubmitting(false);\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=\"secondary\"\n className={styles.brandGhostButton}\n onClick={onBackToLogin}\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 className={styles.formSurface} onSubmit={handleSubmit} noValidate>\n {error != null ? <FormError>{error}</FormError> : null}\n <FormField\n label={t('auth.passwordResetComplete.form.passwordLabel')}\n name=\"new-password\"\n type=\"password\"\n value={password}\n onChange={(event) => {\n setPassword(event.target.value);\n setError(null);\n }}\n placeholder={t(\n 'auth.passwordResetComplete.form.passwordPlaceholder',\n )}\n autoComplete=\"new-password\"\n required\n />\n <FormField\n label={t('auth.passwordResetComplete.form.confirmLabel')}\n name=\"confirm-password\"\n type=\"password\"\n value={passwordConfirm}\n onChange={(event) => {\n setPasswordConfirm(event.target.value);\n setError(null);\n }}\n placeholder={t(\n 'auth.passwordResetComplete.form.confirmPlaceholder',\n )}\n autoComplete=\"new-password\"\n required\n />\n <Button type=\"submit\" isLoading={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":";;;;;;AAeA,IAAM,IAAsB,GAWf,KAA+B,EAC1C,kBACA,4BACA,eACwB;CACxB,IAAM,EAAE,SAAM,GAAsB,EAC9B,CAAC,GAAU,KAAe,EAAS,GAAG,EACtC,CAAC,GAAiB,KAAsB,EAAS,GAAG,EACpD,CAAC,GAAQ,KAAa,EAA+B,OAAO,EAC5D,CAAC,GAAO,KAAY,EAAwB,KAAK,EACjD,CAAC,GAAc,KAAmB,EAAS,GAAM,EAEjD,IAAgB,QAChB,MAGA,OAAO,SAAW,MACb,KAEM,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C,IAAI,QAAQ,IAAI,KAC7B,CAAC,EAAM,CAAC,EAEL,IAAe,GAClB,MAAsC;AAIrC,MAHA,EAAM,gBAAgB,EACtB,EAAS,KAAK,EAEV,MAAkB,IAAI;AACxB,KAAS,EAAE,iDAAiD,CAAC;AAC7D;;AAGF,MAAI,EAAS,SAAS,GAAqB;AACzC,KACE,EAAE,+CAA+C,EAC/C,WAAW,GACZ,CAAC,CACH;AACD;;AAGF,MAAI,MAAa,GAAiB;AAChC,KAAS,EAAE,6CAA6C,CAAC;AACzD;;AAMG,EAHL,EAAgB,GAAK,EAGhB,EAAwB;GAC3B,aAAa;GACb,OAAO;GACR,CAAC,CACC,MAAM,MAAY;AACjB,GAAI,IACF,EAAU,YAAY,GAEtB,EAAS,EAAE,4CAA4C,CAAC;IAE1D,CACD,OAAO,MAAkB;AACxB,KACE,aAAyB,QACrB,EAAc,UACd,EAAE,4CAA4C,CACnD;IACD,CACD,cAAc;AACb,KAAgB,GAAM;IACtB;IAEN;EAAC;EAAyB;EAAU;EAAiB;EAAe;EAAE,CACvE,EAEG;AAoEJ,QAnEA,AAsBE,IAtBE,MAAW,cAEX,kBAAC,GAAD;EACE,OAAO,EAAE,2CAA2C;EACpD,aAAa,EAAE,iDAAiD;EAChE,QACE,kBAAC,GAAD;GACE,MAAK;GACL,SAAQ;GACR,WAAW;GACX,SAAS;aAER,EAAE,4CAA4C;GACxC,CAAA;YAGX,kBAAC,KAAD;GAAG,WAAW;aACX,EAAE,4CAA4C;GAC7C,CAAA;EACM,CAAA,GAIZ,kBAAC,GAAD;EACE,OAAO,EAAE,wCAAwC;EACjD,aAAa,EAAE,8CAA8C;YAE7D,kBAAC,QAAD;GAAM,WAAW;GAAoB,UAAU;GAAc,YAAA;aAA7D;IACG,KAAS,OAAwC,OAAjC,kBAAC,GAAD,EAAA,UAAY,GAAkB,CAAA;IAC/C,kBAAC,GAAD;KACE,OAAO,EAAE,gDAAgD;KACzD,MAAK;KACL,MAAK;KACL,OAAO;KACP,WAAW,MAAU;AAEnB,MADA,EAAY,EAAM,OAAO,MAAM,EAC/B,EAAS,KAAK;;KAEhB,aAAa,EACX,sDACD;KACD,cAAa;KACb,UAAA;KACA,CAAA;IACF,kBAAC,GAAD;KACE,OAAO,EAAE,+CAA+C;KACxD,MAAK;KACL,MAAK;KACL,OAAO;KACP,WAAW,MAAU;AAEnB,MADA,EAAmB,EAAM,OAAO,MAAM,EACtC,EAAS,KAAK;;KAEhB,aAAa,EACX,qDACD;KACD,cAAa;KACb,UAAA;KACA,CAAA;IACF,kBAAC,GAAD;KAAQ,MAAK;KAAS,WAAW;eAC9B,EAAE,yCAAyC;KACrC,CAAA;IACJ;;EACG,CAAA,EAKd,kBAAC,GAAD;EACE,OAAO,EAAE,mCAAmC;EAC5C,UAAU,EAAE,sCAAsC;YAEjD;EACU,CAAA"}
@@ -1,5 +1,5 @@
1
- import { a as e, f as t, s as n } from "./loginPage.css-BDQJNcSr.js";
2
- import { t as r } from "./AuthPanel-ttoH9YxE.js";
1
+ import { a as e, f as t, s as n } from "./loginPage.css-4M4PrzUn.js";
2
+ import { t as r } from "./AuthPanel-Co626p7A.js";
3
3
  import { useCallback as i, useMemo as a, useState as o } from "react";
4
4
  import { AuthLayout as s, Button as c, FormError as l, FormField as u } from "@plumile/ui";
5
5
  import { jsx as d, jsxs as f } from "react/jsx-runtime";
@@ -81,4 +81,4 @@ var p = ({ onStartPasswordReset: p }) => {
81
81
  //#endregion
82
82
  export { p as t };
83
83
 
84
- //# sourceMappingURL=PasswordResetRequestScreen-aUY_yDqM.js.map
84
+ //# sourceMappingURL=PasswordResetRequestScreen-DBIHOmsl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordResetRequestScreen-aUY_yDqM.js","names":[],"sources":["../../src/auth/pages/PasswordResetRequestScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { AuthLayout, Button, FormError, FormField } 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 } = useSharedTranslation();\n const [email, setEmail] = useState('');\n const [status, setStatus] = useState<'idle' | 'sent'>('idle');\n const [error, setError] = useState<string | null>(null);\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\n if (email.trim() === '') {\n setError(t('auth.passwordResetRequest.errors.emailRequired'));\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=\"secondary\"\n onClick={() => {\n setStatus('idle');\n }}\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 className={styles.formSurface} onSubmit={handleSubmit} noValidate>\n {error != null ? <FormError>{error}</FormError> : null}\n <FormField\n label={t('auth.passwordResetRequest.form.emailLabel')}\n name=\"email\"\n type=\"email\"\n value={email}\n onChange={(event) => {\n setEmail(event.target.value);\n setError(null);\n }}\n placeholder={t('auth.passwordResetRequest.form.emailPlaceholder')}\n autoComplete=\"email\"\n autoFocus\n required\n />\n <Button type=\"submit\" isLoading={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,GAAsB,EACpC,CAAC,GAAO,KAAY,EAAS,GAAG,EAChC,CAAC,GAAQ,KAAa,EAA0B,OAAO,EACvD,CAAC,GAAO,KAAY,EAAwB,KAAK,EACjD,CAAC,GAAc,KAAmB,EAAS,GAAM,EAEjD,IAAS,QAAc;EAC3B,IAAM,IAAW,EAAK,SAAS,MAAM;AACrC,MAAI,MAAa,GACf,QAAO;AAEL,eAAO,YAAc,KAGzB,QAAO,UAAU;IAChB,CAAC,EAAK,SAAS,CAAC,EAEb,IAAe,GAClB,MAAsC;AAIrC,MAHA,EAAM,gBAAgB,EACtB,EAAS,KAAK,EAEV,EAAM,MAAM,KAAK,IAAI;AACvB,KAAS,EAAE,iDAAiD,CAAC;AAC7D;;AAIF,EADA,EAAgB,GAAK,EACrB,EAAqB;GACnB,OAAO,EAAM,MAAM;GACnB;GACD,CAAC,CACC,MAAM,MAAY;AACjB,GAAI,IACF,EAAU,OAAO,GAEjB,EAAS,EAAE,+CAA+C,CAAC;IAE7D,CACD,OAAO,MAAkB;AACxB,KACE,aAAyB,QACrB,EAAc,UACd,EAAE,+CAA+C,CACtD;IACD,CACD,cAAc;AACb,KAAgB,GAAM;IACtB;IAEN;EAAC;EAAO;EAAQ;EAAsB;EAAE,CACzC,EAEG;AAkDJ,QAjDA,AAuBE,IAvBE,MAAW,SAEX,kBAAC,GAAD;EACE,OAAO,EAAE,uCAAuC;EAChD,aAAa,EAAE,8CAA8C,EAAE,UAAO,CAAC;EACvE,QACE,kBAAC,GAAD;GACE,MAAK;GACL,SAAQ;GACR,eAAe;AACb,MAAU,OAAO;;aAGlB,EAAE,wCAAwC;GACpC,CAAA;YAGX,kBAAC,KAAD;GAAG,WAAW;aACX,EAAE,wCAAwC;GACzC,CAAA;EACM,CAAA,GAIZ,kBAAC,GAAD;EAAW,aAAa,EAAE,6CAA6C;YACrE,kBAAC,QAAD;GAAM,WAAW;GAAoB,UAAU;GAAc,YAAA;aAA7D;IACG,KAAS,OAAwC,OAAjC,kBAAC,GAAD,EAAA,UAAY,GAAkB,CAAA;IAC/C,kBAAC,GAAD;KACE,OAAO,EAAE,4CAA4C;KACrD,MAAK;KACL,MAAK;KACL,OAAO;KACP,WAAW,MAAU;AAEnB,MADA,EAAS,EAAM,OAAO,MAAM,EAC5B,EAAS,KAAK;;KAEhB,aAAa,EAAE,kDAAkD;KACjE,cAAa;KACb,WAAA;KACA,UAAA;KACA,CAAA;IACF,kBAAC,GAAD;KAAQ,MAAK;KAAS,WAAW;eAC9B,EAAE,wCAAwC;KACpC,CAAA;IACJ;;EACG,CAAA,EAKd,kBAAC,GAAD;EAAY,OAAO,EAAE,kCAAkC;YACpD;EACU,CAAA"}
1
+ {"version":3,"file":"PasswordResetRequestScreen-DBIHOmsl.js","names":[],"sources":["../../src/auth/pages/PasswordResetRequestScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { AuthLayout, Button, FormError, FormField } 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 } = useSharedTranslation();\n const [email, setEmail] = useState('');\n const [status, setStatus] = useState<'idle' | 'sent'>('idle');\n const [error, setError] = useState<string | null>(null);\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\n if (email.trim() === '') {\n setError(t('auth.passwordResetRequest.errors.emailRequired'));\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=\"secondary\"\n onClick={() => {\n setStatus('idle');\n }}\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 className={styles.formSurface} onSubmit={handleSubmit} noValidate>\n {error != null ? <FormError>{error}</FormError> : null}\n <FormField\n label={t('auth.passwordResetRequest.form.emailLabel')}\n name=\"email\"\n type=\"email\"\n value={email}\n onChange={(event) => {\n setEmail(event.target.value);\n setError(null);\n }}\n placeholder={t('auth.passwordResetRequest.form.emailPlaceholder')}\n autoComplete=\"email\"\n autoFocus\n required\n />\n <Button type=\"submit\" isLoading={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,GAAsB,EACpC,CAAC,GAAO,KAAY,EAAS,GAAG,EAChC,CAAC,GAAQ,KAAa,EAA0B,OAAO,EACvD,CAAC,GAAO,KAAY,EAAwB,KAAK,EACjD,CAAC,GAAc,KAAmB,EAAS,GAAM,EAEjD,IAAS,QAAc;EAC3B,IAAM,IAAW,EAAK,SAAS,MAAM;AACrC,MAAI,MAAa,GACf,QAAO;AAEL,eAAO,YAAc,KAGzB,QAAO,UAAU;IAChB,CAAC,EAAK,SAAS,CAAC,EAEb,IAAe,GAClB,MAAsC;AAIrC,MAHA,EAAM,gBAAgB,EACtB,EAAS,KAAK,EAEV,EAAM,MAAM,KAAK,IAAI;AACvB,KAAS,EAAE,iDAAiD,CAAC;AAC7D;;AAIF,EADA,EAAgB,GAAK,EACrB,EAAqB;GACnB,OAAO,EAAM,MAAM;GACnB;GACD,CAAC,CACC,MAAM,MAAY;AACjB,GAAI,IACF,EAAU,OAAO,GAEjB,EAAS,EAAE,+CAA+C,CAAC;IAE7D,CACD,OAAO,MAAkB;AACxB,KACE,aAAyB,QACrB,EAAc,UACd,EAAE,+CAA+C,CACtD;IACD,CACD,cAAc;AACb,KAAgB,GAAM;IACtB;IAEN;EAAC;EAAO;EAAQ;EAAsB;EAAE,CACzC,EAEG;AAkDJ,QAjDA,AAuBE,IAvBE,MAAW,SAEX,kBAAC,GAAD;EACE,OAAO,EAAE,uCAAuC;EAChD,aAAa,EAAE,8CAA8C,EAAE,UAAO,CAAC;EACvE,QACE,kBAAC,GAAD;GACE,MAAK;GACL,SAAQ;GACR,eAAe;AACb,MAAU,OAAO;;aAGlB,EAAE,wCAAwC;GACpC,CAAA;YAGX,kBAAC,KAAD;GAAG,WAAW;aACX,EAAE,wCAAwC;GACzC,CAAA;EACM,CAAA,GAIZ,kBAAC,GAAD;EAAW,aAAa,EAAE,6CAA6C;YACrE,kBAAC,QAAD;GAAM,WAAW;GAAoB,UAAU;GAAc,YAAA;aAA7D;IACG,KAAS,OAAwC,OAAjC,kBAAC,GAAD,EAAA,UAAY,GAAkB,CAAA;IAC/C,kBAAC,GAAD;KACE,OAAO,EAAE,4CAA4C;KACrD,MAAK;KACL,MAAK;KACL,OAAO;KACP,WAAW,MAAU;AAEnB,MADA,EAAS,EAAM,OAAO,MAAM,EAC5B,EAAS,KAAK;;KAEhB,aAAa,EAAE,kDAAkD;KACjE,cAAa;KACb,WAAA;KACA,UAAA;KACA,CAAA;IACF,kBAAC,GAAD;KAAQ,MAAK;KAAS,WAAW;eAC9B,EAAE,wCAAwC;KACpC,CAAA;IACJ;;EACG,CAAA,EAKd,kBAAC,GAAD;EAAY,OAAO,EAAE,kCAAkC;YACpD;EACU,CAAA"}
@@ -1,4 +1,4 @@
1
- import { d as e, f as t, s as n } from "./loginPage.css-BDQJNcSr.js";
1
+ import { d as e, f as t, s as n } from "./loginPage.css-4M4PrzUn.js";
2
2
  import { useEffect as r, useMemo as i, useState as a } from "react";
3
3
  import { AuthLayout as o, Button as s, FormError as c } from "@plumile/ui";
4
4
  import { jsx as l, jsxs as u } from "react/jsx-runtime";
@@ -59,4 +59,4 @@ var d = ({ onBackToLogin: d, onVerifyEmail: f, token: p }) => {
59
59
  //#endregion
60
60
  export { d as t };
61
61
 
62
- //# sourceMappingURL=VerifyEmailScreen-2DuHJgdY.js.map
62
+ //# sourceMappingURL=VerifyEmailScreen-CUOEwmf1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VerifyEmailScreen-2DuHJgdY.js","names":[],"sources":["../../src/auth/pages/VerifyEmailScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport { useEffect, useMemo, useState, type JSX } from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { AuthLayout, Button, FormError } from '@plumile/ui';\n\nimport * as styles from '../login/loginPage.css.js';\n\ntype VerificationState = 'pending' | 'success' | 'error';\n\ntype Props = {\n onBackToLogin: () => void;\n onVerifyEmail: (input: { token: string }) => Promise<boolean>;\n token?: string;\n};\n\nexport const VerifyEmailScreen = ({\n onBackToLogin,\n onVerifyEmail,\n token,\n}: Props): JSX.Element => {\n const { t } = useSharedTranslation();\n const [state, setState] = useState<VerificationState>('pending');\n const [error, setError] = useState<string | null>(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 useEffect(() => {\n if (resolvedToken === '') {\n setState('error');\n setError(t('auth.verifyEmail.errors.missingToken'));\n return;\n }\n\n // TODO: fix that !\n // eslint-disable-next-line no-void\n void onVerifyEmail({ token: resolvedToken })\n .then((success) => {\n if (success) {\n setState('success');\n } else {\n setState('error');\n setError(t('auth.verifyEmail.errors.invalid'));\n }\n })\n .catch((mutationError) => {\n setState('error');\n setError(\n mutationError instanceof Error\n ? mutationError.message\n : t('auth.verifyEmail.errors.invalid'),\n );\n });\n }, [onVerifyEmail, resolvedToken, t]);\n\n let content: JSX.Element;\n if (state === 'success') {\n content = (\n <div className={styles.stack}>\n <p className={styles.helper}>{t('auth.verifyEmail.status.success')}</p>\n <Button type=\"button\" variant=\"secondary\" onClick={onBackToLogin}>\n {t('auth.verifyEmail.actions.continue')}\n </Button>\n </div>\n );\n } else if (state === 'error') {\n content = (\n <div className={styles.stack}>\n {error != null ? <FormError>{error}</FormError> : null}\n <Button type=\"button\" variant=\"secondary\" onClick={onBackToLogin}>\n {t('auth.verifyEmail.actions.return')}\n </Button>\n </div>\n );\n } else {\n content = (\n <div className={styles.stack}>\n <p className={styles.helper}>\n {t('auth.verifyEmail.status.verifying')}\n </p>\n <Button type=\"button\" isLoading>\n {t('auth.verifyEmail.status.verifyingButton')}\n </Button>\n </div>\n );\n }\n\n return (\n <AuthLayout\n title={t('auth.verifyEmail.title')}\n subtitle={t('auth.verifyEmail.subtitle')}\n >\n {content}\n </AuthLayout>\n );\n};\n"],"mappings":";;;;;AAgBA,IAAa,KAAqB,EAChC,kBACA,kBACA,eACwB;CACxB,IAAM,EAAE,SAAM,GAAsB,EAC9B,CAAC,GAAO,KAAY,EAA4B,UAAU,EAC1D,CAAC,GAAO,KAAY,EAAwB,KAAK,EAEjD,IAAgB,QAChB,MAGA,OAAO,SAAW,MACb,KAEM,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C,IAAI,QAAQ,IAAI,KAC7B,CAAC,EAAM,CAAC;AAEX,SAAgB;AACd,MAAI,MAAkB,IAAI;AAExB,GADA,EAAS,QAAQ,EACjB,EAAS,EAAE,uCAAuC,CAAC;AACnD;;AAKG,IAAc,EAAE,OAAO,GAAe,CAAC,CACzC,MAAM,MAAY;AACjB,GAAI,IACF,EAAS,UAAU,IAEnB,EAAS,QAAQ,EACjB,EAAS,EAAE,kCAAkC,CAAC;IAEhD,CACD,OAAO,MAAkB;AAExB,GADA,EAAS,QAAQ,EACjB,EACE,aAAyB,QACrB,EAAc,UACd,EAAE,kCAAkC,CACzC;IACD;IACH;EAAC;EAAe;EAAe;EAAE,CAAC;CAErC,IAAI;AAgCJ,QA/BA,AAmBE,IAnBE,MAAU,YAEV,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACE,kBAAC,KAAD;GAAG,WAAW;aAAgB,EAAE,kCAAkC;GAAK,CAAA,EACvE,kBAAC,GAAD;GAAQ,MAAK;GAAS,SAAQ;GAAY,SAAS;aAChD,EAAE,oCAAoC;GAChC,CAAA,CACL;MAEC,MAAU,UAEjB,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACG,KAAS,OAAwC,OAAjC,kBAAC,GAAD,EAAA,UAAY,GAAkB,CAAA,EAC/C,kBAAC,GAAD;GAAQ,MAAK;GAAS,SAAQ;GAAY,SAAS;aAChD,EAAE,kCAAkC;GAC9B,CAAA,CACL;MAIN,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACE,kBAAC,KAAD;GAAG,WAAW;aACX,EAAE,oCAAoC;GACrC,CAAA,EACJ,kBAAC,GAAD;GAAQ,MAAK;GAAS,WAAA;aACnB,EAAE,0CAA0C;GACtC,CAAA,CACL;KAKR,kBAAC,GAAD;EACE,OAAO,EAAE,yBAAyB;EAClC,UAAU,EAAE,4BAA4B;YAEvC;EACU,CAAA"}
1
+ {"version":3,"file":"VerifyEmailScreen-CUOEwmf1.js","names":[],"sources":["../../src/auth/pages/VerifyEmailScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport { useEffect, useMemo, useState, type JSX } from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { AuthLayout, Button, FormError } from '@plumile/ui';\n\nimport * as styles from '../login/loginPage.css.js';\n\ntype VerificationState = 'pending' | 'success' | 'error';\n\ntype Props = {\n onBackToLogin: () => void;\n onVerifyEmail: (input: { token: string }) => Promise<boolean>;\n token?: string;\n};\n\nexport const VerifyEmailScreen = ({\n onBackToLogin,\n onVerifyEmail,\n token,\n}: Props): JSX.Element => {\n const { t } = useSharedTranslation();\n const [state, setState] = useState<VerificationState>('pending');\n const [error, setError] = useState<string | null>(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 useEffect(() => {\n if (resolvedToken === '') {\n setState('error');\n setError(t('auth.verifyEmail.errors.missingToken'));\n return;\n }\n\n // TODO: fix that !\n // eslint-disable-next-line no-void\n void onVerifyEmail({ token: resolvedToken })\n .then((success) => {\n if (success) {\n setState('success');\n } else {\n setState('error');\n setError(t('auth.verifyEmail.errors.invalid'));\n }\n })\n .catch((mutationError) => {\n setState('error');\n setError(\n mutationError instanceof Error\n ? mutationError.message\n : t('auth.verifyEmail.errors.invalid'),\n );\n });\n }, [onVerifyEmail, resolvedToken, t]);\n\n let content: JSX.Element;\n if (state === 'success') {\n content = (\n <div className={styles.stack}>\n <p className={styles.helper}>{t('auth.verifyEmail.status.success')}</p>\n <Button type=\"button\" variant=\"secondary\" onClick={onBackToLogin}>\n {t('auth.verifyEmail.actions.continue')}\n </Button>\n </div>\n );\n } else if (state === 'error') {\n content = (\n <div className={styles.stack}>\n {error != null ? <FormError>{error}</FormError> : null}\n <Button type=\"button\" variant=\"secondary\" onClick={onBackToLogin}>\n {t('auth.verifyEmail.actions.return')}\n </Button>\n </div>\n );\n } else {\n content = (\n <div className={styles.stack}>\n <p className={styles.helper}>\n {t('auth.verifyEmail.status.verifying')}\n </p>\n <Button type=\"button\" isLoading>\n {t('auth.verifyEmail.status.verifyingButton')}\n </Button>\n </div>\n );\n }\n\n return (\n <AuthLayout\n title={t('auth.verifyEmail.title')}\n subtitle={t('auth.verifyEmail.subtitle')}\n >\n {content}\n </AuthLayout>\n );\n};\n"],"mappings":";;;;;AAgBA,IAAa,KAAqB,EAChC,kBACA,kBACA,eACwB;CACxB,IAAM,EAAE,SAAM,GAAsB,EAC9B,CAAC,GAAO,KAAY,EAA4B,UAAU,EAC1D,CAAC,GAAO,KAAY,EAAwB,KAAK,EAEjD,IAAgB,QAChB,MAGA,OAAO,SAAW,MACb,KAEM,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C,IAAI,QAAQ,IAAI,KAC7B,CAAC,EAAM,CAAC;AAEX,SAAgB;AACd,MAAI,MAAkB,IAAI;AAExB,GADA,EAAS,QAAQ,EACjB,EAAS,EAAE,uCAAuC,CAAC;AACnD;;AAKG,IAAc,EAAE,OAAO,GAAe,CAAC,CACzC,MAAM,MAAY;AACjB,GAAI,IACF,EAAS,UAAU,IAEnB,EAAS,QAAQ,EACjB,EAAS,EAAE,kCAAkC,CAAC;IAEhD,CACD,OAAO,MAAkB;AAExB,GADA,EAAS,QAAQ,EACjB,EACE,aAAyB,QACrB,EAAc,UACd,EAAE,kCAAkC,CACzC;IACD;IACH;EAAC;EAAe;EAAe;EAAE,CAAC;CAErC,IAAI;AAgCJ,QA/BA,AAmBE,IAnBE,MAAU,YAEV,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACE,kBAAC,KAAD;GAAG,WAAW;aAAgB,EAAE,kCAAkC;GAAK,CAAA,EACvE,kBAAC,GAAD;GAAQ,MAAK;GAAS,SAAQ;GAAY,SAAS;aAChD,EAAE,oCAAoC;GAChC,CAAA,CACL;MAEC,MAAU,UAEjB,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACG,KAAS,OAAwC,OAAjC,kBAAC,GAAD,EAAA,UAAY,GAAkB,CAAA,EAC/C,kBAAC,GAAD;GAAQ,MAAK;GAAS,SAAQ;GAAY,SAAS;aAChD,EAAE,kCAAkC;GAC9B,CAAA,CACL;MAIN,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACE,kBAAC,KAAD;GAAG,WAAW;aACX,EAAE,oCAAoC;GACrC,CAAA,EACJ,kBAAC,GAAD;GAAQ,MAAK;GAAS,WAAA;aACnB,EAAE,0CAA0C;GACtC,CAAA,CACL;KAKR,kBAAC,GAAD;EACE,OAAO,EAAE,yBAAyB;EAClC,UAAU,EAAE,4BAA4B;YAEvC;EACU,CAAA"}
@@ -1,23 +1,23 @@
1
1
  import { i as e, n as t, r as n, t as r } from "./environment-BJeJTbIN.js";
2
2
  import { t as i } from "./useRelayEnvironment-vQ86aW-n.js";
3
- import { n as a, t as o } from "./sprinkles.css.ts.vanilla-n-NK_DwW.js";
3
+ import { n as a, t as o } from "./BackofficeConfigContext-R0t1owTI.js";
4
4
  import { i as s, t as c } from "./sidebarUtils-CuwJ_3mD.js";
5
- import { f as l } from "./loginPage.css-BDQJNcSr.js";
6
- import { a as u, i as d, n as f, r as p, t as m } from "./useAuth-AczFS-oL.js";
7
- import { n as h, t as g } from "./synchronizeAuthStatusQuery-lLR0XFew.js";
8
- import "./AuthPanel-ttoH9YxE.js";
9
- import { t as _ } from "./AcceptInvitationScreen-CNLlSbdx.js";
10
- import { t as v } from "./PasswordResetCompleteScreen-C4GQdavL.js";
11
- import { t as y } from "./PasswordResetRequestScreen-aUY_yDqM.js";
12
- import { t as ee } from "./VerifyEmailScreen-2DuHJgdY.js";
5
+ import { f as l } from "./loginPage.css-4M4PrzUn.js";
6
+ import { a as u, i as d, n as f, r as p, t as m } from "./useAuth-DzWJXJ_9.js";
7
+ import { n as h, t as g } from "./synchronizeAuthStatusQuery-Ba776lwa.js";
8
+ import "./AuthPanel-Co626p7A.js";
9
+ import { t as _ } from "./AcceptInvitationScreen-b2yaZeKV.js";
10
+ import { t as v } from "./PasswordResetCompleteScreen-CWxk9AWl.js";
11
+ import { t as y } from "./PasswordResetRequestScreen-DBIHOmsl.js";
12
+ import { t as ee } from "./VerifyEmailScreen-CUOEwmf1.js";
13
13
  import { n as te, t as b } from "./useBackofficeReactTranslation-WfXU8kCf.js";
14
- import { i as ne, n as re, t as x } from "./EntityFilterValue-SC_jkj4O.js";
15
- import { i as ie, t as ae } from "./EntityIdPickerDialog-FMC5Hx_I.js";
16
- import { a as oe, i as se, r as ce, t as le } from "./BackofficeDetailPayload-B-qs8Fai.js";
14
+ import { i as ne, n as re, t as x } from "./EntityFilterValue-Bn9VGr2M.js";
15
+ import { i as ie, t as ae } from "./EntityIdPickerDialog-D_qAlrU6.js";
16
+ import { a as oe, i as se, r as ce, t as le } from "./BackofficeDetailPayload-CbsZKnw6.js";
17
17
  import { t as ue } from "./useBackofficeListUrlState-D4fx5O7u.js";
18
18
  import { i as de, n as fe, r as pe, t as me } from "./mutationResult-CcQMY13J.js";
19
19
  import { t as he } from "./pageResolution-hAQA5C6S.js";
20
- import { n as ge, t as _e } from "./BackofficeRightPageLayout-ktdlvTZJ.js";
20
+ import { n as ge, t as _e } from "./BackofficeRightPageLayout-D7QRE8KZ.js";
21
21
  import "./BackofficeTopbarPortalContext-iD7dm4_h.js";
22
22
  import { StrictMode as ve, useCallback as S, useContext as ye, useEffect as C, useMemo as w, useRef as be, useState as T } from "react";
23
23
  import { createInstance as E } from "i18next";
@@ -998,7 +998,7 @@ var Je = {
998
998
  }, { RelayEnvironmentProvider: Ye } = k, Xe = ({ children: e }) => /* @__PURE__ */ A(Ye, {
999
999
  environment: t(),
1000
1000
  children: e
1001
- }), { loadQuery: L, usePreloadedQuery: Ze } = k, Qe = O("WrapperPage", async () => ({ default: (await import("@plumile/ui")).WrapperPage })), $e = O("BackofficeLayoutPage", async () => import("./BackofficeLayoutPage-k9OkLfXb.js")), et = O("BackofficeEntityListPage", async () => import("./BackofficeEntityListPage-BxgqdFpL.js")), tt = O("BackofficeEntityDetailPage", async () => import("./BackofficeEntityDetailPage-CdrMXu5a.js")), nt = O("BackofficeEntityDetailLayoutPage", async () => import("./BackofficeEntityDetailLayoutPage-DXjRqvcZ.js")), rt = O("BackofficeEntityDetailUnknownPageRedirect", async () => import("./BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js")), it = O("BackofficeDashboardPage", async () => import("./BackofficeDashboardPage-GKyT60qb.js")), at = O("BackofficeLoginPage", async () => import("./BackofficeLoginPage-C64BcxMw.js")), ot = O("BackofficePasswordResetRequestPage", async () => import("./BackofficePasswordResetRequestPage-B9wSZcyn.js")), st = O("BackofficePasswordResetCompletePage", async () => import("./BackofficePasswordResetCompletePage-BA7kkUxN.js")), ct = O("BackofficeVerifyEmailPage", async () => import("./BackofficeVerifyEmailPage-CAzMqo2K.js")), lt = O("BackofficeAcceptInvitationPage", async () => import("./BackofficeAcceptInvitationPage-DRxM1Z-U.js")), ut = (e) => {
1001
+ }), { loadQuery: L, usePreloadedQuery: Ze } = k, Qe = O("WrapperPage", async () => ({ default: (await import("@plumile/ui")).WrapperPage })), $e = O("BackofficeLayoutPage", async () => import("./BackofficeLayoutPage-DpvTzwtK.js")), et = O("BackofficeEntityListPage", async () => import("./BackofficeEntityListPage-CtLI15-L.js")), tt = O("BackofficeEntityDetailPage", async () => import("./BackofficeEntityDetailPage-CE4tl5ZJ.js")), nt = O("BackofficeEntityDetailLayoutPage", async () => import("./BackofficeEntityDetailLayoutPage-DXjRqvcZ.js")), rt = O("BackofficeEntityDetailUnknownPageRedirect", async () => import("./BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js")), it = O("BackofficeDashboardPage", async () => import("./BackofficeDashboardPage-B5_YC1ZL.js")), at = O("BackofficeLoginPage", async () => import("./BackofficeLoginPage-BeihjFO2.js")), ot = O("BackofficePasswordResetRequestPage", async () => import("./BackofficePasswordResetRequestPage-Df8mcLkC.js")), st = O("BackofficePasswordResetCompletePage", async () => import("./BackofficePasswordResetCompletePage-CkaMaFNT.js")), ct = O("BackofficeVerifyEmailPage", async () => import("./BackofficeVerifyEmailPage-CE_6-wGN.js")), lt = O("BackofficeAcceptInvitationPage", async () => import("./BackofficeAcceptInvitationPage-BBHL6VvG.js")), ut = (e) => {
1002
1002
  let t = e.trim();
1003
1003
  return t === "" || t === "/" ? "" : t.replace(/^\/+|\/+$/g, "");
1004
1004
  }, dt = (e) => {
@@ -1263,7 +1263,7 @@ function ht(e) {
1263
1263
  }
1264
1264
  //#endregion
1265
1265
  //#region src/components/backoffice/routing/backofficeRouteFallback.css.ts
1266
- var gt = "cxyw860 vncd899io vncd89ai6 vncd89co vncd89dnx vncd89k4o vncd89u6f vncd89aoo vncd89v2t vncd89v8r", _t = "cxyw861 vncd89v8t", vt = () => {
1266
+ var gt = "txvbqb9io txvbqbai6 txvbqbco txvbqbdnx txvbqbk4o txvbqbu6f txvbqbaoo txvbqbv2t txvbqbv8r", _t = "txvbqbv8t", vt = () => {
1267
1267
  let { t: e, i18n: t } = D("backofficeReact", { useSuspense: !1 }), n = "Loading...";
1268
1268
  return t.isInitialized && (n = e("common.loading")), /* @__PURE__ */ j("div", {
1269
1269
  className: gt,
@@ -1275,7 +1275,7 @@ var gt = "cxyw860 vncd899io vncd89ai6 vncd89co vncd89dnx vncd89k4o vncd89u6f vnc
1275
1275
  children: n
1276
1276
  })]
1277
1277
  });
1278
- }, yt = "_11exksg2 _11exksg1 vncd89v2v vncd89pso vncd89t6x vncd89dpf vncd89l6f vncd892k vncd89u6f vncd89uvf", bt = "_11exksg4 _11exksg3 vncd89cff vncd89unf", xt = () => /* @__PURE__ */ A("div", {
1278
+ }, yt = "_11exksg1 txvbqbv2v txvbqbpso txvbqbt6x txvbqbdpf txvbqbl6f txvbqb2k txvbqbu6f txvbqbuvf", bt = "_11exksg2 txvbqbcff txvbqbunf", xt = () => /* @__PURE__ */ A("div", {
1279
1279
  className: yt,
1280
1280
  "aria-hidden": "true",
1281
1281
  children: /* @__PURE__ */ A("div", { className: bt })
@@ -1527,7 +1527,7 @@ function Mt(e, t) {
1527
1527
  }
1528
1528
  //#endregion
1529
1529
  //#region src/components/backoffice/filters/backofficeFilterAction.css.ts
1530
- var Nt = "hwnq701 hwnq700 vncd899jf vncd89co vncd89dnx vncd89two vncd89c66 vncd89l9f vncd891qx vncd891co vncd891qf vncd89f6 vncd89uzj vncd89v8r vncd89v vncd893b vncd8978 vncd896w vncd897k", Pt = "hwnq702 vncd89tw6 vncd89c5o", Ft = (e, t) => e(t), It = (e) => {
1530
+ var Nt = "hwnq700 txvbqb9jf txvbqbco txvbqbdnx txvbqbtwo txvbqbc66 txvbqbl9f txvbqb1qx txvbqb1co txvbqb1qf txvbqbf6 txvbqbuzj txvbqbv8r txvbqbv txvbqb3b txvbqb78 txvbqb6w txvbqb7k", Pt = "txvbqbtw6 txvbqbc5o", Ft = (e, t) => e(t), It = (e) => {
1531
1531
  let { t } = D(), { t: n } = b(), { filterColumnAliases: r } = a(), { whereKey: i, value: o, path: s, label: c, listConfig: l } = e, u = ne(), d = null;
1532
1532
  if (l == null ? u != null && (d = u.config) : d = l, d == null) return null;
1533
1533
  let f = $(d, i, s);
@@ -1554,7 +1554,7 @@ var Nt = "hwnq701 hwnq700 vncd899jf vncd89co vncd89dnx vncd89two vncd89c66 vncd8
1554
1554
  className: Nt,
1555
1555
  children: h
1556
1556
  });
1557
- }, Lt = "_1f81p5z0 vncd899io vncd89ai6 vncd89ap6", Rt = "_1f81p5z1 vncd899io vncd89ai6 vncd89aoo", zt = "_1f81p5z2 vncd899ix vncd89bwx vncd89ap6 vncd89cf", Bt = "_1f81p5z3 vncd899io vncd89ai6 vncd89ap6", Vt = "_1f81p5z4 vncd899io vncd89ai6 vncd89ap6", Ht = ({ summary: e, aside: t, children: n, className: r }) => {
1557
+ }, Lt = "txvbqb9io txvbqbai6 txvbqbap6", Rt = "txvbqb9io txvbqbai6 txvbqbaoo", zt = "txvbqb9ix txvbqbbwx txvbqbap6 txvbqbcf", Bt = "txvbqb9io txvbqbai6 txvbqbap6", Vt = "txvbqb9io txvbqbai6 txvbqbap6", Ht = ({ summary: e, aside: t, children: n, className: r }) => {
1558
1558
  let i = null;
1559
1559
  e != null && (i = /* @__PURE__ */ A("div", {
1560
1560
  className: Rt,
@@ -1576,7 +1576,7 @@ var Nt = "hwnq701 hwnq700 vncd899jf vncd89co vncd89dnx vncd89two vncd89c66 vncd8
1576
1576
  children: [o, a]
1577
1577
  })]
1578
1578
  });
1579
- }, Ut = "kk18lv0 vncd89v8p vncd893d vncd89vvh", Wt = ({ count: e, entity: t, where: n }) => {
1579
+ }, Ut = "txvbqbv8p txvbqb3d txvbqbvvh", Wt = ({ count: e, entity: t, where: n }) => {
1580
1580
  let { entities: r, entityRegistry: i } = a(), o = ye(Ee), s = 0;
1581
1581
  typeof e == "number" && Number.isFinite(e) && (s = e);
1582
1582
  let c = r[t];
@@ -1618,7 +1618,7 @@ var Nt = "hwnq701 hwnq700 vncd899jf vncd89co vncd89dnx vncd89two vncd89c66 vncd8
1618
1618
  },
1619
1619
  children: s
1620
1620
  });
1621
- }, Gt = "_12zehnj0 vncd899io", Kt = "_12zehnj1 vncd899io vncd89ai6 vncd89aoo", qt = ({ headerNode: e, tabs: t, activeId: n, children: r }) => {
1621
+ }, Gt = "txvbqb9io", Kt = "txvbqb9io txvbqbai6 txvbqbaoo", qt = ({ headerNode: e, tabs: t, activeId: n, children: r }) => {
1622
1622
  let i = null;
1623
1623
  return t != null && t.length > 1 && n != null && (i = /* @__PURE__ */ A(ke, {
1624
1624
  items: t,
@@ -1633,7 +1633,7 @@ var Nt = "hwnq701 hwnq700 vncd899jf vncd89co vncd89dnx vncd89two vncd89c66 vncd8
1633
1633
  children: r
1634
1634
  })
1635
1635
  });
1636
- }, Jt = "_11j0ox80 vncd899jf vncd89co vncd89anx vncd89ajx", Yt = ({ children: e, className: t }) => /* @__PURE__ */ A("span", {
1636
+ }, Jt = "txvbqb9jf txvbqbco txvbqbanx txvbqbajx", Yt = ({ children: e, className: t }) => /* @__PURE__ */ A("span", {
1637
1637
  className: Pe(Jt, t),
1638
1638
  children: e
1639
1639
  });