@plumile/backoffice-react 0.2.3 → 0.2.6

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 (296) hide show
  1. package/README.md +14 -3
  2. package/lib/esm/auth/AuthRefreshNotice.js +21 -18
  3. package/lib/esm/auth/AuthRefreshNotice.js.map +1 -1
  4. package/lib/esm/auth/TotpQrCode.js +20 -12
  5. package/lib/esm/auth/TotpQrCode.js.map +1 -1
  6. package/lib/esm/auth/authRefreshNotice.css.js +2 -1
  7. package/lib/esm/auth/authRefreshNotice.css.js.map +1 -1
  8. package/lib/esm/auth/login/AuthPanel.js.map +1 -1
  9. package/lib/esm/auth/login/EmailCapturePanel.js +26 -28
  10. package/lib/esm/auth/login/EmailCapturePanel.js.map +1 -1
  11. package/lib/esm/auth/login/LoginFlow.js +11 -11
  12. package/lib/esm/auth/login/LoginFlow.js.map +1 -1
  13. package/lib/esm/auth/login/MethodChooser.js +18 -16
  14. package/lib/esm/auth/login/MethodChooser.js.map +1 -1
  15. package/lib/esm/auth/login/MfaChallengeForm.js +47 -52
  16. package/lib/esm/auth/login/MfaChallengeForm.js.map +1 -1
  17. package/lib/esm/auth/login/OidcButtons.js +3 -2
  18. package/lib/esm/auth/login/OidcButtons.js.map +1 -1
  19. package/lib/esm/auth/login/PasskeyLoginForm.js +13 -15
  20. package/lib/esm/auth/login/PasskeyLoginForm.js.map +1 -1
  21. package/lib/esm/auth/login/PasswordLoginPanel.js +8 -8
  22. package/lib/esm/auth/login/PasswordLoginPanel.js.map +1 -1
  23. package/lib/esm/auth/login/loginPage.css.js +1 -1
  24. package/lib/esm/auth/login/loginPage.css.js.map +1 -1
  25. package/lib/esm/auth/pages/AcceptInvitationScreen.js +80 -75
  26. package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +1 -1
  27. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js +31 -31
  28. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +1 -1
  29. package/lib/esm/auth/pages/PasswordResetRequestScreen.js +33 -29
  30. package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +1 -1
  31. package/lib/esm/auth/pages/VerifyEmailScreen.js +42 -40
  32. package/lib/esm/auth/pages/VerifyEmailScreen.js.map +1 -1
  33. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js +202 -210
  34. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +1 -1
  35. package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js +1 -1
  36. package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js.map +1 -1
  37. package/lib/esm/components/backoffice/actions/toastViewAction.js.map +1 -1
  38. package/lib/esm/components/backoffice/billing/BackofficeBillingUsageChart.js +36 -30
  39. package/lib/esm/components/backoffice/billing/BackofficeBillingUsageChart.js.map +1 -1
  40. package/lib/esm/components/backoffice/billing/backofficeBillingUsageChart.css.js +1 -1
  41. package/lib/esm/components/backoffice/billing/backofficeBillingUsageChart.css.js.map +1 -1
  42. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js +36 -33
  43. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js.map +1 -1
  44. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +1 -1
  45. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js +1 -1
  46. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +1 -1
  47. package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js +24 -20
  48. package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js.map +1 -1
  49. package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js +1 -1
  50. package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js.map +1 -1
  51. package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js +7 -8
  52. package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js.map +1 -1
  53. package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js +49 -45
  54. package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js.map +1 -1
  55. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +1 -1
  56. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js.map +1 -1
  57. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +1 -1
  58. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js.map +1 -1
  59. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +1 -1
  60. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js.map +1 -1
  61. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +1 -1
  62. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js.map +1 -1
  63. package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js +1 -1
  64. package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js.map +1 -1
  65. package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js +1 -1
  66. package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js.map +1 -1
  67. package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js +1 -1
  68. package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js.map +1 -1
  69. package/lib/esm/components/backoffice/errors/BackofficeErrorBoundary.js +1 -1
  70. package/lib/esm/components/backoffice/errors/BackofficeErrorBoundary.js.map +1 -1
  71. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +1 -1
  72. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +1 -1
  73. package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js +15 -15
  74. package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js.map +1 -1
  75. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +53 -65
  76. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +1 -1
  77. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +1 -1
  78. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js.map +1 -1
  79. package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js +1 -1
  80. package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js.map +1 -1
  81. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +2 -2
  82. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +1 -1
  83. package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js +6 -6
  84. package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js.map +1 -1
  85. package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js +1 -1
  86. package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js.map +1 -1
  87. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +1 -1
  88. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js.map +1 -1
  89. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +3 -3
  90. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +1 -1
  91. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +1 -1
  92. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js.map +1 -1
  93. package/lib/esm/components/backoffice/layout/buildSidebarSections.js +152 -172
  94. package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -1
  95. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js +2 -5
  96. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +1 -1
  97. package/lib/esm/components/backoffice/layout/sidebarUtils.js +1 -1
  98. package/lib/esm/components/backoffice/layout/sidebarUtils.js.map +1 -1
  99. package/lib/esm/components/backoffice/links/BackofficeLinkContent.js +1 -1
  100. package/lib/esm/components/backoffice/links/backofficeLink.css.js +1 -1
  101. package/lib/esm/components/backoffice/links/backofficeLink.css.js.map +1 -1
  102. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +1 -1
  103. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js.map +1 -1
  104. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js +1 -1
  105. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +1 -1
  106. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js +1 -1
  107. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js.map +1 -1
  108. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +93 -82
  109. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -1
  110. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +1 -1
  111. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +1 -1
  112. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +1 -1
  113. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js.map +1 -1
  114. package/lib/esm/components/backoffice/routing/BackofficeContentError.js +6 -3
  115. package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +1 -1
  116. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js +7 -7
  117. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +1 -1
  118. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +1 -1
  119. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js.map +1 -1
  120. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +1 -1
  121. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js.map +1 -1
  122. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +1 -1
  123. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js.map +1 -1
  124. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailNotFound.js +3 -2
  125. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailNotFound.js.map +1 -1
  126. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +314 -309
  127. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
  128. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +1 -1
  129. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +1 -1
  130. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +1 -1
  131. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js.map +1 -1
  132. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +1 -1
  133. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js.map +1 -1
  134. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js +2 -2
  135. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js.map +1 -1
  136. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js +1 -1
  137. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +1 -1
  138. package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js +5 -5
  139. package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js.map +1 -1
  140. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +1 -1
  141. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js.map +1 -1
  142. package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js +12 -12
  143. package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js.map +1 -1
  144. package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js +3 -2
  145. package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +1 -1
  146. package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js +15 -19
  147. package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js.map +1 -1
  148. package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js +1 -1
  149. package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js.map +1 -1
  150. package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js +1 -1
  151. package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js.map +1 -1
  152. package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js +1 -1
  153. package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js.map +1 -1
  154. package/lib/esm/hooks/useBackofficeInfiniteScrollSentinel.js +17 -9
  155. package/lib/esm/hooks/useBackofficeInfiniteScrollSentinel.js.map +1 -1
  156. package/lib/esm/hooks/useCopyToClipboard.js +1 -1
  157. package/lib/esm/hooks/useCopyToClipboard.js.map +1 -1
  158. package/lib/esm/i18n/locales/en/backofficeReact.js +21 -2
  159. package/lib/esm/i18n/locales/en/backofficeReact.js.map +1 -1
  160. package/lib/esm/i18n/locales/fr/backofficeReact.js +21 -2
  161. package/lib/esm/i18n/locales/fr/backofficeReact.js.map +1 -1
  162. package/lib/esm/pages/BackofficeDashboardPage.js +42 -41
  163. package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -1
  164. package/lib/esm/pages/BackofficeDashboardWidgetContent.js +291 -255
  165. package/lib/esm/pages/BackofficeDashboardWidgetContent.js.map +1 -1
  166. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +47 -49
  167. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +1 -1
  168. package/lib/esm/pages/BackofficeEntityDetailPage.js +111 -105
  169. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
  170. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js +213 -213
  171. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -1
  172. package/lib/esm/pages/BackofficeEntityListDataPage.js +101 -83
  173. package/lib/esm/pages/BackofficeEntityListDataPage.js.map +1 -1
  174. package/lib/esm/pages/BackofficeEntityListPage.helpers.js +10 -4
  175. package/lib/esm/pages/BackofficeEntityListPage.helpers.js.map +1 -1
  176. package/lib/esm/pages/BackofficeEntityListPage.js +55 -54
  177. package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
  178. package/lib/esm/pages/BackofficeEntityListRouteContext.js.map +1 -1
  179. package/lib/esm/pages/BackofficeHubPage.js +1 -1
  180. package/lib/esm/pages/BackofficeHubPage.js.map +1 -1
  181. package/lib/esm/pages/BackofficeLayoutPage.js +64 -56
  182. package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -1
  183. package/lib/esm/pages/backofficeDashboardPage.css.js +1 -1
  184. package/lib/esm/pages/backofficeDashboardPage.css.js.map +1 -1
  185. package/lib/esm/pages/backofficeEntityDetailPage.css.js +1 -1
  186. package/lib/esm/pages/backofficeEntityDetailPage.css.js.map +1 -1
  187. package/lib/esm/pages/backofficeEntityListPage.css.js +1 -1
  188. package/lib/esm/pages/backofficeEntityListPage.css.js.map +1 -1
  189. package/lib/esm/pages/detail/BackofficeEntityDetailLayoutContext.js.map +1 -1
  190. package/lib/esm/pages/detail/BackofficeEntityDetailManifestFallback.js +11 -11
  191. package/lib/esm/pages/detail/BackofficeEntityDetailManifestFallback.js.map +1 -1
  192. package/lib/esm/pages/detail/buildTabsItems.js.map +1 -1
  193. package/lib/esm/provider/BackofficeProvider.js +41 -39
  194. package/lib/esm/provider/BackofficeProvider.js.map +1 -1
  195. package/lib/esm/router/createBackofficeRoutes.js +23 -23
  196. package/lib/esm/router/createBackofficeRoutes.js.map +1 -1
  197. package/lib/esm/storybook/backofficeDashboardPageStory.css.js +6 -0
  198. package/lib/esm/storybook/backofficeDashboardPageStory.css.js.map +1 -0
  199. package/lib/esm/storybook/relay/RelayStory.css.js +1 -1
  200. package/lib/esm/storybook/relay/RelayStory.css.js.map +1 -1
  201. package/lib/esm/style.css +1 -1
  202. package/lib/types/auth/AuthRefreshNotice.d.ts +5 -1
  203. package/lib/types/auth/AuthRefreshNotice.d.ts.map +1 -1
  204. package/lib/types/auth/TotpQrCode.d.ts +2 -1
  205. package/lib/types/auth/TotpQrCode.d.ts.map +1 -1
  206. package/lib/types/auth/authRefreshNotice.css.d.ts.map +1 -1
  207. package/lib/types/auth/login/AuthPanel.d.ts.map +1 -1
  208. package/lib/types/auth/login/EmailCapturePanel.d.ts.map +1 -1
  209. package/lib/types/auth/login/LoginFlow.d.ts.map +1 -1
  210. package/lib/types/auth/login/MethodChooser.d.ts.map +1 -1
  211. package/lib/types/auth/login/MfaChallengeForm.d.ts.map +1 -1
  212. package/lib/types/auth/login/OidcButtons.d.ts.map +1 -1
  213. package/lib/types/auth/login/PasskeyLoginForm.d.ts.map +1 -1
  214. package/lib/types/auth/login/PasswordLoginPanel.d.ts +1 -1
  215. package/lib/types/auth/login/PasswordLoginPanel.d.ts.map +1 -1
  216. package/lib/types/auth/login/loginPage.css.d.ts.map +1 -1
  217. package/lib/types/auth/pages/AcceptInvitationScreen.d.ts.map +1 -1
  218. package/lib/types/auth/pages/PasswordResetCompleteScreen.d.ts.map +1 -1
  219. package/lib/types/auth/pages/PasswordResetRequestScreen.d.ts.map +1 -1
  220. package/lib/types/auth/pages/VerifyEmailScreen.d.ts.map +1 -1
  221. package/lib/types/components/backoffice/actions/BackofficeEntityActionFormDialog.d.ts +3 -3
  222. package/lib/types/components/backoffice/actions/BackofficeEntityActionFormDialog.d.ts.map +1 -1
  223. package/lib/types/components/backoffice/actions/toastViewAction.d.ts +1 -1
  224. package/lib/types/components/backoffice/actions/toastViewAction.d.ts.map +1 -1
  225. package/lib/types/components/backoffice/billing/BackofficeBillingUsageChart.d.ts +2 -1
  226. package/lib/types/components/backoffice/billing/BackofficeBillingUsageChart.d.ts.map +1 -1
  227. package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts +2 -2
  228. package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts.map +1 -1
  229. package/lib/types/components/backoffice/detail/BackofficeDetailBadgeRow.d.ts.map +1 -1
  230. package/lib/types/components/backoffice/detail/BackofficeEntitySummaryHeader.d.ts.map +1 -1
  231. package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts +1 -1
  232. package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts.map +1 -1
  233. package/lib/types/components/backoffice/detail/BackofficeTokenUsageBreakdown.d.ts.map +1 -1
  234. package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts +1 -1
  235. package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts.map +1 -1
  236. package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.d.ts +1 -1
  237. package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.d.ts.map +1 -1
  238. package/lib/types/components/backoffice/filters/EntityIdFilterField.d.ts.map +1 -1
  239. package/lib/types/components/backoffice/filters/backofficeFilterAction.css.d.ts.map +1 -1
  240. package/lib/types/components/backoffice/filters/deferredFilterSearchInput.css.d.ts.map +1 -1
  241. package/lib/types/components/backoffice/filters/entityIdFilterField.css.d.ts +0 -1
  242. package/lib/types/components/backoffice/filters/entityIdFilterField.css.d.ts.map +1 -1
  243. package/lib/types/components/backoffice/hub/backofficeHubTemplate.css.d.ts.map +1 -1
  244. package/lib/types/components/backoffice/layout/backofficeSidebarActions.css.d.ts.map +1 -1
  245. package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts +2 -2
  246. package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts.map +1 -1
  247. package/lib/types/components/backoffice/layout/mapViewerToSidebarProfileView.d.ts +1 -1
  248. package/lib/types/components/backoffice/layout/mapViewerToSidebarProfileView.d.ts.map +1 -1
  249. package/lib/types/components/backoffice/list/RowFlagsCell.css.d.ts.map +1 -1
  250. package/lib/types/components/backoffice/overview/backofficeOverviewLayout.css.d.ts.map +1 -1
  251. package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts +3 -3
  252. package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
  253. package/lib/types/components/backoffice/refs/backofficeRelatedCountLink.css.d.ts.map +1 -1
  254. package/lib/types/components/backoffice/routing/BackofficeContentError.d.ts.map +1 -1
  255. package/lib/types/components/backoffice/scaffolds/BackofficeEntityDetailNotFound.d.ts.map +1 -1
  256. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts +2 -2
  257. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
  258. package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.d.ts +1 -1
  259. package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.d.ts.map +1 -1
  260. package/lib/types/components/backoffice/shared/backofficeFilterableCell.css.d.ts.map +1 -1
  261. package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts.map +1 -1
  262. package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts.map +1 -1
  263. package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts.map +1 -1
  264. package/lib/types/hooks/useBackofficeInfiniteScrollSentinel.d.ts +1 -2
  265. package/lib/types/hooks/useBackofficeInfiniteScrollSentinel.d.ts.map +1 -1
  266. package/lib/types/i18n/resources.d.ts +44 -2
  267. package/lib/types/i18n/resources.d.ts.map +1 -1
  268. package/lib/types/pages/BackofficeDashboardPage.d.ts.map +1 -1
  269. package/lib/types/pages/BackofficeDashboardWidgetContent.d.ts.map +1 -1
  270. package/lib/types/pages/BackofficeEntityDetailLayoutPage.d.ts.map +1 -1
  271. package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
  272. package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts +1 -1
  273. package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts.map +1 -1
  274. package/lib/types/pages/BackofficeEntityListDataPage.d.ts.map +1 -1
  275. package/lib/types/pages/BackofficeEntityListPage.d.ts.map +1 -1
  276. package/lib/types/pages/BackofficeEntityListPage.helpers.d.ts +9 -9
  277. package/lib/types/pages/BackofficeEntityListPage.helpers.d.ts.map +1 -1
  278. package/lib/types/pages/BackofficeEntityListRouteContext.d.ts +2 -2
  279. package/lib/types/pages/BackofficeEntityListRouteContext.d.ts.map +1 -1
  280. package/lib/types/pages/BackofficeLayoutPage.d.ts.map +1 -1
  281. package/lib/types/pages/backofficeEntityListPage.css.d.ts.map +1 -1
  282. package/lib/types/pages/detail/BackofficeEntityDetailLayoutContext.d.ts +1 -1
  283. package/lib/types/pages/detail/BackofficeEntityDetailLayoutContext.d.ts.map +1 -1
  284. package/lib/types/pages/detail/buildTabsItems.d.ts +1 -1
  285. package/lib/types/pages/detail/buildTabsItems.d.ts.map +1 -1
  286. package/lib/types/provider/BackofficeProvider.d.ts.map +1 -1
  287. package/lib/types/provider/types.d.ts +2 -0
  288. package/lib/types/provider/types.d.ts.map +1 -1
  289. package/lib/types/router/createBackofficeRoutes.d.ts +0 -1
  290. package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
  291. package/lib/types/storybook/backofficeDashboardPageStory.css.d.ts +2 -0
  292. package/lib/types/storybook/backofficeDashboardPageStory.css.d.ts.map +1 -0
  293. package/package.json +17 -17
  294. package/lib/esm/components/backoffice/technical/TechnicalIdentifierValue.js +0 -2
  295. package/lib/types/components/backoffice/technical/TechnicalIdentifierValue.d.ts +0 -2
  296. package/lib/types/components/backoffice/technical/TechnicalIdentifierValue.d.ts.map +0 -1
