@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 @@
1
+ {"version":3,"file":"BackofficeEntityListPage-BxgqdFpL.js","names":[],"sources":["../../src/components/backoffice/list/RowFlagsCell.css.ts","../../src/components/backoffice/list/RowFlagsCell.tsx","../../src/pages/backofficeEntityListPage.css.ts","../../src/pages/BackofficeEntityListPage.tsx"],"sourcesContent":["import { style } from '@vanilla-extract/css';\n\nexport const rowFlagsColumnCell = style({\n justifyContent: 'center',\n padding: '0 4px',\n});\n\nexport const container = style({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 6,\n width: '100%',\n});\n\nexport const flag = style({\n display: 'grid',\n placeItems: 'center',\n width: 24,\n height: 24,\n});\n","import { useMemo, type JSX, type ReactNode } from 'react';\nimport type { TFunction } from 'i18next';\n\nimport type { BackofficeRowFlagSpec } from '@plumile/backoffice-core/types.js';\n\nimport * as styles from './RowFlagsCell.css.js';\n\nexport type RowFlagsCellProps<Row> = {\n row: Row;\n flags: readonly BackofficeRowFlagSpec<Row>[];\n tApp: TFunction;\n};\n\n/**\n * Renders row-level flags (icons) in a dedicated compact column.\n */\nexport const RowFlagsCell = <Row,>({\n row,\n flags,\n tApp,\n}: RowFlagsCellProps<Row>): JSX.Element => {\n const resolved = useMemo(() => {\n const out: { id: string; node: ReactNode; label: string }[] = [];\n for (const flag of flags) {\n const node = flag.render(row) as ReactNode;\n if (node != null && node !== '' && node !== false) {\n out.push({ id: flag.id, node, label: flag.label(row)(tApp) });\n }\n }\n return out;\n }, [flags, row, tApp]);\n\n const ariaLabel = resolved\n .map((entry) => {\n return entry.label.trim();\n })\n .filter((label) => {\n return label !== '';\n })\n .join(', ');\n\n let ariaLabelProp: string | undefined;\n if (ariaLabel !== '') {\n ariaLabelProp = ariaLabel;\n }\n\n return (\n <div className={styles.container} aria-label={ariaLabelProp}>\n {resolved.map((entry) => {\n return (\n <span\n key={entry.id}\n className={styles.flag}\n title={entry.label}\n role=\"img\"\n aria-label={entry.label}\n >\n {entry.node}\n </span>\n );\n })}\n </div>\n );\n};\n","import { style } from '@vanilla-extract/css';\nimport { sprinkles } from '@plumile/ui/theme/sprinkles.css.js';\n\nexport const headerActions = sprinkles({\n display: 'flex',\n alignItems: 'center',\n gap: 2,\n flexWrap: 'wrap',\n});\n\nexport const actionsColumnCell = style({\n justifyContent: 'flex-end',\n});\n\nexport const actionTrigger = style({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '2rem',\n height: '2rem',\n flexShrink: 0,\n});\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport {\n type ComponentProps,\n type JSX,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { TFunction } from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport {\n useFragment,\n usePaginationFragment,\n usePreloadedQuery,\n useRelayEnvironment,\n} from 'react-relay';\nimport { fetchQuery } from 'relay-runtime';\nimport {\n BACKOFFICE_LIST_DEFAULTS,\n BACKOFFICE_LIST_REFETCH_POLICY,\n} from '@plumile/backoffice-core/constants.js';\nimport { stableListVariablesKey } from '@plumile/backoffice-core/state/stableKey.js';\nimport type {\n BackofficeEntityManifestItem,\n BackofficeEntityFormMutationActionSpec,\n BackofficeEntityRouteActionSpec,\n BackofficeListActionSpec,\n BackofficePreparedListRoute,\n BackofficeRecordListConfig,\n BackofficeResolvedListFacetConfig,\n BackofficeRowFlagSpec,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport {\n Button,\n LinkButton,\n type DataTableColumn,\n EyeSvg,\n type GetRowId,\n TableCell,\n} from '@plumile/ui';\nimport { BackofficeEntityListScaffold } from '../components/backoffice/scaffolds/BackofficeEntityListScaffold.js';\nimport { LazyBackofficeEntityActionFormDialog } from '../components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js';\nimport {\n buildDataTableColumns,\n type BackofficeSizedDataTableColumn,\n} from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { RowFlagsCell } from '../components/backoffice/list/RowFlagsCell.js';\nimport { useBackofficeListUrlState } from '../hooks/useBackofficeListUrlState.js';\nimport { useBackofficeLoadMore } from '../hooks/useBackofficeLoadMore.js';\nimport { useBackofficeListRefetch } from '../hooks/useBackofficeListRefetch.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport * as pageStyles from './backofficeEntityListPage.css.js';\nimport { rowFlagsColumnCell } from '../components/backoffice/list/RowFlagsCell.css.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildEntityListBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\n\nexport type BackofficeEntityListPageProps = {\n entityManifest: BackofficeEntityManifestItem;\n config: BackofficeResolvedListFacetConfig;\n prepared: BackofficePreparedListRoute;\n};\n\ntype RecordListConfig = BackofficeResolvedListFacetConfig & {\n list: BackofficeRecordListConfig<\n Record<string, unknown>,\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n Record<string, unknown>\n >;\n};\n\nconst isRecordListConfig = (\n config: BackofficeResolvedListFacetConfig,\n): config is RecordListConfig => {\n return config.list.kind === 'records';\n};\n\ntype RecordFetchMode = 'append' | 'reset';\ntype ButtonVariant = ComponentProps<typeof Button>['variant'];\n\ntype RecordFetchInput = {\n where: Record<string, unknown> | null;\n sort: string | null;\n count: number;\n cursor: string | null;\n mode: RecordFetchMode;\n};\n\nconst RECORD_FETCH_POLICY = 'store-or-network' as const;\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nconst ROW_FLAGS_SLOT_PX = 24;\nconst ROW_FLAGS_GAP_PX = 6;\nconst ROW_FLAGS_PADDING_X_PX = 4;\n\n// Match the actual icon button footprint (32px) plus dense table cell padding.\nconst ACTIONS_SLOT_PX = 32;\nconst ACTIONS_GAP_PX = 8;\nconst ACTIONS_PADDING_X_PX = 12;\nconst ACTIONS_SAFETY_PX = 4;\n\nconst computeRowFlagsColumnWidthPx = (flagCount: number): number => {\n if (flagCount <= 0) {\n return 0;\n }\n return (\n ROW_FLAGS_PADDING_X_PX * 2 +\n ROW_FLAGS_SLOT_PX * flagCount +\n ROW_FLAGS_GAP_PX * Math.max(0, flagCount - 1)\n );\n};\n\nconst computeActionsColumnWidthPx = (actionCount: number): number => {\n if (actionCount <= 0) {\n return 0;\n }\n return (\n ACTIONS_SAFETY_PX +\n ACTIONS_PADDING_X_PX * 2 +\n ACTIONS_SLOT_PX * actionCount +\n ACTIONS_GAP_PX * Math.max(0, actionCount - 1)\n );\n};\n\nconst listColumnTrackBySize: Record<\n BackofficeSizedDataTableColumn<unknown>['size'],\n string\n> = {\n xs: 'minmax(56px, 76px)',\n s: 'minmax(88px, 120px)',\n m: 'minmax(120px, 168px)',\n l: 'minmax(160px, 220px)',\n xl: 'minmax(220px, 300px)',\n // \"fluid\" columns share the available remainder equally.\n fluid: 'minmax(0, 1fr)',\n};\n\nconst resolveTrackBySize = (\n column: DataTableColumn<unknown>,\n fallback: string,\n): string => {\n if ('size' in column && typeof column.size === 'string') {\n return listColumnTrackBySize[\n column.size as BackofficeSizedDataTableColumn<unknown>['size']\n ];\n }\n return fallback;\n};\n\nconst applyListEdgeColumns = <Row,>(\n inputColumns: readonly DataTableColumn<Row>[],\n rowFlags: readonly BackofficeRowFlagSpec<Row>[] | undefined,\n actionCount: number,\n tApp: TFunction,\n): {\n columns: readonly DataTableColumn<Row>[];\n gridTemplateColumns?: string;\n} => {\n const hasFlags = rowFlags != null && rowFlags.length > 0;\n\n let columns = inputColumns;\n if (hasFlags) {\n const flagsColumn: DataTableColumn<Row> = {\n id: '__rowFlags',\n header: '',\n className: rowFlagsColumnCell,\n cell: (row) => {\n return <RowFlagsCell row={row} flags={rowFlags} tApp={tApp} />;\n },\n };\n\n // Ensure we never pick the flags column as \"primary\".\n const withFlags = [flagsColumn, ...inputColumns];\n const hasPrimary = withFlags.some((col) => {\n return col.isPrimary === true;\n });\n\n columns = withFlags;\n if (!hasPrimary) {\n columns = withFlags.map((col, index) => {\n if (index === 1) {\n return { ...col, isPrimary: true };\n }\n return col;\n });\n }\n }\n\n let flagCount = 0;\n if (hasFlags) {\n flagCount = rowFlags.length;\n }\n const flagsWidthPx = computeRowFlagsColumnWidthPx(flagCount);\n const actionsWidthPx = computeActionsColumnWidthPx(actionCount);\n\n // We always include the right-side \"actions\" column in list pages.\n let leftColumnCount = 0;\n if (hasFlags) {\n leftColumnCount = 1;\n }\n const middleCount = columns.length - leftColumnCount - 1;\n\n const middleTracks = columns\n .slice(leftColumnCount, leftColumnCount + Math.max(0, middleCount))\n .map((column) => {\n return resolveTrackBySize(column as DataTableColumn<unknown>, '1fr');\n })\n .join(' ');\n\n let gridTemplateColumns = '';\n if (hasFlags) {\n gridTemplateColumns = `${flagsWidthPx}px ${middleTracks} ${actionsWidthPx}px`;\n } else {\n gridTemplateColumns = `${middleTracks} ${actionsWidthPx}px`;\n }\n\n return { columns, gridTemplateColumns };\n};\n\nconst isRouteAction = (\n action: BackofficeListActionSpec,\n): action is BackofficeEntityRouteActionSpec<null> => {\n return action.kind === 'route';\n};\n\nconst isFormMutationAction = (\n action: BackofficeListActionSpec,\n): action is BackofficeEntityFormMutationActionSpec<null> => {\n return action.kind === 'formMutation';\n};\n\nconst resolveActionVariant = (\n actionVariant: ButtonVariant | undefined,\n index: number,\n): Exclude<ButtonVariant, undefined> => {\n if (actionVariant != null) {\n return actionVariant;\n }\n if (index === 0) {\n return 'primary';\n }\n return 'secondary';\n};\n\nconst resolveRowId = (row: unknown): string | null => {\n if (row == null || typeof row !== 'object') {\n return null;\n }\n if (!('id' in row)) {\n return null;\n }\n const value = (row as { id?: unknown }).id;\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n if (trimmed === '') {\n return null;\n }\n return trimmed;\n};\n\nconst buildActionsColumn = (options: {\n ariaLabel: string;\n fallback: string;\n resolveDetailHref: (id: string) => string | null;\n}): DataTableColumn<unknown> => {\n const { ariaLabel, fallback, resolveDetailHref } = options;\n\n return {\n id: 'actions',\n header: '',\n className: pageStyles.actionsColumnCell,\n cell: (row) => {\n const id = resolveRowId(row);\n if (id == null) {\n return fallback;\n }\n const href = resolveDetailHref(id);\n if (href == null) {\n return fallback;\n }\n return (\n <TableCell.Actions>\n <span className={pageStyles.actionTrigger} title={ariaLabel}>\n <LinkButton\n to={href}\n variant=\"icon\"\n size=\"small\"\n aria-label={ariaLabel}\n >\n <EyeSvg width={16} height={16} />\n </LinkButton>\n </span>\n </TableCell.Actions>\n );\n },\n };\n};\n\nconst BackofficeEntityRecordListPage = ({\n config,\n prepared,\n}: BackofficeEntityListPageProps): JSX.Element | null => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n const [activeFormActionId, setActiveFormActionId] = useState<string | null>(\n null,\n );\n const environment = useRelayEnvironment();\n\n if (!isRecordListConfig(config)) {\n return null;\n }\n\n const listConfig = config.list;\n const listDefaults = config.listDefaults ??\n listConfig.defaultState ?? { where: null, sort: null };\n const queryData = usePreloadedQuery(listConfig.query, prepared.query);\n const fragmentData = useFragment(listConfig.fragment, queryData as never);\n\n const initialRows = useMemo(() => {\n return listConfig.getRows(fragmentData).map((row) => {\n return listConfig.toRow(row);\n });\n }, [fragmentData, listConfig]);\n\n const initialCursor = useMemo(() => {\n return listConfig.getNextCursor?.(queryData as never) ?? null;\n }, [listConfig, queryData]);\n\n const [rows, setRows] = useState(initialRows);\n const [nextCursor, setNextCursor] = useState<string | null>(initialCursor);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n useEffect(() => {\n setRows(initialRows);\n setNextCursor(initialCursor);\n }, [initialCursor, initialRows]);\n\n const { columns, gridTemplateColumns } = useMemo((): {\n columns: readonly DataTableColumn<unknown>[];\n gridTemplateColumns?: string;\n } => {\n const baseColumns = buildDataTableColumns(listConfig.columns, {\n tApp,\n t,\n resolveEntityHref: (entityId, refId) => {\n const entityManifest = entities[entityId];\n if (entityManifest == null) {\n return null;\n }\n return entityManifest.routes.detail(refId);\n },\n });\n const actionsColumn = buildActionsColumn({\n ariaLabel: t('actions.view'),\n fallback: t('common.notAvailable'),\n resolveDetailHref: (id) => {\n return config.routes.detail(id);\n },\n });\n const allColumns = [...baseColumns, actionsColumn];\n return applyListEdgeColumns(allColumns, listConfig.rowFlags, 1, tApp);\n }, [\n config.routes,\n listConfig.columns,\n listConfig.rowFlags,\n entities,\n t,\n tApp,\n ]);\n\n const getRowId = useCallback<GetRowId<unknown>>(\n (row) => {\n return listConfig.getRowId(row);\n },\n [listConfig],\n );\n\n const { state, pushState } = useBackofficeListUrlState(config);\n const resolvedSort = state.sort ?? listDefaults.sort;\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n\n const buildVariables = useCallback(\n (input: {\n where: Record<string, unknown> | null;\n sort: string | null;\n count: number;\n cursor: string | null;\n }) => {\n if (listConfig.buildVariables != null) {\n return listConfig.buildVariables(input as never);\n }\n return input;\n },\n [listConfig],\n );\n\n const requestIdRef = useRef(0);\n const lastRefetchKeyRef = useRef(\n stableListVariablesKey({\n where: listDefaults.where,\n sort: listDefaults.sort,\n count: pageSize,\n }),\n );\n\n const runFetch = useCallback(\n async (input: RecordFetchInput) => {\n const requestId = requestIdRef.current + 1;\n requestIdRef.current = requestId;\n\n if (input.mode === 'append') {\n setIsLoadingMore(true);\n } else {\n setIsRefreshing(true);\n }\n\n try {\n const variables = buildVariables({\n where: input.where,\n sort: input.sort,\n count: input.count,\n cursor: input.cursor,\n });\n\n const response = await fetchQuery(\n environment,\n listConfig.query,\n variables as never,\n { fetchPolicy: RECORD_FETCH_POLICY },\n ).toPromise();\n\n if (response == null || requestIdRef.current !== requestId) {\n return;\n }\n\n const nextRows = listConfig.getRows(response as never).map((row) => {\n return listConfig.toRow(row);\n });\n setRows((prev) => {\n if (input.mode === 'append') {\n return [...prev, ...nextRows];\n }\n return nextRows;\n });\n const cursor = listConfig.getNextCursor?.(response as never) ?? null;\n setNextCursor(cursor);\n } finally {\n if (input.mode === 'append') {\n setIsLoadingMore(false);\n } else {\n setIsRefreshing(false);\n }\n }\n },\n [buildVariables, environment, listConfig],\n );\n\n useEffect(() => {\n const key = stableListVariablesKey({\n where: state.where,\n sort: resolvedSort,\n count: pageSize,\n });\n if (lastRefetchKeyRef.current === key) {\n return;\n }\n lastRefetchKeyRef.current = key;\n runFetch({\n where: state.where,\n sort: resolvedSort,\n count: pageSize,\n cursor: null,\n mode: 'reset',\n }).catch(() => {});\n }, [pageSize, resolvedSort, runFetch, state.where]);\n\n const handleRefresh = useCallback(() => {\n if (isRefreshing) {\n return;\n }\n runFetch({\n where: state.where,\n sort: resolvedSort,\n count: pageSize,\n cursor: null,\n mode: 'reset',\n }).catch(() => {});\n }, [isRefreshing, pageSize, resolvedSort, runFetch, state.where]);\n\n const handleLoadMore = useBackofficeLoadMore({\n hasNext: nextCursor != null,\n isLoadingNext: isLoadingMore,\n loadNext: (count) => {\n if (nextCursor == null) {\n return;\n }\n runFetch({\n where: state.where,\n sort: resolvedSort,\n count,\n cursor: nextCursor,\n mode: 'append',\n }).catch(() => {});\n },\n count: pageSize,\n });\n\n const listActions = useMemo(() => {\n return config.listActions ?? [];\n }, [config.listActions]);\n const visibleActions = useMemo(() => {\n return listActions.filter((action) => {\n if (action.isVisible == null) {\n return true;\n }\n return action.isVisible(null);\n });\n }, [listActions]);\n\n const headerActions = useMemo(() => {\n if (visibleActions.length === 0) {\n return undefined;\n }\n return (\n <div className={pageStyles.headerActions}>\n {visibleActions.map((action, index) => {\n const { variant: actionVariant } = action;\n const label = resolveLabel(action.label, tApp);\n let ariaLabel = label;\n if (action.ariaLabel != null) {\n ariaLabel = resolveLabel(action.ariaLabel, tApp);\n }\n const variant = resolveActionVariant(actionVariant, index);\n const size = action.size ?? 'small';\n const isDisabled = action.isDisabled?.(null) === true;\n\n if (isRouteAction(action)) {\n const href = action.to(null);\n return (\n <LinkButton\n key={action.id}\n to={href}\n variant={variant}\n size={size}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n >\n {label}\n </LinkButton>\n );\n }\n\n if (isFormMutationAction(action)) {\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n disabled={isDisabled}\n onClick={() => {\n setActiveFormActionId(action.id);\n }}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n return null;\n })}\n </div>\n );\n }, [tApp, visibleActions]);\n\n const activeFormAction = listActions.find((action) => {\n return action.id === activeFormActionId;\n });\n\n return (\n <>\n <BackofficeEntityListScaffold\n config={config}\n state={state}\n pushState={pushState}\n headerActions={headerActions}\n rows={rows}\n columns={columns}\n gridTemplateColumns={gridTemplateColumns}\n getRowId={getRowId}\n hasNextPage={nextCursor != null}\n isLoadingMore={isLoadingMore}\n onLoadMore={handleLoadMore}\n onRefresh={handleRefresh}\n totalCount={null}\n />\n {activeFormAction != null && isFormMutationAction(activeFormAction) && (\n <LazyBackofficeEntityActionFormDialog\n isOpen\n action={activeFormAction}\n node={null}\n onClose={() => {\n setActiveFormActionId(null);\n }}\n onSuccess={handleRefresh}\n />\n )}\n </>\n );\n};\n\nexport const BackofficeEntityListPage = ({\n entityManifest,\n config,\n prepared,\n}: BackofficeEntityListPageProps): JSX.Element | null => {\n const { t: tApp } = useTranslation();\n const breadcrumb = buildEntityListBreadcrumb(config, tApp);\n\n if (isRecordListConfig(config)) {\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <BackofficeEntityRecordListPage\n entityManifest={entityManifest}\n config={config}\n prepared={prepared}\n />\n </BackofficeRightPageLayout>\n );\n }\n const listConfig = config.list;\n if (listConfig.kind === 'records') {\n return null;\n }\n\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n const [activeFormActionId, setActiveFormActionId] = useState<string | null>(\n null,\n );\n\n const queryData = usePreloadedQuery(listConfig.query, prepared.query);\n const {\n data: fragmentData,\n loadNext,\n hasNext,\n isLoadingNext,\n refetch,\n } = usePaginationFragment(listConfig.fragment, queryData as never);\n\n const connection = listConfig.getConnection(fragmentData);\n\n const rows = useMemo(() => {\n return connection.edges.map((edge) => {\n return listConfig.toRow(edge.node);\n });\n }, [connection.edges, listConfig]);\n\n const { columns, gridTemplateColumns } = useMemo((): {\n columns: readonly DataTableColumn<unknown>[];\n gridTemplateColumns?: string;\n } => {\n const baseColumns = buildDataTableColumns(listConfig.columns, {\n tApp,\n t,\n resolveEntityHref: (entityId, refId) => {\n const entityManifest = entities[entityId];\n if (entityManifest == null) {\n return null;\n }\n return entityManifest.routes.detail(refId);\n },\n });\n const actionsColumn = buildActionsColumn({\n ariaLabel: t('actions.view'),\n fallback: t('common.notAvailable'),\n resolveDetailHref: (id) => {\n return config.routes.detail(id);\n },\n });\n const allColumns = [...baseColumns, actionsColumn];\n return applyListEdgeColumns(allColumns, listConfig.rowFlags, 1, tApp);\n }, [\n config.routes,\n listConfig.columns,\n listConfig.rowFlags,\n entities,\n t,\n tApp,\n ]);\n\n const getRowId = useCallback<GetRowId<unknown>>(\n (row) => {\n return listConfig.getRowId(row as never);\n },\n [listConfig],\n );\n\n const { state, pushState } = useBackofficeListUrlState(config);\n const listDefaults = config.listDefaults ??\n listConfig.defaultState ?? { where: null, sort: null };\n const resolvedSort = state.sort ?? listDefaults.sort;\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n\n const baseVariables = useMemo(() => {\n return {\n where: state.where,\n sort: resolvedSort,\n count: pageSize,\n cursor: null,\n };\n }, [pageSize, resolvedSort, state.where]);\n\n const { onRefresh } = useBackofficeListRefetch({\n refetch: refetch as never,\n variables: baseVariables,\n defaults: {\n where: listDefaults.where,\n sort: listDefaults.sort,\n count: pageSize,\n cursor: null,\n },\n fetchPolicy: BACKOFFICE_LIST_REFETCH_POLICY,\n buildVariables: listConfig.buildVariables,\n });\n\n const handleLoadMore = useBackofficeLoadMore({\n hasNext,\n isLoadingNext,\n loadNext,\n count: pageSize,\n });\n\n const listActions = useMemo(() => {\n return config.listActions ?? [];\n }, [config.listActions]);\n const visibleActions = useMemo(() => {\n return listActions.filter((action) => {\n if (action.isVisible == null) {\n return true;\n }\n return action.isVisible(null);\n });\n }, [listActions]);\n\n const headerActions = useMemo(() => {\n if (visibleActions.length === 0) {\n return undefined;\n }\n return (\n <div className={pageStyles.headerActions}>\n {visibleActions.map((action, index) => {\n const { variant: actionVariant } = action;\n const label = resolveLabel(action.label, tApp);\n let ariaLabel = label;\n if (action.ariaLabel != null) {\n ariaLabel = resolveLabel(action.ariaLabel, tApp);\n }\n const variant = resolveActionVariant(actionVariant, index);\n const size = action.size ?? 'small';\n const isDisabled = action.isDisabled?.(null) === true;\n\n if (isRouteAction(action)) {\n const href = action.to(null);\n return (\n <LinkButton\n key={action.id}\n to={href}\n variant={variant}\n size={size}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n >\n {label}\n </LinkButton>\n );\n }\n\n if (isFormMutationAction(action)) {\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n disabled={isDisabled}\n onClick={() => {\n setActiveFormActionId(action.id);\n }}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n return null;\n })}\n </div>\n );\n }, [tApp, visibleActions]);\n\n const activeFormAction = listActions.find((action) => {\n return action.id === activeFormActionId;\n });\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <BackofficeEntityListScaffold\n config={config}\n state={state}\n pushState={pushState}\n headerActions={headerActions}\n rows={rows}\n columns={columns}\n gridTemplateColumns={gridTemplateColumns}\n getRowId={getRowId}\n hasNextPage={hasNext}\n isLoadingMore={isLoadingNext}\n onLoadMore={handleLoadMore}\n onRefresh={onRefresh}\n totalCount={connection.totalCount ?? null}\n />\n {activeFormAction != null && isFormMutationAction(activeFormAction) && (\n <LazyBackofficeEntityActionFormDialog\n isOpen\n action={activeFormAction}\n node={null}\n onClose={() => {\n setActiveFormActionId(null);\n }}\n onSuccess={onRefresh}\n />\n )}\n </BackofficeRightPageLayout>\n );\n};\n\nexport default BackofficeEntityListPage;\n"],"mappings":"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"}
@@ -0,0 +1,485 @@
1
+ import { i as e } from "./environment-BJeJTbIN.js";
2
+ import { t } from "./useRelayEnvironment-vQ86aW-n.js";
3
+ import { n } from "./sprinkles.css.ts.vanilla-n-NK_DwW.js";
4
+ import { a as r, i, n as a, r as o, t as s } from "./sidebarUtils-CuwJ_3mD.js";
5
+ import { n as c, t as l } from "./useBackofficeReactTranslation-WfXU8kCf.js";
6
+ import { t as u } from "./BackofficeTopbarPortalContext-iD7dm4_h.js";
7
+ import { t as d } from "./backofficeAuthPaths-BiJvoI5Q.js";
8
+ import { Suspense as f, useCallback as p, useContext as m, useEffect as h, useMemo as g, useState as _ } from "react";
9
+ import { useTranslation as v } from "react-i18next";
10
+ import { RoutingContext as y, useLocation as b } from "@plumile/router";
11
+ import { AdminShellLayout as x, BackofficeSidebarProfileMenu as S, Button as C, EnvironmentBadge as ee, GlobalSearchInput as w, GripDotsSvg as T, InlineBanner as E, PinFilledSvg as D, PinSvg as O, SidebarHomeSvg as k, SidebarTasksSvg as A, Skeleton as j, ToastProvider as M } from "@plumile/ui";
12
+ import { commitMutation as te, usePreloadedQuery as N } from "react-relay";
13
+ import { jsx as P, jsxs as F } from "react/jsx-runtime";
14
+ //#region src/hooks/useBackofficeSidebarPins.ts
15
+ var I = "backoffice.sidebar.pins.v1", L = (e) => {
16
+ if (typeof window > "u") return [];
17
+ try {
18
+ let t = window.localStorage.getItem(e);
19
+ if (t == null) return [];
20
+ let n = JSON.parse(t);
21
+ return Array.isArray(n) ? n.filter((e) => typeof e == "string") : [];
22
+ } catch {
23
+ return [];
24
+ }
25
+ }, R = (e, t) => {
26
+ let n = [], r = /* @__PURE__ */ new Set();
27
+ return e.forEach((e) => {
28
+ t.has(e) && (r.has(e) || (r.add(e), n.push(e)));
29
+ }), n;
30
+ }, ne = (e) => {
31
+ let { storageKey: t = I, visibleEntityIds: n } = e, r = g(() => new Set(n), [n]), [i, a] = _(() => R(L(t), r));
32
+ h(() => {
33
+ a((e) => {
34
+ let t = R(e, r);
35
+ if (t.length === e.length) {
36
+ let n = !0;
37
+ for (let r = 0; r < t.length; r += 1) if (t[r] !== e[r]) {
38
+ n = !1;
39
+ break;
40
+ }
41
+ if (n) return e;
42
+ }
43
+ return t;
44
+ });
45
+ }, [r]), h(() => {
46
+ a(R(L(t), r));
47
+ }, [t, r]), h(() => {
48
+ if (!(typeof window > "u")) try {
49
+ window.localStorage.setItem(t, JSON.stringify(i));
50
+ } catch {}
51
+ }, [i, t]);
52
+ let o = g(() => new Set(i), [i]), s = p((e) => {
53
+ r.has(e) && a((t) => t.includes(e) ? t : [...t, e]);
54
+ }, [r]), c = p((e) => {
55
+ a((t) => t.filter((t) => t !== e));
56
+ }, []), l = p((e) => {
57
+ o.has(e) ? c(e) : s(e);
58
+ }, [
59
+ s,
60
+ o,
61
+ c
62
+ ]), u = p((e, t) => {
63
+ e !== t && a((n) => {
64
+ let r = n.indexOf(e), i = n.indexOf(t);
65
+ if (r === -1 || i === -1 || r === i) return n;
66
+ let a = [...n];
67
+ return a.splice(r, 1), a.splice(i, 0, e), a;
68
+ });
69
+ }, []);
70
+ return {
71
+ pins: i,
72
+ isPinned: p((e) => o.has(e), [o]),
73
+ pin: s,
74
+ unpin: c,
75
+ toggle: l,
76
+ reorder: u
77
+ };
78
+ }, z = (e, t) => {
79
+ let n = {};
80
+ return e.forEach((e) => {
81
+ n[e] = !0;
82
+ }), t != null && e.includes(t) && (n[t] = !1), n;
83
+ }, re = (e) => {
84
+ let { groupIds: t, activeGroupId: n } = e, r = g(() => [...t], [t]), [i, a] = _(() => z(r, n));
85
+ return h(() => {
86
+ a((e) => {
87
+ let t = {};
88
+ return r.forEach((n) => {
89
+ t[n] = e[n] ?? !0;
90
+ }), n != null && r.includes(n) && (t[n] = !1), t;
91
+ });
92
+ }, [n, r]), h(() => {
93
+ n != null && a((e) => e[n] === !1 ? e : {
94
+ ...e,
95
+ [n]: !1
96
+ });
97
+ }, [n]), {
98
+ collapsedByGroupId: i,
99
+ setCollapsed: p((e, t) => {
100
+ a((n) => n[e] === t ? n : {
101
+ ...n,
102
+ [e]: t
103
+ });
104
+ }, [])
105
+ };
106
+ }, B = "_1xws1b01 _1xws1b00 vncd899jf vncd89co vncd89dnx vncd89two vncd89c66 vncd891rf vncd8912f vncd891px vncd89l9f vncd89uzj vncd89v8r vncd89v vncd8978 vncd896x vncd897k", V = (e, t) => e == null ? t ?? null : /* @__PURE__ */ P(e, {
107
+ width: 18,
108
+ height: 18,
109
+ "aria-hidden": "true"
110
+ });
111
+ function ie(e) {
112
+ let { basePath: t, pathname: n, entities: r, sidebar: c, permissions: l, searchQuery: u, tApp: d, t: f, pinnedEntityIds: p = [], onTogglePin: m, onReorderPin: h, collapsedByGroupId: g, onGroupCollapsedChange: _ } = e, v = i(r, c), y = Object.entries(v), b = new Set(p), x = f("sidebar.actions.pin"), S = f("sidebar.actions.unpin"), C = f("sidebar.actions.reorder"), ee = s(v), w = u?.trim().toLowerCase() ?? "", E = (e) => {
113
+ if (m == null) return null;
114
+ let t = b.has(e), n = x, r = O;
115
+ return t && (n = S, r = D), /* @__PURE__ */ P("button", {
116
+ type: "button",
117
+ className: B,
118
+ "aria-pressed": t,
119
+ "aria-label": n,
120
+ title: n,
121
+ onClick: (t) => {
122
+ t.preventDefault(), t.stopPropagation(), m(e);
123
+ },
124
+ children: /* @__PURE__ */ P(r, {
125
+ width: 14,
126
+ height: 14,
127
+ "aria-hidden": "true"
128
+ })
129
+ });
130
+ }, j = (e) => {
131
+ let { entityId: t, groupId: i, groupIcon: s, enableReorder: u } = e, f = r[t];
132
+ if (f == null) return null;
133
+ let p = {
134
+ kind: "entity",
135
+ id: t
136
+ };
137
+ if (f.kind === "tool" && (p = {
138
+ kind: "tool",
139
+ id: t
140
+ }), c?.isItemVisible?.(p, l) === !1) return null;
141
+ if (f.kind === "tool") {
142
+ let e = o(f.label, d);
143
+ return w !== "" && !e.toLowerCase().includes(w) ? null : {
144
+ id: `tool-${t}`,
145
+ data: {
146
+ kind: "tool",
147
+ id: t,
148
+ groupId: i
149
+ },
150
+ label: e,
151
+ href: f.routes.list,
152
+ icon: V(s, /* @__PURE__ */ P(A, {
153
+ width: 18,
154
+ height: 18,
155
+ "aria-hidden": "true"
156
+ })),
157
+ isActive: a(n, f.routes.list),
158
+ ariaLabel: e,
159
+ actionSlot: E(t)
160
+ };
161
+ }
162
+ if (!f.hasList) return null;
163
+ let m = o(f.label, d);
164
+ if (w !== "" && !m.toLowerCase().includes(w)) return null;
165
+ let g, _, v, y, b = !1;
166
+ u === !0 && h != null && (b = !0, g = /* @__PURE__ */ P(T, {
167
+ width: 14,
168
+ height: 14,
169
+ "aria-hidden": "true"
170
+ }), _ = (e) => {
171
+ let { dataTransfer: n } = e;
172
+ n.effectAllowed = "move", n.setData("text/plain", t);
173
+ }, v = (e) => {
174
+ e.preventDefault();
175
+ let { dataTransfer: t } = e;
176
+ t.dropEffect = "move";
177
+ }, y = (e) => {
178
+ e.preventDefault();
179
+ let n = e.dataTransfer.getData("text/plain");
180
+ n === "" || n === t || h(n, t);
181
+ });
182
+ let x;
183
+ return g != null && (x = C), {
184
+ id: t,
185
+ data: {
186
+ kind: "entity",
187
+ id: t,
188
+ groupId: i
189
+ },
190
+ label: m,
191
+ href: f.routes.list,
192
+ icon: V(s, /* @__PURE__ */ P(A, {
193
+ width: 18,
194
+ height: 18,
195
+ "aria-hidden": "true"
196
+ })),
197
+ isActive: a(n, f.routes.list),
198
+ ariaLabel: m,
199
+ actionSlot: E(t),
200
+ dragHandleSlot: g,
201
+ dragHandleLabel: x,
202
+ draggable: b,
203
+ onDragStart: _,
204
+ onDragOver: v,
205
+ onDrop: y
206
+ };
207
+ }, M = [];
208
+ if (p.length > 0) {
209
+ let e = p.map((e) => {
210
+ let t = ee.get(e);
211
+ return j({
212
+ entityId: e,
213
+ groupId: t?.groupId,
214
+ groupIcon: t?.icon,
215
+ enableReorder: !0
216
+ });
217
+ }).filter((e) => e != null);
218
+ e.length > 0 && M.push({
219
+ id: "pinned",
220
+ title: f("sidebar.sections.pinned"),
221
+ items: e,
222
+ collapsible: !1
223
+ });
224
+ }
225
+ return y.forEach(([e, r], i) => {
226
+ if (r.isVisible != null && !r.isVisible(l)) return;
227
+ let s = [];
228
+ if (i === 0 && c?.isItemVisible?.({
229
+ kind: "dashboard",
230
+ id: "dashboard"
231
+ }, l) !== !1) {
232
+ let r = f("sidebar.items.dashboard");
233
+ if (w !== "" && !r.toLowerCase().includes(w)) return;
234
+ s.push({
235
+ id: "dashboard",
236
+ data: {
237
+ kind: "dashboard",
238
+ id: "dashboard",
239
+ groupId: e
240
+ },
241
+ label: r,
242
+ href: t,
243
+ icon: V(void 0, /* @__PURE__ */ P(k, {
244
+ width: 18,
245
+ height: 18,
246
+ "aria-hidden": "true"
247
+ })),
248
+ isActive: a(n, t),
249
+ ariaLabel: f("sidebar.items.dashboard")
250
+ });
251
+ }
252
+ if (r.entities != null && r.entities.forEach((t) => {
253
+ let n = j({
254
+ entityId: t,
255
+ groupId: e,
256
+ groupIcon: r.icon
257
+ });
258
+ n != null && s.push(n);
259
+ }), s.length === 0) return;
260
+ let u;
261
+ r.title != null && (u = o(r.title, d));
262
+ let p = g?.[e], m;
263
+ _ != null && (m = (t) => {
264
+ _(e, t);
265
+ }), M.push({
266
+ id: e,
267
+ title: u,
268
+ items: s,
269
+ collapsible: !0,
270
+ defaultCollapsed: !0,
271
+ isCollapsed: p,
272
+ onCollapsedChange: m
273
+ });
274
+ }), M;
275
+ }
276
+ //#endregion
277
+ //#region src/components/backoffice/routing/backofficeContentError.css.ts
278
+ var H = "_1xfx8p60 vncd899io vncd89ai6 vncd89u6f", U = "_1xfx8p61 vncd89wx", W = (e) => {
279
+ if (e instanceof Error) {
280
+ let t = e.message.trim();
281
+ return t.length > 0 ? t : null;
282
+ }
283
+ if (typeof e == "string") {
284
+ let t = e.trim();
285
+ return t.length > 0 ? t : null;
286
+ }
287
+ return null;
288
+ }, G = ({ error: e, onRetry: t }) => {
289
+ let { t: n } = l(), r = W(e);
290
+ return /* @__PURE__ */ P("div", {
291
+ className: H,
292
+ role: "alert",
293
+ children: /* @__PURE__ */ P(E, {
294
+ tone: "danger",
295
+ className: U,
296
+ actions: /* @__PURE__ */ P(C, {
297
+ type: "button",
298
+ variant: "secondary",
299
+ size: "small",
300
+ onClick: t,
301
+ children: n("common.actions.retry")
302
+ }),
303
+ children: r
304
+ })
305
+ });
306
+ }, K = "_1f7vqmu0 vncd899io vncd89ai6 vncd89aoo vncd89u6f vncd89jr6", q = "_1f7vqmu1 vncd89jef", J = "_1f7vqmu2 vncd899ix vncd89aoo vncd89c0o", Y = "_1f7vqmu3 vncd899io vncd89ai6 vncd89aof vncd89laf vncd89jmx vncd891rx vncd891co vncd891qf vncd89wo vncd89v2v", X = () => /* @__PURE__ */ F("div", {
307
+ className: K,
308
+ role: "status",
309
+ "aria-live": "polite",
310
+ "aria-busy": "true",
311
+ children: [
312
+ /* @__PURE__ */ P(j, {
313
+ variant: "text",
314
+ width: "38%",
315
+ className: q
316
+ }),
317
+ /* @__PURE__ */ P(j, {
318
+ variant: "text",
319
+ width: "62%"
320
+ }),
321
+ /* @__PURE__ */ P("div", {
322
+ className: J,
323
+ children: Array.from({ length: 4 }, (e, t) => /* @__PURE__ */ F("div", {
324
+ className: Y,
325
+ children: [
326
+ /* @__PURE__ */ P(j, {
327
+ variant: "text",
328
+ width: "46%"
329
+ }),
330
+ /* @__PURE__ */ P(j, {
331
+ variant: "text",
332
+ width: "82%",
333
+ lines: 2
334
+ }),
335
+ /* @__PURE__ */ P(j, {
336
+ variant: "block",
337
+ width: "100%",
338
+ height: 120
339
+ })
340
+ ]
341
+ }, `content-skeleton-${t}`))
342
+ })
343
+ ]
344
+ }), Z = "_2w9m800 vncd899io vncd89ai6 vncd89jr6 vncd89u6f vncd89k4x", ae = ({ children: e }) => /* @__PURE__ */ P("div", {
345
+ className: Z,
346
+ children: /* @__PURE__ */ P(c, {
347
+ fallback: ({ error: e, reset: t }) => /* @__PURE__ */ P(G, {
348
+ error: e,
349
+ onRetry: t
350
+ }),
351
+ children: /* @__PURE__ */ P(f, {
352
+ fallback: /* @__PURE__ */ P(X, {}),
353
+ children: e
354
+ })
355
+ })
356
+ }), Q = (e) => e?.trim() ?? "", oe = ({ viewer: e, unknownUserLabel: t }) => {
357
+ let n = [Q(e?.firstName), Q(e?.lastName)].filter((e) => e !== "").join(" ").trim();
358
+ n === "" && (n = t);
359
+ let r = Q(e?.email), i = Q(e?.initials);
360
+ i === "" && (i = "?");
361
+ let a = [n];
362
+ return r !== "" && a.push(r), {
363
+ displayName: n,
364
+ email: r,
365
+ initials: i,
366
+ ariaLabel: a.join(" - ")
367
+ };
368
+ }, $ = ({ children: a, permissions: o, authStatus: s, activeGroupId: c }) => {
369
+ let { t: f } = v(), { t: h } = l(), { pathname: C } = b(), T = m(y), E = t(), { auth: D, basePath: O, entities: k, sidebar: A } = n(), [j, N] = _(""), [F, I] = _(!1), [L, R] = _(!1), [z, B] = _(null), V = g(() => i(k, A), [k, A]), H = g(() => Object.keys(V), [V]), { pins: U, toggle: W, reorder: G } = ne({ visibleEntityIds: g(() => r(V, k, A, o), [
370
+ k,
371
+ V,
372
+ o,
373
+ A
374
+ ]) }), { collapsedByGroupId: K, setCollapsed: q } = re({
375
+ groupIds: H,
376
+ activeGroupId: c
377
+ }), J = g(() => ie({
378
+ basePath: O,
379
+ pathname: C,
380
+ entities: k,
381
+ sidebar: A,
382
+ permissions: o,
383
+ searchQuery: j,
384
+ tApp: f,
385
+ t: h,
386
+ pinnedEntityIds: U,
387
+ onTogglePin: W,
388
+ onReorderPin: G,
389
+ collapsedByGroupId: K,
390
+ onGroupCollapsedChange: q
391
+ }), [
392
+ O,
393
+ K,
394
+ k,
395
+ C,
396
+ o,
397
+ U,
398
+ G,
399
+ q,
400
+ A,
401
+ j,
402
+ h,
403
+ f,
404
+ W
405
+ ]), Y = g(() => import.meta.env?.DEV === !0 ? "dev" : "prod", []), X = p(() => {
406
+ L || (R(!0), (async () => {
407
+ try {
408
+ let t = await D.logout.load();
409
+ await new Promise((e, n) => {
410
+ te(E, {
411
+ mutation: t.logoutMutation,
412
+ variables: {},
413
+ onCompleted: () => {
414
+ e();
415
+ },
416
+ onError: (e) => {
417
+ n(e);
418
+ }
419
+ });
420
+ }), localStorage.removeItem("auth_token"), localStorage.removeItem("remember_me"), e(), T?.history.push({ pathname: d(O) });
421
+ } finally {
422
+ R(!1);
423
+ }
424
+ })().catch(() => {}));
425
+ }, [
426
+ D.logout,
427
+ O,
428
+ L,
429
+ E,
430
+ T
431
+ ]), Z = s?.me ?? null, Q = /* @__PURE__ */ P(S, {
432
+ collapsed: F,
433
+ viewer: g(() => oe({
434
+ viewer: Z,
435
+ unknownUserLabel: h("sidebar.profile.unknownUser")
436
+ }), [h, Z]),
437
+ labels: {
438
+ sectionTitle: h("sidebar.profile.title"),
439
+ menuAriaLabel: h("sidebar.profile.menuAriaLabel"),
440
+ signOut: h("sidebar.profile.actions.signOut")
441
+ },
442
+ onSignOut: X,
443
+ isSigningOut: L
444
+ }), $ = null;
445
+ return z != null && ($ = /* @__PURE__ */ P(ae, { children: a })), /* @__PURE__ */ P(M, { children: /* @__PURE__ */ P(x, {
446
+ sidebar: {
447
+ sections: J,
448
+ header: /* @__PURE__ */ P(ee, { environment: Y }),
449
+ search: /* @__PURE__ */ P(w, {
450
+ value: j,
451
+ onChange: N,
452
+ placeholder: h("sidebar.search.placeholder"),
453
+ ariaLabel: h("sidebar.search.placeholder")
454
+ }),
455
+ footer: Q,
456
+ isCollapsed: F,
457
+ onCollapsedChange: I
458
+ },
459
+ topbar: { breadcrumb: /* @__PURE__ */ P("div", { ref: B }) },
460
+ children: /* @__PURE__ */ P(u, {
461
+ value: { target: z },
462
+ children: $
463
+ })
464
+ }) });
465
+ }, se = ({ children: e, permissionsQuery: t, prepared: n, authStatus: r, activeGroupId: i }) => /* @__PURE__ */ P($, {
466
+ permissions: N(t, n),
467
+ authStatus: r,
468
+ activeGroupId: i,
469
+ children: e
470
+ }), ce = ({ children: e, permissionsQuery: t, prepared: n, authStatus: r, activeGroupId: i }) => t != null && n != null ? /* @__PURE__ */ P(se, {
471
+ permissionsQuery: t,
472
+ prepared: n,
473
+ authStatus: r,
474
+ activeGroupId: i,
475
+ children: e
476
+ }) : /* @__PURE__ */ P($, {
477
+ permissions: null,
478
+ authStatus: r,
479
+ activeGroupId: i,
480
+ children: e
481
+ });
482
+ //#endregion
483
+ export { ce as BackofficeLayoutPage, ce as default };
484
+
485
+ //# sourceMappingURL=BackofficeLayoutPage-k9OkLfXb.js.map