@plumile/backoffice-react 0.1.109 → 0.1.113

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 (308) hide show
  1. package/lib/esm/auth/AuthRefreshNotice.js +2 -2
  2. package/lib/esm/auth/AuthRefreshNotice.js.map +1 -1
  3. package/lib/esm/auth/authRefreshNotice.css.js +1 -0
  4. package/lib/esm/auth/authRefreshNotice.css.js.map +1 -1
  5. package/lib/esm/auth/login/EmailCapturePanel.js +12 -9
  6. package/lib/esm/auth/login/EmailCapturePanel.js.map +1 -1
  7. package/lib/esm/auth/login/LoginFlow.js +10 -10
  8. package/lib/esm/auth/login/LoginFlow.js.map +1 -1
  9. package/lib/esm/auth/login/MethodChooser.js +14 -12
  10. package/lib/esm/auth/login/MethodChooser.js.map +1 -1
  11. package/lib/esm/auth/login/MfaChallengeForm.js +13 -10
  12. package/lib/esm/auth/login/MfaChallengeForm.js.map +1 -1
  13. package/lib/esm/auth/login/OidcButtons.js +4 -4
  14. package/lib/esm/auth/login/OidcButtons.js.map +1 -1
  15. package/lib/esm/auth/login/PasskeyLoginForm.js +13 -10
  16. package/lib/esm/auth/login/PasskeyLoginForm.js.map +1 -1
  17. package/lib/esm/auth/login/PasswordLoginPanel.js +8 -8
  18. package/lib/esm/auth/login/PasswordLoginPanel.js.map +1 -1
  19. package/lib/esm/auth/login/loginPage.css.js.map +1 -1
  20. package/lib/esm/auth/pages/AcceptInvitationScreen.js +18 -14
  21. package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +1 -1
  22. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js +16 -12
  23. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +1 -1
  24. package/lib/esm/auth/pages/PasswordResetRequestScreen.js +15 -11
  25. package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +1 -1
  26. package/lib/esm/auth/pages/VerifyEmailScreen.js +13 -11
  27. package/lib/esm/auth/pages/VerifyEmailScreen.js.map +1 -1
  28. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js +66 -54
  29. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +1 -1
  30. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js +8 -8
  31. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js.map +1 -1
  32. package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js.map +1 -1
  33. package/lib/esm/components/backoffice/actions/toastViewAction.js.map +1 -1
  34. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js +13 -12
  35. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js.map +1 -1
  36. package/lib/esm/components/backoffice/detail/BackofficeCopyButton.js +3 -3
  37. package/lib/esm/components/backoffice/detail/BackofficeCopyButton.js.map +1 -1
  38. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js +8 -8
  39. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +1 -1
  40. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js +12 -11
  41. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +1 -1
  42. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js +8 -7
  43. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js.map +1 -1
  44. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js.map +1 -1
  45. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js +6 -6
  46. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +1 -1
  47. package/lib/esm/components/backoffice/detail/BackofficeDetailHeader.js +3 -3
  48. package/lib/esm/components/backoffice/detail/BackofficeDetailHeader.js.map +1 -1
  49. package/lib/esm/components/backoffice/detail/BackofficeDetailPage.js +3 -3
  50. package/lib/esm/components/backoffice/detail/BackofficeDetailPage.js.map +1 -1
  51. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js +4 -4
  52. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js.map +1 -1
  53. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js +1 -1
  54. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js.map +1 -1
  55. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +30 -29
  56. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +1 -1
  57. package/lib/esm/components/backoffice/detail/BackofficeDetailTable.js +3 -3
  58. package/lib/esm/components/backoffice/detail/BackofficeDetailTable.js.map +1 -1
  59. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js +5 -5
  60. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +1 -1
  61. package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js +21 -19
  62. package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js.map +1 -1
  63. package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js +9 -6
  64. package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js.map +1 -1
  65. package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js +7 -7
  66. package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js.map +1 -1
  67. package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js +8 -8
  68. package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js.map +1 -1
  69. package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js +5 -5
  70. package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js.map +1 -1
  71. package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js +1 -1
  72. package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js.map +1 -1
  73. package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js +4 -4
  74. package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js.map +1 -1
  75. package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js +1 -1
  76. package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js.map +1 -1
  77. package/lib/esm/components/backoffice/detail/backofficeAuditMetadataPanel.css.js.map +1 -1
  78. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js.map +1 -1
  79. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js.map +1 -1
  80. package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js.map +1 -1
  81. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js.map +1 -1
  82. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js.map +1 -1
  83. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js.map +1 -1
  84. package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js.map +1 -1
  85. package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js.map +1 -1
  86. package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js.map +1 -1
  87. package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js.map +1 -1
  88. package/lib/esm/components/backoffice/detail/backofficeLifecycleTimelineSection.css.js.map +1 -1
  89. package/lib/esm/components/backoffice/detail/backofficePayloadInspectorSection.css.js.map +1 -1
  90. package/lib/esm/components/backoffice/detail/backofficeReferenceValue.css.js.map +1 -1
  91. package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js.map +1 -1
  92. package/lib/esm/components/backoffice/detail/backofficeScopeStack.css.js.map +1 -1
  93. package/lib/esm/components/backoffice/detail/backofficeStatusMetaBadge.css.js.map +1 -1
  94. package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js.map +1 -1
  95. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +12 -12
  96. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +1 -1
  97. package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js +11 -9
  98. package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js.map +1 -1
  99. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +18 -17
  100. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +1 -1
  101. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js.map +1 -1
  102. package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js.map +1 -1
  103. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +1 -1
  104. package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js +25 -23
  105. package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js.map +1 -1
  106. package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js.map +1 -1
  107. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js.map +1 -1
  108. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +14 -14
  109. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +1 -1
  110. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js.map +1 -1
  111. package/lib/esm/components/backoffice/layout/buildSidebarSections.js +42 -37
  112. package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -1
  113. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +1 -1
  114. package/lib/esm/components/backoffice/links/BackofficeInlineLink.js +1 -1
  115. package/lib/esm/components/backoffice/links/BackofficeInlineLink.js.map +1 -1
  116. package/lib/esm/components/backoffice/links/BackofficeLink.js +1 -1
  117. package/lib/esm/components/backoffice/links/BackofficeLink.js.map +1 -1
  118. package/lib/esm/components/backoffice/links/backofficeLink.css.js.map +1 -1
  119. package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js +1 -1
  120. package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js.map +1 -1
  121. package/lib/esm/components/backoffice/lists/backofficeListToolbar.css.js.map +1 -1
  122. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js +1 -1
  123. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +1 -1
  124. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js.map +1 -1
  125. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +31 -27
  126. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -1
  127. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +1 -1
  128. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +6 -6
  129. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +1 -1
  130. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js +4 -4
  131. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js.map +1 -1
  132. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +1 -1
  133. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +1 -1
  134. package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js.map +1 -1
  135. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js.map +1 -1
  136. package/lib/esm/components/backoffice/routing/BackofficeContentError.js +6 -5
  137. package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +1 -1
  138. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js +10 -10
  139. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +1 -1
  140. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js +10 -10
  141. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +1 -1
  142. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js.map +1 -1
  143. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js.map +1 -1
  144. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js.map +1 -1
  145. package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js.map +1 -1
  146. package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js.map +1 -1
  147. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js +3 -3
  148. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js.map +1 -1
  149. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +191 -178
  150. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
  151. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +6 -5
  152. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +1 -1
  153. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js.map +1 -1
  154. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js.map +1 -1
  155. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js +10 -9
  156. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js.map +1 -1
  157. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js +1 -1
  158. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +1 -1
  159. package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js.map +1 -1
  160. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js.map +1 -1
  161. package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js +11 -9
  162. package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js.map +1 -1
  163. package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js +7 -7
  164. package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +1 -1
  165. package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js +17 -12
  166. package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js.map +1 -1
  167. package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js +10 -10
  168. package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js.map +1 -1
  169. package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js.map +1 -1
  170. package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js.map +1 -1
  171. package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js.map +1 -1
  172. package/lib/esm/hooks/useBackofficeListUrlState.js +2 -1
  173. package/lib/esm/hooks/useBackofficeListUrlState.js.map +1 -1
  174. package/lib/esm/pages/BackofficeAcceptInvitationPage.js +1 -1
  175. package/lib/esm/pages/BackofficeAcceptInvitationPage.js.map +1 -1
  176. package/lib/esm/pages/BackofficeDashboardPage.js +72 -68
  177. package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -1
  178. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +1 -1
  179. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +1 -1
  180. package/lib/esm/pages/BackofficeEntityDetailPage.js +207 -184
  181. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
  182. package/lib/esm/pages/BackofficeEntityDetailUnknownPageRedirect.js +1 -1
  183. package/lib/esm/pages/BackofficeEntityDetailUnknownPageRedirect.js.map +1 -1
  184. package/lib/esm/pages/BackofficeEntityListPage.helpers.js.map +1 -1
  185. package/lib/esm/pages/BackofficeEntityListPage.js +143 -139
  186. package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
  187. package/lib/esm/pages/BackofficeHubPage.js +10 -9
  188. package/lib/esm/pages/BackofficeHubPage.js.map +1 -1
  189. package/lib/esm/pages/BackofficeLayoutPage.js +44 -39
  190. package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -1
  191. package/lib/esm/pages/BackofficeLoginPage.js +1 -1
  192. package/lib/esm/pages/BackofficeLoginPage.js.map +1 -1
  193. package/lib/esm/pages/BackofficePasswordResetCompletePage.js +1 -1
  194. package/lib/esm/pages/BackofficePasswordResetCompletePage.js.map +1 -1
  195. package/lib/esm/pages/BackofficeVerifyEmailPage.js +1 -1
  196. package/lib/esm/pages/BackofficeVerifyEmailPage.js.map +1 -1
  197. package/lib/esm/pages/backofficeDashboardPage.css.js.map +1 -1
  198. package/lib/esm/pages/backofficeEntityDetailPage.css.js.map +1 -1
  199. package/lib/esm/pages/backofficeEntityListPage.css.js.map +1 -1
  200. package/lib/esm/pages/dashboard/DashboardMetricGroup.js +10 -9
  201. package/lib/esm/pages/dashboard/DashboardMetricGroup.js.map +1 -1
  202. package/lib/esm/pages/dashboard/DashboardPanel.js +3 -3
  203. package/lib/esm/pages/dashboard/DashboardPanel.js.map +1 -1
  204. package/lib/esm/pages/dashboard/DashboardQuickActions.js +2 -2
  205. package/lib/esm/pages/dashboard/DashboardQuickActions.js.map +1 -1
  206. package/lib/esm/pages/dashboard/DashboardStatusList.js +1 -1
  207. package/lib/esm/pages/dashboard/DashboardStatusList.js.map +1 -1
  208. package/lib/esm/pages/dashboard/dashboardMetricGroup.css.js.map +1 -1
  209. package/lib/esm/pages/dashboard/dashboardPanel.css.js.map +1 -1
  210. package/lib/esm/pages/dashboard/dashboardQuickActions.css.js.map +1 -1
  211. package/lib/esm/pages/dashboard/dashboardStatusList.css.js.map +1 -1
  212. package/lib/esm/pages/detail/buildTabsItems.js.map +1 -1
  213. package/lib/esm/provider/BackofficeProvider.js +22 -20
  214. package/lib/esm/provider/BackofficeProvider.js.map +1 -1
  215. package/lib/esm/router/createBackofficeRoutes.js +33 -30
  216. package/lib/esm/router/createBackofficeRoutes.js.map +1 -1
  217. package/lib/esm/storybook/relay/RelayStory.css.js.map +1 -1
  218. package/lib/types/auth/AuthFlows.stories.d.ts +19 -0
  219. package/lib/types/auth/AuthFlows.stories.d.ts.map +1 -0
  220. package/lib/types/auth/AuthRefreshNotice.d.ts +1 -1
  221. package/lib/types/auth/AuthRefreshNotice.d.ts.map +1 -1
  222. package/lib/types/auth/authRefreshNotice.css.d.ts.map +1 -1
  223. package/lib/types/auth/login/EmailCapturePanel.d.ts.map +1 -1
  224. package/lib/types/auth/login/MethodChooser.d.ts.map +1 -1
  225. package/lib/types/auth/login/MfaChallengeForm.d.ts.map +1 -1
  226. package/lib/types/auth/login/PasskeyLoginForm.d.ts.map +1 -1
  227. package/lib/types/auth/login/PasswordLoginPanel.d.ts +1 -1
  228. package/lib/types/auth/login/PasswordLoginPanel.d.ts.map +1 -1
  229. package/lib/types/auth/login/loginPage.css.d.ts.map +1 -1
  230. package/lib/types/auth/pages/AcceptInvitationScreen.d.ts.map +1 -1
  231. package/lib/types/auth/pages/PasswordResetCompleteScreen.d.ts.map +1 -1
  232. package/lib/types/auth/pages/PasswordResetRequestScreen.d.ts.map +1 -1
  233. package/lib/types/auth/pages/VerifyEmailScreen.d.ts.map +1 -1
  234. package/lib/types/components/backoffice/actions/BackofficeEntityActionFormDialog.d.ts.map +1 -1
  235. package/lib/types/components/backoffice/actions/toastViewAction.d.ts +1 -1
  236. package/lib/types/components/backoffice/actions/toastViewAction.d.ts.map +1 -1
  237. package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts +1 -1
  238. package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts.map +1 -1
  239. package/lib/types/components/backoffice/detail/BackofficeCopyButton.d.ts +1 -1
  240. package/lib/types/components/backoffice/detail/BackofficeCopyButton.d.ts.map +1 -1
  241. package/lib/types/components/backoffice/detail/BackofficeDetailErrorList.d.ts.map +1 -1
  242. package/lib/types/components/backoffice/detail/BackofficeDetailField.d.ts.map +1 -1
  243. package/lib/types/components/backoffice/detail/BackofficeDetailFlagTag.d.ts +1 -1
  244. package/lib/types/components/backoffice/detail/BackofficeDetailFlagTag.d.ts.map +1 -1
  245. package/lib/types/components/backoffice/detail/BackofficeDetailPrimitives.stories.d.ts +17 -0
  246. package/lib/types/components/backoffice/detail/BackofficeDetailPrimitives.stories.d.ts.map +1 -0
  247. package/lib/types/components/backoffice/detail/BackofficeDetailRelationListBlock.d.ts.map +1 -1
  248. package/lib/types/components/backoffice/detail/BackofficeDetailTable.d.ts +1 -1
  249. package/lib/types/components/backoffice/detail/BackofficeDetailTable.d.ts.map +1 -1
  250. package/lib/types/components/backoffice/detail/BackofficeEntitySummaryHeader.d.ts.map +1 -1
  251. package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts.map +1 -1
  252. package/lib/types/components/backoffice/detail/backofficeDetailRelationLink.css.d.ts.map +1 -1
  253. package/lib/types/components/backoffice/filters/DeferredFilterSearchInput.d.ts.map +1 -1
  254. package/lib/types/components/backoffice/filters/EntityIdFilterField.d.ts.map +1 -1
  255. package/lib/types/components/backoffice/filters/backofficeFilterAction.css.d.ts.map +1 -1
  256. package/lib/types/components/backoffice/filters/entityIdFilterField.css.d.ts.map +1 -1
  257. package/lib/types/components/backoffice/hub/BackofficeHubTemplate.d.ts.map +1 -1
  258. package/lib/types/components/backoffice/hub/BackofficeHubTemplate.stories.d.ts +48 -0
  259. package/lib/types/components/backoffice/hub/BackofficeHubTemplate.stories.d.ts.map +1 -0
  260. package/lib/types/components/backoffice/hub/backofficeHubTemplate.css.d.ts.map +1 -1
  261. package/lib/types/components/backoffice/layout/backofficeSidebarActions.css.d.ts.map +1 -1
  262. package/lib/types/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.d.ts.map +1 -1
  263. package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts +1 -1
  264. package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts.map +1 -1
  265. package/lib/types/components/backoffice/layout/mapViewerToSidebarProfileView.d.ts +1 -1
  266. package/lib/types/components/backoffice/layout/mapViewerToSidebarProfileView.d.ts.map +1 -1
  267. package/lib/types/components/backoffice/lists/BackofficeListToolbar.stories.d.ts +13 -0
  268. package/lib/types/components/backoffice/lists/BackofficeListToolbar.stories.d.ts.map +1 -0
  269. package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.stories.d.ts.map +1 -1
  270. package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
  271. package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.stories.d.ts +11 -0
  272. package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.stories.d.ts.map +1 -0
  273. package/lib/types/components/backoffice/pickers/entityIdPickerDialog.css.d.ts.map +1 -1
  274. package/lib/types/components/backoffice/refs/backofficeRelatedCountLink.css.d.ts.map +1 -1
  275. package/lib/types/components/backoffice/routing/BackofficeContentError.d.ts.map +1 -1
  276. package/lib/types/components/backoffice/routing/backofficeRoutePendingBar.css.d.ts.map +1 -1
  277. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts +1 -1
  278. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
  279. package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.d.ts +1 -1
  280. package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.d.ts.map +1 -1
  281. package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.stories.d.ts.map +1 -1
  282. package/lib/types/components/backoffice/shared/BackofficeFilterableCell.d.ts.map +1 -1
  283. package/lib/types/components/backoffice/shared/backofficeFilterableCell.css.d.ts.map +1 -1
  284. package/lib/types/components/backoffice/tools/BackofficeTools.stories.d.ts +17 -0
  285. package/lib/types/components/backoffice/tools/BackofficeTools.stories.d.ts.map +1 -0
  286. package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts.map +1 -1
  287. package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts.map +1 -1
  288. package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts.map +1 -1
  289. package/lib/types/hooks/useBackofficeListUrlState.d.ts.map +1 -1
  290. package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
  291. package/lib/types/pages/BackofficeEntityListPage.helpers.d.ts +2 -1
  292. package/lib/types/pages/BackofficeEntityListPage.helpers.d.ts.map +1 -1
  293. package/lib/types/pages/BackofficeHubPage.d.ts.map +1 -1
  294. package/lib/types/pages/BackofficeLayoutPage.d.ts.map +1 -1
  295. package/lib/types/pages/backofficeEntityDetailPage.css.d.ts.map +1 -1
  296. package/lib/types/pages/dashboard/DashboardMetricGroup.d.ts.map +1 -1
  297. package/lib/types/pages/dashboard/dashboardMetricGroup.css.d.ts.map +1 -1
  298. package/lib/types/pages/dashboard/dashboardPanel.css.d.ts.map +1 -1
  299. package/lib/types/pages/dashboard/dashboardQuickActions.css.d.ts.map +1 -1
  300. package/lib/types/pages/dashboard/dashboardStatusList.css.d.ts.map +1 -1
  301. package/lib/types/pages/detail/buildTabsItems.d.ts +1 -1
  302. package/lib/types/pages/detail/buildTabsItems.d.ts.map +1 -1
  303. package/lib/types/provider/BackofficeProvider.d.ts.map +1 -1
  304. package/lib/types/provider/types.d.ts +2 -1
  305. package/lib/types/provider/types.d.ts.map +1 -1
  306. package/lib/types/router/createBackofficeRoutes.d.ts +2 -1
  307. package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
  308. package/package.json +14 -10