@@ -9,12 +9,12 @@ import { BACKOFFICE_LIST_DEFAULTS as ee } from "@plumile/backoffice-core/constan
9
9
  import { getResourcePage as u } from "@plumile/router/ResourcePage.js";
10
10
  import { r as d } from "@plumile/router/tools.js";
11
11
  //#region src/router/createBackofficeRoutes.tsx
12
- var { loadQuery: f, usePreloadedQuery: p } = c, m = u("WrapperPage", async () => ({ default: (await import("@plumile/ui/pages/WrapperPage.js")).WrapperPage })), h = u("BackofficeLayoutPage", async () => import("../pages/BackofficeLayoutPage.js")), g = u("BackofficeEntityListPage", async () => import("../pages/BackofficeEntityListPage.js")), _ = u("BackofficeEntityListShellPage", async () => import("../pages/BackofficeEntityListShellPage.js")), v = u("BackofficeEntityListDataPage", async () => import("../pages/BackofficeEntityListDataPage.js")), te = u("BackofficeEntityDetailPage", async () => import("../pages/BackofficeEntityDetailPage.js")), y = u("BackofficeEntityDetailFramePage", async () => import("../pages/BackofficeEntityDetailFramePage.js")), b = u("BackofficeEntityDetailLayoutPage", async () => import("../pages/BackofficeEntityDetailLayoutPage.js")), x = u("BackofficeEntityDetailPageConfigPage", async () => import("../pages/BackofficeEntityDetailPageConfigPage.js")), S = u("BackofficeEntityDetailShellPage", async () => import("../pages/BackofficeEntityDetailShellPage.js")), C = u("BackofficeEntityDetailUnknownPageRedirect", async () => import("../pages/BackofficeEntityDetailUnknownPageRedirect.js")), w = u("BackofficeDashboardPage", async () => import("../pages/BackofficeDashboardPage.js")), T = u("BackofficeDashboardShellPage", async () => import("../pages/BackofficeDashboardShellPage.js")), E = u("BackofficeToolShellPage", async () => import("../pages/BackofficeToolShellPage.js")), D = u("BackofficeHubPage", async () => import("../pages/BackofficeHubPage.js")), ne = u("BackofficeLoginPage", async () => import("../pages/BackofficeLoginPage.js")), re = u("BackofficePasswordResetRequestPage", async () => import("../pages/BackofficePasswordResetRequestPage.js")), ie = u("BackofficePasswordResetCompletePage", async () => import("../pages/BackofficePasswordResetCompletePage.js")), O = u("BackofficeVerifyEmailPage", async () => import("../pages/BackofficeVerifyEmailPage.js")), k = u("BackofficeAcceptInvitationPage", async () => import("../pages/BackofficeAcceptInvitationPage.js")), A = ({ pathname: e }) => {
12
+ var { loadQuery: f, usePreloadedQuery: p } = c, m = u("BackofficeLayoutPage", async () => import("../pages/BackofficeLayoutPage.js")), h = u("BackofficeEntityListPage", async () => import("../pages/BackofficeEntityListPage.js")), g = u("BackofficeEntityListShellPage", async () => import("../pages/BackofficeEntityListShellPage.js")), _ = u("BackofficeEntityListDataPage", async () => import("../pages/BackofficeEntityListDataPage.js")), v = u("BackofficeEntityDetailPage", async () => import("../pages/BackofficeEntityDetailPage.js")), y = u("BackofficeEntityDetailFramePage", async () => import("../pages/BackofficeEntityDetailFramePage.js")), b = u("BackofficeEntityDetailLayoutPage", async () => import("../pages/BackofficeEntityDetailLayoutPage.js")), x = u("BackofficeEntityDetailPageConfigPage", async () => import("../pages/BackofficeEntityDetailPageConfigPage.js")), S = u("BackofficeEntityDetailShellPage", async () => import("../pages/BackofficeEntityDetailShellPage.js")), C = u("BackofficeEntityDetailUnknownPageRedirect", async () => import("../pages/BackofficeEntityDetailUnknownPageRedirect.js")), w = u("BackofficeDashboardPage", async () => import("../pages/BackofficeDashboardPage.js")), T = u("BackofficeDashboardShellPage", async () => import("../pages/BackofficeDashboardShellPage.js")), E = u("BackofficeToolShellPage", async () => import("../pages/BackofficeToolShellPage.js")), D = u("BackofficeHubPage", async () => import("../pages/BackofficeHubPage.js")), O = u("BackofficeLoginPage", async () => import("../pages/BackofficeLoginPage.js")), te = u("BackofficePasswordResetRequestPage", async () => import("../pages/BackofficePasswordResetRequestPage.js")), ne = u("BackofficePasswordResetCompletePage", async () => import("../pages/BackofficePasswordResetCompletePage.js")), re = u("BackofficeVerifyEmailPage", async () => import("../pages/BackofficeVerifyEmailPage.js")), k = u("BackofficeAcceptInvitationPage", async () => import("../pages/BackofficeAcceptInvitationPage.js")), A = ({ pathname: e }) => {
13
13
  let t = a(l);
14
14
  return o(() => {
15
15
  t?.history.set({ pathname: e });
16
16
  }, [e, t]), null;
17
- }, ae = ({ children: e, Component: t, preparedLayout: n, permissionsQuery: r, activeGroupId: i }) => /* @__PURE__ */ s(t, {
17
+ }, ie = ({ children: e, Component: t, preparedLayout: n, permissionsQuery: r, activeGroupId: i }) => /* @__PURE__ */ s(t, {
18
18
  permissionsQuery: r,
19
19
  prepared: n?.permissionsQuery ?? null,
20
20
  authStatus: null,
@@ -56,7 +56,7 @@ var { loadQuery: f, usePreloadedQuery: p } = c, m = u("WrapperPage", async () =>
56
56
  return e.detailPages?.find((e) => I(e.pathSegment) === n) ?? null;
57
57
  }, B = (e, t) => z(e, t)?.id ?? t, V = d;
58
58
  function H(a) {
59
- let { basePath: o, entityManifest: c, entityRegistry: l, sidebar: u, auth: d, dashboard: p } = a, m = r(a.dashboards), N = M(o), I = P(N, "login"), z = P(N, "login/reset"), H = P(N, "login/reset/complete"), U = P(N, "verify-email"), oe = P(N, "accept-invitation"), se = F(N, "login"), W = t(c, u), ce = n(W, u), le = e(W, u), G = /* @__PURE__ */ new Map();
59
+ let { basePath: o, entityManifest: c, entityRegistry: l, sidebar: u, auth: d, dashboard: p } = a, N = r(a.dashboards), I = M(o), z = P(I, "login"), H = P(I, "login/reset"), U = P(I, "login/reset/complete"), ae = P(I, "verify-email"), oe = P(I, "accept-invitation"), se = F(I, "login"), W = t(c, u), ce = n(W, u), le = e(W, u), G = /* @__PURE__ */ new Map();
60
60
  le.forEach((e, t) => {
61
61
  G.set(t, e.groupId);
62
62
  });
@@ -94,7 +94,7 @@ function H(a) {
94
94
  prepare: Y,
95
95
  render: Z
96
96
  })]
97
- }), pe = m.map((e) => {
97
+ }), pe = N.map((e) => {
98
98
  let t = V({
99
99
  path: "",
100
100
  resourcePage: w,
@@ -120,7 +120,7 @@ function H(a) {
120
120
  });
121
121
  }), me = Object.values(c).filter((e) => e.kind === "list-detail"), he = ce.map((e) => {
122
122
  let t = V({
123
- path: L(e.hub.href, N),
123
+ path: L(e.hub.href, I),
124
124
  resourcePage: D,
125
125
  prepare: () => ({
126
126
  hubId: e.hub.id,
@@ -130,7 +130,7 @@ function H(a) {
130
130
  });
131
131
  return e.groupId != null && q.set(t, e.groupId), t;
132
132
  }), ge = me.map((e) => {
133
- let t = e.routes.list, n = L(t, N), r = [], a = ({ match: t }) => {
133
+ let t = e.routes.list, n = L(t, I), r = [], a = ({ match: t }) => {
134
134
  let n = String(t?.params.id ?? ""), r = typeof t?.params.pagePath == "string" ? t.params.pagePath : null, a = r == null ? e.defaultDetailPageId : B(e, r);
135
135
  return /* @__PURE__ */ s(i, {
136
136
  entityManifest: e,
@@ -143,7 +143,7 @@ function H(a) {
143
143
  let t = V({
144
144
  path: "",
145
145
  querySchema: e.listNavigation.querySchema,
146
- resourcePage: v,
146
+ resourcePage: _,
147
147
  prepareSearchBehavior: "path",
148
148
  prepare: async ({ context: t, filters: n, query: r }) => {
149
149
  let { config: i } = await l.loadListEntity(e.id), { list: a } = i, { defaults: o } = e.listNavigation, s = {};
@@ -169,7 +169,7 @@ function H(a) {
169
169
  K.set(t, e.id);
170
170
  let n = V({
171
171
  path: "",
172
- resourcePage: g,
172
+ resourcePage: h,
173
173
  prepareSearchBehavior: "path",
174
174
  prepare: async () => {
175
175
  let { config: t } = await l.loadListEntity(e.id);
@@ -194,7 +194,7 @@ function H(a) {
194
194
  K.set(n, e.id);
195
195
  let i = V({
196
196
  path: "",
197
- resourcePage: _,
197
+ resourcePage: g,
198
198
  prepareSearchBehavior: "path",
199
199
  prepare: () => ({
200
200
  entityId: e.id,
@@ -216,7 +216,7 @@ function H(a) {
216
216
  let o = e.detailPages.map((t) => {
217
217
  let n = V({
218
218
  path: "",
219
- resourcePage: te,
219
+ resourcePage: v,
220
220
  suspenseBoundary: "segment",
221
221
  fallback: a,
222
222
  prepare: async ({ context: n, variables: r }) => {
@@ -387,7 +387,7 @@ function H(a) {
387
387
  suspenseBoundary: "segment"
388
388
  });
389
389
  }), _e = Object.values(c).filter((e) => e.kind === "tool").map((e) => {
390
- let t = L(e.routes.list, N), n = V({
390
+ let t = L(e.routes.list, I), n = V({
391
391
  path: "",
392
392
  resourcePage: a.toolsOperationPage ?? null,
393
393
  prepare: async () => {
@@ -429,8 +429,8 @@ function H(a) {
429
429
  });
430
430
  return K.set(r, e.id), r;
431
431
  }), ve = V({
432
- path: N,
433
- resourcePage: h,
432
+ path: I,
433
+ resourcePage: m,
434
434
  prepareSearchBehavior: "path",
435
435
  suspenseBoundary: "segment",
436
436
  prepare: ue,
@@ -446,7 +446,7 @@ function H(a) {
446
446
  authStatusPrepared: i.authStatusQuery,
447
447
  loginRedirectPath: se,
448
448
  children: e
449
- }) : /* @__PURE__ */ s(ae, {
449
+ }) : /* @__PURE__ */ s(ie, {
450
450
  Component: c,
451
451
  preparedLayout: i,
452
452
  permissionsQuery: u?.permissionsQuery,
@@ -464,8 +464,8 @@ function H(a) {
464
464
  ]
465
465
  }), $ = [
466
466
  V({
467
- path: I,
468
- resourcePage: ne,
467
+ path: z,
468
+ resourcePage: O,
469
469
  prepare: async ({ context: e }) => {
470
470
  let t = await d.login.load();
471
471
  return { query: f(e.relayEnvironment, t.loginQuery, {}) };
@@ -473,20 +473,20 @@ function H(a) {
473
473
  render: ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ s(t, { prepared: e })
474
474
  }),
475
475
  V({
476
- path: z,
477
- resourcePage: re,
476
+ path: H,
477
+ resourcePage: te,
478
478
  prepare: async () => (await d.passwordResetRequest.load(), null),
479
479
  render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ s(e, {})
480
480
  }),
481
481
  V({
482
- path: H,
483
- resourcePage: ie,
482
+ path: U,
483
+ resourcePage: ne,
484
484
  prepare: async () => (await d.passwordResetComplete.load(), null),
485
485
  render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ s(e, {})
486
486
  }),
487
487
  V({
488
- path: U,
489
- resourcePage: O,
488
+ path: ae,
489
+ resourcePage: re,
490
490
  prepare: async () => (await d.verifyEmail.load(), null),
491
491
  render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ s(e, {})
492
492
  })
@@ -511,6 +511,6 @@ var U = {
511
511
  BackofficeLayoutRouteWithAuthStatus: j
512
512
  };
513
513
  //#endregion
514
- export { k as BackofficeAcceptInvitationPageResource, w as BackofficeDashboardPageResource, T as BackofficeDashboardShellPageResource, y as BackofficeEntityDetailFramePageResource, b as BackofficeEntityDetailLayoutPageResource, x as BackofficeEntityDetailPageConfigPageResource, te as BackofficeEntityDetailPageResource, S as BackofficeEntityDetailShellPageResource, C as BackofficeEntityDetailUnknownPageRedirectResource, v as BackofficeEntityListDataPageResource, g as BackofficeEntityListPageResource, _ as BackofficeEntityListShellPageResource, D as BackofficeHubPageResource, h as BackofficeLayoutPageResource, ne as BackofficeLoginPageResource, ie as BackofficePasswordResetCompletePageResource, re as BackofficePasswordResetRequestPageResource, E as BackofficeToolShellPageResource, O as BackofficeVerifyEmailPageResource, m as WrapperPageResource, U as __test, H as createBackofficeRoutes, H as default };
514
+ export { k as BackofficeAcceptInvitationPageResource, w as BackofficeDashboardPageResource, T as BackofficeDashboardShellPageResource, y as BackofficeEntityDetailFramePageResource, b as BackofficeEntityDetailLayoutPageResource, x as BackofficeEntityDetailPageConfigPageResource, v as BackofficeEntityDetailPageResource, S as BackofficeEntityDetailShellPageResource, C as BackofficeEntityDetailUnknownPageRedirectResource, _ as BackofficeEntityListDataPageResource, h as BackofficeEntityListPageResource, g as BackofficeEntityListShellPageResource, D as BackofficeHubPageResource, m as BackofficeLayoutPageResource, O as BackofficeLoginPageResource, ne as BackofficePasswordResetCompletePageResource, te as BackofficePasswordResetRequestPageResource, E as BackofficeToolShellPageResource, re as BackofficeVerifyEmailPageResource, U as __test, H as createBackofficeRoutes, H as default };
515
515
 
516
516
  //# sourceMappingURL=createBackofficeRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createBackofficeRoutes.js","names":[],"sources":["../../../src/router/createBackofficeRoutes.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport {\n useContext,\n useEffect,\n type ComponentType,\n type JSX,\n type ReactNode,\n} from 'react';\nimport {\n getResourcePage,\n type ResourcePage,\n} from '@plumile/router/ResourcePage.js';\nimport RoutingContext from '@plumile/router/routing/RoutingContext.js';\nimport { r } from '@plumile/router/tools.js';\nimport {\n type RouteNode,\n type Route,\n type RouteFallbackArgs,\n} from '@plumile/router/types.js';\nimport * as ReactRelay from 'react-relay';\nimport type { PreloadedQuery } from 'react-relay';\nimport type {\n Environment,\n GraphQLTaggedNode,\n OperationType,\n Variables,\n} from 'relay-runtime';\n\nimport { BACKOFFICE_LIST_DEFAULTS } from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficeDashboardConfig,\n BackofficeDetailPageManifestItem,\n BackofficeEntityManifestItem,\n BackofficeEntityManifestMap,\n I18nLabel,\n BackofficePreparedDetailFrameRoute,\n BackofficePreparedDetailLayoutDataRoute,\n BackofficePreparedDetailPageConfigRoute,\n BackofficePreparedDetailPageDataRoute,\n BackofficePreparedDetailShellRoute,\n BackofficePreparedDetailUnknownPageRoute,\n BackofficePreparedListDataRoute,\n BackofficePreparedListLayoutRoute,\n BackofficePreparedListShellRoute,\n BackofficePreparedToolConfigRoute,\n BackofficePreparedToolRoute,\n} from '@plumile/backoffice-core/types.js';\n\nimport type {\n BackofficeAuthConfig,\n BackofficeDashboardRegistration,\n BackofficeDashboardModule,\n BackofficeResolvedSidebarHubConfig,\n BackofficeSidebarConfig,\n} from '../provider/types.js';\nimport {\n buildEntityGroupLookup,\n resolveSidebarHubEntries,\n resolveSidebarGroups,\n} from '../components/backoffice/layout/sidebarUtils.js';\nimport type { BackofficeEntityRegistry } from '../provider/entityRegistry.js';\nimport { validateBackofficeDashboardRegistrations } from '../provider/dashboardRegistrations.js';\nimport { BackofficeEntityDetailManifestFallback } from '../pages/detail/BackofficeEntityDetailManifestFallback.js';\n\nconst { loadQuery, usePreloadedQuery } = ReactRelay;\n\nexport type CreateBackofficeRoutesInput = {\n basePath: string;\n entityManifest: BackofficeEntityManifestMap;\n entityRegistry: BackofficeEntityRegistry;\n sidebar?: BackofficeSidebarConfig;\n auth: BackofficeAuthConfig;\n dashboard?: BackofficeDashboardModule;\n dashboards?: readonly BackofficeDashboardRegistration[];\n toolsOperationPage?: ResourcePage | null;\n};\n\nexport type BackofficeRouterContext = {\n relayEnvironment: Environment;\n};\n\n/** @deprecated Structural routes no longer need a page resource. */\nexport const WrapperPageResource: ResourcePage | null = getResourcePage(\n 'WrapperPage',\n // eslint-disable-next-line arrow-body-style\n async () => ({\n default: (await import('@plumile/ui/pages/WrapperPage.js')).WrapperPage,\n }),\n);\n\nexport const BackofficeLayoutPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeLayoutPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeLayoutPage.js'),\n );\n\nexport const BackofficeEntityListPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityListPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityListPage.js'),\n );\n\nexport const BackofficeEntityListShellPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityListShellPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityListShellPage.js'),\n );\n\nexport const BackofficeEntityListDataPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityListDataPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityListDataPage.js'),\n );\n\nexport const BackofficeEntityDetailPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailPage.js'),\n );\n\nexport const BackofficeEntityDetailFramePageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailFramePage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailFramePage.js'),\n );\n\nexport const BackofficeEntityDetailLayoutPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailLayoutPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailLayoutPage.js'),\n );\n\nexport const BackofficeEntityDetailPageConfigPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailPageConfigPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailPageConfigPage.js'),\n );\n\nexport const BackofficeEntityDetailShellPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailShellPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailShellPage.js'),\n );\n\nexport const BackofficeEntityDetailUnknownPageRedirectResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailUnknownPageRedirect',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailUnknownPageRedirect.js'),\n );\n\nexport const BackofficeDashboardPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeDashboardPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeDashboardPage.js'),\n );\n\nexport const BackofficeDashboardShellPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeDashboardShellPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeDashboardShellPage.js'),\n );\n\nexport const BackofficeToolShellPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeToolShellPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeToolShellPage.js'),\n );\n\nexport const BackofficeHubPageResource: ResourcePage | null = getResourcePage(\n 'BackofficeHubPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeHubPage.js'),\n);\n\nexport const BackofficeLoginPageResource: ResourcePage | null = getResourcePage(\n 'BackofficeLoginPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeLoginPage.js'),\n);\n\nexport const BackofficePasswordResetRequestPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficePasswordResetRequestPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficePasswordResetRequestPage.js'),\n );\n\nexport const BackofficePasswordResetCompletePageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficePasswordResetCompletePage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficePasswordResetCompletePage.js'),\n );\n\nexport const BackofficeVerifyEmailPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeVerifyEmailPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeVerifyEmailPage.js'),\n );\n\nexport const BackofficeAcceptInvitationPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeAcceptInvitationPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeAcceptInvitationPage.js'),\n );\n\ntype PreparedLayout = {\n permissionsQuery: PreloadedQuery<OperationType> | null;\n authStatusQuery: PreloadedQuery<OperationType> | null;\n};\n\nexport type BackofficePreparedDashboardShellRoute = {\n dashboardId: string | null;\n label?: I18nLabel;\n};\n\nexport type BackofficePreparedDashboardRoute =\n BackofficePreparedDashboardShellRoute & {\n config: BackofficeDashboardConfig;\n };\n\ntype LayoutAuthStatus = {\n isLoggedIn?: boolean | null;\n me?: {\n id: string;\n firstName: string;\n lastName: string;\n email: string;\n initials: string;\n } | null;\n} | null;\n\ntype LayoutRouteComponent = ComponentType<{\n children: ReactNode;\n permissionsQuery?: GraphQLTaggedNode;\n prepared?: PreloadedQuery<OperationType> | null;\n authStatus?: LayoutAuthStatus;\n activeGroupId?: string | null;\n}>;\n\ntype LayoutRouteRenderProps = {\n children: ReactNode;\n Component: LayoutRouteComponent;\n preparedLayout: PreparedLayout | undefined;\n permissionsQuery: GraphQLTaggedNode | undefined;\n activeGroupId: string | null;\n};\n\nconst BackofficeHistoryRedirect = ({\n pathname,\n}: {\n pathname: string;\n}): null => {\n const router = useContext(RoutingContext);\n\n useEffect(() => {\n router?.history.set({\n pathname,\n });\n }, [pathname, router]);\n\n return null;\n};\n\nconst BackofficeLayoutRouteWithoutAuthStatus = ({\n children,\n Component,\n preparedLayout,\n permissionsQuery,\n activeGroupId,\n}: LayoutRouteRenderProps): JSX.Element => {\n return (\n <Component\n permissionsQuery={permissionsQuery}\n prepared={preparedLayout?.permissionsQuery ?? null}\n authStatus={null}\n activeGroupId={activeGroupId}\n >\n {children}\n </Component>\n );\n};\n\nconst BackofficeLayoutRouteWithAuthStatus = ({\n children,\n Component,\n preparedLayout,\n permissionsQuery,\n activeGroupId,\n authStatusQuery,\n authStatusPrepared,\n loginRedirectPath,\n}: LayoutRouteRenderProps & {\n authStatusQuery: GraphQLTaggedNode;\n authStatusPrepared: PreloadedQuery<OperationType>;\n loginRedirectPath: string;\n}): JSX.Element => {\n const data = usePreloadedQuery(authStatusQuery, authStatusPrepared);\n const authStatus = data as LayoutAuthStatus;\n\n if (authStatus?.isLoggedIn !== true) {\n return <BackofficeHistoryRedirect pathname={loginRedirectPath} />;\n }\n\n return (\n <Component\n permissionsQuery={permissionsQuery}\n prepared={preparedLayout?.permissionsQuery ?? null}\n authStatus={authStatus}\n activeGroupId={activeGroupId}\n >\n {children}\n </Component>\n );\n};\n\nexport type BackofficePreparedHubRoute = {\n hubId: string;\n hub: BackofficeResolvedSidebarHubConfig;\n};\n\nconst normalizeBaseSegment = (value: string): string => {\n const trimmed = value.trim();\n if (trimmed === '' || trimmed === '/') {\n return '';\n }\n return trimmed.replace(/^\\/+|\\/+$/g, '');\n};\n\nconst normalizePath = (value: string): string => {\n const trimmed = value.trim();\n if (trimmed === '') {\n return '/';\n }\n return `/${trimmed}`.replace(/\\/+/g, '/');\n};\n\nconst buildScopedPath = (baseSegment: string, path: string): string => {\n const normalizedPath = path.replace(/^\\/+|\\/+$/g, '');\n if (baseSegment === '') {\n return normalizedPath;\n }\n if (normalizedPath === '') {\n return baseSegment;\n }\n return `${baseSegment}/${normalizedPath}`;\n};\n\nconst buildScopedAbsolutePath = (baseSegment: string, path: string): string => {\n return normalizePath(buildScopedPath(baseSegment, path));\n};\n\nconst normalizePagePath = (value: string): string => {\n return value.trim().replace(/^\\/+|\\/+$/g, '');\n};\n\nconst buildRelativePath = (\n absolutePath: string,\n baseSegment: string,\n): string => {\n const normalized = normalizePath(absolutePath);\n const basePrefix = baseSegment === '' ? '' : `/${baseSegment}`;\n if (basePrefix !== '' && normalized.startsWith(basePrefix)) {\n return normalized.slice(basePrefix.length).replace(/^\\/+/, '');\n }\n return normalized.replace(/^\\/+/, '');\n};\n\nconst resolveActiveEntityIdFromRoute = (\n route: { routes: RouteNode[] } | null,\n routeEntityIdMap: WeakMap<RouteNode, string>,\n): string | null => {\n if (route?.routes == null) {\n return null;\n }\n for (let index = route.routes.length - 1; index >= 0; index -= 1) {\n const routeEntry = route.routes[index];\n if (routeEntry != null) {\n const entityId = routeEntityIdMap.get(routeEntry);\n if (entityId != null) {\n return entityId;\n }\n }\n }\n return null;\n};\n\nconst resolveDetailPageManifestByPath = (\n entityManifestItem: BackofficeEntityManifestItem,\n rawPagePath: string,\n): BackofficeDetailPageManifestItem | null => {\n const pagePath = normalizePagePath(rawPagePath);\n return (\n entityManifestItem.detailPages?.find((page) => {\n return normalizePagePath(page.pathSegment) === pagePath;\n }) ?? null\n );\n};\n\nconst resolveDetailPageIdForPath = (\n entityManifestItem: BackofficeEntityManifestItem,\n rawPagePath: string,\n): string => {\n return (\n resolveDetailPageManifestByPath(entityManifestItem, rawPagePath)?.id ??\n rawPagePath\n );\n};\n\nconst rBackoffice = r<BackofficeRouterContext>;\n\n/**\n * Creates backoffice routes based on the provided configuration\n */\nexport function createBackofficeRoutes(\n input: CreateBackofficeRoutesInput,\n): Route<BackofficeRouterContext, unknown>[] {\n const { basePath, entityManifest, entityRegistry, sidebar, auth, dashboard } =\n input;\n const dashboards = validateBackofficeDashboardRegistrations(input.dashboards);\n const baseSegment = normalizeBaseSegment(basePath);\n const loginPath = buildScopedPath(baseSegment, 'login');\n const passwordResetRequestPath = buildScopedPath(baseSegment, 'login/reset');\n const passwordResetCompletePath = buildScopedPath(\n baseSegment,\n 'login/reset/complete',\n );\n const verifyEmailPath = buildScopedPath(baseSegment, 'verify-email');\n const acceptInvitationPath = buildScopedPath(\n baseSegment,\n 'accept-invitation',\n );\n const loginRedirectPath = buildScopedAbsolutePath(baseSegment, 'login');\n const entities = entityManifest;\n const groups = resolveSidebarGroups(entities, sidebar);\n const hubEntries = resolveSidebarHubEntries(groups, sidebar);\n const entityGroupLookup = buildEntityGroupLookup(groups, sidebar);\n const entityIdToGroupId = new Map<string, string>();\n entityGroupLookup.forEach((value, entityId) => {\n entityIdToGroupId.set(entityId, value.groupId);\n });\n const routeEntityIdMap = new WeakMap<RouteNode, string>();\n const routeGroupIdMap = new WeakMap<RouteNode, string>();\n\n const permissionsQuery = sidebar?.permissionsQuery;\n const layoutPrepare = async ({\n context,\n }: {\n context: BackofficeRouterContext;\n }) => {\n const sessionAuth = await auth.session.load();\n const permissionsQueryRef =\n permissionsQuery != null\n ? loadQuery<OperationType>(\n context.relayEnvironment,\n permissionsQuery,\n {},\n )\n : null;\n const authStatusQueryRef =\n sessionAuth.authStatusQuery != null\n ? loadQuery<OperationType>(\n context.relayEnvironment,\n sessionAuth.authStatusQuery,\n {},\n { fetchPolicy: 'network-only' },\n )\n : null;\n return {\n permissionsQuery: permissionsQueryRef,\n authStatusQuery: authStatusQueryRef,\n };\n };\n\n const prepareRootDashboard =\n async (): Promise<BackofficePreparedDashboardRoute | null> => {\n if (dashboard == null) {\n return null;\n }\n const config = await dashboard.load();\n return {\n dashboardId: 'dashboard',\n config,\n };\n };\n const prepareRootDashboardShell =\n (): BackofficePreparedDashboardShellRoute | null => {\n if (dashboard == null) {\n return null;\n }\n return {\n dashboardId: 'dashboard',\n };\n };\n const renderDashboard = ({\n prepared,\n Component,\n }: {\n prepared: unknown;\n Component?: ComponentType<Record<string, unknown>> | null;\n }): JSX.Element | null => {\n if (Component == null) {\n return null;\n }\n const DashboardComponent = Component as ComponentType<{\n prepared?: unknown;\n }>;\n return <DashboardComponent prepared={prepared} />;\n };\n const renderDashboardShell = ({\n children: dashboardChildren,\n prepared,\n Component,\n }: {\n children: ReactNode;\n prepared: unknown;\n Component?: ComponentType<Record<string, unknown>> | null;\n }): JSX.Element | null => {\n if (Component == null) {\n return null;\n }\n const DashboardShellComponent = Component as ComponentType<{\n children?: ReactNode;\n prepared?: BackofficePreparedDashboardShellRoute | null;\n }>;\n return (\n <DashboardShellComponent\n prepared={prepared as BackofficePreparedDashboardShellRoute | null}\n >\n {dashboardChildren}\n </DashboardShellComponent>\n );\n };\n\n const dashboardConfigRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeDashboardPageResource,\n prepare: prepareRootDashboard,\n render: renderDashboard,\n });\n const dashboardRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeDashboardShellPageResource,\n prepare: prepareRootDashboardShell,\n render: renderDashboardShell,\n children: [dashboardConfigRoute],\n });\n const dashboardAliasConfigRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeDashboardPageResource,\n prepare: prepareRootDashboard,\n render: renderDashboard,\n });\n const dashboardAliasRoute = rBackoffice({\n path: 'dashboard',\n resourcePage: BackofficeDashboardShellPageResource,\n prepare: prepareRootDashboardShell,\n render: renderDashboardShell,\n children: [dashboardAliasConfigRoute],\n });\n const secondaryDashboardRoutes = dashboards.map((registration) => {\n const dashboardConfigChildRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeDashboardPageResource,\n prepare: async () => {\n const config = await registration.module.load();\n return {\n dashboardId: registration.id,\n label: registration.label,\n config,\n } satisfies BackofficePreparedDashboardRoute;\n },\n render: renderDashboard,\n });\n return rBackoffice({\n path: `dashboard/${registration.id}`,\n resourcePage: BackofficeDashboardShellPageResource,\n prepare: () => {\n return {\n dashboardId: registration.id,\n label: registration.label,\n } satisfies BackofficePreparedDashboardShellRoute;\n },\n render: renderDashboardShell,\n children: [dashboardConfigChildRoute],\n });\n });\n\n const listEntityEntries = Object.values(entityManifest).filter((entity) => {\n return entity.kind === 'list-detail';\n });\n\n const hubRoutes = hubEntries.map((entry) => {\n const hubRelative = buildRelativePath(entry.hub.href, baseSegment);\n const hubRoute = rBackoffice({\n path: hubRelative,\n resourcePage: BackofficeHubPageResource,\n prepare: () => {\n return {\n hubId: entry.hub.id,\n hub: entry.hub,\n } satisfies BackofficePreparedHubRoute;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component prepared={prepared} />;\n },\n });\n if (entry.groupId != null) {\n routeGroupIdMap.set(hubRoute, entry.groupId);\n }\n return hubRoute;\n });\n\n const entityRoutes = listEntityEntries.map((entityManifestItem) => {\n const listPath = entityManifestItem.routes.list;\n const listRelative = buildRelativePath(listPath, baseSegment);\n const children: Route<unknown, unknown>[] = [];\n const renderDetailRouteFallback = ({\n match,\n }: RouteFallbackArgs<BackofficeRouterContext>): JSX.Element => {\n const rawId = String(match?.params.id ?? '');\n const rawPagePath =\n typeof match?.params.pagePath === 'string'\n ? match.params.pagePath\n : null;\n const pageId =\n rawPagePath == null\n ? entityManifestItem.defaultDetailPageId\n : resolveDetailPageIdForPath(entityManifestItem, rawPagePath);\n return (\n <BackofficeEntityDetailManifestFallback\n entityManifest={entityManifestItem}\n id={rawId}\n pageId={pageId}\n pagePath={rawPagePath}\n />\n );\n };\n\n if (entityManifestItem.hasList) {\n const listDataRoute = rBackoffice({\n path: '',\n querySchema: entityManifestItem.listNavigation.querySchema,\n resourcePage: BackofficeEntityListDataPageResource,\n prepareSearchBehavior: 'path',\n prepare: async ({ context, filters, query }) => {\n const entityModule = await entityRegistry.loadListEntity(\n entityManifestItem.id,\n );\n const { config } = entityModule;\n const { list } = config;\n const { defaults: listDefaults } = entityManifestItem.listNavigation;\n const navigationQuery: { sort?: string } = {};\n if (typeof query.sort === 'string') {\n navigationQuery.sort = query.sort;\n }\n const navigationFilters = filters as Parameters<\n typeof entityManifestItem.listNavigation.decode\n >[0]['filters'];\n const state = entityManifestItem.listNavigation.decode({\n filters: navigationFilters,\n query: navigationQuery,\n });\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n const variablesBase = {\n where: state.where,\n sort: state.sort ?? listDefaults.sort,\n count: pageSize,\n cursor: null,\n };\n const variables = list.buildQueryVariables(variablesBase);\n const queryRef = loadQuery<OperationType>(\n context.relayEnvironment,\n list.query,\n variables,\n );\n const prepared: BackofficePreparedListDataRoute = {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: config,\n query: queryRef,\n };\n return prepared;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedListDataRoute;\n return <Component prepared={preparedRoute} />;\n },\n });\n routeEntityIdMap.set(listDataRoute, entityManifestItem.id);\n\n const listRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityListPageResource,\n prepareSearchBehavior: 'path',\n prepare: async () => {\n const entityModule = await entityRegistry.loadListEntity(\n entityManifestItem.id,\n );\n const { config } = entityModule;\n const prepared: BackofficePreparedListLayoutRoute = {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: config,\n };\n return prepared;\n },\n render: ({ children: listChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedListLayoutRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n config={preparedRoute.entityConfig}\n prepared={preparedRoute}\n >\n {listChildren}\n </Component>\n );\n },\n children: [listDataRoute],\n });\n routeEntityIdMap.set(listRoute, entityManifestItem.id);\n\n const listShellRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityListShellPageResource,\n prepareSearchBehavior: 'path',\n prepare: () => {\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n } satisfies BackofficePreparedListShellRoute;\n },\n render: ({ children: listShellChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedListShellRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n prepared={preparedRoute}\n >\n {listShellChildren}\n </Component>\n );\n },\n children: [listRoute],\n });\n routeEntityIdMap.set(listShellRoute, entityManifestItem.id);\n children.push(listShellRoute);\n }\n\n const detailPageRoutes = entityManifestItem.detailPages.map(\n (pageManifest) => {\n const pageDataRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityDetailPageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: async ({ context, variables }) => {\n const rawId = String(variables.id ?? '');\n const pageModule = await entityRegistry.loadDetailPageEntity(\n entityManifestItem.id,\n pageManifest.id,\n );\n const pageBuildResult =\n pageModule.config.page.buildVariables != null\n ? pageModule.config.page.buildVariables({\n id: rawId,\n })\n : { variables: { id: rawId } };\n const pageQueryRef = loadQuery<OperationType>(\n context.relayEnvironment,\n pageModule.config.page.query,\n pageBuildResult.variables as Variables,\n );\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n detailId: pageBuildResult.detailId,\n id: rawId,\n pageConfig: pageModule.config,\n pageQuery: pageQueryRef,\n pageId: pageManifest.id,\n pagePath: pageManifest.pathSegment,\n } satisfies BackofficePreparedDetailPageDataRoute;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute =\n prepared as BackofficePreparedDetailPageDataRoute;\n return <Component prepared={preparedRoute} />;\n },\n });\n routeEntityIdMap.set(pageDataRoute, entityManifestItem.id);\n\n const pageConfigRoute = rBackoffice({\n path: pageManifest.pathSegment,\n resourcePage: BackofficeEntityDetailPageConfigPageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: async ({ variables }) => {\n const rawId = String(variables.id ?? '');\n const [pageModule, layoutModule] = await Promise.all([\n entityRegistry.loadDetailPageEntity(\n entityManifestItem.id,\n pageManifest.id,\n ),\n entityRegistry.loadDetailLayoutEntity(entityManifestItem.id),\n ]);\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: layoutModule.config,\n id: rawId,\n pageConfig: pageModule.config,\n pageId: pageManifest.id,\n pagePath: pageManifest.pathSegment,\n } satisfies BackofficePreparedDetailPageConfigRoute;\n },\n render: ({ children: pageChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute =\n prepared as BackofficePreparedDetailPageConfigRoute;\n return (\n <Component\n config={preparedRoute.entityConfig}\n prepared={preparedRoute}\n >\n {pageChildren}\n </Component>\n );\n },\n children: [pageDataRoute],\n });\n routeEntityIdMap.set(pageConfigRoute, entityManifestItem.id);\n return pageConfigRoute;\n },\n );\n\n const detailLayoutDataRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityDetailLayoutPageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: async ({ context, variables }) => {\n const entityModule = await entityRegistry.loadDetailLayoutEntity(\n entityManifestItem.id,\n );\n const { config } = entityModule;\n const rawId = String(variables.id ?? '');\n const layoutBuildResult =\n config.layoutPage.buildVariables != null\n ? config.layoutPage.buildVariables({\n id: rawId,\n })\n : { variables: { id: rawId } };\n const layoutQueryRef = loadQuery<OperationType>(\n context.relayEnvironment,\n config.layoutPage.query,\n layoutBuildResult.variables as Variables,\n );\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: config,\n layoutQuery: layoutQueryRef,\n id: rawId,\n } satisfies BackofficePreparedDetailLayoutDataRoute;\n },\n render: ({ children: detailChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute =\n prepared as BackofficePreparedDetailLayoutDataRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n config={preparedRoute.entityConfig}\n prepared={preparedRoute}\n >\n {detailChildren}\n </Component>\n );\n },\n children: [\n rBackoffice({\n path: '',\n prepare: ({ variables }) => {\n const rawId = String(variables.id ?? '').trim();\n return {\n redirectTo:\n rawId === ''\n ? null\n : entityManifestItem.routes.detailPage(\n rawId,\n entityManifestItem.defaultDetailPageId,\n ),\n };\n },\n render: ({ prepared }) => {\n const redirectTo =\n (prepared as { redirectTo?: string | null }).redirectTo ?? null;\n if (redirectTo == null) {\n return null;\n }\n return <BackofficeHistoryRedirect pathname={redirectTo} />;\n },\n }),\n ...detailPageRoutes,\n rBackoffice({\n path: ':pagePath',\n resourcePage: BackofficeEntityDetailUnknownPageRedirectResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: async ({ variables }) => {\n const entityModule = await entityRegistry.loadDetailLayoutEntity(\n entityManifestItem.id,\n );\n const rawId = String(variables.id ?? '');\n const rawPagePath = String(variables.pagePath ?? '');\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: entityModule.config,\n id: rawId,\n pagePath: rawPagePath,\n } satisfies BackofficePreparedDetailUnknownPageRoute;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedDetail =\n prepared as BackofficePreparedDetailUnknownPageRoute;\n return (\n <Component\n entityManifest={preparedDetail.entityManifest}\n config={preparedDetail.entityConfig}\n prepared={preparedDetail}\n />\n );\n },\n }),\n ],\n });\n routeEntityIdMap.set(detailLayoutDataRoute, entityManifestItem.id);\n\n const detailShellRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityDetailShellPageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: ({ variables }) => {\n const rawId = String(variables.id ?? '');\n const rawPagePath =\n typeof variables.pagePath === 'string' ? variables.pagePath : null;\n const pageId =\n rawPagePath == null\n ? entityManifestItem.defaultDetailPageId\n : resolveDetailPageIdForPath(entityManifestItem, rawPagePath);\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n id: rawId,\n pageId,\n pagePath: rawPagePath,\n } satisfies BackofficePreparedDetailShellRoute;\n },\n render: ({ children: shellChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedDetailShellRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n prepared={preparedRoute}\n >\n {shellChildren}\n </Component>\n );\n },\n children: [detailLayoutDataRoute],\n });\n routeEntityIdMap.set(detailShellRoute, entityManifestItem.id);\n\n const detailFrameRoute = rBackoffice({\n path: ':id',\n resourcePage: BackofficeEntityDetailFramePageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: ({ variables }) => {\n const rawId = String(variables.id ?? '');\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n id: rawId,\n } satisfies BackofficePreparedDetailFrameRoute;\n },\n render: ({ children: detailChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedDetailFrameRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n prepared={preparedRoute}\n >\n {detailChildren}\n </Component>\n );\n },\n children: [detailShellRoute],\n });\n routeEntityIdMap.set(detailFrameRoute, entityManifestItem.id);\n children.push(detailFrameRoute);\n\n return rBackoffice({\n path: listRelative,\n children,\n suspenseBoundary: 'segment',\n });\n });\n\n const toolsRoutes = Object.values(entityManifest)\n .filter((entity) => {\n return entity.kind === 'tool';\n })\n .map((toolManifest) => {\n const toolRelative = buildRelativePath(\n toolManifest.routes.list,\n baseSegment,\n );\n const toolConfigRoute = rBackoffice({\n path: '',\n resourcePage: input.toolsOperationPage ?? null,\n prepare: async () => {\n const toolModule = await entityRegistry.loadToolEntity(\n toolManifest.id,\n );\n return {\n entityId: toolManifest.id,\n entityManifest: toolManifest,\n entityConfig: toolModule.config,\n } satisfies BackofficePreparedToolConfigRoute;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedTool = prepared as BackofficePreparedToolConfigRoute;\n return (\n <Component\n entityManifest={preparedTool.entityManifest}\n operation={preparedTool.entityConfig.tool.operation}\n toolId={preparedTool.entityConfig.id}\n />\n );\n },\n });\n routeEntityIdMap.set(toolConfigRoute, toolManifest.id);\n\n const toolRoute = rBackoffice({\n path: toolRelative,\n resourcePage: BackofficeToolShellPageResource,\n prepare: () => {\n return {\n entityId: toolManifest.id,\n entityManifest: toolManifest,\n } satisfies BackofficePreparedToolRoute;\n },\n render: ({ children: toolChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedTool = prepared as BackofficePreparedToolRoute;\n return (\n <Component\n entityManifest={preparedTool.entityManifest}\n prepared={preparedTool}\n >\n {toolChildren}\n </Component>\n );\n },\n children: [toolConfigRoute],\n });\n routeEntityIdMap.set(toolRoute, toolManifest.id);\n return toolRoute;\n });\n\n const layoutRoute = rBackoffice({\n path: baseSegment,\n resourcePage: BackofficeLayoutPageResource,\n prepareSearchBehavior: 'path',\n suspenseBoundary: 'segment',\n prepare: layoutPrepare,\n render: ({ children, prepared, route, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedLayout = prepared as PreparedLayout | undefined;\n const activeEntityId = resolveActiveEntityIdFromRoute(\n route,\n routeEntityIdMap,\n );\n const activeGroupId =\n activeEntityId != null\n ? (entityIdToGroupId.get(activeEntityId) ?? null)\n : resolveActiveEntityIdFromRoute(route, routeGroupIdMap);\n const LayoutComponent = Component as LayoutRouteComponent;\n const authStatusQuery = auth.session.get()?.authStatusQuery ?? null;\n if (authStatusQuery != null && preparedLayout?.authStatusQuery != null) {\n return (\n <BackofficeLayoutRouteWithAuthStatus\n Component={LayoutComponent}\n preparedLayout={preparedLayout}\n permissionsQuery={sidebar?.permissionsQuery}\n activeGroupId={activeGroupId}\n authStatusQuery={authStatusQuery}\n authStatusPrepared={preparedLayout.authStatusQuery}\n loginRedirectPath={loginRedirectPath}\n >\n {children}\n </BackofficeLayoutRouteWithAuthStatus>\n );\n }\n return (\n <BackofficeLayoutRouteWithoutAuthStatus\n Component={LayoutComponent}\n preparedLayout={preparedLayout}\n permissionsQuery={sidebar?.permissionsQuery}\n activeGroupId={activeGroupId}\n >\n {children}\n </BackofficeLayoutRouteWithoutAuthStatus>\n );\n },\n children: [\n dashboardRoute,\n ...hubRoutes,\n ...entityRoutes,\n ...toolsRoutes,\n ...secondaryDashboardRoutes,\n dashboardAliasRoute,\n ],\n });\n\n const routes: Route<BackofficeRouterContext, unknown>[] = [\n rBackoffice({\n path: loginPath,\n resourcePage: BackofficeLoginPageResource,\n prepare: async ({ context }) => {\n const loginAuth = await auth.login.load();\n const queryRef = loadQuery<OperationType>(\n context.relayEnvironment,\n loginAuth.loginQuery,\n {},\n );\n return { query: queryRef };\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component prepared={prepared} />;\n },\n }),\n rBackoffice({\n path: passwordResetRequestPath,\n resourcePage: BackofficePasswordResetRequestPageResource,\n prepare: async () => {\n await auth.passwordResetRequest.load();\n return null;\n },\n render: ({ Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component />;\n },\n }),\n rBackoffice({\n path: passwordResetCompletePath,\n resourcePage: BackofficePasswordResetCompletePageResource,\n prepare: async () => {\n await auth.passwordResetComplete.load();\n return null;\n },\n render: ({ Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component />;\n },\n }),\n rBackoffice({\n path: verifyEmailPath,\n resourcePage: BackofficeVerifyEmailPageResource,\n prepare: async () => {\n await auth.verifyEmail.load();\n return null;\n },\n render: ({ Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component />;\n },\n }),\n ];\n\n if (auth.hasAcceptInvitation === true || auth.acceptInvitation != null) {\n routes.push(\n rBackoffice({\n path: acceptInvitationPath,\n resourcePage: BackofficeAcceptInvitationPageResource,\n prepare: async () => {\n await auth.acceptInvitation?.load();\n return null;\n },\n render: ({ Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component />;\n },\n }),\n );\n }\n\n routes.push(layoutRoute);\n\n return routes;\n}\n\nexport const __test = {\n normalizeBaseSegment,\n normalizePath,\n buildScopedPath,\n buildScopedAbsolutePath,\n buildRelativePath,\n resolveActiveEntityIdFromRoute,\n resolveDetailPageIdForPath,\n resolveDetailPageManifestByPath,\n validateBackofficeDashboardRegistrations,\n BackofficeLayoutRouteWithAuthStatus,\n} as const;\n\nexport default createBackofficeRoutes;\n"],"mappings":"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"}
1
+ {"version":3,"file":"createBackofficeRoutes.js","names":[],"sources":["../../../src/router/createBackofficeRoutes.tsx"],"sourcesContent":["import {\n useContext,\n useEffect,\n type ComponentType,\n type JSX,\n type ReactNode,\n} from 'react';\nimport {\n getResourcePage,\n type ResourcePage,\n} from '@plumile/router/ResourcePage.js';\nimport RoutingContext from '@plumile/router/routing/RoutingContext.js';\nimport { r } from '@plumile/router/tools.js';\nimport {\n type RouteNode,\n type Route,\n type RouteFallbackArgs,\n} from '@plumile/router/types.js';\nimport * as ReactRelay from 'react-relay';\nimport type { PreloadedQuery } from 'react-relay';\nimport type {\n Environment,\n GraphQLTaggedNode,\n OperationType,\n Variables,\n} from 'relay-runtime';\n\nimport { BACKOFFICE_LIST_DEFAULTS } from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficeDashboardConfig,\n BackofficeDetailPageManifestItem,\n BackofficeEntityManifestItem,\n BackofficeEntityManifestMap,\n I18nLabel,\n BackofficePreparedDetailFrameRoute,\n BackofficePreparedDetailLayoutDataRoute,\n BackofficePreparedDetailPageConfigRoute,\n BackofficePreparedDetailPageDataRoute,\n BackofficePreparedDetailShellRoute,\n BackofficePreparedDetailUnknownPageRoute,\n BackofficePreparedListDataRoute,\n BackofficePreparedListLayoutRoute,\n BackofficePreparedListShellRoute,\n BackofficePreparedToolConfigRoute,\n BackofficePreparedToolRoute,\n} from '@plumile/backoffice-core/types.js';\n\nimport type {\n BackofficeAuthConfig,\n BackofficeDashboardRegistration,\n BackofficeDashboardModule,\n BackofficeResolvedSidebarHubConfig,\n BackofficeSidebarConfig,\n} from '../provider/types.js';\nimport {\n buildEntityGroupLookup,\n resolveSidebarHubEntries,\n resolveSidebarGroups,\n} from '../components/backoffice/layout/sidebarUtils.js';\nimport type { BackofficeEntityRegistry } from '../provider/entityRegistry.js';\nimport { validateBackofficeDashboardRegistrations } from '../provider/dashboardRegistrations.js';\nimport { BackofficeEntityDetailManifestFallback } from '../pages/detail/BackofficeEntityDetailManifestFallback.js';\n\nconst { loadQuery, usePreloadedQuery } = ReactRelay;\n\nexport type CreateBackofficeRoutesInput = {\n basePath: string;\n entityManifest: BackofficeEntityManifestMap;\n entityRegistry: BackofficeEntityRegistry;\n sidebar?: BackofficeSidebarConfig;\n auth: BackofficeAuthConfig;\n dashboard?: BackofficeDashboardModule;\n dashboards?: readonly BackofficeDashboardRegistration[];\n toolsOperationPage?: ResourcePage | null;\n};\n\nexport type BackofficeRouterContext = {\n relayEnvironment: Environment;\n};\n\nexport const BackofficeLayoutPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeLayoutPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeLayoutPage.js'),\n );\n\nexport const BackofficeEntityListPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityListPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityListPage.js'),\n );\n\nexport const BackofficeEntityListShellPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityListShellPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityListShellPage.js'),\n );\n\nexport const BackofficeEntityListDataPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityListDataPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityListDataPage.js'),\n );\n\nexport const BackofficeEntityDetailPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailPage.js'),\n );\n\nexport const BackofficeEntityDetailFramePageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailFramePage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailFramePage.js'),\n );\n\nexport const BackofficeEntityDetailLayoutPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailLayoutPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailLayoutPage.js'),\n );\n\nexport const BackofficeEntityDetailPageConfigPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailPageConfigPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailPageConfigPage.js'),\n );\n\nexport const BackofficeEntityDetailShellPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailShellPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailShellPage.js'),\n );\n\nexport const BackofficeEntityDetailUnknownPageRedirectResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeEntityDetailUnknownPageRedirect',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeEntityDetailUnknownPageRedirect.js'),\n );\n\nexport const BackofficeDashboardPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeDashboardPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeDashboardPage.js'),\n );\n\nexport const BackofficeDashboardShellPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeDashboardShellPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeDashboardShellPage.js'),\n );\n\nexport const BackofficeToolShellPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeToolShellPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeToolShellPage.js'),\n );\n\nexport const BackofficeHubPageResource: ResourcePage | null = getResourcePage(\n 'BackofficeHubPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeHubPage.js'),\n);\n\nexport const BackofficeLoginPageResource: ResourcePage | null = getResourcePage(\n 'BackofficeLoginPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeLoginPage.js'),\n);\n\nexport const BackofficePasswordResetRequestPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficePasswordResetRequestPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficePasswordResetRequestPage.js'),\n );\n\nexport const BackofficePasswordResetCompletePageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficePasswordResetCompletePage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficePasswordResetCompletePage.js'),\n );\n\nexport const BackofficeVerifyEmailPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeVerifyEmailPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeVerifyEmailPage.js'),\n );\n\nexport const BackofficeAcceptInvitationPageResource: ResourcePage | null =\n getResourcePage(\n 'BackofficeAcceptInvitationPage',\n // eslint-disable-next-line arrow-body-style\n async () => import('../pages/BackofficeAcceptInvitationPage.js'),\n );\n\ntype PreparedLayout = {\n permissionsQuery: PreloadedQuery<OperationType> | null;\n authStatusQuery: PreloadedQuery<OperationType> | null;\n};\n\nexport type BackofficePreparedDashboardShellRoute = {\n dashboardId: string | null;\n label?: I18nLabel;\n};\n\nexport type BackofficePreparedDashboardRoute =\n BackofficePreparedDashboardShellRoute & {\n config: BackofficeDashboardConfig;\n };\n\ntype LayoutAuthStatus = {\n isLoggedIn?: boolean | null;\n me?: {\n id: string;\n firstName: string;\n lastName: string;\n email: string;\n initials: string;\n } | null;\n} | null;\n\ntype LayoutRouteComponent = ComponentType<{\n children: ReactNode;\n permissionsQuery?: GraphQLTaggedNode;\n prepared?: PreloadedQuery<OperationType> | null;\n authStatus?: LayoutAuthStatus;\n activeGroupId?: string | null;\n}>;\n\ntype LayoutRouteRenderProps = {\n children: ReactNode;\n Component: LayoutRouteComponent;\n preparedLayout: PreparedLayout | undefined;\n permissionsQuery: GraphQLTaggedNode | undefined;\n activeGroupId: string | null;\n};\n\nconst BackofficeHistoryRedirect = ({\n pathname,\n}: {\n pathname: string;\n}): null => {\n const router = useContext(RoutingContext);\n\n useEffect(() => {\n router?.history.set({\n pathname,\n });\n }, [pathname, router]);\n\n return null;\n};\n\nconst BackofficeLayoutRouteWithoutAuthStatus = ({\n children,\n Component,\n preparedLayout,\n permissionsQuery,\n activeGroupId,\n}: LayoutRouteRenderProps): JSX.Element => {\n return (\n <Component\n permissionsQuery={permissionsQuery}\n prepared={preparedLayout?.permissionsQuery ?? null}\n authStatus={null}\n activeGroupId={activeGroupId}\n >\n {children}\n </Component>\n );\n};\n\nconst BackofficeLayoutRouteWithAuthStatus = ({\n children,\n Component,\n preparedLayout,\n permissionsQuery,\n activeGroupId,\n authStatusQuery,\n authStatusPrepared,\n loginRedirectPath,\n}: LayoutRouteRenderProps & {\n authStatusQuery: GraphQLTaggedNode;\n authStatusPrepared: PreloadedQuery<OperationType>;\n loginRedirectPath: string;\n}): JSX.Element => {\n const data = usePreloadedQuery(authStatusQuery, authStatusPrepared);\n const authStatus = data as LayoutAuthStatus;\n\n if (authStatus?.isLoggedIn !== true) {\n return <BackofficeHistoryRedirect pathname={loginRedirectPath} />;\n }\n\n return (\n <Component\n permissionsQuery={permissionsQuery}\n prepared={preparedLayout?.permissionsQuery ?? null}\n authStatus={authStatus}\n activeGroupId={activeGroupId}\n >\n {children}\n </Component>\n );\n};\n\nexport type BackofficePreparedHubRoute = {\n hubId: string;\n hub: BackofficeResolvedSidebarHubConfig;\n};\n\nconst normalizeBaseSegment = (value: string): string => {\n const trimmed = value.trim();\n if (trimmed === '' || trimmed === '/') {\n return '';\n }\n return trimmed.replace(/^\\/+|\\/+$/g, '');\n};\n\nconst normalizePath = (value: string): string => {\n const trimmed = value.trim();\n if (trimmed === '') {\n return '/';\n }\n return `/${trimmed}`.replace(/\\/+/g, '/');\n};\n\nconst buildScopedPath = (baseSegment: string, path: string): string => {\n const normalizedPath = path.replace(/^\\/+|\\/+$/g, '');\n if (baseSegment === '') {\n return normalizedPath;\n }\n if (normalizedPath === '') {\n return baseSegment;\n }\n return `${baseSegment}/${normalizedPath}`;\n};\n\nconst buildScopedAbsolutePath = (baseSegment: string, path: string): string => {\n return normalizePath(buildScopedPath(baseSegment, path));\n};\n\nconst normalizePagePath = (value: string): string => {\n return value.trim().replace(/^\\/+|\\/+$/g, '');\n};\n\nconst buildRelativePath = (\n absolutePath: string,\n baseSegment: string,\n): string => {\n const normalized = normalizePath(absolutePath);\n const basePrefix = baseSegment === '' ? '' : `/${baseSegment}`;\n if (basePrefix !== '' && normalized.startsWith(basePrefix)) {\n return normalized.slice(basePrefix.length).replace(/^\\/+/, '');\n }\n return normalized.replace(/^\\/+/, '');\n};\n\nconst resolveActiveEntityIdFromRoute = (\n route: { routes: RouteNode[] } | null,\n routeEntityIdMap: WeakMap<RouteNode, string>,\n): string | null => {\n if (route?.routes == null) {\n return null;\n }\n for (let index = route.routes.length - 1; index >= 0; index -= 1) {\n const routeEntry = route.routes[index];\n if (routeEntry != null) {\n const entityId = routeEntityIdMap.get(routeEntry);\n if (entityId != null) {\n return entityId;\n }\n }\n }\n return null;\n};\n\nconst resolveDetailPageManifestByPath = (\n entityManifestItem: BackofficeEntityManifestItem,\n rawPagePath: string,\n): BackofficeDetailPageManifestItem | null => {\n const pagePath = normalizePagePath(rawPagePath);\n return (\n entityManifestItem.detailPages?.find((page) => {\n return normalizePagePath(page.pathSegment) === pagePath;\n }) ?? null\n );\n};\n\nconst resolveDetailPageIdForPath = (\n entityManifestItem: BackofficeEntityManifestItem,\n rawPagePath: string,\n): string => {\n return (\n resolveDetailPageManifestByPath(entityManifestItem, rawPagePath)?.id ??\n rawPagePath\n );\n};\n\nconst rBackoffice = r<BackofficeRouterContext>;\n\n/**\n * Creates backoffice routes based on the provided configuration\n */\nexport function createBackofficeRoutes(\n input: CreateBackofficeRoutesInput,\n): Route<BackofficeRouterContext, unknown>[] {\n const { basePath, entityManifest, entityRegistry, sidebar, auth, dashboard } =\n input;\n const dashboards = validateBackofficeDashboardRegistrations(input.dashboards);\n const baseSegment = normalizeBaseSegment(basePath);\n const loginPath = buildScopedPath(baseSegment, 'login');\n const passwordResetRequestPath = buildScopedPath(baseSegment, 'login/reset');\n const passwordResetCompletePath = buildScopedPath(\n baseSegment,\n 'login/reset/complete',\n );\n const verifyEmailPath = buildScopedPath(baseSegment, 'verify-email');\n const acceptInvitationPath = buildScopedPath(\n baseSegment,\n 'accept-invitation',\n );\n const loginRedirectPath = buildScopedAbsolutePath(baseSegment, 'login');\n const entities = entityManifest;\n const groups = resolveSidebarGroups(entities, sidebar);\n const hubEntries = resolveSidebarHubEntries(groups, sidebar);\n const entityGroupLookup = buildEntityGroupLookup(groups, sidebar);\n const entityIdToGroupId = new Map<string, string>();\n entityGroupLookup.forEach((value, entityId) => {\n entityIdToGroupId.set(entityId, value.groupId);\n });\n const routeEntityIdMap = new WeakMap<RouteNode, string>();\n const routeGroupIdMap = new WeakMap<RouteNode, string>();\n\n const permissionsQuery = sidebar?.permissionsQuery;\n const layoutPrepare = async ({\n context,\n }: {\n context: BackofficeRouterContext;\n }) => {\n const sessionAuth = await auth.session.load();\n const permissionsQueryRef =\n permissionsQuery != null\n ? loadQuery<OperationType>(\n context.relayEnvironment,\n permissionsQuery,\n {},\n )\n : null;\n const authStatusQueryRef =\n sessionAuth.authStatusQuery != null\n ? loadQuery<OperationType>(\n context.relayEnvironment,\n sessionAuth.authStatusQuery,\n {},\n { fetchPolicy: 'network-only' },\n )\n : null;\n return {\n permissionsQuery: permissionsQueryRef,\n authStatusQuery: authStatusQueryRef,\n };\n };\n\n const prepareRootDashboard =\n async (): Promise<BackofficePreparedDashboardRoute | null> => {\n if (dashboard == null) {\n return null;\n }\n const config = await dashboard.load();\n return {\n dashboardId: 'dashboard',\n config,\n };\n };\n const prepareRootDashboardShell =\n (): BackofficePreparedDashboardShellRoute | null => {\n if (dashboard == null) {\n return null;\n }\n return {\n dashboardId: 'dashboard',\n };\n };\n const renderDashboard = ({\n prepared,\n Component,\n }: {\n prepared: unknown;\n Component?: ComponentType<Record<string, unknown>> | null;\n }): JSX.Element | null => {\n if (Component == null) {\n return null;\n }\n const DashboardComponent = Component as ComponentType<{\n prepared?: unknown;\n }>;\n return <DashboardComponent prepared={prepared} />;\n };\n const renderDashboardShell = ({\n children: dashboardChildren,\n prepared,\n Component,\n }: {\n children: ReactNode;\n prepared: unknown;\n Component?: ComponentType<Record<string, unknown>> | null;\n }): JSX.Element | null => {\n if (Component == null) {\n return null;\n }\n const DashboardShellComponent = Component as ComponentType<{\n children?: ReactNode;\n prepared?: BackofficePreparedDashboardShellRoute | null;\n }>;\n return (\n <DashboardShellComponent\n prepared={prepared as BackofficePreparedDashboardShellRoute | null}\n >\n {dashboardChildren}\n </DashboardShellComponent>\n );\n };\n\n const dashboardConfigRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeDashboardPageResource,\n prepare: prepareRootDashboard,\n render: renderDashboard,\n });\n const dashboardRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeDashboardShellPageResource,\n prepare: prepareRootDashboardShell,\n render: renderDashboardShell,\n children: [dashboardConfigRoute],\n });\n const dashboardAliasConfigRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeDashboardPageResource,\n prepare: prepareRootDashboard,\n render: renderDashboard,\n });\n const dashboardAliasRoute = rBackoffice({\n path: 'dashboard',\n resourcePage: BackofficeDashboardShellPageResource,\n prepare: prepareRootDashboardShell,\n render: renderDashboardShell,\n children: [dashboardAliasConfigRoute],\n });\n const secondaryDashboardRoutes = dashboards.map((registration) => {\n const dashboardConfigChildRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeDashboardPageResource,\n prepare: async () => {\n const config = await registration.module.load();\n return {\n dashboardId: registration.id,\n label: registration.label,\n config,\n } satisfies BackofficePreparedDashboardRoute;\n },\n render: renderDashboard,\n });\n return rBackoffice({\n path: `dashboard/${registration.id}`,\n resourcePage: BackofficeDashboardShellPageResource,\n prepare: () => {\n return {\n dashboardId: registration.id,\n label: registration.label,\n } satisfies BackofficePreparedDashboardShellRoute;\n },\n render: renderDashboardShell,\n children: [dashboardConfigChildRoute],\n });\n });\n\n const listEntityEntries = Object.values(entityManifest).filter((entity) => {\n return entity.kind === 'list-detail';\n });\n\n const hubRoutes = hubEntries.map((entry) => {\n const hubRelative = buildRelativePath(entry.hub.href, baseSegment);\n const hubRoute = rBackoffice({\n path: hubRelative,\n resourcePage: BackofficeHubPageResource,\n prepare: () => {\n return {\n hubId: entry.hub.id,\n hub: entry.hub,\n } satisfies BackofficePreparedHubRoute;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component prepared={prepared} />;\n },\n });\n if (entry.groupId != null) {\n routeGroupIdMap.set(hubRoute, entry.groupId);\n }\n return hubRoute;\n });\n\n const entityRoutes = listEntityEntries.map((entityManifestItem) => {\n const listPath = entityManifestItem.routes.list;\n const listRelative = buildRelativePath(listPath, baseSegment);\n const children: Route<unknown, unknown>[] = [];\n const renderDetailRouteFallback = ({\n match,\n }: RouteFallbackArgs<BackofficeRouterContext>): JSX.Element => {\n const rawId = String(match?.params.id ?? '');\n const rawPagePath =\n typeof match?.params.pagePath === 'string'\n ? match.params.pagePath\n : null;\n const pageId =\n rawPagePath == null\n ? entityManifestItem.defaultDetailPageId\n : resolveDetailPageIdForPath(entityManifestItem, rawPagePath);\n return (\n <BackofficeEntityDetailManifestFallback\n entityManifest={entityManifestItem}\n id={rawId}\n pageId={pageId}\n pagePath={rawPagePath}\n />\n );\n };\n\n if (entityManifestItem.hasList) {\n const listDataRoute = rBackoffice({\n path: '',\n querySchema: entityManifestItem.listNavigation.querySchema,\n resourcePage: BackofficeEntityListDataPageResource,\n prepareSearchBehavior: 'path',\n prepare: async ({ context, filters, query }) => {\n const entityModule = await entityRegistry.loadListEntity(\n entityManifestItem.id,\n );\n const { config } = entityModule;\n const { list } = config;\n const { defaults: listDefaults } = entityManifestItem.listNavigation;\n const navigationQuery: { sort?: string } = {};\n if (typeof query.sort === 'string') {\n navigationQuery.sort = query.sort;\n }\n const navigationFilters = filters as Parameters<\n typeof entityManifestItem.listNavigation.decode\n >[0]['filters'];\n const state = entityManifestItem.listNavigation.decode({\n filters: navigationFilters,\n query: navigationQuery,\n });\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n const variablesBase = {\n where: state.where,\n sort: state.sort ?? listDefaults.sort,\n count: pageSize,\n cursor: null,\n };\n const variables = list.buildQueryVariables(variablesBase);\n const queryRef = loadQuery<OperationType>(\n context.relayEnvironment,\n list.query,\n variables,\n );\n const prepared: BackofficePreparedListDataRoute = {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: config,\n query: queryRef,\n };\n return prepared;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedListDataRoute;\n return <Component prepared={preparedRoute} />;\n },\n });\n routeEntityIdMap.set(listDataRoute, entityManifestItem.id);\n\n const listRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityListPageResource,\n prepareSearchBehavior: 'path',\n prepare: async () => {\n const entityModule = await entityRegistry.loadListEntity(\n entityManifestItem.id,\n );\n const { config } = entityModule;\n const prepared: BackofficePreparedListLayoutRoute = {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: config,\n };\n return prepared;\n },\n render: ({ children: listChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedListLayoutRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n config={preparedRoute.entityConfig}\n prepared={preparedRoute}\n >\n {listChildren}\n </Component>\n );\n },\n children: [listDataRoute],\n });\n routeEntityIdMap.set(listRoute, entityManifestItem.id);\n\n const listShellRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityListShellPageResource,\n prepareSearchBehavior: 'path',\n prepare: () => {\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n } satisfies BackofficePreparedListShellRoute;\n },\n render: ({ children: listShellChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedListShellRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n prepared={preparedRoute}\n >\n {listShellChildren}\n </Component>\n );\n },\n children: [listRoute],\n });\n routeEntityIdMap.set(listShellRoute, entityManifestItem.id);\n children.push(listShellRoute);\n }\n\n const detailPageRoutes = entityManifestItem.detailPages.map(\n (pageManifest) => {\n const pageDataRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityDetailPageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: async ({ context, variables }) => {\n const rawId = String(variables.id ?? '');\n const pageModule = await entityRegistry.loadDetailPageEntity(\n entityManifestItem.id,\n pageManifest.id,\n );\n const pageBuildResult =\n pageModule.config.page.buildVariables != null\n ? pageModule.config.page.buildVariables({\n id: rawId,\n })\n : { variables: { id: rawId } };\n const pageQueryRef = loadQuery<OperationType>(\n context.relayEnvironment,\n pageModule.config.page.query,\n pageBuildResult.variables as Variables,\n );\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n detailId: pageBuildResult.detailId,\n id: rawId,\n pageConfig: pageModule.config,\n pageQuery: pageQueryRef,\n pageId: pageManifest.id,\n pagePath: pageManifest.pathSegment,\n } satisfies BackofficePreparedDetailPageDataRoute;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute =\n prepared as BackofficePreparedDetailPageDataRoute;\n return <Component prepared={preparedRoute} />;\n },\n });\n routeEntityIdMap.set(pageDataRoute, entityManifestItem.id);\n\n const pageConfigRoute = rBackoffice({\n path: pageManifest.pathSegment,\n resourcePage: BackofficeEntityDetailPageConfigPageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: async ({ variables }) => {\n const rawId = String(variables.id ?? '');\n const [pageModule, layoutModule] = await Promise.all([\n entityRegistry.loadDetailPageEntity(\n entityManifestItem.id,\n pageManifest.id,\n ),\n entityRegistry.loadDetailLayoutEntity(entityManifestItem.id),\n ]);\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: layoutModule.config,\n id: rawId,\n pageConfig: pageModule.config,\n pageId: pageManifest.id,\n pagePath: pageManifest.pathSegment,\n } satisfies BackofficePreparedDetailPageConfigRoute;\n },\n render: ({ children: pageChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute =\n prepared as BackofficePreparedDetailPageConfigRoute;\n return (\n <Component\n config={preparedRoute.entityConfig}\n prepared={preparedRoute}\n >\n {pageChildren}\n </Component>\n );\n },\n children: [pageDataRoute],\n });\n routeEntityIdMap.set(pageConfigRoute, entityManifestItem.id);\n return pageConfigRoute;\n },\n );\n\n const detailLayoutDataRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityDetailLayoutPageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: async ({ context, variables }) => {\n const entityModule = await entityRegistry.loadDetailLayoutEntity(\n entityManifestItem.id,\n );\n const { config } = entityModule;\n const rawId = String(variables.id ?? '');\n const layoutBuildResult =\n config.layoutPage.buildVariables != null\n ? config.layoutPage.buildVariables({\n id: rawId,\n })\n : { variables: { id: rawId } };\n const layoutQueryRef = loadQuery<OperationType>(\n context.relayEnvironment,\n config.layoutPage.query,\n layoutBuildResult.variables as Variables,\n );\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: config,\n layoutQuery: layoutQueryRef,\n id: rawId,\n } satisfies BackofficePreparedDetailLayoutDataRoute;\n },\n render: ({ children: detailChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute =\n prepared as BackofficePreparedDetailLayoutDataRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n config={preparedRoute.entityConfig}\n prepared={preparedRoute}\n >\n {detailChildren}\n </Component>\n );\n },\n children: [\n rBackoffice({\n path: '',\n prepare: ({ variables }) => {\n const rawId = String(variables.id ?? '').trim();\n return {\n redirectTo:\n rawId === ''\n ? null\n : entityManifestItem.routes.detailPage(\n rawId,\n entityManifestItem.defaultDetailPageId,\n ),\n };\n },\n render: ({ prepared }) => {\n const redirectTo =\n (prepared as { redirectTo?: string | null }).redirectTo ?? null;\n if (redirectTo == null) {\n return null;\n }\n return <BackofficeHistoryRedirect pathname={redirectTo} />;\n },\n }),\n ...detailPageRoutes,\n rBackoffice({\n path: ':pagePath',\n resourcePage: BackofficeEntityDetailUnknownPageRedirectResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: async ({ variables }) => {\n const entityModule = await entityRegistry.loadDetailLayoutEntity(\n entityManifestItem.id,\n );\n const rawId = String(variables.id ?? '');\n const rawPagePath = String(variables.pagePath ?? '');\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n entityConfig: entityModule.config,\n id: rawId,\n pagePath: rawPagePath,\n } satisfies BackofficePreparedDetailUnknownPageRoute;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedDetail =\n prepared as BackofficePreparedDetailUnknownPageRoute;\n return (\n <Component\n entityManifest={preparedDetail.entityManifest}\n config={preparedDetail.entityConfig}\n prepared={preparedDetail}\n />\n );\n },\n }),\n ],\n });\n routeEntityIdMap.set(detailLayoutDataRoute, entityManifestItem.id);\n\n const detailShellRoute = rBackoffice({\n path: '',\n resourcePage: BackofficeEntityDetailShellPageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: ({ variables }) => {\n const rawId = String(variables.id ?? '');\n const rawPagePath =\n typeof variables.pagePath === 'string' ? variables.pagePath : null;\n const pageId =\n rawPagePath == null\n ? entityManifestItem.defaultDetailPageId\n : resolveDetailPageIdForPath(entityManifestItem, rawPagePath);\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n id: rawId,\n pageId,\n pagePath: rawPagePath,\n } satisfies BackofficePreparedDetailShellRoute;\n },\n render: ({ children: shellChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedDetailShellRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n prepared={preparedRoute}\n >\n {shellChildren}\n </Component>\n );\n },\n children: [detailLayoutDataRoute],\n });\n routeEntityIdMap.set(detailShellRoute, entityManifestItem.id);\n\n const detailFrameRoute = rBackoffice({\n path: ':id',\n resourcePage: BackofficeEntityDetailFramePageResource,\n suspenseBoundary: 'segment',\n fallback: renderDetailRouteFallback,\n prepare: ({ variables }) => {\n const rawId = String(variables.id ?? '');\n return {\n entityId: entityManifestItem.id,\n entityManifest: entityManifestItem,\n id: rawId,\n } satisfies BackofficePreparedDetailFrameRoute;\n },\n render: ({ children: detailChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedRoute = prepared as BackofficePreparedDetailFrameRoute;\n return (\n <Component\n entityManifest={preparedRoute.entityManifest}\n prepared={preparedRoute}\n >\n {detailChildren}\n </Component>\n );\n },\n children: [detailShellRoute],\n });\n routeEntityIdMap.set(detailFrameRoute, entityManifestItem.id);\n children.push(detailFrameRoute);\n\n return rBackoffice({\n path: listRelative,\n children,\n suspenseBoundary: 'segment',\n });\n });\n\n const toolsRoutes = Object.values(entityManifest)\n .filter((entity) => {\n return entity.kind === 'tool';\n })\n .map((toolManifest) => {\n const toolRelative = buildRelativePath(\n toolManifest.routes.list,\n baseSegment,\n );\n const toolConfigRoute = rBackoffice({\n path: '',\n resourcePage: input.toolsOperationPage ?? null,\n prepare: async () => {\n const toolModule = await entityRegistry.loadToolEntity(\n toolManifest.id,\n );\n return {\n entityId: toolManifest.id,\n entityManifest: toolManifest,\n entityConfig: toolModule.config,\n } satisfies BackofficePreparedToolConfigRoute;\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedTool = prepared as BackofficePreparedToolConfigRoute;\n return (\n <Component\n entityManifest={preparedTool.entityManifest}\n operation={preparedTool.entityConfig.tool.operation}\n toolId={preparedTool.entityConfig.id}\n />\n );\n },\n });\n routeEntityIdMap.set(toolConfigRoute, toolManifest.id);\n\n const toolRoute = rBackoffice({\n path: toolRelative,\n resourcePage: BackofficeToolShellPageResource,\n prepare: () => {\n return {\n entityId: toolManifest.id,\n entityManifest: toolManifest,\n } satisfies BackofficePreparedToolRoute;\n },\n render: ({ children: toolChildren, prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedTool = prepared as BackofficePreparedToolRoute;\n return (\n <Component\n entityManifest={preparedTool.entityManifest}\n prepared={preparedTool}\n >\n {toolChildren}\n </Component>\n );\n },\n children: [toolConfigRoute],\n });\n routeEntityIdMap.set(toolRoute, toolManifest.id);\n return toolRoute;\n });\n\n const layoutRoute = rBackoffice({\n path: baseSegment,\n resourcePage: BackofficeLayoutPageResource,\n prepareSearchBehavior: 'path',\n suspenseBoundary: 'segment',\n prepare: layoutPrepare,\n render: ({ children, prepared, route, Component }) => {\n if (Component == null) {\n return null;\n }\n const preparedLayout = prepared as PreparedLayout | undefined;\n const activeEntityId = resolveActiveEntityIdFromRoute(\n route,\n routeEntityIdMap,\n );\n const activeGroupId =\n activeEntityId != null\n ? (entityIdToGroupId.get(activeEntityId) ?? null)\n : resolveActiveEntityIdFromRoute(route, routeGroupIdMap);\n const LayoutComponent = Component as LayoutRouteComponent;\n const authStatusQuery = auth.session.get()?.authStatusQuery ?? null;\n if (authStatusQuery != null && preparedLayout?.authStatusQuery != null) {\n return (\n <BackofficeLayoutRouteWithAuthStatus\n Component={LayoutComponent}\n preparedLayout={preparedLayout}\n permissionsQuery={sidebar?.permissionsQuery}\n activeGroupId={activeGroupId}\n authStatusQuery={authStatusQuery}\n authStatusPrepared={preparedLayout.authStatusQuery}\n loginRedirectPath={loginRedirectPath}\n >\n {children}\n </BackofficeLayoutRouteWithAuthStatus>\n );\n }\n return (\n <BackofficeLayoutRouteWithoutAuthStatus\n Component={LayoutComponent}\n preparedLayout={preparedLayout}\n permissionsQuery={sidebar?.permissionsQuery}\n activeGroupId={activeGroupId}\n >\n {children}\n </BackofficeLayoutRouteWithoutAuthStatus>\n );\n },\n children: [\n dashboardRoute,\n ...hubRoutes,\n ...entityRoutes,\n ...toolsRoutes,\n ...secondaryDashboardRoutes,\n dashboardAliasRoute,\n ],\n });\n\n const routes: Route<BackofficeRouterContext, unknown>[] = [\n rBackoffice({\n path: loginPath,\n resourcePage: BackofficeLoginPageResource,\n prepare: async ({ context }) => {\n const loginAuth = await auth.login.load();\n const queryRef = loadQuery<OperationType>(\n context.relayEnvironment,\n loginAuth.loginQuery,\n {},\n );\n return { query: queryRef };\n },\n render: ({ prepared, Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component prepared={prepared} />;\n },\n }),\n rBackoffice({\n path: passwordResetRequestPath,\n resourcePage: BackofficePasswordResetRequestPageResource,\n prepare: async () => {\n await auth.passwordResetRequest.load();\n return null;\n },\n render: ({ Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component />;\n },\n }),\n rBackoffice({\n path: passwordResetCompletePath,\n resourcePage: BackofficePasswordResetCompletePageResource,\n prepare: async () => {\n await auth.passwordResetComplete.load();\n return null;\n },\n render: ({ Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component />;\n },\n }),\n rBackoffice({\n path: verifyEmailPath,\n resourcePage: BackofficeVerifyEmailPageResource,\n prepare: async () => {\n await auth.verifyEmail.load();\n return null;\n },\n render: ({ Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component />;\n },\n }),\n ];\n\n if (auth.hasAcceptInvitation === true || auth.acceptInvitation != null) {\n routes.push(\n rBackoffice({\n path: acceptInvitationPath,\n resourcePage: BackofficeAcceptInvitationPageResource,\n prepare: async () => {\n await auth.acceptInvitation?.load();\n return null;\n },\n render: ({ Component }) => {\n if (Component == null) {\n return null;\n }\n return <Component />;\n },\n }),\n );\n }\n\n routes.push(layoutRoute);\n\n return routes;\n}\n\nexport const __test = {\n normalizeBaseSegment,\n normalizePath,\n buildScopedPath,\n buildScopedAbsolutePath,\n buildRelativePath,\n resolveActiveEntityIdFromRoute,\n resolveDetailPageIdForPath,\n resolveDetailPageManifestByPath,\n validateBackofficeDashboardRegistrations,\n BackofficeLayoutRouteWithAuthStatus,\n} as const;\n\nexport default createBackofficeRoutes;\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ //#region src/storybook/backofficeDashboardPageStory.css.ts
2
+ var e = "txvbqb5m1 txvbqbl9n txvbqbe1d txvbqb6st";
3
+ //#endregion
4
+ export { e as storyRoot };
5
+
6
+ //# sourceMappingURL=backofficeDashboardPageStory.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backofficeDashboardPageStory.css.js","names":[],"sources":["../../../src/storybook/backofficeDashboardPageStory.css.ts"],"sourcesContent":["import { sprinkles } from '@plumile/ui/theme';\n\nexport const storyRoot = sprinkles({\n display: 'grid',\n width: 'full',\n minWidth: 0,\n gap: 6,\n});\n"],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  //#region src/storybook/relay/RelayStory.css.ts
2
- var e = "txvbqbev7", t = "txvbqb1cs", n = "txvbqb6cj txvbqbg4", r = "txvbqbal1";
2
+ var e = "txvbqbf5x", t = "txvbqb1d5", n = "txvbqb6n9 txvbqbg9", r = "txvbqbavr";
3
3
  //#endregion
4
4
  export { r as errorAction, e as errorContainer, n as errorMessage, t as errorTitle };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"RelayStory.css.js","names":[],"sources":["../../../../src/storybook/relay/RelayStory.css.ts"],"sourcesContent":["import { sprinkles } from '@plumile/ui/theme/sprinkles.css.js';\n\nexport const errorContainer = sprinkles({\n padding: 4,\n});\n\nexport const errorTitle = sprinkles({\n fontWeight: 'semibold',\n});\n\nexport const errorMessage = sprinkles({\n fontSize: 'xs',\n opacity: 70,\n});\n\nexport const errorAction = sprinkles({\n marginTop: 2,\n});\n"],"mappings":""}
1
+ {"version":3,"file":"RelayStory.css.js","names":[],"sources":["../../../../src/storybook/relay/RelayStory.css.ts"],"sourcesContent":["import { sprinkles } from '@plumile/ui/theme';\n\nexport const errorContainer = sprinkles({\n padding: 4,\n});\n\nexport const errorTitle = sprinkles({\n fontWeight: 'semibold',\n});\n\nexport const errorMessage = sprinkles({\n fontSize: 'xs',\n opacity: 70,\n});\n\nexport const errorAction = sprinkles({\n marginTop: 2,\n});\n"],"mappings":""}
package/lib/esm/style.css CHANGED
@@ -1,2 +1,2 @@
1
- .w8yhmy1:hover:not(:disabled){background-color:var(--_1ie8xnc5d);color:var(--_1ie8xnc5e);border-color:var(--_1ie8xnc5f)}.oa1uye0{column-gap:var(--_1ie8xnc2f);grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"content pickAction clearAction";width:100%;min-height:2.5rem}.oa1uye0:hover{background-color:var(--_1ie8xnc4l)}.oa1uye1{grid-area:content;min-height:100%}.oa1uye1:focus-visible{outline:2px solid var(--_1ie8xnc4e);outline-offset:2px}.oa1uye1:disabled{cursor:not-allowed;opacity:.65}.oa1uye2:hover:not(:disabled){color:var(--_1ie8xnc4r);background-color:var(--_1ie8xnc4l)}.oa1uye2:focus-visible{outline:2px solid var(--_1ie8xnc4e);outline-offset:2px}.oa1uye2:disabled{cursor:not-allowed;opacity:.65}.oa1uye3{grid-area:pickAction}.oa1uye4{grid-area:clearAction}._13200uy0{grid-template-columns:minmax(0,1fr) repeat(4,minmax(0,auto))}.ds2thc0{min-width:3.75rem}.ds2thc1:hover:not(:disabled){color:var(--_1ie8xnc4r);background-color:var(--_1ie8xnc4l)}.ds2thc1:focus-visible{outline:2px solid var(--_1ie8xnc4e);outline-offset:2px}.ds2thc1:disabled{cursor:not-allowed;opacity:.45}.u4nszr0{min-height:92px}.u4nszr0:hover{border-color:var(--_1ie8xnc59);background-color:var(--_1ie8xnc4l);transform:translateY(-1px)}.u4nszr0:focus-visible{outline:2px solid var(--_1ie8xnc4e);outline-offset:2px}._1xws1b00{color:var(--_1ie8xnc1cu)}._1xws1b00:hover:not(:disabled){background-color:var(--_1ie8xnc1cv);color:var(--_1ie8xnc1cw)}._1xws1b00:focus-visible{box-shadow:var(--_1ie8xnc1cx);outline:none}._1xws1b00:disabled{cursor:not-allowed;opacity:.6}._80s44h0{font-size:var(--_1ie8xnc1ce)}@media screen and (width<=1023px){._1f81p5z0{grid-template-columns:minmax(0,1fr)}}._1q232kj0{grid-template-columns:auto minmax(0,1fr);display:inline-grid}qbwcuem qbwcuek txvbqb5bv txvbqb2cx txvbqb8db txvbqb6gp txvbqbdt5 txvbqbift txvbqbj5d txvbqbe1 txvbqba5 txvbqbiu txvbqbms txvbqblc txvbqbn3 txvbqb1cs txvbqb1ol txvbqb3f txvbqb7g txvbqb75 txvbqb7t qbwcuel txvbqbos9 txvbqbmrd txvbqbns1 txvbqbo15 qbwcue0 txvbqbpec txvbqbq8k:hover .kk18lv0{color:var(--_1ie8xnc6b)}._8o9eh80:focus-visible{box-shadow:inset 0 0 0 2px var(--_1ie8xnc4e);outline:none}
1
+ .tc0xii0{width:auto;max-width:var(--_1ie8xnc16o)}.w8yhmy1:hover:not(:disabled){background-color:var(--_1ie8xnc5n);color:var(--_1ie8xnc5o);border-color:var(--_1ie8xnc5p)}.oa1uye0{column-gap:var(--_1ie8xnc2f);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"picker clearAction";width:100%;min-height:2.5rem}.oa1uye0:hover{background-color:var(--_1ie8xnc4v)}.oa1uye1{column-gap:var(--_1ie8xnc2f);grid-area:picker;grid-template-columns:minmax(0,1fr) auto;align-items:center;min-height:100%}.oa1uye1:focus-visible{outline:2px solid var(--_1ie8xnc4o);outline-offset:2px}.oa1uye1:disabled{cursor:not-allowed;opacity:.65}.oa1uye2:hover:not(:disabled){color:var(--_1ie8xnc51);background-color:var(--_1ie8xnc4v)}.oa1uye2:focus-visible{outline:2px solid var(--_1ie8xnc4o);outline-offset:2px}.oa1uye2:disabled{cursor:not-allowed;opacity:.65}.oa1uye3{grid-area:clearAction}._13200uy0{grid-template-columns:minmax(0,1fr) repeat(4,minmax(0,auto))}.ds2thc0{min-width:3.75rem}.ds2thc1:hover:not(:disabled){color:var(--_1ie8xnc51);background-color:var(--_1ie8xnc4v)}.ds2thc1:focus-visible{outline:2px solid var(--_1ie8xnc4o);outline-offset:2px}.ds2thc1:disabled{cursor:not-allowed;opacity:.45}.u4nszr0{min-height:92px}.u4nszr0:hover{border-color:var(--_1ie8xnc5j);background-color:var(--_1ie8xnc4v);transform:translateY(-1px)}.u4nszr0:focus-visible{outline:2px solid var(--_1ie8xnc4o);outline-offset:2px}._1xws1b00{color:var(--_1ie8xnc1d4)}._1xws1b00:hover:not(:disabled){background-color:var(--_1ie8xnc1d5);color:var(--_1ie8xnc1d6)}._1xws1b00:focus-visible{box-shadow:var(--_1ie8xnc1d7);outline:none}._1xws1b00:disabled{cursor:not-allowed;opacity:.6}@media (forced-colors:active){._1xws1b00:focus-visible{box-shadow:none;outline-offset:2px;outline:2px solid highlight}}._80s44h0{font-size:var(--_1ie8xnc1co)}@media screen and (width>=64em){._1f81p5z0{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}._1q232kj0{grid-template-columns:auto minmax(0,1fr);display:inline-grid}qbwcuex qbwcuev txvbqb5ml txvbqb2nn txvbqb8o1 txvbqb6rf txvbqbe3v txvbqbiqj txvbqbjg3 txvbqbe6 txvbqbaa txvbqbiz txvbqbmx txvbqblh txvbqbn8 txvbqb1d5 txvbqb1rk txvbqb3f txvbqb7m txvbqb76 txvbqb7y qbwcuew txvbqbod5 txvbqbmc9 txvbqbncx txvbqbnm1 qbwcue5 qbwcue4 txvbqboz8 txvbqbptg qbwcue3:hover .kk18lv0{color:var(--_1ie8xnc6l)}._8o9eh80:focus-visible{box-shadow:inset 0 0 0 2px var(--_1ie8xnc4o);outline:none}@media (forced-colors:active){._8o9eh80:focus-visible{box-shadow:none;outline-offset:2px;outline:2px solid highlight}}
2
2
  /*$vite$:1*/
@@ -9,6 +9,10 @@ export type AuthRefreshNoticeProps = {
9
9
  className?: string;
10
10
  };
11
11
  export declare const useAuthRefreshStateSnapshot: () => AuthRefreshState;
12
- export declare const AuthRefreshNotice: ({ messages, className, }: AuthRefreshNoticeProps) => JSX.Element | null;
12
+ type AuthRefreshNoticeViewProps = AuthRefreshNoticeProps & {
13
+ state: AuthRefreshState;
14
+ };
15
+ export declare const AuthRefreshNoticeView: ({ messages, className, state, }: AuthRefreshNoticeViewProps) => JSX.Element | null;
16
+ export declare const AuthRefreshNotice: (props: AuthRefreshNoticeProps) => JSX.Element | null;
13
17
  export default AuthRefreshNotice;
14
18
  //# sourceMappingURL=AuthRefreshNotice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthRefreshNotice.d.ts","sourceRoot":"","sources":["../../../src/auth/AuthRefreshNotice.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAU1E,MAAM,MAAM,yBAAyB,GAAG;IACtC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,yBAAyB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAYF,eAAO,MAAM,2BAA2B,QAAO,gBAE9C,CAAC;AAEF,eAAO,MAAM,iBAAiB,6BAG3B,sBAAsB,KAAG,GAAG,CAAC,OAAO,GAAG,IA8BzC,CAAC;eAEa,iBAAiB"}
1
+ {"version":3,"file":"AuthRefreshNotice.d.ts","sourceRoot":"","sources":["../../../src/auth/AuthRefreshNotice.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAU1E,MAAM,MAAM,yBAAyB,GAAG;IACtC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,yBAAyB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAYF,eAAO,MAAM,2BAA2B,QAAO,gBAE9C,CAAC;AAEF,KAAK,0BAA0B,GAAG,sBAAsB,GAAG;IACzD,KAAK,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAGF,eAAO,MAAM,qBAAqB,oCAI/B,0BAA0B,KAAG,GAAG,CAAC,OAAO,GAAG,IA4B7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACrB,sBAAsB,KAC5B,GAAG,CAAC,OAAO,GAAG,IAGhB,CAAC;eAEa,iBAAiB"}
@@ -8,10 +8,11 @@ export type BuildTotpOtpAuthUriOptions = {
8
8
  period?: number;
9
9
  };
10
10
  export type TotpQrCodeProps = BuildTotpOtpAuthUriOptions & {
11
+ title: string;
11
12
  otpauthUrl?: string;
12
13
  size?: number;
13
14
  };
14
15
  export declare function buildTotpOtpAuthUri({ secret, issuer, accountName, algorithm, digits, period, }: BuildTotpOtpAuthUriOptions): string;
15
- export declare const TotpQrCode: ({ secret, issuer, accountName, otpauthUrl, size, algorithm, digits, period, }: TotpQrCodeProps) => JSX.Element;
16
+ export declare const TotpQrCode: ({ secret, issuer, accountName, title, otpauthUrl, size, algorithm, digits, period, }: TotpQrCodeProps) => JSX.Element;
16
17
  export default TotpQrCode;
17
18
  //# sourceMappingURL=TotpQrCode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TotpQrCode.d.ts","sourceRoot":"","sources":["../../../src/auth/TotpQrCode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,0BAA0B,GAAG;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAKF,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAkB,EAClB,MAAU,EACV,MAAW,GACZ,EAAE,0BAA0B,GAAG,MAAM,CAWrC;AAED,eAAO,MAAM,UAAU,kFASpB,eAAe,KAAG,GAAG,CAAC,OAaxB,CAAC;eAEa,UAAU"}
1
+ {"version":3,"file":"TotpQrCode.d.ts","sourceRoot":"","sources":["../../../src/auth/TotpQrCode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,OAAO,CAAC;AAShD,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,0BAA0B,GAAG;IAEzD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAKF,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAkB,EAClB,MAAU,EACV,MAAW,GACZ,EAAE,0BAA0B,GAAG,MAAM,CAWrC;AAED,eAAO,MAAM,UAAU,yFAUpB,eAAe,KAAG,GAAG,CAAC,OAqBxB,CAAC;eAEa,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"authRefreshNotice.css.d.ts","sourceRoot":"","sources":["../../../src/auth/authRefreshNotice.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,QAUf,CAAC"}
1
+ {"version":3,"file":"authRefreshNotice.css.d.ts","sourceRoot":"","sources":["../../../src/auth/authRefreshNotice.css.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,IAAI,QAef,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AuthPanel.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/AuthPanel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,KAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,SAAS,8CAKnB,KAAK,KAAG,GAAG,CAAC,OAad,CAAC;eAEa,SAAS"}
1
+ {"version":3,"file":"AuthPanel.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/AuthPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,KAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,SAAS,8CAKnB,KAAK,KAAG,GAAG,CAAC,OAad,CAAC;eAEa,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"EmailCapturePanel.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/EmailCapturePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAW9D,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,qFAO3B,KAAK,KAAG,GAAG,CAAC,OA8Cd,CAAC"}
1
+ {"version":3,"file":"EmailCapturePanel.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/EmailCapturePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAS9D,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,qFAO3B,KAAK,KAAG,GAAG,CAAC,OA8Cd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"LoginFlow.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/LoginFlow.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,GAAG,EAMT,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAS5D,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAIF,eAAO,MAAM,SAAS,+DAKnB,cAAc,KAAG,GAAG,CAAC,OAsNvB,CAAC"}
1
+ {"version":3,"file":"LoginFlow.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/LoginFlow.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,GAAG,EAMT,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAS5D,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAIF,eAAO,MAAM,SAAS,+DAKnB,cAAc,KAAG,GAAG,CAAC,OAsNvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MethodChooser.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/MethodChooser.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAMjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAKrE,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,aAAa,uDAMvB,KAAK,KAAG,GAAG,CAAC,OAyDd,CAAC"}
1
+ {"version":3,"file":"MethodChooser.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/MethodChooser.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAMjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAKrE,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,aAAa,uDAMvB,KAAK,KAAG,GAAG,CAAC,OA2Dd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MfaChallengeForm.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/MfaChallengeForm.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI7E,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,CACR,aAAa,EACb,aAAa,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,CAC7E,CAAC;IACF,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,gBAAgB,iCAI1B,KAAK,KAAG,GAAG,CAAC,OA8Fd,CAAC"}
1
+ {"version":3,"file":"MfaChallengeForm.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/MfaChallengeForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI7E,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,CACR,aAAa,EACb,aAAa,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,CAC7E,CAAC;IACF,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,gBAAgB,iCAI1B,KAAK,KAAG,GAAG,CAAC,OA4Fd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"OidcButtons.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/OidcButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAO3E,KAAK,KAAK,GAAG;IACX,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,WAAW,kBAAmB,KAAK,KAAG,GAAG,CAAC,OAAO,GAAG,IAmChE,CAAC"}
1
+ {"version":3,"file":"OidcButtons.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/OidcButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAO3E,KAAK,KAAK,GAAG;IACX,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,WAAW,kBAAmB,KAAK,KAAG,GAAG,CAAC,OAAO,GAAG,IAoChE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PasskeyLoginForm.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/PasskeyLoginForm.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,CACR,aAAa,EACX,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,WAAW,GACX,UAAU,GACV,qBAAqB,GACrB,aAAa,GACb,kBAAkB,CACrB,CAAC;IACF,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,2EAM1B,KAAK,KAAG,GAAG,CAAC,OA2Gd,CAAC"}
1
+ {"version":3,"file":"PasskeyLoginForm.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/PasskeyLoginForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,CACR,aAAa,EACX,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,WAAW,GACX,UAAU,GACV,qBAAqB,GACrB,aAAa,GACb,kBAAkB,CACrB,CAAC;IACF,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,2EAM1B,KAAK,KAAG,GAAG,CAAC,OA2Gd,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { type JSX } from 'react';
2
- import { type LoginFormAuthAdapter } from '@plumile/ui/atomic/organisms/login_form/useLoginForm.js';
2
+ import { type LoginFormAuthAdapter } from '@plumile/ui';
3
3
  import type { OidcProviderKind } from '../../modules/sharedSchemaTypes.js';
4
4
  type Props = {
5
5
  auth: LoginFormAuthAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordLoginPanel.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/PasswordLoginPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,yDAAyD,CAAC;AAEpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAM3E,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,oBAAoB,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,kBAAkB,oEAM5B,KAAK,KAAG,GAAG,CAAC,OAuBd,CAAC"}
1
+ {"version":3,"file":"PasswordLoginPanel.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/PasswordLoginPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAa,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAM3E,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,oBAAoB,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,kBAAkB,oEAM5B,KAAK,KAAG,GAAG,CAAC,OAuBd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loginPage.css.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/loginPage.css.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,QAIhB,CAAC;AAEH,eAAO,MAAM,WAAW,QAItB,CAAC;AAEH,eAAO,MAAM,MAAM,QAKjB,CAAC;AAEH,eAAO,MAAM,OAAO,QAOlB,CAAC;AAEH,eAAO,MAAM,WAAW,QAMtB,CAAC;AAEH,eAAO,MAAM,UAAU,QAOrB,CAAC;AAEH,eAAO,MAAM,UAAU,QAkBrB,CAAC;AAEH,eAAO,MAAM,KAAK,QAOhB,CAAC;AAEH,eAAO,MAAM,KAAK,QAIhB,CAAC;AAEH,eAAO,MAAM,SAAS,QAEpB,CAAC;AAEH,eAAO,MAAM,UAAU,QAMrB,CAAC;AAEH,eAAO,MAAM,MAAM,QAEjB,CAAC;AAEH,eAAO,MAAM,gBAAgB,QAoB3B,CAAC"}
1
+ {"version":3,"file":"loginPage.css.d.ts","sourceRoot":"","sources":["../../../../src/auth/login/loginPage.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,QAIhB,CAAC;AAEH,eAAO,MAAM,WAAW,QAItB,CAAC;AAEH,eAAO,MAAM,MAAM,QAKjB,CAAC;AAEH,eAAO,MAAM,OAAO,QAOlB,CAAC;AAEH,eAAO,MAAM,WAAW,QAMtB,CAAC;AAEH,eAAO,MAAM,UAAU,QAOrB,CAAC;AAEH,eAAO,MAAM,UAAU,QAkBrB,CAAC;AAEH,eAAO,MAAM,KAAK,QAOhB,CAAC;AAEH,eAAO,MAAM,KAAK,QAIhB,CAAC;AAEH,eAAO,MAAM,SAAS,QAEpB,CAAC;AAEH,eAAO,MAAM,UAAU,QAMrB,CAAC;AAEH,eAAO,MAAM,MAAM,QAEjB,CAAC;AAEH,eAAO,MAAM,gBAAgB,QAoB3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AcceptInvitationScreen.d.ts","sourceRoot":"","sources":["../../../../src/auth/pages/AcceptInvitationScreen.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAO5D,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,sBAAsB,uDAKhC,KAAK,KAAG,GAAG,CAAC,OAuKd,CAAC"}
1
+ {"version":3,"file":"AcceptInvitationScreen.d.ts","sourceRoot":"","sources":["../../../../src/auth/pages/AcceptInvitationScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAQ5D,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,sBAAsB,uDAKhC,KAAK,KAAG,GAAG,CAAC,OAsMd,CAAC"}