@plumile/backoffice-react 0.1.70 → 0.1.73

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 (481) hide show
  1. package/lib/esm/{auth/pages/AcceptInvitationScreen.js → AcceptInvitationScreen-CNLlSbdx.js} +25 -29
  2. package/lib/esm/AcceptInvitationScreen-CNLlSbdx.js.map +1 -0
  3. package/lib/esm/{auth/login/AuthPanel.js → AuthPanel-ttoH9YxE.js} +7 -7
  4. package/lib/esm/AuthPanel-ttoH9YxE.js.map +1 -0
  5. package/lib/esm/BackofficeAcceptInvitationPage-DRxM1Z-U.js +30 -0
  6. package/lib/esm/BackofficeAcceptInvitationPage-DRxM1Z-U.js.map +1 -0
  7. package/lib/esm/BackofficeDashboardPage-GKyT60qb.js +195 -0
  8. package/lib/esm/BackofficeDashboardPage-GKyT60qb.js.map +1 -0
  9. package/lib/esm/BackofficeDetailPayload-B-qs8Fai.js +94 -0
  10. package/lib/esm/BackofficeDetailPayload-B-qs8Fai.js.map +1 -0
  11. package/lib/esm/{components/backoffice/actions/BackofficeEntityActionFormDialog.js → BackofficeEntityActionFormDialog-FHlW0vys.js} +120 -131
  12. package/lib/esm/BackofficeEntityActionFormDialog-FHlW0vys.js.map +1 -0
  13. package/lib/esm/{pages/detail/BackofficeEntityDetailLayoutContext.js → BackofficeEntityDetailLayoutContext-C_tBqkVq.js} +2 -2
  14. package/lib/esm/BackofficeEntityDetailLayoutContext-C_tBqkVq.js.map +1 -0
  15. package/lib/esm/BackofficeEntityDetailLayoutPage-DXjRqvcZ.js +18 -0
  16. package/lib/esm/BackofficeEntityDetailLayoutPage-DXjRqvcZ.js.map +1 -0
  17. package/lib/esm/BackofficeEntityDetailPage-CdrMXu5a.js +991 -0
  18. package/lib/esm/BackofficeEntityDetailPage-CdrMXu5a.js.map +1 -0
  19. package/lib/esm/{pages/BackofficeEntityDetailUnknownPageRedirect.js → BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js} +3 -3
  20. package/lib/esm/BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js.map +1 -0
  21. package/lib/esm/BackofficeEntityListPage-BxgqdFpL.js +385 -0
  22. package/lib/esm/BackofficeEntityListPage-BxgqdFpL.js.map +1 -0
  23. package/lib/esm/BackofficeLayoutPage-k9OkLfXb.js +485 -0
  24. package/lib/esm/BackofficeLayoutPage-k9OkLfXb.js.map +1 -0
  25. package/lib/esm/BackofficeLoginPage-C64BcxMw.js +50 -0
  26. package/lib/esm/BackofficeLoginPage-C64BcxMw.js.map +1 -0
  27. package/lib/esm/BackofficePasswordResetCompletePage-BA7kkUxN.js +60 -0
  28. package/lib/esm/BackofficePasswordResetCompletePage-BA7kkUxN.js.map +1 -0
  29. package/lib/esm/{pages/BackofficePasswordResetRequestPage.js → BackofficePasswordResetRequestPage-B9wSZcyn.js} +15 -13
  30. package/lib/esm/BackofficePasswordResetRequestPage-B9wSZcyn.js.map +1 -0
  31. package/lib/esm/BackofficeRightPageLayout-ktdlvTZJ.js +107 -0
  32. package/lib/esm/BackofficeRightPageLayout-ktdlvTZJ.js.map +1 -0
  33. package/lib/esm/{components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js → BackofficeTopbarPortalContext-iD7dm4_h.js} +2 -2
  34. package/lib/esm/BackofficeTopbarPortalContext-iD7dm4_h.js.map +1 -0
  35. package/lib/esm/BackofficeVerifyEmailPage-CAzMqo2K.js +59 -0
  36. package/lib/esm/BackofficeVerifyEmailPage-CAzMqo2K.js.map +1 -0
  37. package/lib/esm/EntityFilterValue-SC_jkj4O.js +77 -0
  38. package/lib/esm/EntityFilterValue-SC_jkj4O.js.map +1 -0
  39. package/lib/esm/EntityIdPickerDialog-FMC5Hx_I.js +308 -0
  40. package/lib/esm/EntityIdPickerDialog-FMC5Hx_I.js.map +1 -0
  41. package/lib/esm/LazyBackofficeEntityActionFormDialog-DOEgoIfT.js +486 -0
  42. package/lib/esm/LazyBackofficeEntityActionFormDialog-DOEgoIfT.js.map +1 -0
  43. package/lib/esm/{auth/pages/PasswordResetCompleteScreen.js → PasswordResetCompleteScreen-C4GQdavL.js} +21 -25
  44. package/lib/esm/PasswordResetCompleteScreen-C4GQdavL.js.map +1 -0
  45. package/lib/esm/{auth/pages/PasswordResetRequestScreen.js → PasswordResetRequestScreen-aUY_yDqM.js} +19 -23
  46. package/lib/esm/PasswordResetRequestScreen-aUY_yDqM.js.map +1 -0
  47. package/lib/esm/VerifyEmailScreen-2DuHJgdY.js +62 -0
  48. package/lib/esm/VerifyEmailScreen-2DuHJgdY.js.map +1 -0
  49. package/lib/esm/backoffice-react.js +1804 -0
  50. package/lib/esm/backoffice-react.js.map +1 -0
  51. package/lib/esm/{router/backofficeAuthPaths.js → backofficeAuthPaths-BiJvoI5Q.js} +2 -2
  52. package/lib/esm/backofficeAuthPaths-BiJvoI5Q.js.map +1 -0
  53. package/lib/esm/{components/backoffice/layout/breadcrumb/buildBreadcrumbs.js → buildBreadcrumbs-CqF9Nh6x.js} +3 -7
  54. package/lib/esm/buildBreadcrumbs-CqF9Nh6x.js.map +1 -0
  55. package/lib/esm/{relay/environment.js → environment-BJeJTbIN.js} +91 -71
  56. package/lib/esm/environment-BJeJTbIN.js.map +1 -0
  57. package/lib/esm/loginPage.css-BDQJNcSr.js +12 -0
  58. package/lib/esm/loginPage.css-BDQJNcSr.js.map +1 -0
  59. package/lib/esm/{relay/mutationResult.js → mutationResult-CcQMY13J.js} +2 -2
  60. package/lib/esm/mutationResult-CcQMY13J.js.map +1 -0
  61. package/lib/esm/{pages/detail/pageResolution.js → pageResolution-hAQA5C6S.js} +2 -2
  62. package/lib/esm/pageResolution-hAQA5C6S.js.map +1 -0
  63. package/lib/esm/{components/backoffice/layout/sidebarUtils.js → sidebarUtils-CuwJ_3mD.js} +2 -12
  64. package/lib/esm/{components/backoffice/layout/sidebarUtils.js.map → sidebarUtils-CuwJ_3mD.js.map} +1 -1
  65. package/lib/esm/{provider/BackofficeConfigContext.js → sprinkles.css.ts.vanilla-n-NK_DwW.js} +2 -2
  66. package/lib/esm/sprinkles.css.ts.vanilla-n-NK_DwW.js.map +1 -0
  67. package/lib/esm/style.css +1 -1
  68. package/lib/esm/synchronizeAuthStatusQuery-lLR0XFew.js +323 -0
  69. package/lib/esm/synchronizeAuthStatusQuery-lLR0XFew.js.map +1 -0
  70. package/lib/esm/{components/backoffice/actions/toastViewAction.js → toastViewAction-BGTS7vqm.js} +2 -2
  71. package/lib/esm/{components/backoffice/actions/toastViewAction.js.map → toastViewAction-BGTS7vqm.js.map} +1 -1
  72. package/lib/esm/useAuth-AczFS-oL.js +543 -0
  73. package/lib/esm/useAuth-AczFS-oL.js.map +1 -0
  74. package/lib/esm/useBackofficeAuth-BHteJQzA.js +89 -0
  75. package/lib/esm/useBackofficeAuth-BHteJQzA.js.map +1 -0
  76. package/lib/esm/{provider/useBackofficeLazyValue.js → useBackofficeLazyValue-B0-ckL6e.js} +7 -15
  77. package/lib/esm/useBackofficeLazyValue-B0-ckL6e.js.map +1 -0
  78. package/lib/esm/{hooks/useBackofficeListUrlState.js → useBackofficeListUrlState-D4fx5O7u.js} +2 -2
  79. package/lib/esm/useBackofficeListUrlState-D4fx5O7u.js.map +1 -0
  80. package/lib/esm/{components/backoffice/errors/BackofficeErrorBoundary.js → useBackofficeReactTranslation-WfXU8kCf.js} +9 -3
  81. package/lib/esm/useBackofficeReactTranslation-WfXU8kCf.js.map +1 -0
  82. package/lib/esm/{relay/useRelayEnvironment.js → useRelayEnvironment-vQ86aW-n.js} +2 -2
  83. package/lib/esm/useRelayEnvironment-vQ86aW-n.js.map +1 -0
  84. package/lib/types/auth/login/EmailCapturePanel.d.ts.map +1 -1
  85. package/lib/types/auth/login/MethodChooser.d.ts.map +1 -1
  86. package/lib/types/auth/login/MfaChallengeForm.d.ts.map +1 -1
  87. package/lib/types/auth/login/PasskeyLoginForm.d.ts.map +1 -1
  88. package/lib/types/auth/login/PasswordLoginPanel.d.ts +1 -1
  89. package/lib/types/auth/login/PasswordLoginPanel.d.ts.map +1 -1
  90. package/lib/types/auth/pages/AcceptInvitationScreen.d.ts.map +1 -1
  91. package/lib/types/auth/pages/PasswordResetCompleteScreen.d.ts.map +1 -1
  92. package/lib/types/auth/pages/PasswordResetRequestScreen.d.ts.map +1 -1
  93. package/lib/types/auth/pages/VerifyEmailScreen.d.ts.map +1 -1
  94. package/lib/types/components/backoffice/detail/BackofficeDetailErrorList.d.ts.map +1 -1
  95. package/lib/types/components/backoffice/detail/BackofficeDetailField.d.ts.map +1 -1
  96. package/lib/types/components/backoffice/filters/BackofficeFilterAction.d.ts.map +1 -1
  97. package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts +1 -1
  98. package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts.map +1 -1
  99. package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
  100. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
  101. package/lib/types/filters/filterHelpers.d.ts +1 -1
  102. package/lib/types/filters/filterHelpers.d.ts.map +1 -1
  103. package/lib/types/i18n/resources.d.ts +0 -12
  104. package/lib/types/i18n/resources.d.ts.map +1 -1
  105. package/lib/types/index.d.ts +5 -6
  106. package/lib/types/index.d.ts.map +1 -1
  107. package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
  108. package/lib/types/provider/BackofficeConfigContext.d.ts +1 -0
  109. package/lib/types/provider/BackofficeConfigContext.d.ts.map +1 -1
  110. package/lib/types/provider/BackofficeProvider.d.ts.map +1 -1
  111. package/lib/types/provider/types.d.ts +4 -1
  112. package/lib/types/provider/types.d.ts.map +1 -1
  113. package/lib/types/relay/environment.d.ts +1 -0
  114. package/lib/types/relay/environment.d.ts.map +1 -1
  115. package/lib/types/router/createBackofficeRoutes.d.ts +1 -1
  116. package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
  117. package/package.json +9 -9
  118. package/lib/esm/auth/login/AuthPanel.js.map +0 -1
  119. package/lib/esm/auth/login/EmailCapturePanel.js +0 -52
  120. package/lib/esm/auth/login/EmailCapturePanel.js.map +0 -1
  121. package/lib/esm/auth/login/LoginFlow.js +0 -130
  122. package/lib/esm/auth/login/LoginFlow.js.map +0 -1
  123. package/lib/esm/auth/login/MethodChooser.js +0 -51
  124. package/lib/esm/auth/login/MethodChooser.js.map +0 -1
  125. package/lib/esm/auth/login/MfaChallengeForm.js +0 -83
  126. package/lib/esm/auth/login/MfaChallengeForm.js.map +0 -1
  127. package/lib/esm/auth/login/OidcButtons.js +0 -29
  128. package/lib/esm/auth/login/OidcButtons.js.map +0 -1
  129. package/lib/esm/auth/login/PasskeyLoginForm.js +0 -84
  130. package/lib/esm/auth/login/PasskeyLoginForm.js.map +0 -1
  131. package/lib/esm/auth/login/PasswordLoginPanel.js +0 -37
  132. package/lib/esm/auth/login/PasswordLoginPanel.js.map +0 -1
  133. package/lib/esm/auth/login/loginPage.css.js +0 -8
  134. package/lib/esm/auth/login/loginPage.css.js.map +0 -1
  135. package/lib/esm/auth/login/synchronizeAuthStatusQuery.js +0 -10
  136. package/lib/esm/auth/login/synchronizeAuthStatusQuery.js.map +0 -1
  137. package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +0 -1
  138. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +0 -1
  139. package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +0 -1
  140. package/lib/esm/auth/pages/VerifyEmailScreen.js +0 -65
  141. package/lib/esm/auth/pages/VerifyEmailScreen.js.map +0 -1
  142. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +0 -1
  143. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js +0 -11
  144. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js.map +0 -1
  145. package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js +0 -8
  146. package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js.map +0 -1
  147. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js +0 -59
  148. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js.map +0 -1
  149. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js +0 -22
  150. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +0 -1
  151. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js +0 -41
  152. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +0 -1
  153. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js +0 -31
  154. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js.map +0 -1
  155. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js +0 -8
  156. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js.map +0 -1
  157. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js +0 -24
  158. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +0 -1
  159. package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js +0 -20
  160. package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js.map +0 -1
  161. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js +0 -18
  162. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js.map +0 -1
  163. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js +0 -49
  164. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js.map +0 -1
  165. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js +0 -11
  166. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js.map +0 -1
  167. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +0 -115
  168. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +0 -1
  169. package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js +0 -33
  170. package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js.map +0 -1
  171. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js +0 -18
  172. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +0 -1
  173. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +0 -8
  174. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js.map +0 -1
  175. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +0 -8
  176. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js.map +0 -1
  177. package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js +0 -15
  178. package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js.map +0 -1
  179. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +0 -8
  180. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js.map +0 -1
  181. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +0 -8
  182. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js.map +0 -1
  183. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +0 -8
  184. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js.map +0 -1
  185. package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js +0 -8
  186. package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js.map +0 -1
  187. package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js +0 -8
  188. package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js.map +0 -1
  189. package/lib/esm/components/backoffice/detail/detailPayloadUtils.js +0 -17
  190. package/lib/esm/components/backoffice/detail/detailPayloadUtils.js.map +0 -1
  191. package/lib/esm/components/backoffice/errors/BackofficeErrorBoundary.js.map +0 -1
  192. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +0 -43
  193. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +0 -1
  194. package/lib/esm/components/backoffice/filters/EntityFilterValue.js +0 -46
  195. package/lib/esm/components/backoffice/filters/EntityFilterValue.js.map +0 -1
  196. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +0 -51
  197. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +0 -1
  198. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +0 -8
  199. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js.map +0 -1
  200. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +0 -8
  201. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +0 -1
  202. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +0 -8
  203. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js.map +0 -1
  204. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js +0 -10
  205. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js.map +0 -1
  206. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +0 -38
  207. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +0 -1
  208. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js +0 -12
  209. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js.map +0 -1
  210. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js.map +0 -1
  211. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js +0 -16
  212. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js.map +0 -1
  213. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +0 -8
  214. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js.map +0 -1
  215. package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +0 -1
  216. package/lib/esm/components/backoffice/layout/breadcrumb/types.js +0 -0
  217. package/lib/esm/components/backoffice/layout/buildSidebarSections.js +0 -183
  218. package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +0 -1
  219. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js +0 -18
  220. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +0 -1
  221. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +0 -7
  222. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js.map +0 -1
  223. package/lib/esm/components/backoffice/list/RowFlagsCell.js +0 -37
  224. package/lib/esm/components/backoffice/list/RowFlagsCell.js.map +0 -1
  225. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js +0 -31
  226. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +0 -1
  227. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js +0 -8
  228. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js.map +0 -1
  229. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +0 -106
  230. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +0 -1
  231. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +0 -8
  232. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +0 -1
  233. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +0 -23
  234. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +0 -1
  235. package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js +0 -23
  236. package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js.map +0 -1
  237. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js +0 -24
  238. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js.map +0 -1
  239. package/lib/esm/components/backoffice/pickers/types.js +0 -0
  240. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js +0 -35
  241. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +0 -1
  242. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +0 -54
  243. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +0 -1
  244. package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js +0 -8
  245. package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js.map +0 -1
  246. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +0 -8
  247. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js.map +0 -1
  248. package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js +0 -24
  249. package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js.map +0 -1
  250. package/lib/esm/components/backoffice/routing/BackofficeContentError.js +0 -38
  251. package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +0 -1
  252. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js +0 -47
  253. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +0 -1
  254. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js +0 -22
  255. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +0 -1
  256. package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js +0 -12
  257. package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js.map +0 -1
  258. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +0 -8
  259. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js.map +0 -1
  260. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +0 -8
  261. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js.map +0 -1
  262. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +0 -8
  263. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js.map +0 -1
  264. package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js +0 -8
  265. package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js.map +0 -1
  266. package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js +0 -8
  267. package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js.map +0 -1
  268. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js +0 -11
  269. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js.map +0 -1
  270. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +0 -438
  271. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +0 -1
  272. package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js +0 -40
  273. package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js.map +0 -1
  274. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +0 -24
  275. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +0 -1
  276. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +0 -8
  277. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js.map +0 -1
  278. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +0 -8
  279. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js.map +0 -1
  280. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js +0 -12
  281. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +0 -1
  282. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +0 -8
  283. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js.map +0 -1
  284. package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js +0 -40
  285. package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js.map +0 -1
  286. package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js +0 -48
  287. package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +0 -1
  288. package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js +0 -58
  289. package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js.map +0 -1
  290. package/lib/esm/components/backoffice/tools/BackofficeToolsPageLayout.js +0 -81
  291. package/lib/esm/components/backoffice/tools/BackofficeToolsPageLayout.js.map +0 -1
  292. package/lib/esm/components/backoffice/tools/BackofficeToolsParamsContext.js +0 -16
  293. package/lib/esm/components/backoffice/tools/BackofficeToolsParamsContext.js.map +0 -1
  294. package/lib/esm/components/backoffice/tools/BackofficeToolsProjectPicker.js +0 -56
  295. package/lib/esm/components/backoffice/tools/BackofficeToolsProjectPicker.js.map +0 -1
  296. package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js +0 -20
  297. package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js.map +0 -1
  298. package/lib/esm/components/backoffice/tools/BackofficeToolsScopePicker.js +0 -56
  299. package/lib/esm/components/backoffice/tools/BackofficeToolsScopePicker.js.map +0 -1
  300. package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js +0 -8
  301. package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js.map +0 -1
  302. package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js +0 -8
  303. package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js.map +0 -1
  304. package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js +0 -8
  305. package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js.map +0 -1
  306. package/lib/esm/components/backoffice/tools/backofficeToolsPageLayout.css.js +0 -8
  307. package/lib/esm/components/backoffice/tools/backofficeToolsPageLayout.css.js.map +0 -1
  308. package/lib/esm/components/backoffice/tools/backofficeToolsProjectPicker.css.js +0 -8
  309. package/lib/esm/components/backoffice/tools/backofficeToolsProjectPicker.css.js.map +0 -1
  310. package/lib/esm/components/backoffice/tools/backofficeToolsScopePicker.css.js +0 -8
  311. package/lib/esm/components/backoffice/tools/backofficeToolsScopePicker.css.js.map +0 -1
  312. package/lib/esm/filters/filterHelpers.js +0 -36
  313. package/lib/esm/filters/filterHelpers.js.map +0 -1
  314. package/lib/esm/hooks/useAuth.js +0 -439
  315. package/lib/esm/hooks/useAuth.js.map +0 -1
  316. package/lib/esm/hooks/useBackofficeAuth.js +0 -89
  317. package/lib/esm/hooks/useBackofficeAuth.js.map +0 -1
  318. package/lib/esm/hooks/useBackofficeListRefetch.js +0 -40
  319. package/lib/esm/hooks/useBackofficeListRefetch.js.map +0 -1
  320. package/lib/esm/hooks/useBackofficeListUrlState.js.map +0 -1
  321. package/lib/esm/hooks/useBackofficeLoadMore.js +0 -18
  322. package/lib/esm/hooks/useBackofficeLoadMore.js.map +0 -1
  323. package/lib/esm/hooks/useBackofficeSessionAuth.js +0 -28
  324. package/lib/esm/hooks/useBackofficeSessionAuth.js.map +0 -1
  325. package/lib/esm/hooks/useBackofficeSidebarPins.js +0 -70
  326. package/lib/esm/hooks/useBackofficeSidebarPins.js.map +0 -1
  327. package/lib/esm/hooks/useBackofficeToolsUrlParams.js +0 -15
  328. package/lib/esm/hooks/useBackofficeToolsUrlParams.js.map +0 -1
  329. package/lib/esm/hooks/useConditionalSubscription.js +0 -57
  330. package/lib/esm/hooks/useConditionalSubscription.js.map +0 -1
  331. package/lib/esm/hooks/useCopyToClipboard.js +0 -31
  332. package/lib/esm/hooks/useCopyToClipboard.js.map +0 -1
  333. package/lib/esm/hooks/useRefetchNeededReload.js +0 -23
  334. package/lib/esm/hooks/useRefetchNeededReload.js.map +0 -1
  335. package/lib/esm/hooks/useSidebarGroupCollapse.js +0 -35
  336. package/lib/esm/hooks/useSidebarGroupCollapse.js.map +0 -1
  337. package/lib/esm/i18n/createI18nInstance.js +0 -62
  338. package/lib/esm/i18n/createI18nInstance.js.map +0 -1
  339. package/lib/esm/i18n/locales/en/backofficeReact.js +0 -249
  340. package/lib/esm/i18n/locales/en/backofficeReact.js.map +0 -1
  341. package/lib/esm/i18n/locales/en/shared.js +0 -207
  342. package/lib/esm/i18n/locales/en/shared.js.map +0 -1
  343. package/lib/esm/i18n/locales/fr/backofficeReact.js +0 -251
  344. package/lib/esm/i18n/locales/fr/backofficeReact.js.map +0 -1
  345. package/lib/esm/i18n/locales/fr/shared.js +0 -207
  346. package/lib/esm/i18n/locales/fr/shared.js.map +0 -1
  347. package/lib/esm/i18n/mergeResourceLanguages.js +0 -19
  348. package/lib/esm/i18n/mergeResourceLanguages.js.map +0 -1
  349. package/lib/esm/i18n/resources.js +0 -19
  350. package/lib/esm/i18n/resources.js.map +0 -1
  351. package/lib/esm/i18n/useBackofficeFormats.js +0 -23
  352. package/lib/esm/i18n/useBackofficeFormats.js.map +0 -1
  353. package/lib/esm/i18n/useBackofficeReactTranslation.js +0 -9
  354. package/lib/esm/i18n/useBackofficeReactTranslation.js.map +0 -1
  355. package/lib/esm/i18n/useReviewStatusLabel.js +0 -19
  356. package/lib/esm/i18n/useReviewStatusLabel.js.map +0 -1
  357. package/lib/esm/i18n/useSharedEnumLabels.js +0 -22
  358. package/lib/esm/i18n/useSharedEnumLabels.js.map +0 -1
  359. package/lib/esm/i18n/useSharedTranslation.js +0 -9
  360. package/lib/esm/i18n/useSharedTranslation.js.map +0 -1
  361. package/lib/esm/index.js +0 -43
  362. package/lib/esm/modules/access/viewerPermissionsPolicy.js +0 -17
  363. package/lib/esm/modules/access/viewerPermissionsPolicy.js.map +0 -1
  364. package/lib/esm/modules/base64.js +0 -23
  365. package/lib/esm/modules/base64.js.map +0 -1
  366. package/lib/esm/modules/billing/usageChartMappers.js +0 -49
  367. package/lib/esm/modules/billing/usageChartMappers.js.map +0 -1
  368. package/lib/esm/modules/formatFileSize.js +0 -28
  369. package/lib/esm/modules/formatFileSize.js.map +0 -1
  370. package/lib/esm/modules/merge/taskMergeRun.js +0 -67
  371. package/lib/esm/modules/merge/taskMergeRun.js.map +0 -1
  372. package/lib/esm/modules/projectIngestionStatus.js +0 -25
  373. package/lib/esm/modules/projectIngestionStatus.js.map +0 -1
  374. package/lib/esm/modules/sharedSchemaTypes.js +0 -0
  375. package/lib/esm/modules/webauthn.js +0 -33
  376. package/lib/esm/modules/webauthn.js.map +0 -1
  377. package/lib/esm/pages/BackofficeAcceptInvitationPage.js +0 -24
  378. package/lib/esm/pages/BackofficeAcceptInvitationPage.js.map +0 -1
  379. package/lib/esm/pages/BackofficeDashboardPage.js +0 -197
  380. package/lib/esm/pages/BackofficeDashboardPage.js.map +0 -1
  381. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +0 -18
  382. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +0 -1
  383. package/lib/esm/pages/BackofficeEntityDetailPage.js +0 -837
  384. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +0 -1
  385. package/lib/esm/pages/BackofficeEntityDetailUnknownPageRedirect.js.map +0 -1
  386. package/lib/esm/pages/BackofficeEntityListPage.js +0 -363
  387. package/lib/esm/pages/BackofficeEntityListPage.js.map +0 -1
  388. package/lib/esm/pages/BackofficeLayoutPage.js +0 -137
  389. package/lib/esm/pages/BackofficeLayoutPage.js.map +0 -1
  390. package/lib/esm/pages/BackofficeLoginPage.js +0 -46
  391. package/lib/esm/pages/BackofficeLoginPage.js.map +0 -1
  392. package/lib/esm/pages/BackofficePasswordResetCompletePage.js +0 -59
  393. package/lib/esm/pages/BackofficePasswordResetCompletePage.js.map +0 -1
  394. package/lib/esm/pages/BackofficePasswordResetRequestPage.js.map +0 -1
  395. package/lib/esm/pages/BackofficeToolsOperationPage.js +0 -464
  396. package/lib/esm/pages/BackofficeToolsOperationPage.js.map +0 -1
  397. package/lib/esm/pages/BackofficeVerifyEmailPage.js +0 -59
  398. package/lib/esm/pages/BackofficeVerifyEmailPage.js.map +0 -1
  399. package/lib/esm/pages/backofficeDashboardPage.css.js +0 -8
  400. package/lib/esm/pages/backofficeDashboardPage.css.js.map +0 -1
  401. package/lib/esm/pages/backofficeEntityDetailPage.css.js +0 -8
  402. package/lib/esm/pages/backofficeEntityDetailPage.css.js.map +0 -1
  403. package/lib/esm/pages/backofficeEntityListPage.css.js +0 -8
  404. package/lib/esm/pages/backofficeEntityListPage.css.js.map +0 -1
  405. package/lib/esm/pages/detail/BackofficeEntityDetailLayoutContext.js.map +0 -1
  406. package/lib/esm/pages/detail/buildTabsItems.js +0 -10
  407. package/lib/esm/pages/detail/buildTabsItems.js.map +0 -1
  408. package/lib/esm/pages/detail/pageResolution.js.map +0 -1
  409. package/lib/esm/provider/BackofficeConfigContext.js.map +0 -1
  410. package/lib/esm/provider/BackofficeProvider.js +0 -150
  411. package/lib/esm/provider/BackofficeProvider.js.map +0 -1
  412. package/lib/esm/provider/entityRegistry.js +0 -91
  413. package/lib/esm/provider/entityRegistry.js.map +0 -1
  414. package/lib/esm/provider/lazyValue.js +0 -14
  415. package/lib/esm/provider/lazyValue.js.map +0 -1
  416. package/lib/esm/provider/types.js +0 -0
  417. package/lib/esm/provider/useBackofficeEntityLoader.js +0 -137
  418. package/lib/esm/provider/useBackofficeEntityLoader.js.map +0 -1
  419. package/lib/esm/provider/useBackofficeLazyValue.js.map +0 -1
  420. package/lib/esm/relay/RelayProvider.js +0 -12
  421. package/lib/esm/relay/RelayProvider.js.map +0 -1
  422. package/lib/esm/relay/createInlineDataReader.js +0 -2
  423. package/lib/esm/relay/createInlineReader.js +0 -7
  424. package/lib/esm/relay/createInlineReader.js.map +0 -1
  425. package/lib/esm/relay/envHelpers.js +0 -46
  426. package/lib/esm/relay/envHelpers.js.map +0 -1
  427. package/lib/esm/relay/environment.js.map +0 -1
  428. package/lib/esm/relay/identityView.js +0 -6
  429. package/lib/esm/relay/identityView.js.map +0 -1
  430. package/lib/esm/relay/mutationResult.js.map +0 -1
  431. package/lib/esm/relay/useRelayEnvironment.js.map +0 -1
  432. package/lib/esm/router/backofficeAuthPaths.js.map +0 -1
  433. package/lib/esm/router/createBackofficeRoutes.js +0 -273
  434. package/lib/esm/router/createBackofficeRoutes.js.map +0 -1
  435. package/lib/esm/style.js +0 -1
  436. package/lib/esm/subscriptions/conversationStream.js +0 -38
  437. package/lib/esm/subscriptions/conversationStream.js.map +0 -1
  438. package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts +0 -11
  439. package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts.map +0 -1
  440. package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts +0 -8
  441. package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts.map +0 -1
  442. package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts +0 -15
  443. package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts.map +0 -1
  444. package/lib/types/components/backoffice/tools/BackofficeToolsPageLayout.d.ts +0 -13
  445. package/lib/types/components/backoffice/tools/BackofficeToolsPageLayout.d.ts.map +0 -1
  446. package/lib/types/components/backoffice/tools/BackofficeToolsParamsContext.d.ts +0 -14
  447. package/lib/types/components/backoffice/tools/BackofficeToolsParamsContext.d.ts.map +0 -1
  448. package/lib/types/components/backoffice/tools/BackofficeToolsProjectPicker.d.ts +0 -8
  449. package/lib/types/components/backoffice/tools/BackofficeToolsProjectPicker.d.ts.map +0 -1
  450. package/lib/types/components/backoffice/tools/BackofficeToolsQueryBoundary.d.ts +0 -7
  451. package/lib/types/components/backoffice/tools/BackofficeToolsQueryBoundary.d.ts.map +0 -1
  452. package/lib/types/components/backoffice/tools/BackofficeToolsScopePicker.d.ts +0 -8
  453. package/lib/types/components/backoffice/tools/BackofficeToolsScopePicker.d.ts.map +0 -1
  454. package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts +0 -8
  455. package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts.map +0 -1
  456. package/lib/types/components/backoffice/tools/backofficeToolsForm.css.d.ts +0 -6
  457. package/lib/types/components/backoffice/tools/backofficeToolsForm.css.d.ts.map +0 -1
  458. package/lib/types/components/backoffice/tools/backofficeToolsJsonForm.css.d.ts +0 -4
  459. package/lib/types/components/backoffice/tools/backofficeToolsJsonForm.css.d.ts.map +0 -1
  460. package/lib/types/components/backoffice/tools/backofficeToolsPageLayout.css.d.ts +0 -13
  461. package/lib/types/components/backoffice/tools/backofficeToolsPageLayout.css.d.ts.map +0 -1
  462. package/lib/types/components/backoffice/tools/backofficeToolsProjectPicker.css.d.ts +0 -4
  463. package/lib/types/components/backoffice/tools/backofficeToolsProjectPicker.css.d.ts.map +0 -1
  464. package/lib/types/components/backoffice/tools/backofficeToolsScopePicker.css.d.ts +0 -4
  465. package/lib/types/components/backoffice/tools/backofficeToolsScopePicker.css.d.ts.map +0 -1
  466. package/lib/types/hooks/useBackofficeToolsUrlParams.d.ts +0 -8
  467. package/lib/types/hooks/useBackofficeToolsUrlParams.d.ts.map +0 -1
  468. package/lib/types/i18n/useSharedEnumLabels.d.ts +0 -6
  469. package/lib/types/i18n/useSharedEnumLabels.d.ts.map +0 -1
  470. package/lib/types/modules/access/viewerPermissionsPolicy.d.ts +0 -38
  471. package/lib/types/modules/access/viewerPermissionsPolicy.d.ts.map +0 -1
  472. package/lib/types/modules/billing/usageChartMappers.d.ts +0 -26
  473. package/lib/types/modules/billing/usageChartMappers.d.ts.map +0 -1
  474. package/lib/types/modules/merge/taskMergeRun.d.ts +0 -48
  475. package/lib/types/modules/merge/taskMergeRun.d.ts.map +0 -1
  476. package/lib/types/modules/projectIngestionStatus.d.ts +0 -9
  477. package/lib/types/modules/projectIngestionStatus.d.ts.map +0 -1
  478. package/lib/types/pages/BackofficeToolsOperationPage.d.ts +0 -9
  479. package/lib/types/pages/BackofficeToolsOperationPage.d.ts.map +0 -1
  480. package/lib/types/subscriptions/conversationStream.d.ts +0 -12
  481. package/lib/types/subscriptions/conversationStream.d.ts.map +0 -1
