@plumile/backoffice-react 0.1.72 → 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 (390) 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/index.d.ts +5 -0
  104. package/lib/types/index.d.ts.map +1 -1
  105. package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
  106. package/lib/types/provider/BackofficeConfigContext.d.ts +1 -0
  107. package/lib/types/provider/BackofficeConfigContext.d.ts.map +1 -1
  108. package/lib/types/provider/BackofficeProvider.d.ts.map +1 -1
  109. package/lib/types/provider/types.d.ts +2 -0
  110. package/lib/types/provider/types.d.ts.map +1 -1
  111. package/lib/types/relay/environment.d.ts +1 -0
  112. package/lib/types/relay/environment.d.ts.map +1 -1
  113. package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
  114. package/package.json +9 -9
  115. package/lib/esm/auth/login/AuthPanel.js.map +0 -1
  116. package/lib/esm/auth/login/EmailCapturePanel.js +0 -52
  117. package/lib/esm/auth/login/EmailCapturePanel.js.map +0 -1
  118. package/lib/esm/auth/login/LoginFlow.js +0 -130
  119. package/lib/esm/auth/login/LoginFlow.js.map +0 -1
  120. package/lib/esm/auth/login/MethodChooser.js +0 -51
  121. package/lib/esm/auth/login/MethodChooser.js.map +0 -1
  122. package/lib/esm/auth/login/MfaChallengeForm.js +0 -83
  123. package/lib/esm/auth/login/MfaChallengeForm.js.map +0 -1
  124. package/lib/esm/auth/login/OidcButtons.js +0 -29
  125. package/lib/esm/auth/login/OidcButtons.js.map +0 -1
  126. package/lib/esm/auth/login/PasskeyLoginForm.js +0 -84
  127. package/lib/esm/auth/login/PasskeyLoginForm.js.map +0 -1
  128. package/lib/esm/auth/login/PasswordLoginPanel.js +0 -37
  129. package/lib/esm/auth/login/PasswordLoginPanel.js.map +0 -1
  130. package/lib/esm/auth/login/loginPage.css.js +0 -8
  131. package/lib/esm/auth/login/loginPage.css.js.map +0 -1
  132. package/lib/esm/auth/login/synchronizeAuthStatusQuery.js +0 -10
  133. package/lib/esm/auth/login/synchronizeAuthStatusQuery.js.map +0 -1
  134. package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +0 -1
  135. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +0 -1
  136. package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +0 -1
  137. package/lib/esm/auth/pages/VerifyEmailScreen.js +0 -65
  138. package/lib/esm/auth/pages/VerifyEmailScreen.js.map +0 -1
  139. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +0 -1
  140. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js +0 -11
  141. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js.map +0 -1
  142. package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js +0 -8
  143. package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js.map +0 -1
  144. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js +0 -59
  145. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js.map +0 -1
  146. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js +0 -22
  147. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +0 -1
  148. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js +0 -41
  149. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +0 -1
  150. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js +0 -31
  151. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js.map +0 -1
  152. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js +0 -8
  153. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js.map +0 -1
  154. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js +0 -24
  155. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +0 -1
  156. package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js +0 -20
  157. package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js.map +0 -1
  158. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js +0 -18
  159. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js.map +0 -1
  160. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js +0 -49
  161. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js.map +0 -1
  162. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js +0 -11
  163. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js.map +0 -1
  164. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +0 -115
  165. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +0 -1
  166. package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js +0 -33
  167. package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js.map +0 -1
  168. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js +0 -18
  169. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +0 -1
  170. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +0 -8
  171. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js.map +0 -1
  172. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +0 -8
  173. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js.map +0 -1
  174. package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js +0 -15
  175. package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js.map +0 -1
  176. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +0 -8
  177. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js.map +0 -1
  178. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +0 -8
  179. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js.map +0 -1
  180. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +0 -8
  181. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js.map +0 -1
  182. package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js +0 -8
  183. package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js.map +0 -1
  184. package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js +0 -8
  185. package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js.map +0 -1
  186. package/lib/esm/components/backoffice/detail/detailPayloadUtils.js +0 -17
  187. package/lib/esm/components/backoffice/detail/detailPayloadUtils.js.map +0 -1
  188. package/lib/esm/components/backoffice/errors/BackofficeErrorBoundary.js.map +0 -1
  189. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +0 -43
  190. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +0 -1
  191. package/lib/esm/components/backoffice/filters/EntityFilterValue.js +0 -46
  192. package/lib/esm/components/backoffice/filters/EntityFilterValue.js.map +0 -1
  193. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +0 -51
  194. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +0 -1
  195. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +0 -8
  196. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js.map +0 -1
  197. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +0 -8
  198. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +0 -1
  199. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +0 -8
  200. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js.map +0 -1
  201. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js +0 -10
  202. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js.map +0 -1
  203. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +0 -38
  204. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +0 -1
  205. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js +0 -12
  206. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js.map +0 -1
  207. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js.map +0 -1
  208. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js +0 -16
  209. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js.map +0 -1
  210. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +0 -8
  211. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js.map +0 -1
  212. package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +0 -1
  213. package/lib/esm/components/backoffice/layout/breadcrumb/types.js +0 -0
  214. package/lib/esm/components/backoffice/layout/buildSidebarSections.js +0 -183
  215. package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +0 -1
  216. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js +0 -18
  217. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +0 -1
  218. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +0 -7
  219. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js.map +0 -1
  220. package/lib/esm/components/backoffice/list/RowFlagsCell.js +0 -37
  221. package/lib/esm/components/backoffice/list/RowFlagsCell.js.map +0 -1
  222. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js +0 -31
  223. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +0 -1
  224. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js +0 -8
  225. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js.map +0 -1
  226. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +0 -106
  227. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +0 -1
  228. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +0 -8
  229. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +0 -1
  230. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +0 -23
  231. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +0 -1
  232. package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js +0 -23
  233. package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js.map +0 -1
  234. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js +0 -24
  235. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js.map +0 -1
  236. package/lib/esm/components/backoffice/pickers/types.js +0 -0
  237. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js +0 -35
  238. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +0 -1
  239. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +0 -54
  240. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +0 -1
  241. package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js +0 -8
  242. package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js.map +0 -1
  243. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +0 -8
  244. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js.map +0 -1
  245. package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js +0 -24
  246. package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js.map +0 -1
  247. package/lib/esm/components/backoffice/routing/BackofficeContentError.js +0 -38
  248. package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +0 -1
  249. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js +0 -47
  250. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +0 -1
  251. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js +0 -22
  252. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +0 -1
  253. package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js +0 -12
  254. package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js.map +0 -1
  255. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +0 -8
  256. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js.map +0 -1
  257. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +0 -8
  258. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js.map +0 -1
  259. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +0 -8
  260. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js.map +0 -1
  261. package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js +0 -8
  262. package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js.map +0 -1
  263. package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js +0 -8
  264. package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js.map +0 -1
  265. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js +0 -11
  266. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js.map +0 -1
  267. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +0 -438
  268. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +0 -1
  269. package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js +0 -40
  270. package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js.map +0 -1
  271. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +0 -24
  272. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +0 -1
  273. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +0 -8
  274. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js.map +0 -1
  275. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +0 -8
  276. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js.map +0 -1
  277. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js +0 -12
  278. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +0 -1
  279. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +0 -8
  280. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js.map +0 -1
  281. package/lib/esm/filters/filterHelpers.js +0 -36
  282. package/lib/esm/filters/filterHelpers.js.map +0 -1
  283. package/lib/esm/hooks/useAuth.js +0 -439
  284. package/lib/esm/hooks/useAuth.js.map +0 -1
  285. package/lib/esm/hooks/useBackofficeAuth.js +0 -89
  286. package/lib/esm/hooks/useBackofficeAuth.js.map +0 -1
  287. package/lib/esm/hooks/useBackofficeListRefetch.js +0 -40
  288. package/lib/esm/hooks/useBackofficeListRefetch.js.map +0 -1
  289. package/lib/esm/hooks/useBackofficeListUrlState.js.map +0 -1
  290. package/lib/esm/hooks/useBackofficeLoadMore.js +0 -18
  291. package/lib/esm/hooks/useBackofficeLoadMore.js.map +0 -1
  292. package/lib/esm/hooks/useBackofficeSessionAuth.js +0 -28
  293. package/lib/esm/hooks/useBackofficeSessionAuth.js.map +0 -1
  294. package/lib/esm/hooks/useBackofficeSidebarPins.js +0 -70
  295. package/lib/esm/hooks/useBackofficeSidebarPins.js.map +0 -1
  296. package/lib/esm/hooks/useConditionalSubscription.js +0 -57
  297. package/lib/esm/hooks/useConditionalSubscription.js.map +0 -1
  298. package/lib/esm/hooks/useCopyToClipboard.js +0 -31
  299. package/lib/esm/hooks/useCopyToClipboard.js.map +0 -1
  300. package/lib/esm/hooks/useRefetchNeededReload.js +0 -23
  301. package/lib/esm/hooks/useRefetchNeededReload.js.map +0 -1
  302. package/lib/esm/hooks/useSidebarGroupCollapse.js +0 -35
  303. package/lib/esm/hooks/useSidebarGroupCollapse.js.map +0 -1
  304. package/lib/esm/i18n/createI18nInstance.js +0 -62
  305. package/lib/esm/i18n/createI18nInstance.js.map +0 -1
  306. package/lib/esm/i18n/locales/en/backofficeReact.js +0 -249
  307. package/lib/esm/i18n/locales/en/backofficeReact.js.map +0 -1
  308. package/lib/esm/i18n/locales/en/shared.js +0 -201
  309. package/lib/esm/i18n/locales/en/shared.js.map +0 -1
  310. package/lib/esm/i18n/locales/fr/backofficeReact.js +0 -251
  311. package/lib/esm/i18n/locales/fr/backofficeReact.js.map +0 -1
  312. package/lib/esm/i18n/locales/fr/shared.js +0 -201
  313. package/lib/esm/i18n/locales/fr/shared.js.map +0 -1
  314. package/lib/esm/i18n/mergeResourceLanguages.js +0 -19
  315. package/lib/esm/i18n/mergeResourceLanguages.js.map +0 -1
  316. package/lib/esm/i18n/resources.js +0 -19
  317. package/lib/esm/i18n/resources.js.map +0 -1
  318. package/lib/esm/i18n/useBackofficeFormats.js +0 -23
  319. package/lib/esm/i18n/useBackofficeFormats.js.map +0 -1
  320. package/lib/esm/i18n/useBackofficeReactTranslation.js +0 -9
  321. package/lib/esm/i18n/useBackofficeReactTranslation.js.map +0 -1
  322. package/lib/esm/i18n/useReviewStatusLabel.js +0 -19
  323. package/lib/esm/i18n/useReviewStatusLabel.js.map +0 -1
  324. package/lib/esm/i18n/useSharedTranslation.js +0 -9
  325. package/lib/esm/i18n/useSharedTranslation.js.map +0 -1
  326. package/lib/esm/index.js +0 -37
  327. package/lib/esm/modules/base64.js +0 -23
  328. package/lib/esm/modules/base64.js.map +0 -1
  329. package/lib/esm/modules/formatFileSize.js +0 -28
  330. package/lib/esm/modules/formatFileSize.js.map +0 -1
  331. package/lib/esm/modules/sharedSchemaTypes.js +0 -0
  332. package/lib/esm/modules/webauthn.js +0 -33
  333. package/lib/esm/modules/webauthn.js.map +0 -1
  334. package/lib/esm/pages/BackofficeAcceptInvitationPage.js +0 -24
  335. package/lib/esm/pages/BackofficeAcceptInvitationPage.js.map +0 -1
  336. package/lib/esm/pages/BackofficeDashboardPage.js +0 -197
  337. package/lib/esm/pages/BackofficeDashboardPage.js.map +0 -1
  338. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +0 -18
  339. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +0 -1
  340. package/lib/esm/pages/BackofficeEntityDetailPage.js +0 -837
  341. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +0 -1
  342. package/lib/esm/pages/BackofficeEntityDetailUnknownPageRedirect.js.map +0 -1
  343. package/lib/esm/pages/BackofficeEntityListPage.js +0 -363
  344. package/lib/esm/pages/BackofficeEntityListPage.js.map +0 -1
  345. package/lib/esm/pages/BackofficeLayoutPage.js +0 -137
  346. package/lib/esm/pages/BackofficeLayoutPage.js.map +0 -1
  347. package/lib/esm/pages/BackofficeLoginPage.js +0 -46
  348. package/lib/esm/pages/BackofficeLoginPage.js.map +0 -1
  349. package/lib/esm/pages/BackofficePasswordResetCompletePage.js +0 -59
  350. package/lib/esm/pages/BackofficePasswordResetCompletePage.js.map +0 -1
  351. package/lib/esm/pages/BackofficePasswordResetRequestPage.js.map +0 -1
  352. package/lib/esm/pages/BackofficeVerifyEmailPage.js +0 -59
  353. package/lib/esm/pages/BackofficeVerifyEmailPage.js.map +0 -1
  354. package/lib/esm/pages/backofficeDashboardPage.css.js +0 -8
  355. package/lib/esm/pages/backofficeDashboardPage.css.js.map +0 -1
  356. package/lib/esm/pages/backofficeEntityDetailPage.css.js +0 -8
  357. package/lib/esm/pages/backofficeEntityDetailPage.css.js.map +0 -1
  358. package/lib/esm/pages/backofficeEntityListPage.css.js +0 -8
  359. package/lib/esm/pages/backofficeEntityListPage.css.js.map +0 -1
  360. package/lib/esm/pages/detail/BackofficeEntityDetailLayoutContext.js.map +0 -1
  361. package/lib/esm/pages/detail/buildTabsItems.js +0 -10
  362. package/lib/esm/pages/detail/buildTabsItems.js.map +0 -1
  363. package/lib/esm/pages/detail/pageResolution.js.map +0 -1
  364. package/lib/esm/provider/BackofficeConfigContext.js.map +0 -1
  365. package/lib/esm/provider/BackofficeProvider.js +0 -152
  366. package/lib/esm/provider/BackofficeProvider.js.map +0 -1
  367. package/lib/esm/provider/entityRegistry.js +0 -91
  368. package/lib/esm/provider/entityRegistry.js.map +0 -1
  369. package/lib/esm/provider/lazyValue.js +0 -14
  370. package/lib/esm/provider/lazyValue.js.map +0 -1
  371. package/lib/esm/provider/types.js +0 -0
  372. package/lib/esm/provider/useBackofficeEntityLoader.js +0 -137
  373. package/lib/esm/provider/useBackofficeEntityLoader.js.map +0 -1
  374. package/lib/esm/provider/useBackofficeLazyValue.js.map +0 -1
  375. package/lib/esm/relay/RelayProvider.js +0 -12
  376. package/lib/esm/relay/RelayProvider.js.map +0 -1
  377. package/lib/esm/relay/createInlineDataReader.js +0 -2
  378. package/lib/esm/relay/createInlineReader.js +0 -7
  379. package/lib/esm/relay/createInlineReader.js.map +0 -1
  380. package/lib/esm/relay/envHelpers.js +0 -46
  381. package/lib/esm/relay/envHelpers.js.map +0 -1
  382. package/lib/esm/relay/environment.js.map +0 -1
  383. package/lib/esm/relay/identityView.js +0 -6
  384. package/lib/esm/relay/identityView.js.map +0 -1
  385. package/lib/esm/relay/mutationResult.js.map +0 -1
  386. package/lib/esm/relay/useRelayEnvironment.js.map +0 -1
  387. package/lib/esm/router/backofficeAuthPaths.js.map +0 -1
  388. package/lib/esm/router/createBackofficeRoutes.js +0 -273
  389. package/lib/esm/router/createBackofficeRoutes.js.map +0 -1
  390. package/lib/esm/style.js +0 -1