@@ -3,8 +3,12 @@ import { AuthPanel as r } from "../login/AuthPanel.js";
3
3
  import { useBackofficeReactTranslation as i } from "../../i18n/useBackofficeReactTranslation.js";
4
4
  import { MfaChallengeForm as a } from "../login/MfaChallengeForm.js";
5
5
  import { useCallback as o, useMemo as s, useState as c } from "react";
6
- import { AuthLayout as l, Button as u, Form as d, FormError as f, FormField as p } from "@plumile/ui";
7
- import { jsx as m, jsxs as h } from "react/jsx-runtime";
6
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
7
+ import { Button as d } from "@plumile/ui/atomic/atoms/button/Button.js";
8
+ import { FormError as f } from "@plumile/ui/atomic/molecules/form_error/FormError.js";
9
+ import { FormField as p } from "@plumile/ui/atomic/molecules/form_field/FormField.js";
10
+ import { Form as m } from "@plumile/ui/atomic/molecules/form/Form.js";
11
+ import { AuthLayout as h } from "@plumile/ui/atomic/templates/auth_layout/AuthLayout.js";
8
12
  //#region src/auth/pages/AcceptInvitationScreen.tsx
9
13
  var g = ({ auth: g, onSuccessRedirect: _, onBackToLogin: v, token: y }) => {
10
14
  let { t: b } = i(), { acceptInvitation: x } = g, [S, C] = c("idle"), [w, T] = c(""), [E, D] = c(""), [O, k] = c(!1), [A, j] = c(null), M = s(() => y ?? (typeof window > "u" ? "" : new URLSearchParams(window.location.search).get("token") ?? ""), [y]), N = o((e) => {
@@ -43,10 +47,10 @@ var g = ({ auth: g, onSuccessRedirect: _, onBackToLogin: v, token: y }) => {
43
47
  }, [_]), F = o(() => {
44
48
  C("idle"), j(null), k(!1);
45
49
  }, []);
46
- if (S === "mfa") return /* @__PURE__ */ m(l, {
50
+ if (S === "mfa") return /* @__PURE__ */ l(h, {
47
51
  title: b("auth.acceptInvitation.mfaTitle"),
48
52
  subtitle: b("auth.acceptInvitation.mfaSubtitle"),
49
- children: /* @__PURE__ */ m(a, {
53
+ children: /* @__PURE__ */ l(a, {
50
54
  auth: g,
51
55
  onSuccess: P,
52
56
  onBack: () => {
@@ -55,22 +59,22 @@ var g = ({ auth: g, onSuccessRedirect: _, onBackToLogin: v, token: y }) => {
55
59
  })
56
60
  });
57
61
  let I;
58
- return I = S === "completed" ? /* @__PURE__ */ m("div", {
62
+ return I = S === "completed" ? /* @__PURE__ */ l("div", {
59
63
  className: n,
60
- children: /* @__PURE__ */ m("p", {
64
+ children: /* @__PURE__ */ l("p", {
61
65
  className: t,
62
66
  children: b("auth.acceptInvitation.status.success")
63
67
  })
64
- }) : /* @__PURE__ */ m(r, {
68
+ }) : /* @__PURE__ */ l(r, {
65
69
  description: b("auth.acceptInvitation.subtitle"),
66
- children: /* @__PURE__ */ h(d, {
70
+ children: /* @__PURE__ */ u(m, {
67
71
  className: e,
68
72
  onSubmit: N,
69
73
  noValidate: !0,
70
74
  initialFocus: "first-form-control",
71
75
  children: [
72
- A == null ? null : /* @__PURE__ */ m(f, { children: A }),
73
- /* @__PURE__ */ m(p, {
76
+ A == null ? null : /* @__PURE__ */ l(f, { children: A }),
77
+ /* @__PURE__ */ l(p, {
74
78
  label: b("auth.acceptInvitation.form.passwordLabel"),
75
79
  name: "password",
76
80
  type: "password",
@@ -82,7 +86,7 @@ var g = ({ auth: g, onSuccessRedirect: _, onBackToLogin: v, token: y }) => {
82
86
  autoComplete: "new-password",
83
87
  required: !0
84
88
  }),
85
- /* @__PURE__ */ m(p, {
89
+ /* @__PURE__ */ l(p, {
86
90
  label: b("auth.acceptInvitation.form.confirmLabel"),
87
91
  name: "password-confirmation",
88
92
  type: "password",
@@ -94,12 +98,12 @@ var g = ({ auth: g, onSuccessRedirect: _, onBackToLogin: v, token: y }) => {
94
98
  autoComplete: "new-password",
95
99
  required: !0
96
100
  }),
97
- /* @__PURE__ */ m(u, {
101
+ /* @__PURE__ */ l(d, {
98
102
  type: "submit",
99
103
  isLoading: O,
100
104
  children: b(S === "pending" ? "auth.acceptInvitation.status.workingButton" : "auth.acceptInvitation.form.submit")
101
105
  }),
102
- /* @__PURE__ */ m(u, {
106
+ /* @__PURE__ */ l(d, {
103
107
  type: "button",
104
108
  variant: "secondary",
105
109
  onClick: v,
@@ -107,7 +111,7 @@ var g = ({ auth: g, onSuccessRedirect: _, onBackToLogin: v, token: y }) => {
107
111
  })
108
112
  ]
109
113
  })
110
- }), /* @__PURE__ */ m(l, {
114
+ }), /* @__PURE__ */ l(h, {
111
115
  title: b("auth.acceptInvitation.title"),
112
116
  children: I
113
117
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AcceptInvitationScreen.js","names":[],"sources":["../../../../src/auth/pages/AcceptInvitationScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { AuthLayout, Button, Form, FormError, FormField } 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';\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\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 if (resolvedToken === '') {\n setErrorMessage(t('auth.acceptInvitation.errors.missingToken'));\n setStatus('error');\n return;\n }\n\n if (password !== passwordConfirmation) {\n setErrorMessage(t('auth.acceptInvitation.errors.passwordMismatch'));\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 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 <div className={styles.stack}>\n <p className={styles.helper}>\n {t('auth.acceptInvitation.status.success')}\n </p>\n </div>\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 ? <FormError>{errorMessage}</FormError> : null}\n <FormField\n label={t('auth.acceptInvitation.form.passwordLabel')}\n name=\"password\"\n type=\"password\"\n value={password}\n onChange={(event) => {\n setPassword(event.target.value);\n setErrorMessage(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 <FormField\n label={t('auth.acceptInvitation.form.confirmLabel')}\n name=\"password-confirmation\"\n type=\"password\"\n value={passwordConfirmation}\n onChange={(event) => {\n setPasswordConfirmation(event.target.value);\n setErrorMessage(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\" isLoading={isSubmitting}>\n {status === 'pending'\n ? t('auth.acceptInvitation.status.workingButton')\n : t('auth.acceptInvitation.form.submit')}\n </Button>\n <Button type=\"button\" variant=\"secondary\" onClick={onBackToLogin}>\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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"}
1
+ {"version":3,"file":"AcceptInvitationScreen.js","names":[],"sources":["../../../../src/auth/pages/AcceptInvitationScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport {\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/atomic/atoms/button/Button.js';\nimport { FormError } from '@plumile/ui/atomic/molecules/form_error/FormError.js';\nimport { FormField } from '@plumile/ui/atomic/molecules/form_field/FormField.js';\nimport { Form } from '@plumile/ui/atomic/molecules/form/Form.js';\nimport { AuthLayout } from '@plumile/ui/atomic/templates/auth_layout/AuthLayout.js';\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';\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\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 if (resolvedToken === '') {\n setErrorMessage(t('auth.acceptInvitation.errors.missingToken'));\n setStatus('error');\n return;\n }\n\n if (password !== passwordConfirmation) {\n setErrorMessage(t('auth.acceptInvitation.errors.passwordMismatch'));\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 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 <div className={styles.stack}>\n <p className={styles.helper}>\n {t('auth.acceptInvitation.status.success')}\n </p>\n </div>\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 ? <FormError>{errorMessage}</FormError> : null}\n <FormField\n label={t('auth.acceptInvitation.form.passwordLabel')}\n name=\"password\"\n type=\"password\"\n value={password}\n onChange={(event) => {\n setPassword(event.target.value);\n setErrorMessage(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 <FormField\n label={t('auth.acceptInvitation.form.confirmLabel')}\n name=\"password-confirmation\"\n type=\"password\"\n value={passwordConfirmation}\n onChange={(event) => {\n setPasswordConfirmation(event.target.value);\n setErrorMessage(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\" isLoading={isSubmitting}>\n {status === 'pending'\n ? t('auth.acceptInvitation.status.workingButton')\n : t('auth.acceptInvitation.form.submit')}\n </Button>\n <Button type=\"button\" variant=\"secondary\" onClick={onBackToLogin}>\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,8 +2,12 @@ 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, Button as l, Form as u, FormError as d, FormField as f } from "@plumile/ui";
6
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
5
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
+ import { Button as u } from "@plumile/ui/atomic/atoms/button/Button.js";
7
+ import { FormError as d } from "@plumile/ui/atomic/molecules/form_error/FormError.js";
8
+ import { FormField as f } from "@plumile/ui/atomic/molecules/form_field/FormField.js";
9
+ import { Form as p } from "@plumile/ui/atomic/molecules/form/Form.js";
10
+ import { AuthLayout as m } from "@plumile/ui/atomic/templates/auth_layout/AuthLayout.js";
7
11
  //#region src/auth/pages/PasswordResetCompleteScreen.tsx
8
12
  var h = 8, g = ({ onBackToLogin: g, onCompletePasswordReset: _, token: v }) => {
9
13
  let { t: y } = i(), [b, x] = s(""), [S, C] = s(""), [w, T] = s("idle"), [E, D] = s(null), [O, k] = s(!1), A = o(() => v ?? (typeof window > "u" ? "" : new URLSearchParams(window.location.search).get("token") ?? ""), [v]), j = a((e) => {
@@ -38,31 +42,31 @@ var h = 8, g = ({ onBackToLogin: g, onCompletePasswordReset: _, token: v }) => {
38
42
  A,
39
43
  y
40
44
  ]), M;
41
- return M = w === "completed" ? /* @__PURE__ */ p(r, {
45
+ return M = w === "completed" ? /* @__PURE__ */ c(r, {
42
46
  title: y("auth.passwordResetComplete.success.title"),
43
47
  description: y("auth.passwordResetComplete.success.description"),
44
- footer: /* @__PURE__ */ p(l, {
48
+ footer: /* @__PURE__ */ c(u, {
45
49
  type: "button",
46
50
  variant: "secondary",
47
51
  className: e,
48
52
  onClick: g,
49
53
  children: y("auth.passwordResetComplete.success.action")
50
54
  }),
51
- children: /* @__PURE__ */ p("p", {
55
+ children: /* @__PURE__ */ c("p", {
52
56
  className: n,
53
57
  children: y("auth.passwordResetComplete.success.helper")
54
58
  })
55
- }) : /* @__PURE__ */ p(r, {
59
+ }) : /* @__PURE__ */ c(r, {
56
60
  title: y("auth.passwordResetComplete.form.title"),
57
61
  description: y("auth.passwordResetComplete.form.description"),
58
- children: /* @__PURE__ */ m(u, {
62
+ children: /* @__PURE__ */ l(p, {
59
63
  className: t,
60
64
  onSubmit: j,
61
65
  noValidate: !0,
62
66
  initialFocus: "first-form-control",
63
67
  children: [
64
- E == null ? null : /* @__PURE__ */ p(d, { children: E }),
65
- /* @__PURE__ */ p(f, {
68
+ E == null ? null : /* @__PURE__ */ c(d, { children: E }),
69
+ /* @__PURE__ */ c(f, {
66
70
  label: y("auth.passwordResetComplete.form.passwordLabel"),
67
71
  name: "new-password",
68
72
  type: "password",
@@ -74,7 +78,7 @@ var h = 8, g = ({ onBackToLogin: g, onCompletePasswordReset: _, token: v }) => {
74
78
  autoComplete: "new-password",
75
79
  required: !0
76
80
  }),
77
- /* @__PURE__ */ p(f, {
81
+ /* @__PURE__ */ c(f, {
78
82
  label: y("auth.passwordResetComplete.form.confirmLabel"),
79
83
  name: "confirm-password",
80
84
  type: "password",
@@ -86,14 +90,14 @@ var h = 8, g = ({ onBackToLogin: g, onCompletePasswordReset: _, token: v }) => {
86
90
  autoComplete: "new-password",
87
91
  required: !0
88
92
  }),
89
- /* @__PURE__ */ p(l, {
93
+ /* @__PURE__ */ c(u, {
90
94
  type: "submit",
91
95
  isLoading: O,
92
96
  children: y("auth.passwordResetComplete.form.submit")
93
97
  })
94
98
  ]
95
99
  })
96
- }), /* @__PURE__ */ p(c, {
100
+ }), /* @__PURE__ */ c(m, {
97
101
  title: y("auth.passwordResetComplete.title"),
98
102
  subtitle: y("auth.passwordResetComplete.subtitle"),
99
103
  children: M
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordResetCompleteScreen.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 { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { AuthLayout, Button, Form, 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 } = 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 [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\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=\"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\n className={styles.formSurface}\n onSubmit={handleSubmit}\n noValidate\n initialFocus=\"first-form-control\"\n >\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,GAA+B,EACvC,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,KAGF,IADY,gBAAgB,OAAO,SAAS,OAC5C,CAAO,IAAI,QAAQ,IAAI,KAC7B,CAAC,EAAM,CAAC,EAEL,IAAe,GAClB,MAAsC;EAIrC,IAHA,EAAM,gBAAgB,EACtB,EAAS,KAAK,EAEV,MAAkB,IAAI;GACxB,EAAS,EAAE,iDAAiD,CAAC;GAC7D;;EAGF,IAAI,EAAS,SAAS,GAAqB;GACzC,EACE,EAAE,+CAA+C,EAC/C,WAAW,GACZ,CAAC,CACH;GACD;;EAGF,IAAI,MAAa,GAAiB;GAChC,EAAS,EAAE,6CAA6C,CAAC;GACzD;;EA2BF,AAxBA,EAAgB,GAAK,GAwBrB,YAtByD;GACvD,IAAI;IAKF,AAAI,MAJkB,EAAwB;KAC5C,aAAa;KACb,OAAO;KACR,CAAC,GAEA,EAAU,YAAY,GAEtB,EAAS,EAAE,4CAA4C,CAAC;YAEnD,GAAe;IACtB,EACE,aAAyB,QACrB,EAAc,UACd,EAAE,4CAA4C,CACnD;aACO;IACR,EAAgB,GAAM;;MAIH,CAAC,YAAY,GAElC;IAEJ;EAAC;EAAyB;EAAU;EAAiB;EAAe;EAAE,CACvE,EAEG;CAyEJ,OAxEA,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,GAAD;GACE,WAAW;GACX,UAAU;GACV,YAAA;GACA,cAAa;aAJf;IAMG,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;MAEnB,AADA,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;MAEnB,AADA,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.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 { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { FormError } from '@plumile/ui/atomic/molecules/form_error/FormError.js';\nimport { FormField } from '@plumile/ui/atomic/molecules/form_field/FormField.js';\nimport { Form } from '@plumile/ui/atomic/molecules/form/Form.js';\nimport { AuthLayout } from '@plumile/ui/atomic/templates/auth_layout/AuthLayout.js';\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 } = 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 [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\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=\"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\n className={styles.formSurface}\n onSubmit={handleSubmit}\n noValidate\n initialFocus=\"first-form-control\"\n >\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":";;;;;;;;;;;AAmBA,IAAM,IAAsB,GAWf,KAA+B,EAC1C,kBACA,4BACA,eACwB;CACxB,IAAM,EAAE,SAAM,GAA+B,EACvC,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,KAGF,IADY,gBAAgB,OAAO,SAAS,OAC5C,CAAO,IAAI,QAAQ,IAAI,KAC7B,CAAC,EAAM,CAAC,EAEL,IAAe,GAClB,MAAsC;EAIrC,IAHA,EAAM,gBAAgB,EACtB,EAAS,KAAK,EAEV,MAAkB,IAAI;GACxB,EAAS,EAAE,iDAAiD,CAAC;GAC7D;;EAGF,IAAI,EAAS,SAAS,GAAqB;GACzC,EACE,EAAE,+CAA+C,EAC/C,WAAW,GACZ,CAAC,CACH;GACD;;EAGF,IAAI,MAAa,GAAiB;GAChC,EAAS,EAAE,6CAA6C,CAAC;GACzD;;EA2BF,AAxBA,EAAgB,GAAK,GAwBrB,YAtByD;GACvD,IAAI;IAKF,AAAI,MAJkB,EAAwB;KAC5C,aAAa;KACb,OAAO;KACR,CAAC,GAEA,EAAU,YAAY,GAEtB,EAAS,EAAE,4CAA4C,CAAC;YAEnD,GAAe;IACtB,EACE,aAAyB,QACrB,EAAc,UACd,EAAE,4CAA4C,CACnD;aACO;IACR,EAAgB,GAAM;;MAIH,CAAC,YAAY,GAElC;IAEJ;EAAC;EAAyB;EAAU;EAAiB;EAAe;EAAE,CACvE,EAEG;CAyEJ,OAxEA,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,GAAD;GACE,WAAW;GACX,UAAU;GACV,YAAA;GACA,cAAa;aAJf;IAMG,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;MAEnB,AADA,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;MAEnB,AADA,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"}
@@ -2,8 +2,12 @@ import { formSurface as e, helper as t } from "../login/loginPage.css.js";
2
2
  import { AuthPanel as n } from "../login/AuthPanel.js";
3
3
  import { useBackofficeReactTranslation as r } from "../../i18n/useBackofficeReactTranslation.js";
4
4
  import { useCallback as i, useMemo as a, useState as o } from "react";
5
- import { AuthLayout as s, Button as c, Form as l, FormError as u, FormField as d } from "@plumile/ui";
6
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
5
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
6
+ import { Button as l } from "@plumile/ui/atomic/atoms/button/Button.js";
7
+ import { FormError as u } from "@plumile/ui/atomic/molecules/form_error/FormError.js";
8
+ import { FormField as d } from "@plumile/ui/atomic/molecules/form_field/FormField.js";
9
+ import { Form as f } from "@plumile/ui/atomic/molecules/form/Form.js";
10
+ import { AuthLayout as p } from "@plumile/ui/atomic/templates/auth_layout/AuthLayout.js";
7
11
  //#region src/auth/pages/PasswordResetRequestScreen.tsx
8
12
  var m = ({ onStartPasswordReset: m }) => {
9
13
  let { i18n: h, t: g } = r(), [_, v] = o(""), [y, b] = o("idle"), [x, S] = o(null), [C, w] = o(!1), T = a(() => {
@@ -31,10 +35,10 @@ var m = ({ onStartPasswordReset: m }) => {
31
35
  m,
32
36
  g
33
37
  ]), D;
34
- return D = y === "sent" ? /* @__PURE__ */ f(n, {
38
+ return D = y === "sent" ? /* @__PURE__ */ s(n, {
35
39
  title: g("auth.passwordResetRequest.sent.title"),
36
40
  description: g("auth.passwordResetRequest.sent.description", { email: _ }),
37
- footer: /* @__PURE__ */ f(c, {
41
+ footer: /* @__PURE__ */ s(l, {
38
42
  type: "button",
39
43
  variant: "secondary",
40
44
  onClick: () => {
@@ -42,20 +46,20 @@ var m = ({ onStartPasswordReset: m }) => {
42
46
  },
43
47
  children: g("auth.passwordResetRequest.sent.action")
44
48
  }),
45
- children: /* @__PURE__ */ f("p", {
49
+ children: /* @__PURE__ */ s("p", {
46
50
  className: t,
47
51
  children: g("auth.passwordResetRequest.sent.helper")
48
52
  })
49
- }) : /* @__PURE__ */ f(n, {
53
+ }) : /* @__PURE__ */ s(n, {
50
54
  description: g("auth.passwordResetRequest.form.description"),
51
- children: /* @__PURE__ */ p(l, {
55
+ children: /* @__PURE__ */ c(f, {
52
56
  className: e,
53
57
  onSubmit: E,
54
58
  noValidate: !0,
55
59
  initialFocus: "first-form-control",
56
60
  children: [
57
- x == null ? null : /* @__PURE__ */ f(u, { children: x }),
58
- /* @__PURE__ */ f(d, {
61
+ x == null ? null : /* @__PURE__ */ s(u, { children: x }),
62
+ /* @__PURE__ */ s(d, {
59
63
  label: g("auth.passwordResetRequest.form.emailLabel"),
60
64
  name: "email",
61
65
  type: "email",
@@ -67,14 +71,14 @@ var m = ({ onStartPasswordReset: m }) => {
67
71
  autoComplete: "email",
68
72
  required: !0
69
73
  }),
70
- /* @__PURE__ */ f(c, {
74
+ /* @__PURE__ */ s(l, {
71
75
  type: "submit",
72
76
  isLoading: C,
73
77
  children: g("auth.passwordResetRequest.form.submit")
74
78
  })
75
79
  ]
76
80
  })
77
- }), /* @__PURE__ */ f(s, {
81
+ }), /* @__PURE__ */ s(p, {
78
82
  title: g("auth.passwordResetRequest.title"),
79
83
  children: D
80
84
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordResetRequestScreen.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 { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { AuthLayout, Button, Form, 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 } = useBackofficeReactTranslation();\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\n className={styles.formSurface}\n onSubmit={handleSubmit}\n noValidate\n initialFocus=\"first-form-control\"\n >\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 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,GAA+B,EAC7C,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;EACrC,IAAI,MAAa,IACf,OAAO;EAEL,aAAO,YAAc,MAGzB,OAAO,UAAU;IAChB,CAAC,EAAK,SAAS,CAAC,EAEb,IAAe,GAClB,MAAsC;EAIrC,IAHA,EAAM,gBAAgB,EACtB,EAAS,KAAK,EAEV,EAAM,MAAM,KAAK,IAAI;GACvB,EAAS,EAAE,iDAAiD,CAAC;GAC7D;;EAIF,AADA,EAAgB,GAAK,EACrB,EAAqB;GACnB,OAAO,EAAM,MAAM;GACnB;GACD,CAAC,CACC,MAAM,MAAY;GACjB,AAAI,IACF,EAAU,OAAO,GAEjB,EAAS,EAAE,+CAA+C,CAAC;IAE7D,CACD,OAAO,MAAkB;GACxB,EACE,aAAyB,QACrB,EAAc,UACd,EAAE,+CAA+C,CACtD;IACD,CACD,cAAc;GACb,EAAgB,GAAM;IACtB;IAEN;EAAC;EAAO;EAAQ;EAAsB;EAAE,CACzC,EAEG;CAsDJ,OArDA,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;IACb,EAAU,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,GAAD;GACE,WAAW;GACX,UAAU;GACV,YAAA;GACA,cAAa;aAJf;IAMG,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;MAEnB,AADA,EAAS,EAAM,OAAO,MAAM,EAC5B,EAAS,KAAK;;KAEhB,aAAa,EAAE,kDAAkD;KACjE,cAAa;KACb,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.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 { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { FormError } from '@plumile/ui/atomic/molecules/form_error/FormError.js';\nimport { FormField } from '@plumile/ui/atomic/molecules/form_field/FormField.js';\nimport { Form } from '@plumile/ui/atomic/molecules/form/Form.js';\nimport { AuthLayout } from '@plumile/ui/atomic/templates/auth_layout/AuthLayout.js';\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 [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\n className={styles.formSurface}\n onSubmit={handleSubmit}\n noValidate\n initialFocus=\"first-form-control\"\n >\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 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":";;;;;;;;;;;AA0BA,IAAa,KAA8B,EACzC,8BACwB;CACxB,IAAM,EAAE,SAAM,SAAM,GAA+B,EAC7C,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;EACrC,IAAI,MAAa,IACf,OAAO;EAEL,aAAO,YAAc,MAGzB,OAAO,UAAU;IAChB,CAAC,EAAK,SAAS,CAAC,EAEb,IAAe,GAClB,MAAsC;EAIrC,IAHA,EAAM,gBAAgB,EACtB,EAAS,KAAK,EAEV,EAAM,MAAM,KAAK,IAAI;GACvB,EAAS,EAAE,iDAAiD,CAAC;GAC7D;;EAIF,AADA,EAAgB,GAAK,EACrB,EAAqB;GACnB,OAAO,EAAM,MAAM;GACnB;GACD,CAAC,CACC,MAAM,MAAY;GACjB,AAAI,IACF,EAAU,OAAO,GAEjB,EAAS,EAAE,+CAA+C,CAAC;IAE7D,CACD,OAAO,MAAkB;GACxB,EACE,aAAyB,QACrB,EAAc,UACd,EAAE,+CAA+C,CACtD;IACD,CACD,cAAc;GACb,EAAgB,GAAM;IACtB;IAEN;EAAC;EAAO;EAAQ;EAAsB;EAAE,CACzC,EAEG;CAsDJ,OArDA,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;IACb,EAAU,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,GAAD;GACE,WAAW;GACX,UAAU;GACV,YAAA;GACA,cAAa;aAJf;IAMG,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;MAEnB,AADA,EAAS,EAAM,OAAO,MAAM,EAC5B,EAAS,KAAK;;KAEhB,aAAa,EAAE,kDAAkD;KACjE,cAAa;KACb,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,8 +1,10 @@
1
1
  import { helper as e, stack as t } from "../login/loginPage.css.js";
2
2
  import { useBackofficeReactTranslation as n } from "../../i18n/useBackofficeReactTranslation.js";
3
3
  import { useEffect as r, useMemo as i, useState as a } from "react";
4
- import { AuthLayout as o, Button as s, FormError as c } from "@plumile/ui";
5
- import { jsx as l, jsxs as u } from "react/jsx-runtime";
4
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
+ import { Button as c } from "@plumile/ui/atomic/atoms/button/Button.js";
6
+ import { FormError as l } from "@plumile/ui/atomic/molecules/form_error/FormError.js";
7
+ import { AuthLayout as u } from "@plumile/ui/atomic/templates/auth_layout/AuthLayout.js";
6
8
  //#region src/auth/pages/VerifyEmailScreen.tsx
7
9
  var d = ({ onBackToLogin: d, onVerifyEmail: f, token: p }) => {
8
10
  let { t: m } = n(), [h, g] = a("pending"), [_, v] = a(null), y = i(() => p ?? (typeof window > "u" ? "" : new URLSearchParams(window.location.search).get("token") ?? ""), [p]);
@@ -24,36 +26,36 @@ var d = ({ onBackToLogin: d, onVerifyEmail: f, token: p }) => {
24
26
  m
25
27
  ]);
26
28
  let b;
27
- return b = h === "success" ? /* @__PURE__ */ u("div", {
29
+ return b = h === "success" ? /* @__PURE__ */ s("div", {
28
30
  className: t,
29
- children: [/* @__PURE__ */ l("p", {
31
+ children: [/* @__PURE__ */ o("p", {
30
32
  className: e,
31
33
  children: m("auth.verifyEmail.status.success")
32
- }), /* @__PURE__ */ l(s, {
34
+ }), /* @__PURE__ */ o(c, {
33
35
  type: "button",
34
36
  variant: "secondary",
35
37
  onClick: d,
36
38
  children: m("auth.verifyEmail.actions.continue")
37
39
  })]
38
- }) : h === "error" ? /* @__PURE__ */ u("div", {
40
+ }) : h === "error" ? /* @__PURE__ */ s("div", {
39
41
  className: t,
40
- children: [_ == null ? null : /* @__PURE__ */ l(c, { children: _ }), /* @__PURE__ */ l(s, {
42
+ children: [_ == null ? null : /* @__PURE__ */ o(l, { children: _ }), /* @__PURE__ */ o(c, {
41
43
  type: "button",
42
44
  variant: "secondary",
43
45
  onClick: d,
44
46
  children: m("auth.verifyEmail.actions.return")
45
47
  })]
46
- }) : /* @__PURE__ */ u("div", {
48
+ }) : /* @__PURE__ */ s("div", {
47
49
  className: t,
48
- children: [/* @__PURE__ */ l("p", {
50
+ children: [/* @__PURE__ */ o("p", {
49
51
  className: e,
50
52
  children: m("auth.verifyEmail.status.verifying")
51
- }), /* @__PURE__ */ l(s, {
53
+ }), /* @__PURE__ */ o(c, {
52
54
  type: "button",
53
55
  isLoading: !0,
54
56
  children: m("auth.verifyEmail.status.verifyingButton")
55
57
  })]
56
- }), /* @__PURE__ */ l(o, {
58
+ }), /* @__PURE__ */ o(u, {
57
59
  title: m("auth.verifyEmail.title"),
58
60
  subtitle: m("auth.verifyEmail.subtitle"),
59
61
  children: b
@@ -1 +1 @@
1
- {"version":3,"file":"VerifyEmailScreen.js","names":[],"sources":["../../../../src/auth/pages/VerifyEmailScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport { useEffect, useMemo, useState, type JSX } from 'react';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.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 } = useBackofficeReactTranslation();\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 const verifyEmail = async (): Promise<void> => {\n try {\n const success = await onVerifyEmail({ token: resolvedToken });\n if (success) {\n setState('success');\n } else {\n setState('error');\n setError(t('auth.verifyEmail.errors.invalid'));\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 };\n\n verifyEmail().catch(() => {\n return undefined;\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,GAA+B,EACvC,CAAC,GAAO,KAAY,EAA4B,UAAU,EAC1D,CAAC,GAAO,KAAY,EAAwB,KAAK,EAEjD,IAAgB,QAChB,MAGA,OAAO,SAAW,MACb,KAGF,IADY,gBAAgB,OAAO,SAAS,OAC5C,CAAO,IAAI,QAAQ,IAAI,KAC7B,CAAC,EAAM,CAAC;CAEX,QAAgB;EACd,IAAI,MAAkB,IAAI;GAExB,AADA,EAAS,QAAQ,EACjB,EAAS,EAAE,uCAAuC,CAAC;GACnD;;EAsBF,aAnB+C;GAC7C,IAAI;IAEF,AAAI,MADkB,EAAc,EAAE,OAAO,GAAe,CAAC,GAE3D,EAAS,UAAU,IAEnB,EAAS,QAAQ,EACjB,EAAS,EAAE,kCAAkC,CAAC;YAEzC,GAAe;IAEtB,AADA,EAAS,QAAQ,EACjB,EACE,aAAyB,QACrB,EAAc,UACd,EAAE,kCAAkC,CACzC;;MAIQ,CAAC,YAAY,GAExB;IACD;EAAC;EAAe;EAAe;EAAE,CAAC;CAErC,IAAI;CAgCJ,OA/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.js","names":[],"sources":["../../../../src/auth/pages/VerifyEmailScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport { useEffect, useMemo, useState, type JSX } from 'react';\nimport { useBackofficeReactTranslation } from '../../i18n/useBackofficeReactTranslation.js';\n\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { FormError } from '@plumile/ui/atomic/molecules/form_error/FormError.js';\nimport { AuthLayout } from '@plumile/ui/atomic/templates/auth_layout/AuthLayout.js';\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 } = useBackofficeReactTranslation();\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 const verifyEmail = async (): Promise<void> => {\n try {\n const success = await onVerifyEmail({ token: resolvedToken });\n if (success) {\n setState('success');\n } else {\n setState('error');\n setError(t('auth.verifyEmail.errors.invalid'));\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 };\n\n verifyEmail().catch(() => {\n return undefined;\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":";;;;;;;;AAkBA,IAAa,KAAqB,EAChC,kBACA,kBACA,eACwB;CACxB,IAAM,EAAE,SAAM,GAA+B,EACvC,CAAC,GAAO,KAAY,EAA4B,UAAU,EAC1D,CAAC,GAAO,KAAY,EAAwB,KAAK,EAEjD,IAAgB,QAChB,MAGA,OAAO,SAAW,MACb,KAGF,IADY,gBAAgB,OAAO,SAAS,OAC5C,CAAO,IAAI,QAAQ,IAAI,KAC7B,CAAC,EAAM,CAAC;CAEX,QAAgB;EACd,IAAI,MAAkB,IAAI;GAExB,AADA,EAAS,QAAQ,EACjB,EAAS,EAAE,uCAAuC,CAAC;GACnD;;EAsBF,aAnB+C;GAC7C,IAAI;IAEF,AAAI,MADkB,EAAc,EAAE,OAAO,GAAe,CAAC,GAE3D,EAAS,UAAU,IAEnB,EAAS,QAAQ,EACjB,EAAS,EAAE,kCAAkC,CAAC;YAEzC,GAAe;IAEtB,AADA,EAAS,QAAQ,EACjB,EACE,aAAyB,QACrB,EAAc,UACd,EAAE,kCAAkC,CACzC;;MAIQ,CAAC,YAAY,GAExB;IACD;EAAC;EAAe;EAAe;EAAE,CAAC;CAErC,IAAI;CAgCJ,OA/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"}