@@ -0,0 +1,323 @@
1
+ import { a as e, c as t, d as n, f as r, o as i, r as a, s as o, t as s } from "./loginPage.css-BDQJNcSr.js";
2
+ import { o as c } from "./useAuth-AczFS-oL.js";
3
+ import { t as l } from "./AuthPanel-ttoH9YxE.js";
4
+ import { useCallback as u, useEffect as d, useMemo as f, useRef as p, useState as m } from "react";
5
+ import { Trans as h } from "react-i18next";
6
+ import { AuthLayout as g, Button as _, FormError as v, FormField as y, LoginForm as b, cx as x } from "@plumile/ui";
7
+ import S from "relay-runtime";
8
+ import { jsx as C, jsxs as w } from "react/jsx-runtime";
9
+ //#region src/auth/login/PasskeyLoginForm.tsx
10
+ var T = ({ auth: i, onSuccess: a, defaultEmail: c, isAttemptingPasskey: l = !1, onShowMethods: f }) => {
11
+ let { t: p } = r(), [h, g] = m(i.emailHint ?? ""), [b, x] = m(null);
12
+ d(() => {
13
+ i.emailHint != null && i.emailHint !== "" ? g(i.emailHint) : c != null && c !== "" && g(c);
14
+ }, [i.emailHint, c]);
15
+ let S = u(async (e) => {
16
+ if (e.preventDefault(), x(null), h.trim() === "") {
17
+ x(p("auth.passkey.errors.emailRequired"));
18
+ return;
19
+ }
20
+ try {
21
+ let e = await i.beginAuthentication(h.trim());
22
+ if (Array.isArray(e.methods) && e.methods.length === 0) {
23
+ x(e.lockedUntil == null ? p("auth.passkey.errors.locked") : p("auth.passkey.errors.lockedWithTime", { time: new Date(e.lockedUntil).toLocaleString() }));
24
+ return;
25
+ }
26
+ if (Array.isArray(e.methods) && !e.methods.includes("PASSKEY")) {
27
+ x(p("auth.passkey.errors.notAvailable"));
28
+ return;
29
+ }
30
+ await i.loginWithPasskey({ email: h.trim() }) === "success" && a();
31
+ } catch {
32
+ let e = i.error?.message;
33
+ x(e ?? p("auth.passkey.errors.failed"));
34
+ }
35
+ }, [
36
+ i,
37
+ h,
38
+ a,
39
+ p
40
+ ]), T = b ?? i.error?.message ?? null;
41
+ return /* @__PURE__ */ w("form", {
42
+ className: e,
43
+ onSubmit: S,
44
+ noValidate: !0,
45
+ children: [/* @__PURE__ */ w("div", {
46
+ className: n,
47
+ children: [
48
+ /* @__PURE__ */ C("p", {
49
+ className: o,
50
+ children: p("auth.passkey.helper")
51
+ }),
52
+ T == null ? null : /* @__PURE__ */ C(v, { children: T }),
53
+ /* @__PURE__ */ C(y, {
54
+ label: p("auth.passkey.form.emailLabel"),
55
+ name: "passkey-email",
56
+ type: "email",
57
+ value: h,
58
+ onChange: (e) => {
59
+ g(e.target.value), x(null);
60
+ },
61
+ placeholder: p("auth.passkey.form.emailPlaceholder"),
62
+ autoComplete: "email",
63
+ required: !0
64
+ })
65
+ ]
66
+ }), /* @__PURE__ */ w("div", {
67
+ className: s,
68
+ children: [/* @__PURE__ */ C(_, {
69
+ type: "submit",
70
+ variant: "primary",
71
+ isLoading: i.isLoading,
72
+ children: p(l ? "auth.passkey.actions.submitting" : "auth.passkey.actions.submit")
73
+ }), f == null ? null : /* @__PURE__ */ C("button", {
74
+ type: "button",
75
+ className: t,
76
+ onClick: f,
77
+ children: p("auth.passkey.actions.showMethods")
78
+ })]
79
+ })]
80
+ });
81
+ }, E = ({ email: s, methods: c, lockedUntil: l, onSelect: u, onBack: d }) => {
82
+ let { t: f } = r(), p = c.length === 0, m = l == null ? f("auth.methodChooser.locked") : f("auth.methodChooser.lockedWithTime", { time: new Date(l).toLocaleString() }), g = c.map((e) => {
83
+ let t = e === "PASSKEY" ? f("auth.methodChooser.methods.passkey") : e === "PASSWORD" ? f("auth.methodChooser.methods.password") : f("auth.methodChooser.methods.other", { method: e.toLowerCase() });
84
+ return /* @__PURE__ */ C(_, {
85
+ type: "button",
86
+ variant: "secondary",
87
+ onClick: () => {
88
+ u(e);
89
+ },
90
+ className: x(i, a),
91
+ children: t
92
+ }, e);
93
+ });
94
+ return /* @__PURE__ */ C("div", {
95
+ className: e,
96
+ children: /* @__PURE__ */ w("div", {
97
+ className: n,
98
+ children: [
99
+ /* @__PURE__ */ C("p", {
100
+ className: o,
101
+ children: /* @__PURE__ */ C(h, {
102
+ i18nKey: "auth.methodChooser.prompt",
103
+ values: { email: s },
104
+ components: { strong: /* @__PURE__ */ C("strong", {}) }
105
+ })
106
+ }),
107
+ p ? /* @__PURE__ */ C(v, { children: m }) : null,
108
+ p ? null : g,
109
+ /* @__PURE__ */ C(_, {
110
+ type: "button",
111
+ variant: "text",
112
+ onClick: d,
113
+ className: t,
114
+ children: f("auth.methodChooser.actions.back")
115
+ })
116
+ ]
117
+ })
118
+ });
119
+ }, D = ({ email: n, errorMessage: i, isLoading: a, onEmailChange: c, onContinue: u, onForgotPassword: d }) => {
120
+ let { t: f } = r();
121
+ return /* @__PURE__ */ C(l, { children: /* @__PURE__ */ w("div", {
122
+ className: e,
123
+ children: [
124
+ /* @__PURE__ */ C("p", {
125
+ className: o,
126
+ children: f("auth.emailCapture.description")
127
+ }),
128
+ i != null && /* @__PURE__ */ C(v, { children: i }),
129
+ /* @__PURE__ */ C(y, {
130
+ label: f("auth.emailCapture.emailLabel"),
131
+ name: "email",
132
+ type: "email",
133
+ value: n,
134
+ onChange: (e) => {
135
+ c(e.target.value);
136
+ },
137
+ placeholder: f("auth.emailCapture.emailPlaceholder"),
138
+ autoComplete: "email",
139
+ required: !0
140
+ }),
141
+ /* @__PURE__ */ w("div", {
142
+ className: s,
143
+ children: [/* @__PURE__ */ C(_, {
144
+ type: "button",
145
+ variant: "primary",
146
+ onClick: u,
147
+ isLoading: a,
148
+ children: f("auth.emailCapture.continue")
149
+ }), /* @__PURE__ */ C("button", {
150
+ type: "button",
151
+ className: t,
152
+ onClick: d,
153
+ children: f("auth.emailCapture.forgotPassword")
154
+ })]
155
+ })
156
+ ]
157
+ }) });
158
+ }, O = "/auth/oidc/start", k = ({ providers: e }) => {
159
+ let { t } = r();
160
+ return e.length === 0 ? null : /* @__PURE__ */ C("div", {
161
+ className: n,
162
+ children: e.map((e) => {
163
+ let n = t("auth.oidc.buttons.generic");
164
+ e === "GOOGLE" ? n = t("auth.oidc.buttons.google") : e === "APPLE" && (n = t("auth.oidc.buttons.apple"));
165
+ let r = e.toLowerCase();
166
+ return /* @__PURE__ */ C(_, {
167
+ type: "button",
168
+ variant: "secondary",
169
+ className: a,
170
+ onClick: () => {
171
+ window.location.assign(`${O}?provider=${r}`);
172
+ },
173
+ children: n
174
+ }, e);
175
+ })
176
+ });
177
+ }, A = ({ auth: n, defaultEmail: i, onForgotPassword: a, onSuccess: o, providers: c }) => {
178
+ let { t: u } = r();
179
+ return /* @__PURE__ */ C(l, {
180
+ title: u("auth.passwordLogin.title"),
181
+ children: /* @__PURE__ */ w("div", {
182
+ className: e,
183
+ children: [
184
+ /* @__PURE__ */ C(b, {
185
+ auth: n,
186
+ onSuccess: o,
187
+ defaultEmail: i
188
+ }),
189
+ /* @__PURE__ */ C("div", {
190
+ className: s,
191
+ children: /* @__PURE__ */ C("button", {
192
+ type: "button",
193
+ className: t,
194
+ onClick: a,
195
+ children: u("auth.passwordLogin.forgotPassword")
196
+ })
197
+ }),
198
+ /* @__PURE__ */ C(k, { providers: c })
199
+ ]
200
+ })
201
+ });
202
+ }, j = ({ auth: e, oidcProviders: t, onLoginSuccess: n, onForgotPassword: i }) => {
203
+ let { t: a } = r(), [o, s] = m(""), [h, _] = m([]), [v, y] = m(null), [b, x] = m("email"), [S, w] = m(!1), [O, k] = m(null), j = p(!0), M = f(() => ({
204
+ ...e,
205
+ beginAuthentication: async (t) => {
206
+ let n = await e.beginAuthentication(t);
207
+ return s(t), _(n.methods), y(n.lockedUntil), n;
208
+ }
209
+ }), [e]), N = u(({ force: t } = { force: !1 }) => {
210
+ !t && e.nextStep === "TOTP" || n();
211
+ }, [e.nextStep, n]), P = e.nextStep === "TOTP" || b === "mfa", F = a(P ? "auth.loginFlow.title.mfa" : "auth.loginFlow.title.default"), I = a(P ? "auth.loginFlow.subtitle.mfa" : "auth.loginFlow.subtitle.default"), L = u(async (t) => {
212
+ k(null);
213
+ try {
214
+ let n = t.trim(), r = await e.beginAuthentication(n);
215
+ s(n), _(r.methods), y(r.lockedUntil), r.methods.some((e) => e === "PASSKEY") ? x("passkey") : r.methods.includes("PASSWORD") ? x("password") : x("methods");
216
+ } catch (e) {
217
+ k(e instanceof Error ? e.message : a("auth.loginFlow.errors.tryAgain"));
218
+ }
219
+ }, [e, a]);
220
+ d(() => {
221
+ j.current = !0;
222
+ let e = o.trim();
223
+ return b === "passkey" && !S && e !== "" && (w(!0), (async () => {
224
+ try {
225
+ let t = await M.loginWithPasskey({ email: e });
226
+ if (!j.current) return;
227
+ if (t === "success") {
228
+ N();
229
+ return;
230
+ }
231
+ if (t === "mfa-required") {
232
+ x("mfa");
233
+ return;
234
+ }
235
+ x("methods"), k(a("auth.loginFlow.errors.passkeyUnavailable"));
236
+ } catch (e) {
237
+ if (!j.current) return;
238
+ k(e instanceof Error ? e.message : a("auth.loginFlow.errors.passkeyUnavailable")), x("methods");
239
+ }
240
+ })().catch(() => {})), () => {
241
+ j.current = !1;
242
+ };
243
+ }, [
244
+ o,
245
+ N,
246
+ S,
247
+ M,
248
+ a,
249
+ b
250
+ ]);
251
+ let R;
252
+ return R = P ? /* @__PURE__ */ C(l, { children: /* @__PURE__ */ C(c, {
253
+ auth: e,
254
+ onSuccess: () => {
255
+ N({ force: !0 });
256
+ },
257
+ onBack: () => {
258
+ e.reset(), x("email");
259
+ }
260
+ }) }) : b === "passkey" ? /* @__PURE__ */ C(l, {
261
+ title: a("auth.loginFlow.passkey.title"),
262
+ description: a("auth.loginFlow.passkey.description", { email: o }),
263
+ children: /* @__PURE__ */ C(T, {
264
+ auth: M,
265
+ onSuccess: N,
266
+ onShowMethods: () => {
267
+ x("methods");
268
+ },
269
+ defaultEmail: o,
270
+ isAttemptingPasskey: e.isLoading
271
+ })
272
+ }) : b === "methods" ? /* @__PURE__ */ C(l, {
273
+ title: a("auth.loginFlow.methods.title"),
274
+ children: /* @__PURE__ */ C(E, {
275
+ email: o,
276
+ methods: h,
277
+ lockedUntil: v,
278
+ onSelect: (e) => {
279
+ if (e === "PASSKEY") {
280
+ x("passkey");
281
+ return;
282
+ }
283
+ e === "PASSWORD" && x("password");
284
+ },
285
+ onBack: () => {
286
+ x("email");
287
+ }
288
+ })
289
+ }) : b === "password" ? /* @__PURE__ */ C(A, {
290
+ auth: M,
291
+ defaultEmail: o,
292
+ onForgotPassword: i,
293
+ onSuccess: N,
294
+ providers: t
295
+ }) : /* @__PURE__ */ C(D, {
296
+ email: o,
297
+ errorMessage: O,
298
+ isLoading: e.isLoading,
299
+ onEmailChange: (e) => {
300
+ s(e), k(null);
301
+ },
302
+ onContinue: () => {
303
+ let e = o.trim();
304
+ if (e === "") {
305
+ k(a("auth.loginFlow.errors.emailRequired"));
306
+ return;
307
+ }
308
+ L(e).catch(() => {});
309
+ },
310
+ onForgotPassword: i
311
+ }), /* @__PURE__ */ C(g, {
312
+ title: F,
313
+ subtitle: I,
314
+ children: R
315
+ });
316
+ }, { fetchQuery: M } = S;
317
+ async function N(e, t) {
318
+ return (await M(e, t, {}, { fetchPolicy: "network-only" }).toPromise())?.isLoggedIn === !0;
319
+ }
320
+ //#endregion
321
+ export { j as n, N as t };
322
+
323
+ //# sourceMappingURL=synchronizeAuthStatusQuery-lLR0XFew.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synchronizeAuthStatusQuery-lLR0XFew.js","names":[],"sources":["../../src/auth/login/PasskeyLoginForm.tsx","../../src/auth/login/MethodChooser.tsx","../../src/auth/login/EmailCapturePanel.tsx","../../src/auth/login/OidcButtons.tsx","../../src/auth/login/PasswordLoginPanel.tsx","../../src/auth/login/LoginFlow.tsx","../../src/auth/login/synchronizeAuthStatusQuery.ts"],"sourcesContent":["/* eslint-disable no-ternary */\nimport {\n useCallback,\n useEffect,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { Button, FormError, FormField } from '@plumile/ui';\n\nimport type { UseAuthReturn } from '../../hooks/useAuth.js';\n\nimport * as styles from './loginPage.css.js';\n\ntype Props = {\n auth: Pick<\n UseAuthReturn,\n | 'loginWithPasskey'\n | 'isLoading'\n | 'error'\n | 'emailHint'\n | 'nextStep'\n | 'beginAuthentication'\n | 'lockedUntil'\n | 'availableMethods'\n >;\n onSuccess: () => void;\n defaultEmail?: string;\n isAttemptingPasskey?: boolean;\n onShowMethods?: () => void;\n};\n\nexport const PasskeyLoginForm = ({\n auth,\n onSuccess,\n defaultEmail,\n isAttemptingPasskey = false,\n onShowMethods,\n}: Props): JSX.Element => {\n const { t } = useSharedTranslation();\n const [email, setEmail] = useState(auth.emailHint ?? '');\n const [localError, setLocalError] = useState<string | null>(null);\n\n useEffect(() => {\n if (auth.emailHint != null && auth.emailHint !== '') {\n setEmail(auth.emailHint);\n } else if (defaultEmail != null && defaultEmail !== '') {\n setEmail(defaultEmail);\n }\n }, [auth.emailHint, defaultEmail]);\n\n const handleSubmit = useCallback(\n async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n setLocalError(null);\n\n if (email.trim() === '') {\n setLocalError(t('auth.passkey.errors.emailRequired'));\n return;\n }\n\n try {\n const result = await auth.beginAuthentication(email.trim());\n if (Array.isArray(result.methods) && result.methods.length === 0) {\n const lockedUntilMessage =\n result.lockedUntil != null\n ? t('auth.passkey.errors.lockedWithTime', {\n time: new Date(result.lockedUntil).toLocaleString(),\n })\n : t('auth.passkey.errors.locked');\n setLocalError(lockedUntilMessage);\n return;\n }\n if (\n Array.isArray(result.methods) &&\n !result.methods.includes('PASSKEY')\n ) {\n setLocalError(t('auth.passkey.errors.notAvailable'));\n return;\n }\n\n const status = await auth.loginWithPasskey({ email: email.trim() });\n if (status === 'success') {\n onSuccess();\n }\n } catch {\n const authMessage = auth.error?.message;\n setLocalError(authMessage ?? t('auth.passkey.errors.failed'));\n }\n },\n [auth, email, onSuccess, t],\n );\n\n const formError = localError ?? auth.error?.message ?? null;\n\n return (\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n <form className={styles.formSurface} onSubmit={handleSubmit} noValidate>\n <div className={styles.stack}>\n <p className={styles.helper}>{t('auth.passkey.helper')}</p>\n {formError != null ? <FormError>{formError}</FormError> : null}\n <FormField\n label={t('auth.passkey.form.emailLabel')}\n name=\"passkey-email\"\n type=\"email\"\n value={email}\n onChange={(event) => {\n setEmail(event.target.value);\n setLocalError(null);\n }}\n placeholder={t('auth.passkey.form.emailPlaceholder')}\n autoComplete=\"email\"\n required\n />\n </div>\n <div className={styles.actionsRow}>\n <Button type=\"submit\" variant=\"primary\" isLoading={auth.isLoading}>\n {isAttemptingPasskey\n ? t('auth.passkey.actions.submitting')\n : t('auth.passkey.actions.submit')}\n </Button>\n {onShowMethods != null ? (\n <button\n type=\"button\"\n className={styles.inlineLink}\n onClick={onShowMethods}\n >\n {t('auth.passkey.actions.showMethods')}\n </button>\n ) : null}\n </div>\n </form>\n );\n};\n","/* eslint-disable no-ternary */\nimport { type JSX } from 'react';\nimport { Trans } from 'react-i18next';\nimport { Button, FormError, cx } from '@plumile/ui';\n\nimport type { AuthMethod } from '../../modules/sharedSchemaTypes.js';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport * as styles from './loginPage.css.js';\n\ntype Props = {\n email: string;\n methods: readonly AuthMethod[];\n lockedUntil: string | null;\n onSelect: (method: AuthMethod) => void;\n onBack: () => void;\n};\n\nexport const MethodChooser = ({\n email,\n methods,\n lockedUntil,\n onSelect,\n onBack,\n}: Props): JSX.Element => {\n const { t } = useSharedTranslation();\n const isLocked = methods.length === 0;\n const lockedMessage =\n lockedUntil != null\n ? t('auth.methodChooser.lockedWithTime', {\n time: new Date(lockedUntil).toLocaleString(),\n })\n : t('auth.methodChooser.locked');\n\n const methodButtons = methods.map((method) => {\n const label =\n method === 'PASSKEY'\n ? t('auth.methodChooser.methods.passkey')\n : method === 'PASSWORD'\n ? t('auth.methodChooser.methods.password')\n : t('auth.methodChooser.methods.other', {\n method: method.toLowerCase(),\n });\n return (\n <Button\n key={method}\n type=\"button\"\n variant=\"secondary\"\n onClick={() => {\n onSelect(method);\n }}\n className={cx(styles.fullWidth, styles.brandGhostButton)}\n >\n {label}\n </Button>\n );\n });\n\n return (\n <div className={styles.formSurface}>\n <div className={styles.stack}>\n <p className={styles.helper}>\n <Trans\n i18nKey=\"auth.methodChooser.prompt\"\n values={{ email }}\n components={{ strong: <strong /> }}\n />\n </p>\n {isLocked ? <FormError>{lockedMessage}</FormError> : null}\n {!isLocked ? methodButtons : null}\n <Button\n type=\"button\"\n variant=\"text\"\n onClick={onBack}\n className={styles.inlineLink}\n >\n {t('auth.methodChooser.actions.back')}\n </Button>\n </div>\n </div>\n );\n};\n","import { type JSX } from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { Button, FormError, FormField } from '@plumile/ui';\n\nimport { AuthPanel } from './AuthPanel.js';\nimport * as styles from './loginPage.css.js';\n\ntype Props = {\n email: string;\n errorMessage: string | null;\n isLoading: boolean;\n onEmailChange: (value: string) => void;\n onContinue: () => void;\n onForgotPassword: () => void;\n};\n\nexport const EmailCapturePanel = ({\n email,\n errorMessage,\n isLoading,\n onEmailChange,\n onContinue,\n onForgotPassword,\n}: Props): JSX.Element => {\n const { t } = useSharedTranslation();\n return (\n <AuthPanel>\n <div className={styles.formSurface}>\n <p className={styles.helper}>{t('auth.emailCapture.description')}</p>\n {errorMessage != null && <FormError>{errorMessage}</FormError>}\n <FormField\n label={t('auth.emailCapture.emailLabel')}\n name=\"email\"\n type=\"email\"\n value={email}\n onChange={(event) => {\n onEmailChange(event.target.value);\n }}\n placeholder={t('auth.emailCapture.emailPlaceholder')}\n autoComplete=\"email\"\n required\n />\n <div className={styles.actionsRow}>\n <Button\n type=\"button\"\n variant=\"primary\"\n onClick={onContinue}\n isLoading={isLoading}\n >\n {t('auth.emailCapture.continue')}\n </Button>\n <button\n type=\"button\"\n className={styles.inlineLink}\n onClick={onForgotPassword}\n >\n {t('auth.emailCapture.forgotPassword')}\n </button>\n </div>\n </div>\n </AuthPanel>\n );\n};\n","import { type JSX } from 'react';\n\nimport { Button } from '@plumile/ui';\n\nimport type { OidcProviderKind } from '../../modules/sharedSchemaTypes.js';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport * as styles from './loginPage.css.js';\n\nconst OIDC_START_PATH = '/auth/oidc/start';\n\ntype Props = {\n providers: readonly OidcProviderKind[];\n};\n\nexport const OidcButtons = ({ providers }: Props): JSX.Element | null => {\n const { t } = useSharedTranslation();\n\n if (providers.length === 0) {\n return null;\n }\n\n return (\n <div className={styles.stack}>\n {providers.map((provider) => {\n let label = t('auth.oidc.buttons.generic');\n if (provider === 'GOOGLE') {\n label = t('auth.oidc.buttons.google');\n } else if (provider === 'APPLE') {\n label = t('auth.oidc.buttons.apple');\n }\n const providerName = provider.toLowerCase();\n return (\n <Button\n key={provider}\n type=\"button\"\n variant=\"secondary\"\n className={styles.brandGhostButton}\n onClick={() => {\n window.location.assign(\n `${OIDC_START_PATH}?provider=${providerName}`,\n );\n }}\n >\n {label}\n </Button>\n );\n })}\n </div>\n );\n};\n","import { type JSX } from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { LoginForm, type LoginFormAuthAdapter } from '@plumile/ui';\n\nimport type { OidcProviderKind } from '../../modules/sharedSchemaTypes.js';\n\nimport { AuthPanel } from './AuthPanel.js';\nimport { OidcButtons } from './OidcButtons.js';\nimport * as styles from './loginPage.css.js';\n\ntype Props = {\n auth: LoginFormAuthAdapter;\n defaultEmail: string;\n onForgotPassword: () => void;\n onSuccess: () => void;\n providers: readonly OidcProviderKind[];\n};\n\nexport const PasswordLoginPanel = ({\n auth,\n defaultEmail,\n onForgotPassword,\n onSuccess,\n providers,\n}: Props): JSX.Element => {\n const { t } = useSharedTranslation();\n return (\n <AuthPanel title={t('auth.passwordLogin.title')}>\n <div className={styles.formSurface}>\n <LoginForm\n auth={auth}\n onSuccess={onSuccess}\n defaultEmail={defaultEmail}\n />\n <div className={styles.actionsRow}>\n <button\n type=\"button\"\n className={styles.inlineLink}\n onClick={onForgotPassword}\n >\n {t('auth.passwordLogin.forgotPassword')}\n </button>\n </div>\n <OidcButtons providers={providers} />\n </div>\n </AuthPanel>\n );\n};\n","/* eslint-disable no-ternary */\nimport {\n type JSX,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { AuthLayout } from '@plumile/ui';\n\nimport type {\n AuthMethod,\n OidcProviderKind,\n} from '../../modules/sharedSchemaTypes.js';\nimport type { UseAuthReturn } from '../../hooks/useAuth.js';\n\nimport { MfaChallengeForm } from './MfaChallengeForm.js';\nimport { PasskeyLoginForm } from './PasskeyLoginForm.js';\nimport { MethodChooser } from './MethodChooser.js';\nimport AuthPanel from './AuthPanel.js';\nimport { EmailCapturePanel } from './EmailCapturePanel.js';\nimport { PasswordLoginPanel } from './PasswordLoginPanel.js';\n\nexport type LoginFlowProps = {\n auth: UseAuthReturn;\n oidcProviders: readonly OidcProviderKind[];\n onLoginSuccess: () => void;\n onForgotPassword: () => void;\n};\n\ntype View = 'email' | 'passkey' | 'methods' | 'password' | 'mfa';\n\nexport const LoginFlow = ({\n auth,\n oidcProviders,\n onLoginSuccess,\n onForgotPassword,\n}: LoginFlowProps): JSX.Element => {\n const { t } = useSharedTranslation();\n const [email, setEmail] = useState('');\n const [methods, setMethods] = useState<readonly AuthMethod[]>([]);\n const [lockedUntil, setLockedUntil] = useState<string | null>(null);\n const [view, setView] = useState<View>('email');\n const [hasTriedPasskey, setHasTriedPasskey] = useState(false);\n const [localError, setLocalError] = useState<string | null>(null);\n const passkeyAttemptActive = useRef(true);\n\n const loginAdapter = useMemo(() => {\n return {\n ...auth,\n beginAuthentication: async (inputEmail: string) => {\n const result = await auth.beginAuthentication(inputEmail);\n setEmail(inputEmail);\n setMethods(result.methods);\n setLockedUntil(result.lockedUntil);\n return result;\n },\n };\n }, [auth]);\n\n const handleLoginSuccess = useCallback(\n ({ force } = { force: false }) => {\n if (!force && auth.nextStep === 'TOTP') {\n return;\n }\n onLoginSuccess();\n },\n [auth.nextStep, onLoginSuccess],\n );\n\n const isMfaStep = auth.nextStep === 'TOTP' || view === 'mfa';\n const title = isMfaStep\n ? t('auth.loginFlow.title.mfa')\n : t('auth.loginFlow.title.default');\n const subtitle = isMfaStep\n ? t('auth.loginFlow.subtitle.mfa')\n : t('auth.loginFlow.subtitle.default');\n\n const startFlowForEmail = useCallback(\n async (inputEmail: string) => {\n setLocalError(null);\n try {\n const trimmed = inputEmail.trim();\n const result = await auth.beginAuthentication(trimmed);\n setEmail(trimmed);\n setMethods(result.methods);\n setLockedUntil(result.lockedUntil);\n const hasPasskey = result.methods.some((method) => {\n return method === 'PASSKEY';\n });\n\n if (hasPasskey) {\n setView('passkey');\n } else if (result.methods.includes('PASSWORD')) {\n setView('password');\n } else {\n setView('methods');\n }\n } catch (beginError) {\n const message =\n beginError instanceof Error\n ? beginError.message\n : t('auth.loginFlow.errors.tryAgain');\n setLocalError(message);\n }\n },\n [auth, t],\n );\n\n useEffect(() => {\n passkeyAttemptActive.current = true;\n const trimmedEmail = email.trim();\n const shouldAttempt =\n view === 'passkey' && !hasTriedPasskey && trimmedEmail !== '';\n\n if (shouldAttempt) {\n setHasTriedPasskey(true);\n const runPasskeyLogin = async () => {\n try {\n const status = await loginAdapter.loginWithPasskey({\n email: trimmedEmail,\n });\n\n if (!passkeyAttemptActive.current) {\n return;\n }\n\n if (status === 'success') {\n handleLoginSuccess();\n return;\n }\n\n if (status === 'mfa-required') {\n setView('mfa');\n return;\n }\n\n setView('methods');\n setLocalError(t('auth.loginFlow.errors.passkeyUnavailable'));\n } catch (passkeyError) {\n if (!passkeyAttemptActive.current) {\n return;\n }\n\n const message =\n passkeyError instanceof Error\n ? passkeyError.message\n : t('auth.loginFlow.errors.passkeyUnavailable');\n setLocalError(message);\n setView('methods');\n }\n };\n runPasskeyLogin().catch(() => {\n // Errors are handled inside runPasskeyLogin; ignore any unexpected rethrow.\n });\n }\n\n return () => {\n passkeyAttemptActive.current = false;\n };\n }, [email, handleLoginSuccess, hasTriedPasskey, loginAdapter, t, view]);\n\n let content: JSX.Element;\n\n if (isMfaStep) {\n content = (\n <AuthPanel>\n <MfaChallengeForm\n auth={auth}\n onSuccess={() => {\n handleLoginSuccess({ force: true });\n }}\n onBack={() => {\n auth.reset();\n setView('email');\n }}\n />\n </AuthPanel>\n );\n } else if (view === 'passkey') {\n content = (\n <AuthPanel\n title={t('auth.loginFlow.passkey.title')}\n description={t('auth.loginFlow.passkey.description', { email })}\n >\n <PasskeyLoginForm\n auth={loginAdapter}\n onSuccess={handleLoginSuccess}\n onShowMethods={() => {\n setView('methods');\n }}\n defaultEmail={email}\n isAttemptingPasskey={auth.isLoading}\n />\n </AuthPanel>\n );\n } else if (view === 'methods') {\n content = (\n <AuthPanel title={t('auth.loginFlow.methods.title')}>\n <MethodChooser\n email={email}\n methods={methods}\n lockedUntil={lockedUntil}\n onSelect={(method) => {\n if (method === 'PASSKEY') {\n setView('passkey');\n return;\n }\n if (method === 'PASSWORD') {\n setView('password');\n }\n }}\n onBack={() => {\n setView('email');\n }}\n />\n </AuthPanel>\n );\n } else if (view === 'password') {\n content = (\n <PasswordLoginPanel\n auth={loginAdapter}\n defaultEmail={email}\n onForgotPassword={onForgotPassword}\n onSuccess={handleLoginSuccess}\n providers={oidcProviders}\n />\n );\n } else {\n // email capture only\n content = (\n <EmailCapturePanel\n email={email}\n errorMessage={localError}\n isLoading={auth.isLoading}\n onEmailChange={(value) => {\n setEmail(value);\n setLocalError(null);\n }}\n onContinue={() => {\n const trimmed = email.trim();\n if (trimmed === '') {\n setLocalError(t('auth.loginFlow.errors.emailRequired'));\n return;\n }\n startFlowForEmail(trimmed).catch(() => {\n // startFlowForEmail handles its own errors.\n });\n }}\n onForgotPassword={onForgotPassword}\n />\n );\n }\n\n return (\n <AuthLayout title={title} subtitle={subtitle}>\n {content}\n </AuthLayout>\n );\n};\n","import RelayRuntime, {\n type GraphQLTaggedNode,\n type IEnvironment,\n type OperationType,\n} from 'relay-runtime';\n\nconst { fetchQuery } = RelayRuntime;\n\ntype AuthStatusQueryResponse = {\n readonly isLoggedIn?: boolean | null;\n};\n\n/**\n * Forces a fresh auth-status read from network to avoid stale cache guards\n * right after login mutations complete.\n */\nexport async function synchronizeAuthStatusQuery<TQuery extends OperationType>(\n environment: IEnvironment,\n query: GraphQLTaggedNode,\n): Promise<boolean> {\n const response = await fetchQuery<TQuery>(\n environment,\n query,\n {},\n { fetchPolicy: 'network-only' },\n ).toPromise();\n\n const isLoggedIn = (response as AuthStatusQueryResponse | null | undefined)\n ?.isLoggedIn;\n return isLoggedIn === true;\n}\n"],"mappings":"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"}
@@ -22,6 +22,6 @@ var e = (e, t) => e(t), t = (t, n) => {
22
22
  }];