@@ -0,0 +1,1804 @@
1
+ import { i as e, n as t, r as n, t as r } from "./environment-BJeJTbIN.js";
2
+ import { t as i } from "./useRelayEnvironment-vQ86aW-n.js";
3
+ import { n as a, t as o } from "./sprinkles.css.ts.vanilla-n-NK_DwW.js";
4
+ import { i as s, t as c } from "./sidebarUtils-CuwJ_3mD.js";
5
+ import { f as l } from "./loginPage.css-BDQJNcSr.js";
6
+ import { a as u, i as d, n as f, r as p, t as m } from "./useAuth-AczFS-oL.js";
7
+ import { n as h, t as g } from "./synchronizeAuthStatusQuery-lLR0XFew.js";
8
+ import "./AuthPanel-ttoH9YxE.js";
9
+ import { t as _ } from "./AcceptInvitationScreen-CNLlSbdx.js";
10
+ import { t as v } from "./PasswordResetCompleteScreen-C4GQdavL.js";
11
+ import { t as y } from "./PasswordResetRequestScreen-aUY_yDqM.js";
12
+ import { t as ee } from "./VerifyEmailScreen-2DuHJgdY.js";
13
+ import { n as te, t as b } from "./useBackofficeReactTranslation-WfXU8kCf.js";
14
+ import { i as ne, n as re, t as x } from "./EntityFilterValue-SC_jkj4O.js";
15
+ import { i as ie, t as ae } from "./EntityIdPickerDialog-FMC5Hx_I.js";
16
+ import { a as oe, i as se, r as ce, t as le } from "./BackofficeDetailPayload-B-qs8Fai.js";
17
+ import { t as ue } from "./useBackofficeListUrlState-D4fx5O7u.js";
18
+ import { i as de, n as fe, r as pe, t as me } from "./mutationResult-CcQMY13J.js";
19
+ import { t as he } from "./pageResolution-hAQA5C6S.js";
20
+ import { n as ge, t as _e } from "./BackofficeRightPageLayout-ktdlvTZJ.js";
21
+ import "./BackofficeTopbarPortalContext-iD7dm4_h.js";
22
+ import { StrictMode as ve, useCallback as S, useContext as ye, useEffect as C, useMemo as w, useRef as be, useState as T } from "react";
23
+ import { createInstance as E } from "i18next";
24
+ import { I18nextProvider as xe, initReactI18next as Se, useTranslation as D } from "react-i18next";
25
+ import { HttpRedirect as Ce, Link as we, RouterRenderer as Te, RoutingContext as Ee, createRouter as De, getResourcePage as O, r as Oe } from "@plumile/router";
26
+ import { BackofficeTabs as ke, DetailPageTemplate as Ae, SidebarSearchSvg as je, Spinner as Me, ThemeProvider as Ne, cx as Pe } from "@plumile/ui";
27
+ import Fe from "i18next-browser-languagedetector";
28
+ import * as k from "react-relay";
29
+ import { jsx as A, jsxs as j } from "react/jsx-runtime";
30
+ import { BACKOFFICE_LIST_DEFAULTS as Ie } from "@plumile/backoffice-core/constants.js";
31
+ import { resolveBackofficeLoadedFacetModule as M } from "@plumile/backoffice-core/resolve.js";
32
+ import { buildBackofficeFallbackListHref as Le, buildBackofficeListLink as N } from "@plumile/backoffice-core/state/buildListHref.js";
33
+ import { setWhereValue as Re } from "@plumile/backoffice-core/filters/where.js";
34
+ //#region src/i18n/createI18nInstance.ts
35
+ var ze = { maximumFractionDigits: 2 }, Be = {
36
+ style: "currency",
37
+ currency: "USD",
38
+ maximumFractionDigits: 2
39
+ }, Ve = { dateStyle: "medium" }, He = {
40
+ dateStyle: "medium",
41
+ timeStyle: "short"
42
+ }, Ue = { style: "percent" };
43
+ function We(e) {
44
+ return Array.isArray(e) ? e[0] : e;
45
+ }
46
+ function P(e) {
47
+ if (e == null) return "";
48
+ if (typeof e == "string" || typeof e == "number" || typeof e == "boolean" || typeof e == "bigint") return String(e);
49
+ if (typeof e == "symbol") return e.toString();
50
+ if (e instanceof Date) return e.toISOString();
51
+ try {
52
+ return JSON.stringify(e);
53
+ } catch {
54
+ return "";
55
+ }
56
+ }
57
+ function Ge(e, t, n) {
58
+ if (t == null) return P(e);
59
+ let r = We(n);
60
+ if (t === "number" && typeof e == "number") return new Intl.NumberFormat(r, ze).format(e);
61
+ if (t === "currency" && typeof e == "number") return new Intl.NumberFormat(r, Be).format(e);
62
+ if (t === "percent" && typeof e == "number") return new Intl.NumberFormat(r, Ue).format(e);
63
+ if ((t === "date" || t === "datetime") && e != null) {
64
+ let n;
65
+ if (n = e instanceof Date ? e : typeof e == "string" || typeof e == "number" ? new Date(e) : new Date(P(e)), !Number.isNaN(n.getTime())) return t === "date" ? new Intl.DateTimeFormat(r, Ve).format(n) : new Intl.DateTimeFormat(r, He).format(n);
66
+ }
67
+ return P(e);
68
+ }
69
+ async function Ke(e) {
70
+ let { resources: t, lng: n, fallbackLng: r = "en", initOptions: i = {}, instance: a = E(), useLanguageDetector: o = !1, detection: s } = e, { interpolation: c, ...l } = i;
71
+ o && a.use(Fe), a.use(Se);
72
+ try {
73
+ let e = {
74
+ ...l,
75
+ resources: t,
76
+ fallbackLng: r,
77
+ interpolation: {
78
+ escapeValue: !1,
79
+ format: c?.format ?? Ge,
80
+ ...c
81
+ }
82
+ };
83
+ n != null && (e.lng = n);
84
+ let u = s ?? i.detection;
85
+ o && u != null && (e.detection = u), await a.init(e);
86
+ } catch {}
87
+ return a;
88
+ }
89
+ //#endregion
90
+ //#region src/i18n/mergeResourceLanguages.ts
91
+ var F = (e) => typeof e == "object" && !!e && !Array.isArray(e), qe = (e) => F(e) ? e : {};
92
+ function I(...e) {
93
+ let t = {};
94
+ return e.forEach((e) => {
95
+ Object.entries(e).forEach(([e, n]) => {
96
+ let r = t[e];
97
+ if (F(r) && F(n)) {
98
+ t[e] = I(qe(r), qe(n));
99
+ return;
100
+ }
101
+ t[e] = n;
102
+ });
103
+ }), t;
104
+ }
105
+ //#endregion
106
+ //#region src/i18n/resources.ts
107
+ var Je = {
108
+ en: {
109
+ backofficeReact: {
110
+ actions: {
111
+ form: {
112
+ cancel: "Cancel",
113
+ errors: {
114
+ invalidJson: "{{label}} must be valid JSON.",
115
+ invalidJsonArray: "{{label}} must be a valid JSON array.",
116
+ invalidJsonObject: "{{label}} must be a valid JSON object.",
117
+ invalidNumber: "{{label}} must be a valid number.",
118
+ invalidPayload: "The submitted payload is invalid.",
119
+ required: "{{label}} is required."
120
+ }
121
+ },
122
+ view: "View"
123
+ },
124
+ auth: {
125
+ acceptInvitation: { errors: {
126
+ alreadyAccepted: "This invitation has already been accepted.",
127
+ default: "Unable to accept this invitation. Please try again.",
128
+ emailMismatch: "This invitation was sent to a different email address.",
129
+ expired: "This invitation has expired.",
130
+ invalidToken: "This invitation token is invalid.",
131
+ passwordMismatch: "Password and confirmation do not match.",
132
+ passwordPolicyViolation: "Your password does not meet policy requirements.",
133
+ rateLimited: "Too many attempts. Please wait and try again."
134
+ } },
135
+ loginFlow: { errors: {
136
+ accountLocked: "Your account is locked.",
137
+ invalidCredentials: "Invalid email or password.",
138
+ invalidEmail: "Please enter a valid email address.",
139
+ rateLimited: "Too many attempts. Please wait and try again.",
140
+ tryAgain: "Something went wrong. Please try again."
141
+ } },
142
+ mfa: { errors: {
143
+ expired: "Your verification challenge has expired.",
144
+ invalidChallenge: "Your verification challenge is invalid.",
145
+ invalidCode: "The verification code is invalid.",
146
+ tooManyAttempts: "Too many invalid codes. Please try again later.",
147
+ verificationFailed: "Unable to verify the code. Please try again."
148
+ } },
149
+ passkey: { errors: {
150
+ challengeExpired: "Your passkey challenge has expired.",
151
+ failed: "Passkey authentication failed. Please try again.",
152
+ invalidAssertion: "The passkey response is invalid.",
153
+ invalidChallenge: "The passkey challenge is invalid.",
154
+ invalidEmail: "Please enter a valid email address.",
155
+ notAvailable: "Passkeys are not available on this device.",
156
+ notFound: "No passkey found for this account."
157
+ } },
158
+ passwordResetComplete: { errors: {
159
+ expired: "This reset link has expired.",
160
+ invalid: "This reset link is invalid.",
161
+ policyViolation: "Your new password does not meet policy requirements."
162
+ } },
163
+ passwordResetRequest: { errors: {
164
+ invalidEmail: "Please enter a valid email address.",
165
+ rateLimited: "Too many requests. Please wait and try again.",
166
+ startFailed: "Unable to start password reset. Please try again."
167
+ } },
168
+ verifyEmail: { errors: {
169
+ alreadyVerified: "This email address is already verified.",
170
+ expired: "This verification link has expired.",
171
+ invalid: "This verification link is invalid."
172
+ } }
173
+ },
174
+ common: {
175
+ actions: {
176
+ change: "Change",
177
+ clear: "Clear",
178
+ close: "Close",
179
+ copied: "Copied",
180
+ copy: "Copy",
181
+ pick: "Pick",
182
+ retry: "Retry"
183
+ },
184
+ boolean: {
185
+ no: "No",
186
+ yes: "Yes"
187
+ },
188
+ loading: "Loading...",
189
+ notAvailable: "N/A"
190
+ },
191
+ dashboard: {
192
+ actions: {
193
+ openList: "Open list",
194
+ openTool: "Open tool"
195
+ },
196
+ subtitle: "Overview of the Work context.",
197
+ title: "Dashboard"
198
+ },
199
+ detail: { notFound: "Not found" },
200
+ emptyState: {
201
+ listEmpty: {
202
+ description: "There are no records to display.",
203
+ title: "No results"
204
+ },
205
+ listEmptyFiltered: {
206
+ actions: { reset: "Reset filters" },
207
+ description: "No results match the current filters."
208
+ }
209
+ },
210
+ filters: {
211
+ actions: { filterBy: "Filter by {{label}}" },
212
+ all: "All {{label}}",
213
+ allFilters: "All filters",
214
+ allFiltersWithCount_one: "All filters ({{count}})",
215
+ allFiltersWithCount_other: "All filters ({{count}})",
216
+ boolean: {
217
+ no: "No",
218
+ yes: "Yes"
219
+ },
220
+ placeholders: {
221
+ search: "Search {{label}}",
222
+ unresolved: "Unresolved ID"
223
+ },
224
+ sections: { default: "Filters" }
225
+ },
226
+ flags: {
227
+ agentManaged: {
228
+ agentManaged: "Agent managed",
229
+ userManaged: "User managed"
230
+ },
231
+ capability: {
232
+ allowed: "Allowed",
233
+ denied: "Denied"
234
+ },
235
+ default: {
236
+ default: "Default",
237
+ notDefault: "Not default"
238
+ },
239
+ deployedProduction: {
240
+ deployed: "Deployed",
241
+ notDeployed: "Not deployed"
242
+ },
243
+ enabled: {
244
+ disabled: "Disabled",
245
+ enabled: "Enabled"
246
+ },
247
+ encrypted: {
248
+ encrypted: "Encrypted",
249
+ notEncrypted: "Not encrypted"
250
+ },
251
+ failure: {
252
+ failed: "Failed",
253
+ ok: "OK"
254
+ },
255
+ forced: {
256
+ forced: "Forced",
257
+ normal: "Normal"
258
+ },
259
+ locked: {
260
+ locked: "Locked",
261
+ unlocked: "Unlocked"
262
+ }
263
+ },
264
+ format: {
265
+ currency: "{{value, currency}}",
266
+ number: "{{value, number}}",
267
+ percent: "{{value, percent}}"
268
+ },
269
+ list: {
270
+ actions: {
271
+ refresh: "Refresh",
272
+ retry: "Retry"
273
+ },
274
+ errors: {
275
+ tableFailed: "The table failed to load.",
276
+ title: "Table error"
277
+ },
278
+ loadMore: {
279
+ end: "End of results",
280
+ loading: "Loading more…",
281
+ more: "More results available"
282
+ },
283
+ showing: "Showing {{shown, number}} of {{total, number}}"
284
+ },
285
+ picker: {
286
+ errors: { loadFailed: "Failed to load." },
287
+ searchPlaceholder: { default: "Search..." },
288
+ searchRequired: "Enter an ID to search.",
289
+ title: "Select an ID",
290
+ unavailable: "Picker not available for {{entity}}."
291
+ },
292
+ relations: {
293
+ labelWithCount_one: "{{label}} ({{count}})",
294
+ labelWithCount_other: "{{label}} ({{count}})",
295
+ menu: { label: "Relations" },
296
+ viewList: "View list"
297
+ },
298
+ sidebar: {
299
+ actions: {
300
+ pin: "Pin",
301
+ reorder: "Reorder",
302
+ unpin: "Unpin"
303
+ },
304
+ items: { dashboard: "Dashboard" },
305
+ profile: {
306
+ actions: { signOut: "Sign out" },
307
+ menuAriaLabel: "Open profile menu",
308
+ title: "Profile",
309
+ unknownUser: "Unknown user"
310
+ },
311
+ search: { placeholder: "Search…" },
312
+ sections: { pinned: "Pinned" }
313
+ },
314
+ tools: {
315
+ docs: {
316
+ inputExampleTitle: "Example JSON",
317
+ inputTypeTitle: "Input type (GraphQL)"
318
+ },
319
+ errors: {
320
+ description: "We couldn't run this tool.",
321
+ details: "Error details",
322
+ label: "Error",
323
+ missingScope: "Missing initiative scope.",
324
+ title: "Tool error",
325
+ unknown: "Unknown error"
326
+ },
327
+ forms: {
328
+ actions: {
329
+ insertExample: "Insert example",
330
+ run: "Run"
331
+ },
332
+ inputJsonLabel: "Input JSON"
333
+ },
334
+ meta: { idLabel: "Tool" },
335
+ output: "Output",
336
+ project: {
337
+ actions: { pick: "Pick" },
338
+ description: "Select the project to analyze.",
339
+ empty: "Choose a project to run tools.",
340
+ pickerTitle: "Select a project",
341
+ placeholder: "Project ID",
342
+ title: "Project"
343
+ },
344
+ scope: {
345
+ actions: { pick: "Pick" },
346
+ description: "Select the initiative scope for tools.",
347
+ empty: "Choose an initiative to run tools.",
348
+ pickerTitle: "Select an initiative",
349
+ placeholder: "Initiative ID",
350
+ title: "Scope"
351
+ }
352
+ }
353
+ },
354
+ shared: {
355
+ auth: {
356
+ acceptInvitation: {
357
+ actions: { backToLogin: "Back to login" },
358
+ errors: {
359
+ alreadyAccepted: "This invitation has already been accepted.",
360
+ default: "Unable to accept invitation.",
361
+ emailMismatch: "This invitation was sent to a different email address.",
362
+ expired: "Invitation link has expired.",
363
+ invalidToken: "Invitation link is invalid.",
364
+ missingToken: "Invitation link is missing or invalid.",
365
+ passwordMismatch: "Password and confirmation do not match.",
366
+ passwordPolicyViolation: "Your password does not meet policy requirements.",
367
+ rateLimited: "Too many attempts. Please try again later."
368
+ },
369
+ form: {
370
+ confirmLabel: "Confirm password",
371
+ confirmPlaceholder: "Confirm your password",
372
+ passwordLabel: "Password",
373
+ passwordPlaceholder: "Create a password",
374
+ submit: "Accept invitation"
375
+ },
376
+ mfaSubtitle: "Enter the verification code to continue.",
377
+ mfaTitle: "Verify your identity",
378
+ status: {
379
+ success: "Invitation accepted.",
380
+ workingButton: "Working..."
381
+ },
382
+ subtitle: "Create your account to join.",
383
+ title: "Accept invitation"
384
+ },
385
+ emailCapture: {
386
+ continue: "Continue",
387
+ description: "Enter your work email to continue.",
388
+ emailLabel: "Work email",
389
+ emailPlaceholder: "you@company.com",
390
+ forgotPassword: "Forgot your password?"
391
+ },
392
+ loginFlow: {
393
+ errors: {
394
+ accountLocked: "Too many attempts. Try again later.",
395
+ emailRequired: "Enter an email address to continue.",
396
+ invalidCredentials: "Email or password is incorrect.",
397
+ invalidEmail: "Enter a valid email address.",
398
+ passkeyUnavailable: "Passkeys are not available.",
399
+ rateLimited: "Too many attempts. Please try again later.",
400
+ tryAgain: "Something went wrong. Please try again."
401
+ },
402
+ methods: { title: "Choose a sign-in method" },
403
+ passkey: {
404
+ description: "Use the passkey associated with {{email}}.",
405
+ title: "Use a passkey"
406
+ },
407
+ subtitle: {
408
+ default: "Choose a sign-in method to continue.",
409
+ mfa: "Enter the verification code to continue."
410
+ },
411
+ title: {
412
+ default: "Sign in",
413
+ mfa: "Two-factor authentication"
414
+ }
415
+ },
416
+ methodChooser: {
417
+ actions: { back: "Back" },
418
+ locked: "Too many attempts. Try again later.",
419
+ lockedWithTime: "Too many attempts. Try again at {{time}}.",
420
+ methods: {
421
+ other: "{{method}}",
422
+ passkey: "Passkey",
423
+ password: "Password"
424
+ },
425
+ prompt: "Choose how to sign in for <strong>{{email}}</strong>."
426
+ },
427
+ mfa: {
428
+ actions: {
429
+ back: "Back",
430
+ submit: "Verify"
431
+ },
432
+ errors: {
433
+ expired: "Verification session expired. Please try again.",
434
+ invalidChallenge: "Verification session is invalid. Restart the login.",
435
+ invalidCode: "Invalid code. Try again.",
436
+ shortCode: "Enter the 6-digit code.",
437
+ tooManyAttempts: "Too many attempts. Try again later.",
438
+ verificationFailed: "Verification failed. Try again."
439
+ },
440
+ form: {
441
+ label: "Verification code",
442
+ placeholder: "123456"
443
+ },
444
+ helper: {
445
+ default: "Enter the 6-digit code from your authenticator.",
446
+ withEmail: "Enter the 6-digit code sent to {{email}}."
447
+ }
448
+ },
449
+ oidc: { buttons: {
450
+ apple: "Continue with Apple",
451
+ generic: "Continue with single sign-on",
452
+ google: "Continue with Google"
453
+ } },
454
+ passkey: {
455
+ actions: {
456
+ showMethods: "Use another method",
457
+ submit: "Continue with passkey",
458
+ submitting: "Waiting for passkey..."
459
+ },
460
+ errors: {
461
+ challengeExpired: "Passkey request expired. Try again.",
462
+ emailRequired: "Enter your email to continue.",
463
+ failed: "Passkey sign-in failed.",
464
+ invalidAssertion: "Passkey response is invalid. Try again.",
465
+ invalidChallenge: "Passkey request is invalid. Try again.",
466
+ invalidEmail: "Enter a valid email address.",
467
+ locked: "Too many attempts. Try again later.",
468
+ lockedWithTime: "Too many attempts. Try again at {{time}}.",
469
+ notAvailable: "Passkeys are not available on this device.",
470
+ notFound: "No passkey found for this account."
471
+ },
472
+ form: {
473
+ emailLabel: "Email",
474
+ emailPlaceholder: "you@company.com"
475
+ },
476
+ helper: "Use a passkey instead of your password."
477
+ },
478
+ passwordLogin: {
479
+ forgotPassword: "Forgot your password?",
480
+ title: "Sign in"
481
+ },
482
+ passwordResetComplete: {
483
+ errors: {
484
+ invalid: "Reset link is invalid or expired.",
485
+ minLength: "Password must be at least {{minLength}} characters.",
486
+ mismatch: "Passwords do not match.",
487
+ missingToken: "Reset link is missing or invalid."
488
+ },
489
+ form: {
490
+ confirmLabel: "Confirm password",
491
+ confirmPlaceholder: "Re-enter your password",
492
+ description: "Enter a new password for your account.",
493
+ passwordLabel: "Password",
494
+ passwordPlaceholder: "Enter a new password",
495
+ submit: "Update password",
496
+ title: "New password"
497
+ },
498
+ subtitle: "Choose a strong password to secure your account.",
499
+ success: {
500
+ action: "Back to login",
501
+ description: "Your password has been changed.",
502
+ helper: "You can now sign in with your new password.",
503
+ title: "Password updated"
504
+ },
505
+ title: "Set a new password"
506
+ },
507
+ passwordResetRequest: {
508
+ errors: {
509
+ emailRequired: "Enter an email address.",
510
+ startFailed: "Unable to start password reset."
511
+ },
512
+ form: {
513
+ description: "Enter the email for your account.",
514
+ emailLabel: "Email",
515
+ emailPlaceholder: "you@company.com",
516
+ submit: "Send reset link"
517
+ },
518
+ sent: {
519
+ action: "Send another email",
520
+ description: "We sent a reset link to {{email}}.",
521
+ helper: "If you don't see it, check spam or try again.",
522
+ title: "Check your email"
523
+ },
524
+ title: "Reset your password"
525
+ },
526
+ verifyEmail: {
527
+ actions: {
528
+ continue: "Continue",
529
+ return: "Back to login"
530
+ },
531
+ errors: {
532
+ invalid: "Verification link is invalid or expired.",
533
+ missingToken: "Verification link is missing or invalid."
534
+ },
535
+ status: {
536
+ success: "Email verified. You can continue.",
537
+ verifying: "Verifying...",
538
+ verifyingButton: "Verifying"
539
+ },
540
+ subtitle: "Confirm your email address to continue.",
541
+ title: "Verify your email"
542
+ }
543
+ },
544
+ review: { status: {
545
+ approved: "Approved",
546
+ changesRequested: "Changes requested",
547
+ pending: "Pending",
548
+ unknown: "Unknown"
549
+ } }
550
+ }
551
+ },
552
+ fr: {
553
+ backofficeReact: {
554
+ actions: {
555
+ form: {
556
+ cancel: "Annuler",
557
+ errors: {
558
+ invalidJson: "{{label}} doit être un JSON valide.",
559
+ invalidJsonArray: "{{label}} doit être un tableau JSON valide.",
560
+ invalidJsonObject: "{{label}} doit être un objet JSON valide.",
561
+ invalidNumber: "{{label}} doit être un nombre valide.",
562
+ invalidPayload: "La charge utile soumise est invalide.",
563
+ required: "{{label}} est requis."
564
+ }
565
+ },
566
+ view: "Voir"
567
+ },
568
+ auth: {
569
+ acceptInvitation: { errors: {
570
+ alreadyAccepted: "Cette invitation a déjà été acceptée.",
571
+ default: "Impossible d'accepter cette invitation. Veuillez réessayer.",
572
+ emailMismatch: "Cette invitation a été envoyée à une autre adresse email.",
573
+ expired: "Cette invitation a expiré.",
574
+ invalidToken: "Ce jeton d'invitation est invalide.",
575
+ passwordMismatch: "Le mot de passe et sa confirmation ne correspondent pas.",
576
+ passwordPolicyViolation: "Votre mot de passe ne respecte pas la politique de sécurité.",
577
+ rateLimited: "Trop de tentatives. Veuillez patienter puis réessayer."
578
+ } },
579
+ loginFlow: { errors: {
580
+ accountLocked: "Votre compte est verrouillé.",
581
+ invalidCredentials: "Email ou mot de passe invalide.",
582
+ invalidEmail: "Veuillez saisir une adresse email valide.",
583
+ rateLimited: "Trop de tentatives. Veuillez patienter puis réessayer.",
584
+ tryAgain: "Une erreur est survenue. Veuillez réessayer."
585
+ } },
586
+ mfa: { errors: {
587
+ expired: "Votre challenge de vérification a expiré.",
588
+ invalidChallenge: "Votre challenge de vérification est invalide.",
589
+ invalidCode: "Le code de vérification est invalide.",
590
+ tooManyAttempts: "Trop de codes invalides. Veuillez réessayer plus tard.",
591
+ verificationFailed: "Impossible de vérifier le code. Veuillez réessayer."
592
+ } },
593
+ passkey: { errors: {
594
+ challengeExpired: "Votre challenge passkey a expiré.",
595
+ failed: "L'authentification passkey a échoué. Veuillez réessayer.",
596
+ invalidAssertion: "La réponse passkey est invalide.",
597
+ invalidChallenge: "Le challenge passkey est invalide.",
598
+ invalidEmail: "Veuillez saisir une adresse email valide.",
599
+ notAvailable: "Les passkeys ne sont pas disponibles sur cet appareil.",
600
+ notFound: "Aucune passkey trouvée pour ce compte."
601
+ } },
602
+ passwordResetComplete: { errors: {
603
+ expired: "Ce lien de réinitialisation a expiré.",
604
+ invalid: "Ce lien de réinitialisation est invalide.",
605
+ policyViolation: "Votre nouveau mot de passe ne respecte pas la politique de sécurité."
606
+ } },
607
+ passwordResetRequest: { errors: {
608
+ invalidEmail: "Veuillez saisir une adresse email valide.",
609
+ rateLimited: "Trop de demandes. Veuillez patienter puis réessayer.",
610
+ startFailed: "Impossible de démarrer la réinitialisation du mot de passe. Veuillez réessayer."
611
+ } },
612
+ verifyEmail: { errors: {
613
+ alreadyVerified: "Cette adresse email est déjà vérifiée.",
614
+ expired: "Ce lien de vérification a expiré.",
615
+ invalid: "Ce lien de vérification est invalide."
616
+ } }
617
+ },
618
+ common: {
619
+ actions: {
620
+ change: "Modifier",
621
+ clear: "Effacer",
622
+ close: "Fermer",
623
+ copied: "Copié",
624
+ copy: "Copier",
625
+ pick: "Choisir",
626
+ retry: "Réessayer"
627
+ },
628
+ boolean: {
629
+ no: "Non",
630
+ yes: "Oui"
631
+ },
632
+ loading: "Chargement...",
633
+ notAvailable: "N/D"
634
+ },
635
+ dashboard: {
636
+ actions: {
637
+ openList: "Ouvrir la liste",
638
+ openTool: "Ouvrir l'outil"
639
+ },
640
+ subtitle: "Vue d'ensemble du contexte Work.",
641
+ title: "Tableau de bord"
642
+ },
643
+ detail: { notFound: "Introuvable" },
644
+ emptyState: {
645
+ listEmpty: {
646
+ description: "Aucun enregistrement à afficher.",
647
+ title: "Aucun résultat"
648
+ },
649
+ listEmptyFiltered: {
650
+ actions: { reset: "Réinitialiser les filtres" },
651
+ description: "Aucun résultat ne correspond aux filtres actuels."
652
+ }
653
+ },
654
+ filters: {
655
+ actions: { filterBy: "Filtrer par {{label}}" },
656
+ all: "Tous {{label}}",
657
+ allFilters: "Tous les filtres",
658
+ allFiltersWithCount_one: "Tous les filtres ({{count}})",
659
+ allFiltersWithCount_many: "Tous les filtres ({{count}})",
660
+ allFiltersWithCount_other: "Tous les filtres ({{count}})",
661
+ boolean: {
662
+ no: "Non",
663
+ yes: "Oui"
664
+ },
665
+ placeholders: {
666
+ search: "Rechercher {{label}}",
667
+ unresolved: "ID introuvable"
668
+ },
669
+ sections: { default: "Filtres" }
670
+ },
671
+ flags: {
672
+ agentManaged: {
673
+ agentManaged: "Géré par un agent",
674
+ userManaged: "Géré par un utilisateur"
675
+ },
676
+ capability: {
677
+ allowed: "Autorisé",
678
+ denied: "Refusé"
679
+ },
680
+ default: {
681
+ default: "Par défaut",
682
+ notDefault: "Non par défaut"
683
+ },
684
+ deployedProduction: {
685
+ deployed: "Déployé",
686
+ notDeployed: "Non déployé"
687
+ },
688
+ enabled: {
689
+ disabled: "Désactivé",
690
+ enabled: "Activé"
691
+ },
692
+ encrypted: {
693
+ encrypted: "Chiffré",
694
+ notEncrypted: "Non chiffré"
695
+ },
696
+ failure: {
697
+ failed: "Échoué",
698
+ ok: "OK"
699
+ },
700
+ forced: {
701
+ forced: "Forcé",
702
+ normal: "Normal"
703
+ },
704
+ locked: {
705
+ locked: "Verrouillé",
706
+ unlocked: "Déverrouillé"
707
+ }
708
+ },
709
+ format: {
710
+ currency: "{{value, currency}}",
711
+ number: "{{value, number}}",
712
+ percent: "{{value, percent}}"
713
+ },
714
+ list: {
715
+ actions: {
716
+ refresh: "Actualiser",
717
+ retry: "Réessayer"
718
+ },
719
+ errors: {
720
+ tableFailed: "Le tableau n'a pas pu se charger.",
721
+ title: "Erreur du tableau"
722
+ },
723
+ loadMore: {
724
+ end: "Fin des résultats",
725
+ loading: "Chargement…",
726
+ more: "Plus de résultats disponibles"
727
+ },
728
+ showing: "Affichage de {{shown, number}} sur {{total, number}}"
729
+ },
730
+ picker: {
731
+ errors: { loadFailed: "Échec du chargement." },
732
+ searchPlaceholder: { default: "Rechercher..." },
733
+ searchRequired: "Saisissez un ID pour rechercher.",
734
+ title: "Sélectionner un ID",
735
+ unavailable: "Sélecteur indisponible pour {{entity}}."
736
+ },
737
+ relations: {
738
+ labelWithCount_one: "{{label}} ({{count}})",
739
+ labelWithCount_many: "{{label}} ({{count}})",
740
+ labelWithCount_other: "{{label}} ({{count}})",
741
+ menu: { label: "Relations" },
742
+ viewList: "Voir la liste"
743
+ },
744
+ sidebar: {
745
+ actions: {
746
+ pin: "Épingler",
747
+ reorder: "Réordonner",
748
+ unpin: "Désépingler"
749
+ },
750
+ items: { dashboard: "Tableau de bord" },
751
+ profile: {
752
+ actions: { signOut: "Se déconnecter" },
753
+ menuAriaLabel: "Ouvrir le menu profil",
754
+ title: "Profil",
755
+ unknownUser: "Utilisateur inconnu"
756
+ },
757
+ search: { placeholder: "Rechercher..." },
758
+ sections: { pinned: "Épinglés" }
759
+ },
760
+ tools: {
761
+ docs: {
762
+ inputExampleTitle: "Exemple JSON",
763
+ inputTypeTitle: "Type d'entrée (GraphQL)"
764
+ },
765
+ errors: {
766
+ description: "Impossible d'exécuter cet outil.",
767
+ details: "Détails de l'erreur",
768
+ label: "Erreur",
769
+ missingScope: "Portée de l'initiative manquante.",
770
+ title: "Erreur d'outil",
771
+ unknown: "Erreur inconnue"
772
+ },
773
+ forms: {
774
+ actions: {
775
+ insertExample: "Insérer l'exemple",
776
+ run: "Exécuter"
777
+ },
778
+ inputJsonLabel: "JSON d'entrée"
779
+ },
780
+ meta: { idLabel: "Outil" },
781
+ output: "Résultat",
782
+ project: {
783
+ actions: { pick: "Choisir" },
784
+ description: "Sélectionner le projet à analyser.",
785
+ empty: "Choisissez un projet pour exécuter les outils.",
786
+ pickerTitle: "Sélectionner un projet",
787
+ placeholder: "ID du projet",
788
+ title: "Projet"
789
+ },
790
+ scope: {
791
+ actions: { pick: "Choisir" },
792
+ description: "Sélectionner l'initiative pour exécuter les outils.",
793
+ empty: "Choisissez une initiative pour exécuter les outils.",
794
+ pickerTitle: "Sélectionner une initiative",
795
+ placeholder: "ID de l'initiative",
796
+ title: "Portée"
797
+ }
798
+ }
799
+ },
800
+ shared: {
801
+ auth: {
802
+ acceptInvitation: {
803
+ actions: { backToLogin: "Retour à la connexion" },
804
+ errors: {
805
+ alreadyAccepted: "Cette invitation a déjà été acceptée.",
806
+ default: "Impossible d'accepter l'invitation.",
807
+ emailMismatch: "Cette invitation a été envoyée à une autre adresse email.",
808
+ expired: "Le lien d'invitation a expiré.",
809
+ invalidToken: "Le lien d'invitation est invalide.",
810
+ missingToken: "Le lien d'invitation est manquant ou invalide.",
811
+ passwordMismatch: "Le mot de passe et sa confirmation ne correspondent pas.",
812
+ passwordPolicyViolation: "Votre mot de passe ne respecte pas la politique de sécurité.",
813
+ rateLimited: "Trop de tentatives. Veuillez réessayer plus tard."
814
+ },
815
+ form: {
816
+ confirmLabel: "Confirmer le mot de passe",
817
+ confirmPlaceholder: "Confirmez votre mot de passe",
818
+ passwordLabel: "Mot de passe",
819
+ passwordPlaceholder: "Créez un mot de passe",
820
+ submit: "Accepter l'invitation"
821
+ },
822
+ mfaSubtitle: "Entrez le code de vérification pour continuer.",
823
+ mfaTitle: "Vérifiez votre identité",
824
+ status: {
825
+ success: "Invitation acceptée.",
826
+ workingButton: "Traitement..."
827
+ },
828
+ subtitle: "Créez votre compte pour rejoindre.",
829
+ title: "Accepter l'invitation"
830
+ },
831
+ emailCapture: {
832
+ continue: "Continuer",
833
+ description: "Entrez votre email professionnel pour continuer.",
834
+ emailLabel: "Email professionnel",
835
+ emailPlaceholder: "vous@entreprise.com",
836
+ forgotPassword: "Mot de passe oublié ?"
837
+ },
838
+ loginFlow: {
839
+ errors: {
840
+ accountLocked: "Trop de tentatives. Veuillez réessayer plus tard.",
841
+ emailRequired: "Entrez une adresse email pour continuer.",
842
+ invalidCredentials: "Email ou mot de passe incorrect.",
843
+ invalidEmail: "Entrez une adresse email valide.",
844
+ passkeyUnavailable: "Les passkeys ne sont pas disponibles.",
845
+ rateLimited: "Trop de tentatives. Veuillez réessayer plus tard.",
846
+ tryAgain: "Une erreur est survenue. Veuillez réessayer."
847
+ },
848
+ methods: { title: "Choisissez une méthode de connexion" },
849
+ passkey: {
850
+ description: "Utilisez la passkey associée à {{email}}.",
851
+ title: "Utiliser une passkey"
852
+ },
853
+ subtitle: {
854
+ default: "Choisissez une méthode de connexion pour continuer.",
855
+ mfa: "Entrez le code de vérification pour continuer."
856
+ },
857
+ title: {
858
+ default: "Se connecter",
859
+ mfa: "Authentification à deux facteurs"
860
+ }
861
+ },
862
+ methodChooser: {
863
+ actions: { back: "Retour" },
864
+ locked: "Trop de tentatives. Veuillez réessayer plus tard.",
865
+ lockedWithTime: "Trop de tentatives. Veuillez réessayer à {{time}}.",
866
+ methods: {
867
+ other: "{{method}}",
868
+ passkey: "Passkey",
869
+ password: "Mot de passe"
870
+ },
871
+ prompt: "Choisissez comment vous connecter pour <strong>{{email}}</strong>."
872
+ },
873
+ mfa: {
874
+ actions: {
875
+ back: "Retour",
876
+ submit: "Vérifier"
877
+ },
878
+ errors: {
879
+ expired: "La session de vérification a expiré. Réessayez.",
880
+ invalidChallenge: "La session de vérification est invalide. Reprenez la connexion.",
881
+ invalidCode: "Code invalide. Réessayez.",
882
+ shortCode: "Entrez le code à 6 chiffres.",
883
+ tooManyAttempts: "Trop de tentatives. Veuillez réessayer plus tard.",
884
+ verificationFailed: "La vérification a échoué. Réessayez."
885
+ },
886
+ form: {
887
+ label: "Code de vérification",
888
+ placeholder: "123456"
889
+ },
890
+ helper: {
891
+ default: "Entrez le code à 6 chiffres de votre authentificateur.",
892
+ withEmail: "Entrez le code à 6 chiffres envoyé à {{email}}."
893
+ }
894
+ },
895
+ oidc: { buttons: {
896
+ apple: "Continuer avec Apple",
897
+ generic: "Continuer avec un SSO",
898
+ google: "Continuer avec Google"
899
+ } },
900
+ passkey: {
901
+ actions: {
902
+ showMethods: "Utiliser une autre méthode",
903
+ submit: "Continuer avec la passkey",
904
+ submitting: "En attente de la passkey..."
905
+ },
906
+ errors: {
907
+ challengeExpired: "La demande de passkey a expiré. Réessayez.",
908
+ emailRequired: "Entrez votre email pour continuer.",
909
+ failed: "Échec de la connexion par passkey.",
910
+ invalidAssertion: "La réponse de passkey est invalide. Réessayez.",
911
+ invalidChallenge: "La demande de passkey est invalide. Réessayez.",
912
+ invalidEmail: "Entrez une adresse email valide.",
913
+ locked: "Trop de tentatives. Veuillez réessayer plus tard.",
914
+ lockedWithTime: "Trop de tentatives. Veuillez réessayer à {{time}}.",
915
+ notAvailable: "Les passkeys ne sont pas disponibles sur cet appareil.",
916
+ notFound: "Aucune passkey n'est associée à ce compte."
917
+ },
918
+ form: {
919
+ emailLabel: "Email",
920
+ emailPlaceholder: "vous@entreprise.com"
921
+ },
922
+ helper: "Utilisez une passkey à la place de votre mot de passe."
923
+ },
924
+ passwordLogin: {
925
+ forgotPassword: "Mot de passe oublié ?",
926
+ title: "Se connecter"
927
+ },
928
+ passwordResetComplete: {
929
+ errors: {
930
+ invalid: "Le lien de réinitialisation est invalide ou expiré.",
931
+ minLength: "Le mot de passe doit contenir au moins {{minLength}} caractères.",
932
+ mismatch: "Les mots de passe ne correspondent pas.",
933
+ missingToken: "Le lien de réinitialisation est manquant ou invalide."
934
+ },
935
+ form: {
936
+ confirmLabel: "Confirmer le mot de passe",
937
+ confirmPlaceholder: "Saisissez à nouveau votre mot de passe",
938
+ description: "Entrez un nouveau mot de passe pour votre compte.",
939
+ passwordLabel: "Mot de passe",
940
+ passwordPlaceholder: "Entrez un nouveau mot de passe",
941
+ submit: "Mettre à jour le mot de passe",
942
+ title: "Nouveau mot de passe"
943
+ },
944
+ subtitle: "Choisissez un mot de passe robuste pour sécuriser votre compte.",
945
+ success: {
946
+ action: "Retour à la connexion",
947
+ description: "Votre mot de passe a été modifié.",
948
+ helper: "Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.",
949
+ title: "Mot de passe mis à jour"
950
+ },
951
+ title: "Définir un nouveau mot de passe"
952
+ },
953
+ passwordResetRequest: {
954
+ errors: {
955
+ emailRequired: "Entrez une adresse email.",
956
+ startFailed: "Impossible de démarrer la réinitialisation."
957
+ },
958
+ form: {
959
+ description: "Entrez l'email de votre compte.",
960
+ emailLabel: "Email",
961
+ emailPlaceholder: "vous@entreprise.com",
962
+ submit: "Envoyer le lien de réinitialisation"
963
+ },
964
+ sent: {
965
+ action: "Envoyer un autre email",
966
+ description: "Nous avons envoyé un lien de réinitialisation à {{email}}.",
967
+ helper: "Si vous ne le voyez pas, vérifiez les spams ou réessayez.",
968
+ title: "Vérifiez votre email"
969
+ },
970
+ title: "Réinitialiser votre mot de passe"
971
+ },
972
+ verifyEmail: {
973
+ actions: {
974
+ continue: "Continuer",
975
+ return: "Retour à la connexion"
976
+ },
977
+ errors: {
978
+ invalid: "Le lien de vérification est invalide ou expiré.",
979
+ missingToken: "Le lien de vérification est manquant ou invalide."
980
+ },
981
+ status: {
982
+ success: "Email vérifié. Vous pouvez continuer.",
983
+ verifying: "Vérification...",
984
+ verifyingButton: "Vérification"
985
+ },
986
+ subtitle: "Confirmez votre adresse email pour continuer.",
987
+ title: "Vérifier votre email"
988
+ }
989
+ },
990
+ review: { status: {
991
+ approved: "Approuvé",
992
+ changesRequested: "Modifications demandées",
993
+ pending: "En attente",
994
+ unknown: "Inconnu"
995
+ } }
996
+ }
997
+ }
998
+ }, { RelayEnvironmentProvider: Ye } = k, Xe = ({ children: e }) => /* @__PURE__ */ A(Ye, {
999
+ environment: t(),
1000
+ children: e
1001
+ }), { loadQuery: L, usePreloadedQuery: Ze } = k, Qe = O("WrapperPage", async () => ({ default: (await import("@plumile/ui")).WrapperPage })), $e = O("BackofficeLayoutPage", async () => import("./BackofficeLayoutPage-k9OkLfXb.js")), et = O("BackofficeEntityListPage", async () => import("./BackofficeEntityListPage-BxgqdFpL.js")), tt = O("BackofficeEntityDetailPage", async () => import("./BackofficeEntityDetailPage-CdrMXu5a.js")), nt = O("BackofficeEntityDetailLayoutPage", async () => import("./BackofficeEntityDetailLayoutPage-DXjRqvcZ.js")), rt = O("BackofficeEntityDetailUnknownPageRedirect", async () => import("./BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js")), it = O("BackofficeDashboardPage", async () => import("./BackofficeDashboardPage-GKyT60qb.js")), at = O("BackofficeLoginPage", async () => import("./BackofficeLoginPage-C64BcxMw.js")), ot = O("BackofficePasswordResetRequestPage", async () => import("./BackofficePasswordResetRequestPage-B9wSZcyn.js")), st = O("BackofficePasswordResetCompletePage", async () => import("./BackofficePasswordResetCompletePage-BA7kkUxN.js")), ct = O("BackofficeVerifyEmailPage", async () => import("./BackofficeVerifyEmailPage-CAzMqo2K.js")), lt = O("BackofficeAcceptInvitationPage", async () => import("./BackofficeAcceptInvitationPage-DRxM1Z-U.js")), ut = (e) => {
1002
+ let t = e.trim();
1003
+ return t === "" || t === "/" ? "" : t.replace(/^\/+|\/+$/g, "");
1004
+ }, dt = (e) => {
1005
+ let t = e.trim();
1006
+ return t === "" ? "/" : `/${t}`.replace(/\/+/g, "/");
1007
+ }, R = (e, t) => {
1008
+ let n = t.replace(/^\/+|\/+$/g, "");
1009
+ return e === "" ? n : n === "" ? e : `${e}/${n}`;
1010
+ }, ft = (e, t) => dt(R(e, t)), z = (e, t) => {
1011
+ let n = dt(e), r = t === "" ? "" : `/${t}`;
1012
+ return r !== "" && n.startsWith(r) ? n.slice(r.length).replace(/^\/+/, "") : n.replace(/^\/+/, "");
1013
+ }, pt = (e, t) => {
1014
+ if (e?.routes == null) return null;
1015
+ for (let n = e.routes.length - 1; n >= 0; --n) {
1016
+ let r = e.routes[n];
1017
+ if (r != null) {
1018
+ let e = t.get(r);
1019
+ if (e != null) return e;
1020
+ }
1021
+ }
1022
+ return null;
1023
+ }, mt = (e) => {
1024
+ let t = new URLSearchParams();
1025
+ return Object.entries(e).forEach(([e, n]) => {
1026
+ if (n != null) {
1027
+ if (Array.isArray(n)) {
1028
+ n.forEach((n) => {
1029
+ n != null && t.append(e, String(n));
1030
+ });
1031
+ return;
1032
+ }
1033
+ t.set(e, String(n));
1034
+ }
1035
+ }), t;
1036
+ }, B = Oe;
1037
+ function ht(e) {
1038
+ let { basePath: t, entityManifest: n, entityRegistry: r, sidebar: i, auth: a, dashboard: o } = e, l = ut(t), u = R(l, "login"), d = R(l, "login/reset"), f = R(l, "login/reset/complete"), p = R(l, "verify-email"), m = R(l, "accept-invitation"), h = ft(l, "login"), g = c(s(n, i)), _ = /* @__PURE__ */ new Map();
1039
+ g.forEach((e, t) => {
1040
+ _.set(t, e.groupId);
1041
+ });
1042
+ let v = /* @__PURE__ */ new WeakMap(), y = i?.permissionsQuery, ee = async ({ context: e }) => {
1043
+ let t = await a.session.load();
1044
+ return {
1045
+ permissionsQuery: y == null ? null : L(e.relayEnvironment, y, {}),
1046
+ authStatusQuery: t.authStatusQuery == null ? null : L(e.relayEnvironment, t.authStatusQuery, {}, { fetchPolicy: "network-only" })
1047
+ };
1048
+ }, te = B({
1049
+ path: "",
1050
+ resourcePage: it,
1051
+ prepare: async () => (o == null || await o.load(), null),
1052
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
1053
+ }), b = Object.values(n).filter((e) => e.kind === "list-detail").map((e) => {
1054
+ let t = e.routes.list, n = z(t, l), i = [];
1055
+ if (e.hasList) {
1056
+ let t = B({
1057
+ path: "",
1058
+ resourcePage: et,
1059
+ prepare: async ({ context: t, query: n }) => {
1060
+ let { config: i } = await r.loadListEntity(e.id), { list: a, listUrlCodec: o, listDefaults: s } = i;
1061
+ if (o == null || s == null) throw Error(`Backoffice entity ${e.id} does not expose a list configuration.`);
1062
+ let c = mt(n), l = o.parse(c), { pageSize: u } = Ie, d = {
1063
+ where: l.where,
1064
+ sort: l.sort ?? s.sort,
1065
+ count: u,
1066
+ cursor: null
1067
+ }, f = a.buildVariables == null ? d : a.buildVariables(d), p = L(t.relayEnvironment, a.query, f);
1068
+ return {
1069
+ entityId: e.id,
1070
+ entityManifest: e,
1071
+ entityConfig: i,
1072
+ query: p
1073
+ };
1074
+ },
1075
+ render: ({ prepared: e, Component: t }) => {
1076
+ if (t == null) return null;
1077
+ let n = e;
1078
+ return /* @__PURE__ */ A(t, {
1079
+ entityManifest: n.entityManifest,
1080
+ config: n.entityConfig,
1081
+ prepared: n
1082
+ });
1083
+ }
1084
+ });
1085
+ v.set(t, e.id), i.push(t);
1086
+ }
1087
+ let a = B({
1088
+ path: ":id",
1089
+ resourcePage: nt,
1090
+ prepare: async ({ context: t, variables: n }) => {
1091
+ let { config: i } = await r.loadDetailLayoutEntity(e.id), a = String(n.id ?? ""), o = i.layoutPage.buildVariables == null ? { variables: { id: a } } : i.layoutPage.buildVariables({ id: a }), s = L(t.relayEnvironment, i.layoutPage.query, o.variables);
1092
+ return {
1093
+ entityId: e.id,
1094
+ entityManifest: e,
1095
+ entityConfig: i,
1096
+ layoutQuery: s,
1097
+ id: a
1098
+ };
1099
+ },
1100
+ render: ({ children: e, prepared: t, Component: n }) => {
1101
+ if (n == null) return null;
1102
+ let r = t;
1103
+ return /* @__PURE__ */ A(n, {
1104
+ entityManifest: r.entityManifest,
1105
+ config: r.entityConfig,
1106
+ prepared: r,
1107
+ children: e
1108
+ });
1109
+ },
1110
+ children: [
1111
+ B({
1112
+ path: "",
1113
+ resourcePage: Qe,
1114
+ prepare: ({ variables: t }) => {
1115
+ let n = String(t.id ?? "").trim();
1116
+ return { redirectTo: n === "" ? null : e.routes.detailPage(n, e.defaultDetailPageId ?? "overview") };
1117
+ },
1118
+ render: ({ prepared: e }) => {
1119
+ let t = e.redirectTo ?? null;
1120
+ if (t == null) return null;
1121
+ throw new Ce(t);
1122
+ }
1123
+ }),
1124
+ ...(e.detailPages ?? []).map((t) => B({
1125
+ path: t.pathSegment,
1126
+ resourcePage: tt,
1127
+ prepare: async ({ context: n, variables: i }) => {
1128
+ let a = String(i.id ?? ""), o = await r.loadDetailPageEntity(e.id, t.id), s = o.config.page.buildVariables == null ? { variables: { id: a } } : o.config.page.buildVariables({ id: a }), c = L(n.relayEnvironment, o.config.page.query, s.variables);
1129
+ return {
1130
+ entityId: e.id,
1131
+ entityManifest: e,
1132
+ entityConfig: o.config,
1133
+ detailId: s.detailId,
1134
+ id: a,
1135
+ pageConfig: o.config,
1136
+ pageQuery: c,
1137
+ pageId: t.id,
1138
+ pagePath: t.pathSegment
1139
+ };
1140
+ },
1141
+ render: ({ prepared: e, Component: t }) => {
1142
+ if (t == null) return null;
1143
+ let n = e;
1144
+ return /* @__PURE__ */ A(t, {
1145
+ entityManifest: n.entityManifest,
1146
+ config: n.entityConfig,
1147
+ prepared: n
1148
+ });
1149
+ }
1150
+ })),
1151
+ B({
1152
+ path: ":pagePath",
1153
+ resourcePage: rt,
1154
+ prepare: async ({ variables: t }) => {
1155
+ let n = await r.loadDetailLayoutEntity(e.id), i = String(t.id ?? ""), a = String(t.pagePath ?? "");
1156
+ return {
1157
+ entityManifest: e,
1158
+ entityConfig: n.config,
1159
+ id: i,
1160
+ pagePath: a
1161
+ };
1162
+ },
1163
+ render: ({ prepared: e, Component: t }) => {
1164
+ if (t == null) return null;
1165
+ let n = e;
1166
+ return /* @__PURE__ */ A(t, {
1167
+ entityManifest: n.entityManifest,
1168
+ config: n.entityConfig,
1169
+ prepared: n
1170
+ });
1171
+ }
1172
+ })
1173
+ ]
1174
+ });
1175
+ return v.set(a, e.id), i.push(a), B({
1176
+ path: n,
1177
+ children: i,
1178
+ resourcePage: Qe
1179
+ });
1180
+ }), ne = Object.values(n).filter((e) => e.kind === "tool").map((t) => {
1181
+ let n = B({
1182
+ path: z(t.routes.list, l),
1183
+ resourcePage: e.toolsOperationPage ?? null,
1184
+ prepare: async () => {
1185
+ let e = await r.loadToolEntity(t.id);
1186
+ return {
1187
+ entityId: t.id,
1188
+ entityManifest: t,
1189
+ entityConfig: e.config
1190
+ };
1191
+ },
1192
+ render: ({ prepared: e, Component: t }) => {
1193
+ if (t == null) return null;
1194
+ let n = e;
1195
+ return /* @__PURE__ */ A(t, {
1196
+ entityManifest: n.entityManifest,
1197
+ operation: n.entityConfig.tool.operation,
1198
+ toolId: n.entityConfig.id
1199
+ });
1200
+ }
1201
+ });
1202
+ return v.set(n, t.id), n;
1203
+ }), re = B({
1204
+ path: l,
1205
+ resourcePage: $e,
1206
+ prepare: ee,
1207
+ render: ({ children: e, prepared: t, route: n, Component: r }) => {
1208
+ if (r == null) return null;
1209
+ let o = t, s = pt(n, v), c = s == null ? null : _.get(s) ?? null, l = null, u = a.session.get()?.authStatusQuery ?? null;
1210
+ if (u != null && o?.authStatusQuery != null) {
1211
+ l = Ze(u, o.authStatusQuery);
1212
+ let { isLoggedIn: e } = l;
1213
+ if (!e) throw new Ce(h);
1214
+ }
1215
+ return /* @__PURE__ */ A(r, {
1216
+ permissionsQuery: i?.permissionsQuery,
1217
+ prepared: o?.permissionsQuery ?? null,
1218
+ authStatus: l,
1219
+ activeGroupId: c,
1220
+ children: e
1221
+ });
1222
+ },
1223
+ children: [
1224
+ te,
1225
+ ...b,
1226
+ ...ne
1227
+ ]
1228
+ }), x = [
1229
+ B({
1230
+ path: u,
1231
+ resourcePage: at,
1232
+ prepare: async ({ context: e }) => {
1233
+ let t = await a.login.load();
1234
+ return { query: L(e.relayEnvironment, t.loginQuery, {}) };
1235
+ },
1236
+ render: ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ A(t, { prepared: e })
1237
+ }),
1238
+ B({
1239
+ path: d,
1240
+ resourcePage: ot,
1241
+ prepare: async () => (await a.passwordResetRequest.load(), null),
1242
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
1243
+ }),
1244
+ B({
1245
+ path: f,
1246
+ resourcePage: st,
1247
+ prepare: async () => (await a.passwordResetComplete.load(), null),
1248
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
1249
+ }),
1250
+ B({
1251
+ path: p,
1252
+ resourcePage: ct,
1253
+ prepare: async () => (await a.verifyEmail.load(), null),
1254
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
1255
+ })
1256
+ ];
1257
+ return (a.hasAcceptInvitation === !0 || a.acceptInvitation != null) && x.push(B({
1258
+ path: m,
1259
+ resourcePage: lt,
1260
+ prepare: async () => (await a.acceptInvitation?.load(), null),
1261
+ render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ A(e, {})
1262
+ })), x.push(re), x;
1263
+ }
1264
+ //#endregion
1265
+ //#region src/components/backoffice/routing/backofficeRouteFallback.css.ts
1266
+ var gt = "cxyw860 vncd899io vncd89ai6 vncd89co vncd89dnx vncd89k4o vncd89u6f vncd89aoo vncd89v2t vncd89v8r", _t = "cxyw861 vncd89v8t", vt = () => {
1267
+ let { t: e, i18n: t } = D("backofficeReact", { useSuspense: !1 }), n = "Loading...";
1268
+ return t.isInitialized && (n = e("common.loading")), /* @__PURE__ */ j("div", {
1269
+ className: gt,
1270
+ role: "status",
1271
+ "aria-live": "polite",
1272
+ "aria-busy": "true",
1273
+ children: [/* @__PURE__ */ A(Me, { size: 28 }), /* @__PURE__ */ A("div", {
1274
+ className: _t,
1275
+ children: n
1276
+ })]
1277
+ });
1278
+ }, yt = "_11exksg2 _11exksg1 vncd89v2v vncd89pso vncd89t6x vncd89dpf vncd89l6f vncd892k vncd89u6f vncd89uvf", bt = "_11exksg4 _11exksg3 vncd89cff vncd89unf", xt = () => /* @__PURE__ */ A("div", {
1279
+ className: yt,
1280
+ "aria-hidden": "true",
1281
+ children: /* @__PURE__ */ A("div", { className: bt })
1282
+ }), St = "cache-first", V = "detail-page", H = "detail-layout", U = "list", W = "picker", G = "tool", K = (e) => e.kind === "list-detail", Ct = (e) => e.kind === "tool", q = (e, t, n) => t === V ? `${e}:${t}:${n ?? ""}` : `${e}:${t}`, wt = (e) => e instanceof Error ? e : Error(String(e)), J = (e) => e?.status !== "loaded" || e.module == null ? null : e.module, Y = (e, t) => {
1283
+ let n = e[t];
1284
+ if (n == null) throw Error(`Unknown backoffice entity: ${t}`);
1285
+ return n;
1286
+ }, Tt = (e, t) => {
1287
+ let n = /* @__PURE__ */ new Map(), r = (t) => e[t] ?? null, i = async (e, t, r) => {
1288
+ if ((t?.mode ?? St) === "cache-first") {
1289
+ let t = J(n.get(e));
1290
+ if (t != null) return t;
1291
+ let r = n.get(e);
1292
+ if (r?.status === "loading" && r.promise != null) return r.promise;
1293
+ }
1294
+ let i = r().then((t) => (n.set(e, {
1295
+ status: "loaded",
1296
+ module: t
1297
+ }), t)).catch((t) => {
1298
+ let r = wt(t);
1299
+ throw n.set(e, {
1300
+ status: "error",
1301
+ error: r
1302
+ }), r;
1303
+ });
1304
+ return n.set(e, {
1305
+ status: "loading",
1306
+ promise: i
1307
+ }), i;
1308
+ };
1309
+ return {
1310
+ getManifest: r,
1311
+ getLoadedListEntity: (e) => J(n.get(q(e, U))),
1312
+ getLoadedPickerEntity: (e) => J(n.get(q(e, W))),
1313
+ getLoadedDetailLayoutEntity: (e) => J(n.get(q(e, H))),
1314
+ getLoadedDetailPageEntity: (e, t) => J(n.get(q(e, V, t))),
1315
+ getLoadedToolEntity: (e) => J(n.get(q(e, G))),
1316
+ loadListEntity: async (n, r) => {
1317
+ let a = Y(e, n);
1318
+ if (!K(a)) throw Error(`Backoffice entity ${n} does not expose a list facet.`);
1319
+ let o = a.facets.list;
1320
+ if (o == null) throw Error(`Backoffice entity ${n} does not expose a list facet.`);
1321
+ return i(q(n, U), r, async () => {
1322
+ let e = M(a, await o(), t);
1323
+ if (e.kind !== U) throw Error(`Backoffice entity ${n} did not resolve to a list facet.`);
1324
+ return e;
1325
+ });
1326
+ },
1327
+ loadPickerEntity: async (n, r) => {
1328
+ let a = Y(e, n);
1329
+ if (!K(a)) throw Error(`Backoffice entity ${n} does not expose a picker facet.`);
1330
+ let o = a.facets.picker;
1331
+ if (o == null) throw Error(`Backoffice entity ${n} does not expose a picker facet.`);
1332
+ return i(q(n, W), r, async () => {
1333
+ let e = M(a, await o(), t);
1334
+ if (e.kind !== W) throw Error(`Backoffice entity ${n} did not resolve to a picker facet.`);
1335
+ return e;
1336
+ });
1337
+ },
1338
+ loadDetailLayoutEntity: async (n, r) => {
1339
+ let a = Y(e, n);
1340
+ if (!K(a)) throw Error(`Backoffice entity ${n} does not expose a detail-layout facet.`);
1341
+ return i(q(n, H), r, async () => {
1342
+ let e = M(a, await a.facets.detailLayout(), t);
1343
+ if (e.kind !== H) throw Error(`Backoffice entity ${n} did not resolve to a detail-layout facet.`);
1344
+ return e;
1345
+ });
1346
+ },
1347
+ loadDetailPageEntity: async (n, r, a) => {
1348
+ let o = Y(e, n);
1349
+ if (!K(o)) throw Error(`Backoffice entity ${n} does not expose a detail-page facet.`);
1350
+ return i(q(n, V, r), a, async () => {
1351
+ let e = M(o, await o.facets.detailPage(r), t);
1352
+ if (e.kind !== V) throw Error(`Backoffice entity ${n} did not resolve to a detail-page facet.`);
1353
+ return e;
1354
+ });
1355
+ },
1356
+ loadToolEntity: async (n, r) => {
1357
+ let a = Y(e, n);
1358
+ if (!Ct(a)) throw Error(`Backoffice entity ${n} does not expose a tool facet.`);
1359
+ return i(q(n, G), r, async () => {
1360
+ let e = M(a, await a.facets.tool(), t);
1361
+ if (e.kind !== G) throw Error(`Backoffice entity ${n} did not resolve to a tool facet.`);
1362
+ return e;
1363
+ });
1364
+ }
1365
+ };
1366
+ }, X = (e) => e.trim() === "" || e === "/" ? "/" : e.startsWith("/") ? e.endsWith("/") ? e.slice(0, -1) : e : `/${e}`, Z = (e, t) => {
1367
+ let n = X(t), r = X(e);
1368
+ return r === "/" || n === r || n.startsWith(`${r}/`) ? n : n === "/" ? r : `${r}${n}`;
1369
+ }, Et = (e, t) => Object.fromEntries(Object.entries(e).map(([e, n]) => [e, {
1370
+ ...n,
1371
+ routes: {
1372
+ list: Z(t, n.routes.list),
1373
+ detail: (e) => Z(t, n.routes.detail(e)),
1374
+ detailPage: (e, r) => Z(t, n.routes.detailPage(e, r))
1375
+ }
1376
+ }])), Q = (e) => typeof e == "object" && !Array.isArray(e) ? e : {}, Dt = ({ routes: e, instrumentations: t }) => {
1377
+ let n = i(), r = w(() => ({ relayEnvironment: n }), [n]), a = w(() => De(e, {
1378
+ context: r,
1379
+ instrumentations: t
1380
+ }), [
1381
+ t,
1382
+ e,
1383
+ r
1384
+ ]);
1385
+ return C(() => () => {
1386
+ a.cleanup();
1387
+ }, [a]), /* @__PURE__ */ A(Ee.Provider, {
1388
+ value: a.context,
1389
+ children: /* @__PURE__ */ A(Te, {
1390
+ enableTransition: !0,
1391
+ fallback: /* @__PURE__ */ A(vt, {}),
1392
+ pending: /* @__PURE__ */ A(xt, {})
1393
+ })
1394
+ });
1395
+ }, Ot = (e) => {
1396
+ let t = X(e.basePath ?? "/"), n = w(() => Et(e.entityManifest, t), [t, e.entityManifest]), i = w(() => Tt(n, { basePath: t }), [t, n]), a = e.graphql;
1397
+ C(() => {
1398
+ r({
1399
+ httpUrl: a.httpUrl ?? a.endpoint,
1400
+ wsUrl: a.wsUrl ?? a.wsEndpoint,
1401
+ getDataId: a.getDataId,
1402
+ logEvents: a.logEvents,
1403
+ getAuthHeaders: a.getAuthHeaders
1404
+ });
1405
+ }, [
1406
+ a.endpoint,
1407
+ a.getAuthHeaders,
1408
+ a.getDataId,
1409
+ a.httpUrl,
1410
+ a.logEvents,
1411
+ a.wsEndpoint,
1412
+ a.wsUrl
1413
+ ]);
1414
+ let s = w(() => {
1415
+ let t = e.i18n?.resources ?? {}, n = Je, r = new Set([...Object.keys(n), ...Object.keys(t)]), i = {};
1416
+ return r.forEach((e) => {
1417
+ let r = Q(n[e]), a = Q(t[e]);
1418
+ i[e] = {
1419
+ ...r,
1420
+ ...a,
1421
+ backofficeReact: I(Q(r.backofficeReact), Q(a.backofficeReact)),
1422
+ shared: I(Q(r.shared), Q(a.shared))
1423
+ };
1424
+ }), i;
1425
+ }, [e.i18n?.resources]), c = w(() => e.i18n?.instance ?? E(), [e.i18n?.instance]);
1426
+ return C(() => {
1427
+ let t = e.i18n?.initOptions ?? {}, n = t.defaultNS ?? "translations", r = t.ns ?? [
1428
+ "backofficeReact",
1429
+ "translations",
1430
+ "shared",
1431
+ "ui"
1432
+ ];
1433
+ Ke({
1434
+ resources: s,
1435
+ lng: e.i18n?.lng,
1436
+ fallbackLng: e.i18n?.fallbackLng,
1437
+ initOptions: {
1438
+ ...t,
1439
+ defaultNS: n,
1440
+ ns: r
1441
+ },
1442
+ instance: c,
1443
+ useLanguageDetector: e.i18n?.useLanguageDetector,
1444
+ detection: e.i18n?.detection
1445
+ }).catch(console.error);
1446
+ }, [
1447
+ c,
1448
+ s,
1449
+ e.i18n?.initOptions,
1450
+ e.i18n?.detection,
1451
+ e.i18n?.fallbackLng,
1452
+ e.i18n?.lng,
1453
+ e.i18n?.useLanguageDetector
1454
+ ]), /* @__PURE__ */ A(ve, { children: /* @__PURE__ */ A(xe, {
1455
+ i18n: c,
1456
+ children: /* @__PURE__ */ A(Ne, { children: /* @__PURE__ */ A(Xe, { children: /* @__PURE__ */ A(o, {
1457
+ value: w(() => ({
1458
+ basePath: t,
1459
+ entities: n,
1460
+ entityManifest: n,
1461
+ entityRegistry: i,
1462
+ filterColumnAliases: e.filterColumnAliases,
1463
+ sidebar: e.sidebar,
1464
+ dashboard: e.dashboard,
1465
+ auth: e.auth,
1466
+ graphql: e.graphql
1467
+ }), [
1468
+ t,
1469
+ e.auth,
1470
+ e.dashboard,
1471
+ n,
1472
+ i,
1473
+ e.filterColumnAliases,
1474
+ e.graphql,
1475
+ e.sidebar
1476
+ ]),
1477
+ children: /* @__PURE__ */ A(Dt, {
1478
+ routes: w(() => ht({
1479
+ basePath: t,
1480
+ entityManifest: n,
1481
+ entityRegistry: i,
1482
+ sidebar: e.sidebar,
1483
+ auth: e.auth,
1484
+ dashboard: e.dashboard,
1485
+ toolsOperationPage: e.toolsOperationPage
1486
+ }), [
1487
+ t,
1488
+ n,
1489
+ i,
1490
+ e.auth,
1491
+ e.dashboard,
1492
+ e.toolsOperationPage,
1493
+ e.sidebar
1494
+ ]),
1495
+ instrumentations: e.instrumentations
1496
+ })
1497
+ }) }) })
1498
+ }) });
1499
+ }, kt = (e) => {
1500
+ let t = null, n = null;
1501
+ return {
1502
+ get: () => t,
1503
+ load: async () => t ?? (n ??= e().then((e) => (t = e, e)).finally(() => {
1504
+ n = null;
1505
+ }), n)
1506
+ };
1507
+ }, At = (e, t) => {
1508
+ let n = e ?? [], r = t ?? [];
1509
+ return n.length === r.length ? n.every((e, t) => e === r[t]) : !1;
1510
+ };
1511
+ function $(e, t, n) {
1512
+ let { filters: r } = e.list;
1513
+ return r.find((e) => String(e.whereKey ?? e.id) === t && At(e.path, n)) ?? null;
1514
+ }
1515
+ function jt(e, t, n) {
1516
+ let r = $(e, t);
1517
+ if (r != null) return r;
1518
+ let { [t]: i } = n ?? {};
1519
+ if (i != null) {
1520
+ let t = $(e, i);
1521
+ if (t != null) return t;
1522
+ }
1523
+ return $(e, `${t}Contains`) ?? null;
1524
+ }
1525
+ function Mt(e, t) {
1526
+ return t == null ? !1 : e.kind === "boolean" ? typeof t == "boolean" : e.kind === "entityId" ? typeof t == "string" && t.trim() !== "" : typeof t == "number" ? String(t).trim() !== "" : typeof t == "string" ? t.trim() !== "" : !1;
1527
+ }
1528
+ //#endregion
1529
+ //#region src/components/backoffice/filters/backofficeFilterAction.css.ts
1530
+ var Nt = "hwnq701 hwnq700 vncd899jf vncd89co vncd89dnx vncd89two vncd89c66 vncd89l9f vncd891qx vncd891co vncd891qf vncd89f6 vncd89uzj vncd89v8r vncd89v vncd893b vncd8978 vncd896w vncd897k", Pt = "hwnq702 vncd89tw6 vncd89c5o", Ft = (e, t) => e(t), It = (e) => {
1531
+ let { t } = D(), { t: n } = b(), { filterColumnAliases: r } = a(), { whereKey: i, value: o, path: s, label: c, listConfig: l } = e, u = ne(), d = null;
1532
+ if (l == null ? u != null && (d = u.config) : d = l, d == null) return null;
1533
+ let f = $(d, i, s);
1534
+ if (f == null && s == null && (f = jt(d, i, r)), f == null || !Mt(f, o)) return null;
1535
+ let p = Ft(f.label, t), m = c ?? n("filters.actions.filterBy", { label: p }), h = /* @__PURE__ */ A(je, {
1536
+ width: 14,
1537
+ height: 14,
1538
+ className: Pt,
1539
+ "aria-hidden": "true"
1540
+ });
1541
+ if (u != null) return /* @__PURE__ */ A("button", {
1542
+ type: "button",
1543
+ className: Nt,
1544
+ title: m,
1545
+ "aria-label": m,
1546
+ onClick: () => {
1547
+ u.applyFilter(i, o, s);
1548
+ },
1549
+ children: h
1550
+ });
1551
+ let g = Re(d.listDefaults?.where ?? d.list.defaultState?.where ?? null, i, o, s);
1552
+ return /* @__PURE__ */ A(we, {
1553
+ to: N(d, { where: g }),
1554
+ className: Nt,
1555
+ children: h
1556
+ });
1557
+ }, Lt = "_1f81p5z0 vncd899io vncd89ai6 vncd89ap6", Rt = "_1f81p5z1 vncd899io vncd89ai6 vncd89aoo", zt = "_1f81p5z2 vncd899ix vncd89bwx vncd89ap6 vncd89cf", Bt = "_1f81p5z3 vncd899io vncd89ai6 vncd89ap6", Vt = "_1f81p5z4 vncd899io vncd89ai6 vncd89ap6", Ht = ({ summary: e, aside: t, children: n, className: r }) => {
1558
+ let i = null;
1559
+ e != null && (i = /* @__PURE__ */ A("div", {
1560
+ className: Rt,
1561
+ children: e
1562
+ }));
1563
+ let a = null;
1564
+ t != null && (a = /* @__PURE__ */ A("aside", {
1565
+ className: Vt,
1566
+ children: t
1567
+ }));
1568
+ let o = null;
1569
+ return (n != null || a != null) && (o = /* @__PURE__ */ A("div", {
1570
+ className: Bt,
1571
+ children: n
1572
+ })), /* @__PURE__ */ j("div", {
1573
+ className: Pe(Lt, r),
1574
+ children: [i, /* @__PURE__ */ j("div", {
1575
+ className: zt,
1576
+ children: [o, a]
1577
+ })]
1578
+ });
1579
+ }, Ut = "kk18lv0 vncd89v8p vncd893d vncd89vvh", Wt = ({ count: e, entity: t, where: n }) => {
1580
+ let { entities: r, entityRegistry: i } = a(), o = ye(Ee), s = 0;
1581
+ typeof e == "number" && Number.isFinite(e) && (s = e);
1582
+ let c = r[t];
1583
+ if (c == null) return /* @__PURE__ */ A("span", { children: s });
1584
+ let l = i.getLoadedListEntity(t), u;
1585
+ u = l == null ? Le(c.routes.list, n) : N(l.config, { where: n });
1586
+ let d = async (e) => {
1587
+ let r = N((await i.loadListEntity(t)).config, { where: n }), a = "";
1588
+ r.search !== "" && (a = `?${r.search}`), e.push({
1589
+ pathname: r.pathname,
1590
+ search: a,
1591
+ hash: ""
1592
+ });
1593
+ };
1594
+ return /* @__PURE__ */ A(we, {
1595
+ to: u,
1596
+ className: Ut,
1597
+ onClick: (e) => {
1598
+ if (l != null || o == null || e.defaultPrevented || e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;
1599
+ e.preventDefault();
1600
+ let { history: t } = o;
1601
+ d(t).catch(() => {
1602
+ if (typeof u == "string") {
1603
+ let e = new URL(u, window.location.origin);
1604
+ t.push({
1605
+ pathname: e.pathname,
1606
+ search: e.search,
1607
+ hash: e.hash
1608
+ });
1609
+ return;
1610
+ }
1611
+ let e = "";
1612
+ u.search !== "" && (e = `?${u.search}`), t.push({
1613
+ pathname: u.pathname,
1614
+ search: e,
1615
+ hash: ""
1616
+ });
1617
+ });
1618
+ },
1619
+ children: s
1620
+ });
1621
+ }, Gt = "_12zehnj0 vncd899io", Kt = "_12zehnj1 vncd899io vncd89ai6 vncd89aoo", qt = ({ headerNode: e, tabs: t, activeId: n, children: r }) => {
1622
+ let i = null;
1623
+ return t != null && t.length > 1 && n != null && (i = /* @__PURE__ */ A(ke, {
1624
+ items: t,
1625
+ activeId: n,
1626
+ onChange: () => {},
1627
+ className: Gt
1628
+ })), /* @__PURE__ */ A(Ae, {
1629
+ headerNode: e,
1630
+ tabsNode: i,
1631
+ children: /* @__PURE__ */ A("div", {
1632
+ className: Kt,
1633
+ children: r
1634
+ })
1635
+ });
1636
+ }, Jt = "_11j0ox80 vncd899jf vncd89co vncd89anx vncd89ajx", Yt = ({ children: e, className: t }) => /* @__PURE__ */ A("span", {
1637
+ className: Pe(Jt, t),
1638
+ children: e
1639
+ });
1640
+ //#endregion
1641
+ //#region src/hooks/useConditionalSubscription.ts
1642
+ function Xt() {
1643
+ return Reflect.get(k, "default") ?? k;
1644
+ }
1645
+ var Zt = Xt();
1646
+ function Qt(e, t) {
1647
+ let n = Zt.useRelayEnvironment(), [r, i] = T(null), { enabled: a = !0, deps: o = [], getVariables: s } = t, c = w(() => {
1648
+ try {
1649
+ return s == null ? e.variables : s();
1650
+ } catch {
1651
+ return null;
1652
+ }
1653
+ }, [e.variables, s]), l = w(() => {
1654
+ if (c == null) return null;
1655
+ try {
1656
+ return JSON.stringify(c);
1657
+ } catch {
1658
+ return null;
1659
+ }
1660
+ }, [c]), u = !!a, d = c, f = u && d != null, p = be(null);
1661
+ return C(() => {
1662
+ let t = null;
1663
+ return u && d != null && (i(null), t = Zt.requestSubscription(n, {
1664
+ subscription: e.subscription,
1665
+ variables: d,
1666
+ cacheConfig: e.cacheConfig,
1667
+ configs: e.configs,
1668
+ onCompleted: e.onCompleted,
1669
+ onError: (t) => {
1670
+ i(t), e.onError?.(t);
1671
+ },
1672
+ onNext: e.onNext,
1673
+ updater: e.updater
1674
+ }), p.current = t), () => {
1675
+ if (t != null) try {
1676
+ t.dispose();
1677
+ } catch {}
1678
+ p.current === t && (p.current = null);
1679
+ };
1680
+ }, [
1681
+ e,
1682
+ o,
1683
+ n,
1684
+ u,
1685
+ l,
1686
+ d
1687
+ ]), {
1688
+ active: f,
1689
+ error: r
1690
+ };
1691
+ }
1692
+ //#endregion
1693
+ //#region src/hooks/useCopyToClipboard.ts
1694
+ var $t = "copy-to-clipboard-fallback";
1695
+ function en(e) {
1696
+ if (typeof document > "u") return;
1697
+ let t = document.getElementById($t);
1698
+ t ?? (t = document.createElement("textarea"), t.id = $t, t.setAttribute("readonly", ""), t.style.position = "absolute", t.style.left = "-9999px", t.style.top = "0", t.style.opacity = "0", document.body.appendChild(t)), t.value = e, t.select(), document.execCommand("copy");
1699
+ }
1700
+ function tn(e = 2e3) {
1701
+ let [t, n] = T(null), r = be(null);
1702
+ return C(() => () => {
1703
+ r.current != null && window.clearTimeout(r.current);
1704
+ }, []), {
1705
+ copiedKey: t,
1706
+ copy: S(async (t, i) => {
1707
+ let a = !1, o;
1708
+ if (typeof navigator < "u" && (o = navigator.clipboard), o != null) try {
1709
+ await o.writeText(t), a = !0;
1710
+ } catch {
1711
+ a = !1;
1712
+ }
1713
+ return a ||= (en(t), !0), i != null && (n(i), r.current != null && window.clearTimeout(r.current), r.current = window.setTimeout(() => {
1714
+ n(null), r.current = null;
1715
+ }, e)), a;
1716
+ }, [e])
1717
+ };
1718
+ }
1719
+ //#endregion
1720
+ //#region src/hooks/useRefetchNeededReload.ts
1721
+ function nn(e) {
1722
+ let [t, n] = T(null);
1723
+ return C(() => {
1724
+ n(null);
1725
+ }, [e]), {
1726
+ reason: t,
1727
+ onRefetchNeeded: S((e) => {
1728
+ n(e ?? "UNKNOWN");
1729
+ }, []),
1730
+ reload: S(() => {
1731
+ window.location.reload();
1732
+ }, []),
1733
+ clear: S(() => {
1734
+ n(null);
1735
+ }, [])
1736
+ };
1737
+ }
1738
+ //#endregion
1739
+ //#region src/i18n/useReviewStatusLabel.ts
1740
+ function rn() {
1741
+ let { t: e } = l();
1742
+ function t(t) {
1743
+ if (t == null) return e("review.status.unknown");
1744
+ switch (t) {
1745
+ case "APPROVED": return e("review.status.approved");
1746
+ case "CHANGES_REQUESTED": return e("review.status.changesRequested");
1747
+ case "PENDING": return e("review.status.pending");
1748
+ default: return e("review.status.unknown");
1749
+ }
1750
+ }
1751
+ return { getReviewStatusLabel: t };
1752
+ }
1753
+ //#endregion
1754
+ //#region src/modules/base64.ts
1755
+ function an(e) {
1756
+ if (typeof e != "string") throw TypeError("encodeUtf8ToBase64 expects a string input.");
1757
+ if (typeof Buffer < "u") return Buffer.from(e, "utf-8").toString("base64");
1758
+ if (typeof globalThis.btoa == "function") {
1759
+ let t = encodeURIComponent(e).replace(/%([0-9A-F]{2})/g, (e, t) => String.fromCharCode(Number.parseInt(t, 16)));
1760
+ return globalThis.btoa(t);
1761
+ }
1762
+ throw Error("No base64 encoder is available in this environment.");
1763
+ }
1764
+ function on(e) {
1765
+ if (typeof e != "string") throw TypeError("decodeBase64ToUtf8 expects a string input.");
1766
+ if (typeof Buffer < "u") return Buffer.from(e, "base64").toString("utf-8");
1767
+ if (typeof globalThis.atob == "function") {
1768
+ let t = globalThis.atob(e), n = Array.from(t, (e) => `%${e.charCodeAt(0).toString(16).padStart(2, "0")}`).join("");
1769
+ return decodeURIComponent(n);
1770
+ }
1771
+ throw Error("No base64 decoder is available in this environment.");
1772
+ }
1773
+ //#endregion
1774
+ //#region src/modules/formatFileSize.ts
1775
+ var sn = [
1776
+ "B",
1777
+ "KB",
1778
+ "MB",
1779
+ "GB",
1780
+ "TB"
1781
+ ], cn = 1024, ln = (e, t) => {
1782
+ if (t === "B") return Math.round(e).toString();
1783
+ let n = 1;
1784
+ return e >= 10 && (n = 0), e.toFixed(n);
1785
+ };
1786
+ function un(e) {
1787
+ let t = e;
1788
+ Number.isFinite(e) || (t = 0);
1789
+ let n = t < 0, r = Math.abs(t), i = 0;
1790
+ for (; r >= cn && i < sn.length - 1;) r /= cn, i += 1;
1791
+ let a = sn[i] ?? "B", o = r;
1792
+ return n && (o = -r), {
1793
+ value: o,
1794
+ unit: a,
1795
+ displayValue: ln(o, a)
1796
+ };
1797
+ }
1798
+ //#endregion
1799
+ //#region src/relay/createInlineReader.ts
1800
+ var { readInlineData: dn } = k, fn = (e) => (t) => dn(e, t), pn = (e) => e;
1801
+ //#endregion
1802
+ export { _ as AcceptInvitationScreen, oe as BackofficeDetailBadgeRow, se as BackofficeDetailField, le as BackofficeDetailPayload, ce as BackofficeDetailSection, te as BackofficeErrorBoundary, It as BackofficeFilterAction, Yt as BackofficeInlineFilterRow, Ht as BackofficeOverviewLayout, Ot as BackofficeProvider, Wt as BackofficeRelatedCountLink, _e as BackofficeRightPageLayout, qt as BackofficeTabbedDetailShell, x as EntityFilterValue, re as EntityFilterValueText, ie as EntityIdFilterField, ae as EntityIdPickerDialog, h as LoginFlow, v as PasswordResetCompleteScreen, y as PasswordResetRequestScreen, Xe as RelayProvider, ee as VerifyEmailScreen, Je as backofficeReactI18nResources, f as base64UrlToBuffer, p as bufferToBase64Url, ge as buildDataTableColumns, r as configureRelayEnvironment, kt as createBackofficeLazyValue, Ke as createI18nInstance, fn as createInlineDataReader, m as createUseAuth, on as decodeBase64ToUtf8, an as encodeUtf8ToBase64, un as formatFileSize, t as getEnvironment, n as getNetwork, pn as identityView, d as mapWebAuthnRegistrationError, u as parseSignCount, me as requireField, fe as requireLinkedRecordId, e as resetRelayStore, pe as resolveAgentStartOutcome, de as resolveMutationOutcome, he as resolveVisibleDetailPages, g as synchronizeAuthStatusQuery, a as useBackofficeConfig, ue as useBackofficeListUrlState, Qt as useConditionalSubscription, tn as useCopyToClipboard, nn as useRefetchNeededReload, rn as useReviewStatusLabel };
1803
+
1804
+ //# sourceMappingURL=backoffice-react.js.map