23
23
  };
24
24
  //#endregion
25
- export { t as resolveToastSpec, n as resolveToastViewActions };
25
+ export { n, t };
26
26
 
27
- //# sourceMappingURL=toastViewAction.js.map
27
+ //# sourceMappingURL=toastViewAction-BGTS7vqm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toastViewAction.js","names":[],"sources":["../../../../../src/components/backoffice/actions/toastViewAction.ts"],"sourcesContent":["import type { TFunction } from 'i18next';\n\nimport type {\n BackofficeActionToastSpec,\n BackofficeEntityManifestMap,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type { ToastAction } from '@plumile/ui';\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const resolveToastSpec = <Node = unknown, Response = unknown>(\n toast: BackofficeActionToastSpec<Node, Response>,\n tApp: TFunction,\n): { title: string; message?: string } => {\n const title = resolveLabel(toast.title, tApp);\n let message: string | undefined;\n if (toast.message != null) {\n message = resolveLabel(toast.message, tApp);\n }\n return { title, message };\n};\n\nexport const resolveToastViewActions = <\n Node = unknown,\n Response = unknown,\n>(input: {\n toast: BackofficeActionToastSpec<Node, Response>;\n response: Response;\n node: Node;\n tApp: TFunction;\n entities: BackofficeEntityManifestMap;\n defaultLabel: string;\n navigateTo: (to: string) => void;\n}): readonly ToastAction[] | undefined => {\n const { toast } = input;\n if (toast.view == null) {\n return undefined;\n }\n\n const targetId = toast.view.getTargetId(input.response, input.node);\n if (targetId == null || targetId.trim() === '') {\n return undefined;\n }\n\n const entity = input.entities[toast.view.entityId];\n if (entity == null) {\n return undefined;\n }\n\n const href = entity.routes.detail(targetId);\n let label = input.defaultLabel;\n if (toast.view.label != null) {\n label = resolveLabel(toast.view.label, input.tApp);\n }\n\n return [\n {\n id: `view-${toast.view.entityId}-${targetId}`,\n label,\n onClick: () => {\n input.navigateTo(href);\n },\n },\n ];\n};\n"],"mappings":";AASA,IAAM,KAAgB,GAAkB,MAC/B,EAAM,EAAK,EAGP,KACX,GACA,MACwC;CACxC,IAAM,IAAQ,EAAa,EAAM,OAAO,EAAK,EACzC;AAIJ,QAHI,EAAM,WAAW,SACnB,IAAU,EAAa,EAAM,SAAS,EAAK,GAEtC;EAAE;EAAO;EAAS;GAGd,KAGX,MAQwC;CACxC,IAAM,EAAE,aAAU;AAClB,KAAI,EAAM,QAAQ,KAChB;CAGF,IAAM,IAAW,EAAM,KAAK,YAAY,EAAM,UAAU,EAAM,KAAK;AACnE,KAAI,KAAY,QAAQ,EAAS,MAAM,KAAK,GAC1C;CAGF,IAAM,IAAS,EAAM,SAAS,EAAM,KAAK;AACzC,KAAI,KAAU,KACZ;CAGF,IAAM,IAAO,EAAO,OAAO,OAAO,EAAS,EACvC,IAAQ,EAAM;AAKlB,QAJI,EAAM,KAAK,SAAS,SACtB,IAAQ,EAAa,EAAM,KAAK,OAAO,EAAM,KAAK,GAG7C,CACL;EACE,IAAI,QAAQ,EAAM,KAAK,SAAS,GAAG;EACnC;EACA,eAAe;AACb,KAAM,WAAW,EAAK;;EAEzB,CACF"}
1
+ {"version":3,"file":"toastViewAction-BGTS7vqm.js","names":[],"sources":["../../src/components/backoffice/actions/toastViewAction.ts"],"sourcesContent":["import type { TFunction } from 'i18next';\n\nimport type {\n BackofficeActionToastSpec,\n BackofficeEntityManifestMap,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type { ToastAction } from '@plumile/ui';\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const resolveToastSpec = <Node = unknown, Response = unknown>(\n toast: BackofficeActionToastSpec<Node, Response>,\n tApp: TFunction,\n): { title: string; message?: string } => {\n const title = resolveLabel(toast.title, tApp);\n let message: string | undefined;\n if (toast.message != null) {\n message = resolveLabel(toast.message, tApp);\n }\n return { title, message };\n};\n\nexport const resolveToastViewActions = <\n Node = unknown,\n Response = unknown,\n>(input: {\n toast: BackofficeActionToastSpec<Node, Response>;\n response: Response;\n node: Node;\n tApp: TFunction;\n entities: BackofficeEntityManifestMap;\n defaultLabel: string;\n navigateTo: (to: string) => void;\n}): readonly ToastAction[] | undefined => {\n const { toast } = input;\n if (toast.view == null) {\n return undefined;\n }\n\n const targetId = toast.view.getTargetId(input.response, input.node);\n if (targetId == null || targetId.trim() === '') {\n return undefined;\n }\n\n const entity = input.entities[toast.view.entityId];\n if (entity == null) {\n return undefined;\n }\n\n const href = entity.routes.detail(targetId);\n let label = input.defaultLabel;\n if (toast.view.label != null) {\n label = resolveLabel(toast.view.label, input.tApp);\n }\n\n return [\n {\n id: `view-${toast.view.entityId}-${targetId}`,\n label,\n onClick: () => {\n input.navigateTo(href);\n },\n },\n ];\n};\n"],"mappings":";AASA,IAAM,KAAgB,GAAkB,MAC/B,EAAM,EAAK,EAGP,KACX,GACA,MACwC;CACxC,IAAM,IAAQ,EAAa,EAAM,OAAO,EAAK,EACzC;AAIJ,QAHI,EAAM,WAAW,SACnB,IAAU,EAAa,EAAM,SAAS,EAAK,GAEtC;EAAE;EAAO;EAAS;GAGd,KAGX,MAQwC;CACxC,IAAM,EAAE,aAAU;AAClB,KAAI,EAAM,QAAQ,KAChB;CAGF,IAAM,IAAW,EAAM,KAAK,YAAY,EAAM,UAAU,EAAM,KAAK;AACnE,KAAI,KAAY,QAAQ,EAAS,MAAM,KAAK,GAC1C;CAGF,IAAM,IAAS,EAAM,SAAS,EAAM,KAAK;AACzC,KAAI,KAAU,KACZ;CAGF,IAAM,IAAO,EAAO,OAAO,OAAO,EAAS,EACvC,IAAQ,EAAM;AAKlB,QAJI,EAAM,KAAK,SAAS,SACtB,IAAQ,EAAa,EAAM,KAAK,OAAO,EAAM,KAAK,GAG7C,CACL;EACE,IAAI,QAAQ,EAAM,KAAK,SAAS,GAAG;EACnC;EACA,eAAe;AACb,KAAM,WAAW,EAAK;;EAEzB,CACF"}