@plumile/backoffice-react 0.1.132 → 0.1.140
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.
- package/README.md +46 -2
- package/lib/esm/auth/AuthRefreshNotice.js +20 -29
- package/lib/esm/auth/AuthRefreshNotice.js.map +1 -1
- package/lib/esm/auth/authRefreshNotice.css.js +2 -2
- package/lib/esm/auth/authRefreshNotice.css.js.map +1 -1
- package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js +164 -164
- package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js +35 -32
- package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js +9 -20
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +19 -19
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js +7 -13
- package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeEnumLabel.js +9 -4
- package/lib/esm/components/backoffice/detail/BackofficeEnumLabel.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js +22 -30
- package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js +10 -15
- package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js +20 -20
- package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeStatusGroup.js +4 -4
- package/lib/esm/components/backoffice/detail/BackofficeStatusGroup.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js +9 -20
- package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js +28 -18
- package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js.map +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js +57 -46
- package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js.map +1 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +0 -1
- package/lib/esm/components/backoffice/detail/detailPayloadUtils.js +1 -10
- package/lib/esm/components/backoffice/detail/detailPayloadUtils.js.map +1 -1
- package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +1 -1
- package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js.map +1 -1
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js +36 -27
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -1
- package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +1 -1
- package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +1 -0
- package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +46 -43
- package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -1
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +2 -2
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +1 -1
- package/lib/esm/components/backoffice/routing/BackofficeContentError.js +6 -6
- package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +48 -44
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +12 -8
- package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js +13 -11
- package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js +8 -8
- package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js.map +1 -1
- package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js +16 -16
- package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js.map +1 -1
- package/lib/esm/i18n/locales/en/backofficeReact.js +0 -9
- package/lib/esm/i18n/locales/en/backofficeReact.js.map +1 -1
- package/lib/esm/i18n/locales/fr/backofficeReact.js +0 -9
- package/lib/esm/i18n/locales/fr/backofficeReact.js.map +1 -1
- package/lib/esm/index.js +72 -89
- package/lib/esm/pages/BackofficeDashboardPage.js +95 -95
- package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.js +223 -204
- package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js +23 -21
- package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityListPage.js +34 -34
- package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
- package/lib/esm/pages/BackofficeHubPage.js +4 -4
- package/lib/esm/pages/BackofficeLayoutPage.js +58 -56
- package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -1
- package/lib/esm/pages/detail/buildTabsItems.js.map +1 -1
- package/lib/esm/style.css +1 -1
- package/lib/types/auth/AuthRefreshNotice.d.ts.map +1 -1
- package/lib/types/auth/authRefreshNotice.css.d.ts +0 -2
- package/lib/types/auth/authRefreshNotice.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailErrorList.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailFlagTag.d.ts +2 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailFlagTag.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailPrimitives.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailTaggedValue.d.ts +2 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailTaggedValue.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeEnumLabel.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeLifecycleTimelineSection.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeReferenceValue.d.ts +2 -1
- package/lib/types/components/backoffice/detail/BackofficeReferenceValue.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts +2 -2
- package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeStatusGroup.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeStatusMetaBadge.d.ts +4 -6
- package/lib/types/components/backoffice/detail/BackofficeStatusMetaBadge.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeTokenUsageBreakdown.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts +10 -2
- package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/detailPayloadUtils.d.ts +0 -1
- package/lib/types/components/backoffice/detail/detailPayloadUtils.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/backofficeSidebarActions.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts +2 -2
- package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/mapViewerToSidebarProfileView.d.ts +2 -2
- package/lib/types/components/backoffice/layout/mapViewerToSidebarProfileView.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/entityIdPickerDialog.css.d.ts +0 -8
- package/lib/types/components/backoffice/pickers/entityIdPickerDialog.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.d.ts +2 -2
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.d.ts.map +1 -1
- package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts.map +1 -1
- package/lib/types/i18n/resources.d.ts +0 -22
- package/lib/types/i18n/resources.d.ts.map +1 -1
- package/lib/types/index.d.ts +2 -25
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/pages/BackofficeDashboardPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts +12 -0
- package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts.map +1 -1
- package/lib/types/pages/BackofficeLayoutPage.d.ts.map +1 -1
- package/lib/types/pages/detail/buildTabsItems.d.ts +4 -4
- package/lib/types/pages/detail/buildTabsItems.d.ts.map +1 -1
- package/package.json +11 -11
- package/lib/esm/components/backoffice/detail/BackofficeAuditMetadataPanel.js +0 -31
- package/lib/esm/components/backoffice/detail/BackofficeAuditMetadataPanel.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeCopyButton.js +0 -15
- package/lib/esm/components/backoffice/detail/BackofficeCopyButton.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailActionBar.js +0 -11
- package/lib/esm/components/backoffice/detail/BackofficeDetailActionBar.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailBlock.js +0 -7
- package/lib/esm/components/backoffice/detail/BackofficeDetailBlock.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailField.js +0 -31
- package/lib/esm/components/backoffice/detail/BackofficeDetailField.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js +0 -7
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailHeader.js +0 -15
- package/lib/esm/components/backoffice/detail/BackofficeDetailHeader.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js +0 -20
- package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailPage.js +0 -19
- package/lib/esm/components/backoffice/detail/BackofficeDetailPage.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js +0 -18
- package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js +0 -36
- package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeDetailTable.js +0 -8
- package/lib/esm/components/backoffice/detail/BackofficeDetailTable.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeEmptyValue.js +0 -7
- package/lib/esm/components/backoffice/detail/BackofficeEmptyValue.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeEntityRefLink.js +0 -17
- package/lib/esm/components/backoffice/detail/BackofficeEntityRefLink.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js +0 -38
- package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js +0 -36
- package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeScopeStack.js +0 -28
- package/lib/esm/components/backoffice/detail/BackofficeScopeStack.js.map +0 -1
- package/lib/esm/components/backoffice/detail/BackofficeTechnicalFacts.js +0 -2
- package/lib/esm/components/backoffice/detail/backofficeAuditMetadataPanel.css.js +0 -7
- package/lib/esm/components/backoffice/detail/backofficeAuditMetadataPanel.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js +0 -15
- package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js +0 -7
- package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js +0 -7
- package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js +0 -19
- package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/backofficeLifecycleTimelineSection.css.js +0 -7
- package/lib/esm/components/backoffice/detail/backofficeLifecycleTimelineSection.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/backofficePayloadInspectorSection.css.js +0 -7
- package/lib/esm/components/backoffice/detail/backofficePayloadInspectorSection.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/backofficeReferenceValue.css.js +0 -7
- package/lib/esm/components/backoffice/detail/backofficeReferenceValue.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/backofficeScopeStack.css.js +0 -7
- package/lib/esm/components/backoffice/detail/backofficeScopeStack.css.js.map +0 -1
- package/lib/esm/components/backoffice/detail/backofficeStatusMetaBadge.css.js +0 -7
- package/lib/esm/components/backoffice/detail/backofficeStatusMetaBadge.css.js.map +0 -1
- package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js +0 -33
- package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js.map +0 -1
- package/lib/esm/components/backoffice/lists/backofficeListToolbar.css.js +0 -13
- package/lib/esm/components/backoffice/lists/backofficeListToolbar.css.js.map +0 -1
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +0 -33
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +0 -1
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js +0 -23
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js.map +0 -1
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js +0 -28
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js.map +0 -1
- package/lib/esm/components/backoffice/pickers/types.js +0 -0
- package/lib/esm/pages/dashboard/DashboardMetricGroup.js +0 -26
- package/lib/esm/pages/dashboard/DashboardMetricGroup.js.map +0 -1
- package/lib/esm/pages/dashboard/DashboardPanel.js +0 -15
- package/lib/esm/pages/dashboard/DashboardPanel.js.map +0 -1
- package/lib/esm/pages/dashboard/DashboardQuickActions.js +0 -27
- package/lib/esm/pages/dashboard/DashboardQuickActions.js.map +0 -1
- package/lib/esm/pages/dashboard/DashboardStatusList.js +0 -28
- package/lib/esm/pages/dashboard/DashboardStatusList.js.map +0 -1
- package/lib/esm/pages/dashboard/dashboardMetricGroup.css.js +0 -8
- package/lib/esm/pages/dashboard/dashboardMetricGroup.css.js.map +0 -1
- package/lib/esm/pages/dashboard/dashboardPanel.css.js +0 -7
- package/lib/esm/pages/dashboard/dashboardPanel.css.js.map +0 -1
- package/lib/esm/pages/dashboard/dashboardQuickActions.css.js +0 -7
- package/lib/esm/pages/dashboard/dashboardQuickActions.css.js.map +0 -1
- package/lib/esm/pages/dashboard/dashboardStatusList.css.js +0 -7
- package/lib/esm/pages/dashboard/dashboardStatusList.css.js.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeAuditMetadataPanel.d.ts +0 -19
- package/lib/types/components/backoffice/detail/BackofficeAuditMetadataPanel.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeCopyButton.d.ts +0 -8
- package/lib/types/components/backoffice/detail/BackofficeCopyButton.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailActionBar.d.ts +0 -9
- package/lib/types/components/backoffice/detail/BackofficeDetailActionBar.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailBlock.d.ts +0 -7
- package/lib/types/components/backoffice/detail/BackofficeDetailBlock.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailField.d.ts +0 -13
- package/lib/types/components/backoffice/detail/BackofficeDetailField.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailFlagTag.css.d.ts +0 -4
- package/lib/types/components/backoffice/detail/BackofficeDetailFlagTag.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailHeader.d.ts +0 -12
- package/lib/types/components/backoffice/detail/BackofficeDetailHeader.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailLayout.d.ts +0 -8
- package/lib/types/components/backoffice/detail/BackofficeDetailLayout.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailPage.d.ts +0 -16
- package/lib/types/components/backoffice/detail/BackofficeDetailPage.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailPage.stories.d.ts +0 -11
- package/lib/types/components/backoffice/detail/BackofficeDetailPage.stories.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailPayload.d.ts +0 -10
- package/lib/types/components/backoffice/detail/BackofficeDetailPayload.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailSection.d.ts +0 -11
- package/lib/types/components/backoffice/detail/BackofficeDetailSection.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailTable.d.ts +0 -6
- package/lib/types/components/backoffice/detail/BackofficeDetailTable.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeEmptyValue.d.ts +0 -7
- package/lib/types/components/backoffice/detail/BackofficeEmptyValue.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeEntityRefLink.d.ts +0 -15
- package/lib/types/components/backoffice/detail/BackofficeEntityRefLink.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts +0 -17
- package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficePayloadInspectorSection.d.ts +0 -15
- package/lib/types/components/backoffice/detail/BackofficePayloadInspectorSection.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeScopeStack.d.ts +0 -13
- package/lib/types/components/backoffice/detail/BackofficeScopeStack.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/BackofficeTechnicalFacts.d.ts +0 -2
- package/lib/types/components/backoffice/detail/BackofficeTechnicalFacts.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficeAuditMetadataPanel.css.d.ts +0 -5
- package/lib/types/components/backoffice/detail/backofficeAuditMetadataPanel.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficeDetailField.css.d.ts +0 -14
- package/lib/types/components/backoffice/detail/backofficeDetailField.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficeDetailSection.css.d.ts +0 -6
- package/lib/types/components/backoffice/detail/backofficeDetailSection.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficeDetailTaggedValue.css.d.ts +0 -3
- package/lib/types/components/backoffice/detail/backofficeDetailTaggedValue.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts +0 -29
- package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficeLifecycleTimelineSection.css.d.ts +0 -3
- package/lib/types/components/backoffice/detail/backofficeLifecycleTimelineSection.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficePayloadInspectorSection.css.d.ts +0 -4
- package/lib/types/components/backoffice/detail/backofficePayloadInspectorSection.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficeReferenceValue.css.d.ts +0 -3
- package/lib/types/components/backoffice/detail/backofficeReferenceValue.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficeScopeStack.css.d.ts +0 -5
- package/lib/types/components/backoffice/detail/backofficeScopeStack.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/detail/backofficeStatusMetaBadge.css.d.ts +0 -2
- package/lib/types/components/backoffice/detail/backofficeStatusMetaBadge.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/lists/BackofficeListToolbar.d.ts +0 -16
- package/lib/types/components/backoffice/lists/BackofficeListToolbar.d.ts.map +0 -1
- package/lib/types/components/backoffice/lists/BackofficeListToolbar.stories.d.ts +0 -13
- package/lib/types/components/backoffice/lists/BackofficeListToolbar.stories.d.ts.map +0 -1
- package/lib/types/components/backoffice/lists/backofficeListToolbar.css.d.ts +0 -16
- package/lib/types/components/backoffice/lists/backofficeListToolbar.css.d.ts.map +0 -1
- package/lib/types/components/backoffice/pickers/shared/EntityPickerList.d.ts +0 -10
- package/lib/types/components/backoffice/pickers/shared/EntityPickerList.d.ts.map +0 -1
- package/lib/types/components/backoffice/pickers/shared/EntityPickerRowBase.d.ts +0 -8
- package/lib/types/components/backoffice/pickers/shared/EntityPickerRowBase.d.ts.map +0 -1
- package/lib/types/components/backoffice/pickers/shared/EntityPickerShell.d.ts +0 -11
- package/lib/types/components/backoffice/pickers/shared/EntityPickerShell.d.ts.map +0 -1
- package/lib/types/components/backoffice/pickers/types.d.ts +0 -14
- package/lib/types/components/backoffice/pickers/types.d.ts.map +0 -1
- package/lib/types/pages/dashboard/DashboardMetricGroup.d.ts +0 -14
- package/lib/types/pages/dashboard/DashboardMetricGroup.d.ts.map +0 -1
- package/lib/types/pages/dashboard/DashboardPanel.d.ts +0 -9
- package/lib/types/pages/dashboard/DashboardPanel.d.ts.map +0 -1
- package/lib/types/pages/dashboard/DashboardQuickActions.d.ts +0 -13
- package/lib/types/pages/dashboard/DashboardQuickActions.d.ts.map +0 -1
- package/lib/types/pages/dashboard/DashboardStatusList.d.ts +0 -13
- package/lib/types/pages/dashboard/DashboardStatusList.d.ts.map +0 -1
- package/lib/types/pages/dashboard/dashboardMetricGroup.css.d.ts +0 -4
- package/lib/types/pages/dashboard/dashboardMetricGroup.css.d.ts.map +0 -1
- package/lib/types/pages/dashboard/dashboardPanel.css.d.ts +0 -2
- package/lib/types/pages/dashboard/dashboardPanel.css.d.ts.map +0 -1
- package/lib/types/pages/dashboard/dashboardQuickActions.css.d.ts +0 -5
- package/lib/types/pages/dashboard/dashboardQuickActions.css.d.ts.map +0 -1
- package/lib/types/pages/dashboard/dashboardStatusList.css.d.ts +0 -6
- package/lib/types/pages/dashboard/dashboardStatusList.css.d.ts.map +0 -1
|
@@ -19,11 +19,11 @@ import { ToastProvider as pe } from "@plumile/ui/atomic/molecules/toast/ToastPro
|
|
|
19
19
|
import me from "@plumile/router/routing/RoutingContext.js";
|
|
20
20
|
import { GlobalSearchInput as he } from "@plumile/ui/backoffice/molecules/global_search_input/GlobalSearchInput.js";
|
|
21
21
|
import ge from "@plumile/router/routing/useLocation.js";
|
|
22
|
-
import { AdminShellLayout as
|
|
23
|
-
import { EnvironmentBadge as
|
|
24
|
-
import {
|
|
22
|
+
import { AdminShellLayout as d } from "@plumile/ui/admin/templates/admin_shell_layout/AdminShellLayout.js";
|
|
23
|
+
import { EnvironmentBadge as f } from "@plumile/ui/backoffice/atoms/environment_badge/EnvironmentBadge.js";
|
|
24
|
+
import { SidebarProfileMenu as p } from "@plumile/ui/components/navigation/sidebar/SidebarProfileMenu.js";
|
|
25
25
|
//#region src/pages/BackofficeLayoutPage.tsx
|
|
26
|
-
var
|
|
26
|
+
var _e = "plumile:backoffice:recent-items", ve = "plumile:backoffice:sidebar", ye = (e) => {
|
|
27
27
|
if (typeof window > "u") return [];
|
|
28
28
|
try {
|
|
29
29
|
let t = window.localStorage.getItem(e);
|
|
@@ -42,14 +42,14 @@ var ve = "plumile:backoffice:recent-items", p = "plumile:backoffice:sidebar", ye
|
|
|
42
42
|
window.localStorage.setItem(e, JSON.stringify(t));
|
|
43
43
|
} catch {}
|
|
44
44
|
}, m = ({ children: u, permissions: m, authStatus: h, activeGroupId: g }) => {
|
|
45
|
-
let { t: _ } = de(), { t: v } = e(), { pathname: y } = ge(), b = ue(me), x = ae(), { auth: S, basePath: C, dashboards: w, entities: T, sidebar: E } = t(), [D, xe] = c(""), O = E?.preferences?.storageKey ??
|
|
45
|
+
let { t: _ } = de(), { t: v } = e(), { pathname: y } = ge(), b = ue(me), x = ae(), { auth: S, basePath: C, dashboards: w, entities: T, sidebar: E } = t(), [D, xe] = c(""), O = E?.preferences?.storageKey ?? ve, k = E?.preferences?.persistCollapsed === !0, [A, Se] = c(() => {
|
|
46
46
|
if (!k || typeof window > "u") return !1;
|
|
47
47
|
try {
|
|
48
48
|
return window.localStorage.getItem(`${O}:collapsed`) === "true";
|
|
49
49
|
} catch {
|
|
50
50
|
return !1;
|
|
51
51
|
}
|
|
52
|
-
}), [
|
|
52
|
+
}), [j, M] = c(!1), [N, Ce] = c(null), P = E?.recentItems, F = P?.enabled === !0, I = P?.storageKey ?? _e, L = P?.maxItems ?? 8, [R, we] = c(() => F ? ye(I) : []);
|
|
53
53
|
o(() => {
|
|
54
54
|
if (!(!k || typeof window > "u")) try {
|
|
55
55
|
window.localStorage.setItem(`${O}:collapsed`, String(A));
|
|
@@ -59,50 +59,52 @@ var ve = "plumile:backoffice:recent-items", p = "plumile:backoffice:sidebar", ye
|
|
|
59
59
|
k,
|
|
60
60
|
O
|
|
61
61
|
]);
|
|
62
|
-
let
|
|
62
|
+
let z = s(() => i(T, E), [T, E]), Te = s(() => Object.keys(z), [z]), Ee = s(() => Object.fromEntries(Object.entries(z).map(([e, t]) => [e, t.behavior?.defaultCollapsed ?? !0])), [z]), De = s(() => ee(z, T, E, m), [
|
|
63
63
|
T,
|
|
64
|
-
|
|
64
|
+
z,
|
|
65
65
|
m,
|
|
66
66
|
E
|
|
67
|
-
]),
|
|
67
|
+
]), B = s(() => r(y, T), [T, y]);
|
|
68
68
|
o(() => {
|
|
69
|
-
if (!
|
|
70
|
-
let e = T[
|
|
69
|
+
if (!F || B == null) return;
|
|
70
|
+
let e = T[B];
|
|
71
71
|
if (e == null || e.kind !== "tool" && !e.hasList) return;
|
|
72
72
|
let t = e.routes.list, n = "entity";
|
|
73
73
|
e.kind === "tool" && (n = "tool");
|
|
74
74
|
let r = {
|
|
75
75
|
kind: n,
|
|
76
|
-
id:
|
|
76
|
+
id: B,
|
|
77
77
|
label: e.label(_),
|
|
78
78
|
href: t,
|
|
79
79
|
visitedAt: Date.now()
|
|
80
80
|
};
|
|
81
|
-
|
|
82
|
-
let t = [r, ...e.filter((e) => e.id !== r.id || e.kind !== r.kind)].slice(0,
|
|
83
|
-
return be(
|
|
81
|
+
we((e) => {
|
|
82
|
+
let t = [r, ...e.filter((e) => e.id !== r.id || e.kind !== r.kind)].slice(0, L);
|
|
83
|
+
return be(I, t), t;
|
|
84
84
|
});
|
|
85
85
|
}, [
|
|
86
|
-
|
|
86
|
+
B,
|
|
87
87
|
T,
|
|
88
|
-
|
|
89
|
-
R,
|
|
88
|
+
F,
|
|
90
89
|
L,
|
|
90
|
+
I,
|
|
91
91
|
_
|
|
92
92
|
]);
|
|
93
|
-
let { pins:
|
|
94
|
-
enabled:
|
|
93
|
+
let V = E?.pinnedItems?.enabled === !0, { pins: Oe, toggle: ke, reorder: Ae } = oe({
|
|
94
|
+
enabled: V,
|
|
95
95
|
storageKey: E?.pinnedItems?.storageKey,
|
|
96
|
-
visibleEntityIds:
|
|
97
|
-
}),
|
|
96
|
+
visibleEntityIds: De
|
|
97
|
+
}), H, U, W;
|
|
98
|
+
V && (H = Oe, U = ke, W = Ae);
|
|
99
|
+
let G;
|
|
98
100
|
E?.preferences?.storageKey != null && (G = `${E.preferences.storageKey}:groups`);
|
|
99
101
|
let { collapsedByGroupId: K, setCollapsed: q } = se({
|
|
100
|
-
groupIds:
|
|
102
|
+
groupIds: Te,
|
|
101
103
|
activeGroupId: g,
|
|
102
|
-
defaultCollapsedByGroupId:
|
|
104
|
+
defaultCollapsedByGroupId: Ee,
|
|
103
105
|
persist: E?.preferences?.persistGroups === !0,
|
|
104
106
|
storageKey: G
|
|
105
|
-
}),
|
|
107
|
+
}), je = s(() => a({
|
|
106
108
|
basePath: C,
|
|
107
109
|
pathname: y,
|
|
108
110
|
entities: T,
|
|
@@ -113,7 +115,7 @@ var ve = "plumile:backoffice:recent-items", p = "plumile:backoffice:sidebar", ye
|
|
|
113
115
|
tApp: _,
|
|
114
116
|
t: v,
|
|
115
117
|
pinnedEntityIds: H,
|
|
116
|
-
recentItems:
|
|
118
|
+
recentItems: R,
|
|
117
119
|
onTogglePin: U,
|
|
118
120
|
onReorderPin: W,
|
|
119
121
|
collapsedByGroupId: K,
|
|
@@ -126,16 +128,16 @@ var ve = "plumile:backoffice:recent-items", p = "plumile:backoffice:sidebar", ye
|
|
|
126
128
|
w,
|
|
127
129
|
y,
|
|
128
130
|
m,
|
|
129
|
-
|
|
130
|
-
z,
|
|
131
|
-
W,
|
|
131
|
+
R,
|
|
132
132
|
q,
|
|
133
133
|
E,
|
|
134
|
+
H,
|
|
134
135
|
D,
|
|
136
|
+
W,
|
|
137
|
+
U,
|
|
135
138
|
v,
|
|
136
|
-
_
|
|
137
|
-
|
|
138
|
-
]), Oe = s(() => a({
|
|
139
|
+
_
|
|
140
|
+
]), Me = s(() => a({
|
|
139
141
|
basePath: C,
|
|
140
142
|
pathname: y,
|
|
141
143
|
entities: T,
|
|
@@ -146,7 +148,7 @@ var ve = "plumile:backoffice:recent-items", p = "plumile:backoffice:sidebar", ye
|
|
|
146
148
|
tApp: _,
|
|
147
149
|
t: v,
|
|
148
150
|
pinnedEntityIds: H,
|
|
149
|
-
recentItems:
|
|
151
|
+
recentItems: R,
|
|
150
152
|
onTogglePin: U,
|
|
151
153
|
onReorderPin: W,
|
|
152
154
|
collapsedByGroupId: K,
|
|
@@ -159,17 +161,17 @@ var ve = "plumile:backoffice:recent-items", p = "plumile:backoffice:sidebar", ye
|
|
|
159
161
|
w,
|
|
160
162
|
y,
|
|
161
163
|
m,
|
|
162
|
-
|
|
163
|
-
z,
|
|
164
|
-
W,
|
|
164
|
+
R,
|
|
165
165
|
q,
|
|
166
166
|
E,
|
|
167
|
+
H,
|
|
167
168
|
D,
|
|
169
|
+
W,
|
|
170
|
+
U,
|
|
168
171
|
v,
|
|
169
|
-
_
|
|
170
|
-
U
|
|
172
|
+
_
|
|
171
173
|
]), J = s(() => import.meta.env?.DEV === !0 ? "dev" : "prod", []), Y = le(() => {
|
|
172
|
-
|
|
174
|
+
j || (M(!0), (async () => {
|
|
173
175
|
try {
|
|
174
176
|
let e = await S.logout.load();
|
|
175
177
|
await new Promise((t, n) => {
|
|
@@ -185,19 +187,19 @@ var ve = "plumile:backoffice:recent-items", p = "plumile:backoffice:sidebar", ye
|
|
|
185
187
|
});
|
|
186
188
|
}), localStorage.removeItem("auth_token"), localStorage.removeItem("remember_me"), ie(), b?.history.push({ pathname: ce(C) });
|
|
187
189
|
} finally {
|
|
188
|
-
|
|
190
|
+
M(!1);
|
|
189
191
|
}
|
|
190
192
|
})().catch(() => {}));
|
|
191
193
|
}, [
|
|
192
194
|
S.logout,
|
|
193
195
|
C,
|
|
194
|
-
|
|
196
|
+
j,
|
|
195
197
|
x,
|
|
196
198
|
b
|
|
197
199
|
]), X = h?.me ?? null, Z = s(() => ne({
|
|
198
200
|
viewer: X,
|
|
199
201
|
unknownUserLabel: v("sidebar.profile.unknownUser")
|
|
200
|
-
}), [v, X]),
|
|
202
|
+
}), [v, X]), Ne = /* @__PURE__ */ l(p, {
|
|
201
203
|
collapsed: !1,
|
|
202
204
|
viewer: Z,
|
|
203
205
|
labels: {
|
|
@@ -206,8 +208,8 @@ var ve = "plumile:backoffice:recent-items", p = "plumile:backoffice:sidebar", ye
|
|
|
206
208
|
signOut: v("sidebar.profile.actions.signOut")
|
|
207
209
|
},
|
|
208
210
|
onSignOut: Y,
|
|
209
|
-
isSigningOut:
|
|
210
|
-
}),
|
|
211
|
+
isSigningOut: j
|
|
212
|
+
}), Pe = /* @__PURE__ */ l(p, {
|
|
211
213
|
collapsed: !1,
|
|
212
214
|
viewer: Z,
|
|
213
215
|
labels: {
|
|
@@ -216,43 +218,43 @@ var ve = "plumile:backoffice:recent-items", p = "plumile:backoffice:sidebar", ye
|
|
|
216
218
|
signOut: v("sidebar.profile.actions.signOut")
|
|
217
219
|
},
|
|
218
220
|
onSignOut: Y,
|
|
219
|
-
isSigningOut:
|
|
221
|
+
isSigningOut: j
|
|
220
222
|
}), Q = null;
|
|
221
|
-
|
|
223
|
+
N != null && (Q = /* @__PURE__ */ l(re, { children: u }));
|
|
222
224
|
let $ = /* @__PURE__ */ l(he, {
|
|
223
225
|
value: D,
|
|
224
226
|
onChange: xe,
|
|
225
227
|
placeholder: v("sidebar.search.placeholder"),
|
|
226
228
|
ariaLabel: v("sidebar.search.placeholder")
|
|
227
229
|
});
|
|
228
|
-
return /* @__PURE__ */ l(pe, { children: /* @__PURE__ */ l(
|
|
230
|
+
return /* @__PURE__ */ l(pe, { children: /* @__PURE__ */ l(d, {
|
|
229
231
|
sidebar: {
|
|
230
|
-
sections:
|
|
231
|
-
header: /* @__PURE__ */ l(
|
|
232
|
+
sections: je,
|
|
233
|
+
header: /* @__PURE__ */ l(f, { environment: J }),
|
|
232
234
|
search: $,
|
|
233
|
-
footer:
|
|
235
|
+
footer: Ne,
|
|
234
236
|
isCollapsed: A,
|
|
235
|
-
onCollapsedChange:
|
|
237
|
+
onCollapsedChange: Se,
|
|
236
238
|
collapseToggleLabel: v("sidebar.actions.collapseSidebar"),
|
|
237
239
|
expandToggleLabel: v("sidebar.actions.expandSidebar"),
|
|
238
240
|
navigationAriaLabel: v("sidebar.navigationAriaLabel")
|
|
239
241
|
},
|
|
240
242
|
mobileSidebar: {
|
|
241
|
-
sections:
|
|
242
|
-
header: /* @__PURE__ */ l(
|
|
243
|
+
sections: Me,
|
|
244
|
+
header: /* @__PURE__ */ l(f, { environment: J }),
|
|
243
245
|
search: $,
|
|
244
|
-
footer:
|
|
246
|
+
footer: Pe,
|
|
245
247
|
isCollapsed: !1,
|
|
246
248
|
hideCollapseToggle: !0,
|
|
247
249
|
navigationAriaLabel: v("sidebar.navigationAriaLabel")
|
|
248
250
|
},
|
|
249
|
-
topbar: { breadcrumb: /* @__PURE__ */ l("div", { ref:
|
|
251
|
+
topbar: { breadcrumb: /* @__PURE__ */ l("div", { ref: Ce }) },
|
|
250
252
|
contentScrollMode: "contained",
|
|
251
253
|
children: /* @__PURE__ */ l(te, {
|
|
252
254
|
permissions: m,
|
|
253
255
|
children: /* @__PURE__ */ l(n, {
|
|
254
256
|
value: {
|
|
255
|
-
target:
|
|
257
|
+
target: N,
|
|
256
258
|
dashboardHref: C,
|
|
257
259
|
dashboardLabel: v("sidebar.items.dashboard")
|
|
258
260
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeLayoutPage.js","names":[],"sources":["../../../src/pages/BackofficeLayoutPage.tsx"],"sourcesContent":["import {\n useEffect,\n useMemo,\n type JSX,\n type ReactNode,\n useCallback,\n useContext,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n commitMutation,\n usePreloadedQuery,\n type PreloadedQuery,\n} from 'react-relay';\nimport type {\n GraphQLTaggedNode,\n MutationParameters,\n OperationType,\n} from 'relay-runtime';\nimport RoutingContext from '@plumile/router/routing/RoutingContext.js';\nimport useLocation from '@plumile/router/routing/useLocation.js';\n\nimport { AdminShellLayout } from '@plumile/ui/admin/templates/admin_shell_layout/AdminShellLayout.js';\nimport { ToastProvider } from '@plumile/ui/atomic/molecules/toast/ToastProvider.js';\nimport { EnvironmentBadge } from '@plumile/ui/backoffice/atoms/environment_badge/EnvironmentBadge.js';\nimport { GlobalSearchInput } from '@plumile/ui/backoffice/molecules/global_search_input/GlobalSearchInput.js';\nimport { BackofficeSidebarProfileMenu } from '@plumile/ui/backoffice/molecules/sidebar_profile_menu/BackofficeSidebarProfileMenu.js';\n\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport type { LogoutResponse, LogoutVariables } from '../hooks/useAuth.js';\nimport { useBackofficeSidebarPins } from '../hooks/useBackofficeSidebarPins.js';\nimport { useSidebarGroupCollapse } from '../hooks/useSidebarGroupCollapse.js';\nimport { buildSidebarSections } from '../components/backoffice/layout/buildSidebarSections.js';\nimport { BackofficeContentBoundary } from '../components/backoffice/routing/BackofficeContentBoundary.js';\nimport {\n resolveActiveEntityId,\n resolveSidebarGroups,\n resolveVisibleEntityIds,\n} from '../components/backoffice/layout/sidebarUtils.js';\nimport { BackofficeTopbarPortalContextProvider } from '../components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js';\nimport { BackofficePermissionsProvider } from '../components/backoffice/layout/BackofficePermissionsContext.js';\nimport {\n mapViewerToSidebarProfileView,\n type BackofficeViewerIdentity,\n} from '../components/backoffice/layout/mapViewerToSidebarProfileView.js';\nimport { resetRelayStore } from '../relay/environment.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\nimport { getBackofficeLoginPath } from '../router/backofficeAuthPaths.js';\nimport type { BackofficeSidebarRecentItem } from '../provider/types.js';\n\nexport type BackofficeLayoutPageProps = {\n children: ReactNode;\n permissionsQuery?: GraphQLTaggedNode;\n prepared?: PreloadedQuery<OperationType> | null;\n authStatus?: {\n isLoggedIn?: boolean | null;\n me?: BackofficeViewerIdentity | null;\n } | null;\n activeGroupId?: string | null;\n};\n\ntype LayoutShellProps = {\n children: ReactNode;\n permissions: unknown;\n authStatus?: {\n isLoggedIn?: boolean | null;\n me?: BackofficeViewerIdentity | null;\n } | null;\n activeGroupId?: string | null;\n};\n\nconst DEFAULT_RECENT_ITEMS_STORAGE_KEY = 'plumile:backoffice:recent-items';\nconst DEFAULT_SIDEBAR_PREFS_STORAGE_KEY = 'plumile:backoffice:sidebar';\n\nconst readRecentItems = (\n storageKey: string,\n): readonly BackofficeSidebarRecentItem[] => {\n if (typeof window === 'undefined') {\n return [];\n }\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (raw == null) {\n return [];\n }\n const parsed = JSON.parse(raw) as unknown;\n if (!Array.isArray(parsed)) {\n return [];\n }\n return parsed.filter((item): item is BackofficeSidebarRecentItem => {\n if (item == null || typeof item !== 'object') {\n return false;\n }\n const candidate = item as Partial<BackofficeSidebarRecentItem>;\n return (\n (candidate.kind === 'entity' || candidate.kind === 'tool') &&\n typeof candidate.id === 'string' &&\n typeof candidate.label === 'string' &&\n typeof candidate.href === 'string' &&\n typeof candidate.visitedAt === 'number'\n );\n });\n } catch {\n return [];\n }\n};\n\nconst writeRecentItems = (\n storageKey: string,\n items: readonly BackofficeSidebarRecentItem[],\n): void => {\n if (typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(items));\n } catch {\n // Ignore storage quota / privacy mode failures.\n }\n};\n\nconst BackofficeLayoutShell = ({\n children,\n permissions,\n authStatus,\n activeGroupId,\n}: LayoutShellProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { pathname } = useLocation();\n const routing = useContext(RoutingContext);\n const relayEnvironment = useRelayEnvironment();\n const {\n auth: authConfig,\n basePath,\n dashboards,\n entities,\n sidebar,\n } = useBackofficeConfig();\n const [sidebarQuery, setSidebarQuery] = useState('');\n const sidebarPreferencesStorageKey =\n sidebar?.preferences?.storageKey ?? DEFAULT_SIDEBAR_PREFS_STORAGE_KEY;\n const persistSidebarCollapsed =\n sidebar?.preferences?.persistCollapsed === true;\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(() => {\n if (!persistSidebarCollapsed || typeof window === 'undefined') {\n return false;\n }\n try {\n return (\n window.localStorage.getItem(\n `${sidebarPreferencesStorageKey}:collapsed`,\n ) === 'true'\n );\n } catch {\n return false;\n }\n });\n const [isSigningOut, setIsSigningOut] = useState(false);\n const [topbarTarget, setTopbarTarget] = useState<HTMLDivElement | null>(null);\n const recentItemsConfig = sidebar?.recentItems;\n const recentItemsEnabled = recentItemsConfig?.enabled === true;\n const recentItemsStorageKey =\n recentItemsConfig?.storageKey ?? DEFAULT_RECENT_ITEMS_STORAGE_KEY;\n const recentItemsMaxItems = recentItemsConfig?.maxItems ?? 8;\n const [recentItems, setRecentItems] = useState<\n readonly BackofficeSidebarRecentItem[]\n >(() => {\n if (!recentItemsEnabled) {\n return [];\n }\n return readRecentItems(recentItemsStorageKey);\n });\n\n useEffect(() => {\n if (!persistSidebarCollapsed || typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(\n `${sidebarPreferencesStorageKey}:collapsed`,\n String(isSidebarCollapsed),\n );\n } catch {\n // Ignore storage quota / privacy mode failures.\n }\n }, [\n isSidebarCollapsed,\n persistSidebarCollapsed,\n sidebarPreferencesStorageKey,\n ]);\n\n const groups = useMemo(() => {\n return resolveSidebarGroups(entities, sidebar);\n }, [entities, sidebar]);\n\n const groupIds = useMemo(() => {\n return Object.keys(groups);\n }, [groups]);\n\n const defaultCollapsedByGroupId = useMemo(() => {\n return Object.fromEntries(\n Object.entries(groups).map(([groupId, group]) => {\n return [groupId, group.behavior?.defaultCollapsed ?? true];\n }),\n );\n }, [groups]);\n\n const visibleEntityIds = useMemo(() => {\n return resolveVisibleEntityIds(groups, entities, sidebar, permissions);\n }, [entities, groups, permissions, sidebar]);\n\n const activeEntityId = useMemo(() => {\n return resolveActiveEntityId(pathname, entities);\n }, [entities, pathname]);\n\n useEffect(() => {\n if (!recentItemsEnabled || activeEntityId == null) {\n return;\n }\n const config = entities[activeEntityId];\n if (config == null) {\n return;\n }\n if (config.kind !== 'tool' && !config.hasList) {\n return;\n }\n const href = config.routes.list;\n let kind: BackofficeSidebarRecentItem['kind'] = 'entity';\n if (config.kind === 'tool') {\n kind = 'tool';\n }\n const item: BackofficeSidebarRecentItem = {\n kind,\n id: activeEntityId,\n label: config.label(tApp),\n href,\n visitedAt: Date.now(),\n };\n setRecentItems((prev) => {\n const next = [\n item,\n ...prev.filter((entry) => {\n return entry.id !== item.id || entry.kind !== item.kind;\n }),\n ].slice(0, recentItemsMaxItems);\n writeRecentItems(recentItemsStorageKey, next);\n return next;\n });\n }, [\n activeEntityId,\n entities,\n recentItemsEnabled,\n recentItemsMaxItems,\n recentItemsStorageKey,\n tApp,\n ]);\n\n const {\n pins,\n toggle: togglePin,\n reorder: reorderPin,\n } = useBackofficeSidebarPins({\n enabled: sidebar?.pinnedItems?.enabled === true,\n storageKey: sidebar?.pinnedItems?.storageKey,\n visibleEntityIds,\n });\n\n let groupCollapseStorageKey: string | undefined;\n if (sidebar?.preferences?.storageKey != null) {\n groupCollapseStorageKey = `${sidebar.preferences.storageKey}:groups`;\n }\n\n const { collapsedByGroupId, setCollapsed } = useSidebarGroupCollapse({\n groupIds,\n activeGroupId,\n defaultCollapsedByGroupId,\n persist: sidebar?.preferences?.persistGroups === true,\n storageKey: groupCollapseStorageKey,\n });\n\n const sections = useMemo(() => {\n return buildSidebarSections({\n basePath,\n pathname,\n entities,\n dashboards,\n sidebar,\n permissions,\n searchQuery: sidebarQuery,\n tApp,\n t,\n pinnedEntityIds: pins,\n recentItems,\n onTogglePin: togglePin,\n onReorderPin: reorderPin,\n collapsedByGroupId,\n onGroupCollapsedChange: setCollapsed,\n sidebarCollapsed: false,\n });\n }, [\n basePath,\n collapsedByGroupId,\n entities,\n dashboards,\n pathname,\n permissions,\n pins,\n recentItems,\n reorderPin,\n setCollapsed,\n sidebar,\n sidebarQuery,\n t,\n tApp,\n togglePin,\n ]);\n\n const mobileSections = useMemo(() => {\n return buildSidebarSections({\n basePath,\n pathname,\n entities,\n dashboards,\n sidebar,\n permissions,\n searchQuery: sidebarQuery,\n tApp,\n t,\n pinnedEntityIds: pins,\n recentItems,\n onTogglePin: togglePin,\n onReorderPin: reorderPin,\n collapsedByGroupId,\n onGroupCollapsedChange: setCollapsed,\n sidebarCollapsed: false,\n });\n }, [\n basePath,\n collapsedByGroupId,\n entities,\n dashboards,\n pathname,\n permissions,\n pins,\n recentItems,\n reorderPin,\n setCollapsed,\n sidebar,\n sidebarQuery,\n t,\n tApp,\n togglePin,\n ]);\n\n const environment = useMemo(() => {\n const meta = import.meta as unknown as { env?: Record<string, unknown> };\n if (meta.env?.DEV === true) {\n return 'dev' as const;\n }\n return 'prod' as const;\n }, []);\n\n const handleSignOut = useCallback(() => {\n if (isSigningOut) {\n return;\n }\n\n type LogoutMutation = MutationParameters & {\n response: LogoutResponse;\n variables: LogoutVariables;\n };\n\n setIsSigningOut(true);\n\n const runSignOut = async (): Promise<void> => {\n try {\n const config = await authConfig.logout.load();\n await new Promise<void>((resolve, reject) => {\n commitMutation<LogoutMutation>(relayEnvironment, {\n mutation: config.logoutMutation,\n variables: {},\n onCompleted: () => {\n resolve();\n },\n onError: (error) => {\n reject(error);\n },\n });\n });\n localStorage.removeItem('auth_token');\n localStorage.removeItem('remember_me');\n resetRelayStore();\n routing?.history.push({ pathname: getBackofficeLoginPath(basePath) });\n } finally {\n setIsSigningOut(false);\n }\n };\n\n runSignOut().catch(() => {\n /* noop */\n });\n }, [authConfig.logout, basePath, isSigningOut, relayEnvironment, routing]);\n\n const viewer = authStatus?.me ?? null;\n const sidebarProfile = useMemo(() => {\n return mapViewerToSidebarProfileView({\n viewer,\n unknownUserLabel: t('sidebar.profile.unknownUser'),\n });\n }, [t, viewer]);\n\n const sidebarFooter = (\n <BackofficeSidebarProfileMenu\n collapsed={false}\n viewer={sidebarProfile}\n labels={{\n sectionTitle: t('sidebar.profile.title'),\n menuAriaLabel: t('sidebar.profile.menuAriaLabel'),\n signOut: t('sidebar.profile.actions.signOut'),\n }}\n onSignOut={handleSignOut}\n isSigningOut={isSigningOut}\n />\n );\n\n const mobileSidebarFooter = (\n <BackofficeSidebarProfileMenu\n collapsed={false}\n viewer={sidebarProfile}\n labels={{\n sectionTitle: t('sidebar.profile.title'),\n menuAriaLabel: t('sidebar.profile.menuAriaLabel'),\n signOut: t('sidebar.profile.actions.signOut'),\n }}\n onSignOut={handleSignOut}\n isSigningOut={isSigningOut}\n />\n );\n\n let contentNode: JSX.Element | null = null;\n if (topbarTarget != null) {\n contentNode = (\n <BackofficeContentBoundary>{children}</BackofficeContentBoundary>\n );\n }\n\n const sidebarSearchNode = (\n <GlobalSearchInput\n value={sidebarQuery}\n onChange={setSidebarQuery}\n placeholder={t('sidebar.search.placeholder')}\n ariaLabel={t('sidebar.search.placeholder')}\n />\n );\n\n return (\n <ToastProvider>\n <AdminShellLayout\n sidebar={{\n sections,\n header: <EnvironmentBadge environment={environment} />,\n search: sidebarSearchNode,\n footer: sidebarFooter,\n isCollapsed: isSidebarCollapsed,\n onCollapsedChange: setIsSidebarCollapsed,\n collapseToggleLabel: t('sidebar.actions.collapseSidebar'),\n expandToggleLabel: t('sidebar.actions.expandSidebar'),\n navigationAriaLabel: t('sidebar.navigationAriaLabel'),\n }}\n mobileSidebar={{\n sections: mobileSections,\n header: <EnvironmentBadge environment={environment} />,\n search: sidebarSearchNode,\n footer: mobileSidebarFooter,\n isCollapsed: false,\n hideCollapseToggle: true,\n navigationAriaLabel: t('sidebar.navigationAriaLabel'),\n }}\n topbar={{\n breadcrumb: <div ref={setTopbarTarget} />,\n }}\n contentScrollMode=\"contained\"\n >\n <BackofficePermissionsProvider permissions={permissions}>\n <BackofficeTopbarPortalContextProvider\n value={{\n target: topbarTarget,\n dashboardHref: basePath,\n dashboardLabel: t('sidebar.items.dashboard'),\n }}\n >\n {contentNode}\n </BackofficeTopbarPortalContextProvider>\n </BackofficePermissionsProvider>\n </AdminShellLayout>\n </ToastProvider>\n );\n};\n\ntype LayoutWithPermissionsProps = {\n children: ReactNode;\n permissionsQuery: GraphQLTaggedNode;\n prepared: PreloadedQuery<OperationType>;\n authStatus?: {\n isLoggedIn?: boolean | null;\n me?: BackofficeViewerIdentity | null;\n } | null;\n activeGroupId?: string | null;\n};\n\nconst LayoutWithPermissions = ({\n children,\n permissionsQuery,\n prepared,\n authStatus,\n activeGroupId,\n}: LayoutWithPermissionsProps): JSX.Element => {\n const permissions = usePreloadedQuery(permissionsQuery, prepared);\n\n return (\n <BackofficeLayoutShell\n permissions={permissions}\n authStatus={authStatus}\n activeGroupId={activeGroupId}\n >\n {children}\n </BackofficeLayoutShell>\n );\n};\n\nexport const BackofficeLayoutPage = ({\n children,\n permissionsQuery,\n prepared,\n authStatus,\n activeGroupId,\n}: BackofficeLayoutPageProps): JSX.Element => {\n if (permissionsQuery != null && prepared != null) {\n return (\n <LayoutWithPermissions\n permissionsQuery={permissionsQuery}\n prepared={prepared}\n authStatus={authStatus}\n activeGroupId={activeGroupId}\n >\n {children}\n </LayoutWithPermissions>\n );\n }\n\n return (\n <BackofficeLayoutShell\n permissions={null}\n authStatus={authStatus}\n activeGroupId={activeGroupId}\n >\n {children}\n </BackofficeLayoutShell>\n );\n};\n\nexport default BackofficeLayoutPage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BackofficeLayoutPage.js","names":[],"sources":["../../../src/pages/BackofficeLayoutPage.tsx"],"sourcesContent":["import {\n useEffect,\n useMemo,\n type JSX,\n type ReactNode,\n useCallback,\n useContext,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n commitMutation,\n usePreloadedQuery,\n type PreloadedQuery,\n} from 'react-relay';\nimport type {\n GraphQLTaggedNode,\n MutationParameters,\n OperationType,\n} from 'relay-runtime';\nimport RoutingContext from '@plumile/router/routing/RoutingContext.js';\nimport useLocation from '@plumile/router/routing/useLocation.js';\n\nimport { AdminShellLayout } from '@plumile/ui/admin/templates/admin_shell_layout/AdminShellLayout.js';\nimport { ToastProvider } from '@plumile/ui/atomic/molecules/toast/ToastProvider.js';\nimport { EnvironmentBadge } from '@plumile/ui/backoffice/atoms/environment_badge/EnvironmentBadge.js';\nimport { GlobalSearchInput } from '@plumile/ui/backoffice/molecules/global_search_input/GlobalSearchInput.js';\nimport { SidebarProfileMenu } from '@plumile/ui/components/navigation/sidebar/SidebarProfileMenu.js';\n\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport type { LogoutResponse, LogoutVariables } from '../hooks/useAuth.js';\nimport { useBackofficeSidebarPins } from '../hooks/useBackofficeSidebarPins.js';\nimport { useSidebarGroupCollapse } from '../hooks/useSidebarGroupCollapse.js';\nimport { buildSidebarSections } from '../components/backoffice/layout/buildSidebarSections.js';\nimport { BackofficeContentBoundary } from '../components/backoffice/routing/BackofficeContentBoundary.js';\nimport {\n resolveActiveEntityId,\n resolveSidebarGroups,\n resolveVisibleEntityIds,\n} from '../components/backoffice/layout/sidebarUtils.js';\nimport { BackofficeTopbarPortalContextProvider } from '../components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js';\nimport { BackofficePermissionsProvider } from '../components/backoffice/layout/BackofficePermissionsContext.js';\nimport {\n mapViewerToSidebarProfileView,\n type BackofficeViewerIdentity,\n} from '../components/backoffice/layout/mapViewerToSidebarProfileView.js';\nimport { resetRelayStore } from '../relay/environment.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\nimport { getBackofficeLoginPath } from '../router/backofficeAuthPaths.js';\nimport type { BackofficeSidebarRecentItem } from '../provider/types.js';\n\nexport type BackofficeLayoutPageProps = {\n children: ReactNode;\n permissionsQuery?: GraphQLTaggedNode;\n prepared?: PreloadedQuery<OperationType> | null;\n authStatus?: {\n isLoggedIn?: boolean | null;\n me?: BackofficeViewerIdentity | null;\n } | null;\n activeGroupId?: string | null;\n};\n\ntype LayoutShellProps = {\n children: ReactNode;\n permissions: unknown;\n authStatus?: {\n isLoggedIn?: boolean | null;\n me?: BackofficeViewerIdentity | null;\n } | null;\n activeGroupId?: string | null;\n};\n\nconst DEFAULT_RECENT_ITEMS_STORAGE_KEY = 'plumile:backoffice:recent-items';\nconst DEFAULT_SIDEBAR_PREFS_STORAGE_KEY = 'plumile:backoffice:sidebar';\n\nconst readRecentItems = (\n storageKey: string,\n): readonly BackofficeSidebarRecentItem[] => {\n if (typeof window === 'undefined') {\n return [];\n }\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (raw == null) {\n return [];\n }\n const parsed = JSON.parse(raw) as unknown;\n if (!Array.isArray(parsed)) {\n return [];\n }\n return parsed.filter((item): item is BackofficeSidebarRecentItem => {\n if (item == null || typeof item !== 'object') {\n return false;\n }\n const candidate = item as Partial<BackofficeSidebarRecentItem>;\n return (\n (candidate.kind === 'entity' || candidate.kind === 'tool') &&\n typeof candidate.id === 'string' &&\n typeof candidate.label === 'string' &&\n typeof candidate.href === 'string' &&\n typeof candidate.visitedAt === 'number'\n );\n });\n } catch {\n return [];\n }\n};\n\nconst writeRecentItems = (\n storageKey: string,\n items: readonly BackofficeSidebarRecentItem[],\n): void => {\n if (typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(items));\n } catch {\n // Ignore storage quota / privacy mode failures.\n }\n};\n\nconst BackofficeLayoutShell = ({\n children,\n permissions,\n authStatus,\n activeGroupId,\n}: LayoutShellProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { pathname } = useLocation();\n const routing = useContext(RoutingContext);\n const relayEnvironment = useRelayEnvironment();\n const {\n auth: authConfig,\n basePath,\n dashboards,\n entities,\n sidebar,\n } = useBackofficeConfig();\n const [sidebarQuery, setSidebarQuery] = useState('');\n const sidebarPreferencesStorageKey =\n sidebar?.preferences?.storageKey ?? DEFAULT_SIDEBAR_PREFS_STORAGE_KEY;\n const persistSidebarCollapsed =\n sidebar?.preferences?.persistCollapsed === true;\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(() => {\n if (!persistSidebarCollapsed || typeof window === 'undefined') {\n return false;\n }\n try {\n return (\n window.localStorage.getItem(\n `${sidebarPreferencesStorageKey}:collapsed`,\n ) === 'true'\n );\n } catch {\n return false;\n }\n });\n const [isSigningOut, setIsSigningOut] = useState(false);\n const [topbarTarget, setTopbarTarget] = useState<HTMLDivElement | null>(null);\n const recentItemsConfig = sidebar?.recentItems;\n const recentItemsEnabled = recentItemsConfig?.enabled === true;\n const recentItemsStorageKey =\n recentItemsConfig?.storageKey ?? DEFAULT_RECENT_ITEMS_STORAGE_KEY;\n const recentItemsMaxItems = recentItemsConfig?.maxItems ?? 8;\n const [recentItems, setRecentItems] = useState<\n readonly BackofficeSidebarRecentItem[]\n >(() => {\n if (!recentItemsEnabled) {\n return [];\n }\n return readRecentItems(recentItemsStorageKey);\n });\n\n useEffect(() => {\n if (!persistSidebarCollapsed || typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(\n `${sidebarPreferencesStorageKey}:collapsed`,\n String(isSidebarCollapsed),\n );\n } catch {\n // Ignore storage quota / privacy mode failures.\n }\n }, [\n isSidebarCollapsed,\n persistSidebarCollapsed,\n sidebarPreferencesStorageKey,\n ]);\n\n const groups = useMemo(() => {\n return resolveSidebarGroups(entities, sidebar);\n }, [entities, sidebar]);\n\n const groupIds = useMemo(() => {\n return Object.keys(groups);\n }, [groups]);\n\n const defaultCollapsedByGroupId = useMemo(() => {\n return Object.fromEntries(\n Object.entries(groups).map(([groupId, group]) => {\n return [groupId, group.behavior?.defaultCollapsed ?? true];\n }),\n );\n }, [groups]);\n\n const visibleEntityIds = useMemo(() => {\n return resolveVisibleEntityIds(groups, entities, sidebar, permissions);\n }, [entities, groups, permissions, sidebar]);\n\n const activeEntityId = useMemo(() => {\n return resolveActiveEntityId(pathname, entities);\n }, [entities, pathname]);\n\n useEffect(() => {\n if (!recentItemsEnabled || activeEntityId == null) {\n return;\n }\n const config = entities[activeEntityId];\n if (config == null) {\n return;\n }\n if (config.kind !== 'tool' && !config.hasList) {\n return;\n }\n const href = config.routes.list;\n let kind: BackofficeSidebarRecentItem['kind'] = 'entity';\n if (config.kind === 'tool') {\n kind = 'tool';\n }\n const item: BackofficeSidebarRecentItem = {\n kind,\n id: activeEntityId,\n label: config.label(tApp),\n href,\n visitedAt: Date.now(),\n };\n setRecentItems((prev) => {\n const next = [\n item,\n ...prev.filter((entry) => {\n return entry.id !== item.id || entry.kind !== item.kind;\n }),\n ].slice(0, recentItemsMaxItems);\n writeRecentItems(recentItemsStorageKey, next);\n return next;\n });\n }, [\n activeEntityId,\n entities,\n recentItemsEnabled,\n recentItemsMaxItems,\n recentItemsStorageKey,\n tApp,\n ]);\n\n const pinningEnabled = sidebar?.pinnedItems?.enabled === true;\n\n const {\n pins,\n toggle: togglePin,\n reorder: reorderPin,\n } = useBackofficeSidebarPins({\n enabled: pinningEnabled,\n storageKey: sidebar?.pinnedItems?.storageKey,\n visibleEntityIds,\n });\n\n let sidebarPinnedEntityIds: readonly string[] | undefined;\n let sidebarTogglePin: ((entityId: string) => void) | undefined;\n let sidebarReorderPin: ((fromId: string, toId: string) => void) | undefined;\n if (pinningEnabled) {\n sidebarPinnedEntityIds = pins;\n sidebarTogglePin = togglePin;\n sidebarReorderPin = reorderPin;\n }\n\n let groupCollapseStorageKey: string | undefined;\n if (sidebar?.preferences?.storageKey != null) {\n groupCollapseStorageKey = `${sidebar.preferences.storageKey}:groups`;\n }\n\n const { collapsedByGroupId, setCollapsed } = useSidebarGroupCollapse({\n groupIds,\n activeGroupId,\n defaultCollapsedByGroupId,\n persist: sidebar?.preferences?.persistGroups === true,\n storageKey: groupCollapseStorageKey,\n });\n\n const sections = useMemo(() => {\n return buildSidebarSections({\n basePath,\n pathname,\n entities,\n dashboards,\n sidebar,\n permissions,\n searchQuery: sidebarQuery,\n tApp,\n t,\n pinnedEntityIds: sidebarPinnedEntityIds,\n recentItems,\n onTogglePin: sidebarTogglePin,\n onReorderPin: sidebarReorderPin,\n collapsedByGroupId,\n onGroupCollapsedChange: setCollapsed,\n sidebarCollapsed: false,\n });\n }, [\n basePath,\n collapsedByGroupId,\n entities,\n dashboards,\n pathname,\n permissions,\n recentItems,\n setCollapsed,\n sidebar,\n sidebarPinnedEntityIds,\n sidebarQuery,\n sidebarReorderPin,\n sidebarTogglePin,\n t,\n tApp,\n ]);\n\n const mobileSections = useMemo(() => {\n return buildSidebarSections({\n basePath,\n pathname,\n entities,\n dashboards,\n sidebar,\n permissions,\n searchQuery: sidebarQuery,\n tApp,\n t,\n pinnedEntityIds: sidebarPinnedEntityIds,\n recentItems,\n onTogglePin: sidebarTogglePin,\n onReorderPin: sidebarReorderPin,\n collapsedByGroupId,\n onGroupCollapsedChange: setCollapsed,\n sidebarCollapsed: false,\n });\n }, [\n basePath,\n collapsedByGroupId,\n entities,\n dashboards,\n pathname,\n permissions,\n recentItems,\n setCollapsed,\n sidebar,\n sidebarPinnedEntityIds,\n sidebarQuery,\n sidebarReorderPin,\n sidebarTogglePin,\n t,\n tApp,\n ]);\n\n const environment = useMemo(() => {\n const meta = import.meta as unknown as { env?: Record<string, unknown> };\n if (meta.env?.DEV === true) {\n return 'dev' as const;\n }\n return 'prod' as const;\n }, []);\n\n const handleSignOut = useCallback(() => {\n if (isSigningOut) {\n return;\n }\n\n type LogoutMutation = MutationParameters & {\n response: LogoutResponse;\n variables: LogoutVariables;\n };\n\n setIsSigningOut(true);\n\n const runSignOut = async (): Promise<void> => {\n try {\n const config = await authConfig.logout.load();\n await new Promise<void>((resolve, reject) => {\n commitMutation<LogoutMutation>(relayEnvironment, {\n mutation: config.logoutMutation,\n variables: {},\n onCompleted: () => {\n resolve();\n },\n onError: (error) => {\n reject(error);\n },\n });\n });\n localStorage.removeItem('auth_token');\n localStorage.removeItem('remember_me');\n resetRelayStore();\n routing?.history.push({ pathname: getBackofficeLoginPath(basePath) });\n } finally {\n setIsSigningOut(false);\n }\n };\n\n runSignOut().catch(() => {\n /* noop */\n });\n }, [authConfig.logout, basePath, isSigningOut, relayEnvironment, routing]);\n\n const viewer = authStatus?.me ?? null;\n const sidebarProfile = useMemo(() => {\n return mapViewerToSidebarProfileView({\n viewer,\n unknownUserLabel: t('sidebar.profile.unknownUser'),\n });\n }, [t, viewer]);\n\n const sidebarFooter = (\n <SidebarProfileMenu\n collapsed={false}\n viewer={sidebarProfile}\n labels={{\n sectionTitle: t('sidebar.profile.title'),\n menuAriaLabel: t('sidebar.profile.menuAriaLabel'),\n signOut: t('sidebar.profile.actions.signOut'),\n }}\n onSignOut={handleSignOut}\n isSigningOut={isSigningOut}\n />\n );\n\n const mobileSidebarFooter = (\n <SidebarProfileMenu\n collapsed={false}\n viewer={sidebarProfile}\n labels={{\n sectionTitle: t('sidebar.profile.title'),\n menuAriaLabel: t('sidebar.profile.menuAriaLabel'),\n signOut: t('sidebar.profile.actions.signOut'),\n }}\n onSignOut={handleSignOut}\n isSigningOut={isSigningOut}\n />\n );\n\n let contentNode: JSX.Element | null = null;\n if (topbarTarget != null) {\n contentNode = (\n <BackofficeContentBoundary>{children}</BackofficeContentBoundary>\n );\n }\n\n const sidebarSearchNode = (\n <GlobalSearchInput\n value={sidebarQuery}\n onChange={setSidebarQuery}\n placeholder={t('sidebar.search.placeholder')}\n ariaLabel={t('sidebar.search.placeholder')}\n />\n );\n\n return (\n <ToastProvider>\n <AdminShellLayout\n sidebar={{\n sections,\n header: <EnvironmentBadge environment={environment} />,\n search: sidebarSearchNode,\n footer: sidebarFooter,\n isCollapsed: isSidebarCollapsed,\n onCollapsedChange: setIsSidebarCollapsed,\n collapseToggleLabel: t('sidebar.actions.collapseSidebar'),\n expandToggleLabel: t('sidebar.actions.expandSidebar'),\n navigationAriaLabel: t('sidebar.navigationAriaLabel'),\n }}\n mobileSidebar={{\n sections: mobileSections,\n header: <EnvironmentBadge environment={environment} />,\n search: sidebarSearchNode,\n footer: mobileSidebarFooter,\n isCollapsed: false,\n hideCollapseToggle: true,\n navigationAriaLabel: t('sidebar.navigationAriaLabel'),\n }}\n topbar={{\n breadcrumb: <div ref={setTopbarTarget} />,\n }}\n contentScrollMode=\"contained\"\n >\n <BackofficePermissionsProvider permissions={permissions}>\n <BackofficeTopbarPortalContextProvider\n value={{\n target: topbarTarget,\n dashboardHref: basePath,\n dashboardLabel: t('sidebar.items.dashboard'),\n }}\n >\n {contentNode}\n </BackofficeTopbarPortalContextProvider>\n </BackofficePermissionsProvider>\n </AdminShellLayout>\n </ToastProvider>\n );\n};\n\ntype LayoutWithPermissionsProps = {\n children: ReactNode;\n permissionsQuery: GraphQLTaggedNode;\n prepared: PreloadedQuery<OperationType>;\n authStatus?: {\n isLoggedIn?: boolean | null;\n me?: BackofficeViewerIdentity | null;\n } | null;\n activeGroupId?: string | null;\n};\n\nconst LayoutWithPermissions = ({\n children,\n permissionsQuery,\n prepared,\n authStatus,\n activeGroupId,\n}: LayoutWithPermissionsProps): JSX.Element => {\n const permissions = usePreloadedQuery(permissionsQuery, prepared);\n\n return (\n <BackofficeLayoutShell\n permissions={permissions}\n authStatus={authStatus}\n activeGroupId={activeGroupId}\n >\n {children}\n </BackofficeLayoutShell>\n );\n};\n\nexport const BackofficeLayoutPage = ({\n children,\n permissionsQuery,\n prepared,\n authStatus,\n activeGroupId,\n}: BackofficeLayoutPageProps): JSX.Element => {\n if (permissionsQuery != null && prepared != null) {\n return (\n <LayoutWithPermissions\n permissionsQuery={permissionsQuery}\n prepared={prepared}\n authStatus={authStatus}\n activeGroupId={activeGroupId}\n >\n {children}\n </LayoutWithPermissions>\n );\n }\n\n return (\n <BackofficeLayoutShell\n permissions={null}\n authStatus={authStatus}\n activeGroupId={activeGroupId}\n >\n {children}\n </BackofficeLayoutShell>\n );\n};\n\nexport default BackofficeLayoutPage;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTabsItems.js","names":[],"sources":["../../../../src/pages/detail/buildTabsItems.ts"],"sourcesContent":["import type { BackofficeDetailPageRouteSpec } from '@plumile/backoffice-core/types.js';\nimport type {
|
|
1
|
+
{"version":3,"file":"buildTabsItems.js","names":[],"sources":["../../../../src/pages/detail/buildTabsItems.ts"],"sourcesContent":["import type { BackofficeDetailPageRouteSpec } from '@plumile/backoffice-core/types.js';\nimport type { TabItem } from '@plumile/ui/atomic/molecules/tabs/Tabs.js';\nimport type { TFunction } from 'i18next';\n\ntype DetailRoutePage<Node> = BackofficeDetailPageRouteSpec<Node>;\n\nexport const buildTabsItems = <Node>(input: {\n pages: readonly DetailRoutePage<Node>[];\n id: string;\n tApp: TFunction;\n detailPageHref: (id: string, pageId: string) => string;\n}): readonly TabItem[] => {\n return input.pages.map((page) => {\n return {\n id: page.id,\n label: page.label(input.tApp),\n to: input.detailPageHref(input.id, page.id),\n };\n });\n};\n"],"mappings":";AAMA,IAAa,KAAwB,MAM5B,EAAM,MAAM,KAAK,OACf;CACL,IAAI,EAAK;CACT,OAAO,EAAK,MAAM,EAAM,KAAK;CAC7B,IAAI,EAAM,eAAe,EAAM,IAAI,EAAK,GAAG;CAC5C,EACD"}
|
package/lib/esm/style.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.w8yhmy1:hover:not(:disabled){background-color:color-mix(in srgb, var(--_1ie8xnc59) 8%, transparent);color:var(--_1ie8xnc5a);border-color:var(--_1ie8xnc5a)}.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}.
|
|
1
|
+
.w8yhmy1:hover:not(:disabled){background-color:color-mix(in srgb, var(--_1ie8xnc59) 8%, transparent);color:var(--_1ie8xnc5a);border-color:var(--_1ie8xnc5a)}.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}.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}._13200uy0{grid-template-columns:minmax(0,1fr) repeat(4,minmax(0,auto))}.u4nszr0{min-height:92px}.u4nszr0:hover{border-color:var(--_1ie8xnc4u);background-color:var(--_1ie8xnc4l);transform:translateY(-1px)}.u4nszr0:focus-visible{outline:2px solid var(--_1ie8xnc4e);outline-offset:2px}._1xws1b00{color:var(--_1ie8xnc1bd)}._1xws1b00:hover:not(:disabled){background-color:var(--_1ie8xnc1be);color:var(--_1ie8xnc1bf)}._1xws1b00:focus-visible{box-shadow:var(--_1ie8xnc1bg);outline:none}._1xws1b00:disabled{cursor:not-allowed;opacity:.6}._1q232kj0{grid-template-columns:auto minmax(0,1fr);display:inline-grid}qbwcuem qbwcuek txvbqbyo5 txvbqbzlq txvbqb10iy txvbqbvv1 txvbqbdsb txvbqbey txvbqbjtp txvbqbfet txvbqbtcr txvbqb19c9 txvbqb196d txvbqb17u txvbqb2et txvbqb1w1 txvbqb2is txvbqbfd0 txvbqbm67 txvbqb3f txvbqb7g txvbqb75 txvbqb7t qbwcuel txvbqb1bw9 txvbqb1aeh txvbqb1b5d txvbqb1b7d qbwcue0 txvbqb1cb0 txvbqb1cws:hover .kk18lv0{color:var(--_1ie8xnc59)}@keyframes _11exksg0{0%{transform:translate(-120%)}60%{transform:translate(30%)}to{transform:translate(120%)}}._11exksg1{height:3px}._11exksg2{background:linear-gradient(90deg, var(--_1ie8xnc4f) 0%, var(--_1ie8xnc4e) 60%, var(--_1ie8xnc4f) 100%);animation:1.1s ease-in-out infinite _11exksg0}._8o9eh80:focus-visible{box-shadow:inset 0 0 0 2px var(--_1ie8xnc4e);outline:none}
|
|
2
2
|
/*$vite$:1*/
|
|
@@ -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;
|
|
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,GAAI,0BAG/B,sBAAsB,KAAG,GAAG,CAAC,OAAO,GAAG,IA8BzC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authRefreshNotice.css.d.ts","sourceRoot":"","sources":["../../../src/auth/authRefreshNotice.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"authRefreshNotice.css.d.ts","sourceRoot":"","sources":["../../../src/auth/authRefreshNotice.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,QAUf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeDetailErrorList.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailErrorList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeDetailErrorList.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailErrorList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAUjC,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,gCAIvC,8BAA8B,KAAG,GAAG,CAAC,OAAO,GAAG,IAsCjD,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
|
|
@@ -4,7 +4,8 @@ export type BackofficeDetailFlagTagProps = {
|
|
|
4
4
|
tone: TagTone;
|
|
5
5
|
icon?: ReactNode;
|
|
6
6
|
label: string;
|
|
7
|
+
className?: string;
|
|
7
8
|
};
|
|
8
|
-
export declare const BackofficeDetailFlagTag: ({ tone, icon, label, }: BackofficeDetailFlagTagProps) => JSX.Element;
|
|
9
|
+
export declare const BackofficeDetailFlagTag: ({ tone, icon, label, className, }: BackofficeDetailFlagTagProps) => JSX.Element;
|
|
9
10
|
export default BackofficeDetailFlagTag;
|
|
10
11
|
//# sourceMappingURL=BackofficeDetailFlagTag.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeDetailFlagTag.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailFlagTag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeDetailFlagTag.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailFlagTag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMjD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAEvE,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,mCAKrC,4BAA4B,KAAG,GAAG,CAAC,OAQrC,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeDetailPrimitives.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailPrimitives.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeDetailPrimitives.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailPrimitives.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAyBvD,QAAA,MAAM,IAAI;;;;;;;;;CAUM,CAAC;AAEjB,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,iBAAiB,EAAE,KAoC/B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,KA+FxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAgEpC,CAAC"}
|
|
@@ -6,7 +6,8 @@ export type BackofficeDetailTaggedValueProps = {
|
|
|
6
6
|
tone?: BackofficeBadgeTone;
|
|
7
7
|
} | null;
|
|
8
8
|
value: ReactNode;
|
|
9
|
+
className?: string;
|
|
9
10
|
};
|
|
10
|
-
export declare const BackofficeDetailTaggedValue: ({ tag, value, }: BackofficeDetailTaggedValueProps) => JSX.Element;
|
|
11
|
+
export declare const BackofficeDetailTaggedValue: ({ tag, value, className, }: BackofficeDetailTaggedValueProps) => JSX.Element;
|
|
11
12
|
export default BackofficeDetailTaggedValue;
|
|
12
13
|
//# sourceMappingURL=BackofficeDetailTaggedValue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeDetailTaggedValue.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailTaggedValue.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeDetailTaggedValue.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeDetailTaggedValue.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAG7E,MAAM,MAAM,gCAAgC,GAAG;IAC7C,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,mBAAmB,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,4BAIzC,gCAAgC,KAAG,GAAG,CAAC,OAQzC,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeEnumLabel.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeEnumLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeEnumLabel.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeEnumLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,MAAM,MAAM,wBAAwB,CAAC,MAAM,SAAS,MAAM,IAAI;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM,SAAS,MAAM,EAAE,kCAIxD,wBAAwB,CAAC,MAAM,CAAC,KAAG,GAAG,CAAC,OAUzC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeLifecycleTimelineSection.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeLifecycleTimelineSection.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeLifecycleTimelineSection.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeLifecycleTimelineSection.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMjD,MAAM,MAAM,4BAA4B,GACpC,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,4BAA4B,CAAC;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAAI,6CAKhD,uCAAuC,KAAG,GAAG,CAAC,OA4BhD,CAAC;AAEF,eAAe,kCAAkC,CAAC"}
|
|
@@ -3,7 +3,8 @@ export type BackofficeReferenceValueProps = {
|
|
|
3
3
|
readonly kind: string;
|
|
4
4
|
readonly value: ReactNode | null | undefined;
|
|
5
5
|
readonly emptyLabel?: string;
|
|
6
|
+
readonly className?: string;
|
|
6
7
|
};
|
|
7
|
-
export declare const BackofficeReferenceValue: ({ kind, value, emptyLabel, }: BackofficeReferenceValueProps) => JSX.Element;
|
|
8
|
+
export declare const BackofficeReferenceValue: ({ kind, value, emptyLabel, className, }: BackofficeReferenceValueProps) => JSX.Element;
|
|
8
9
|
export default BackofficeReferenceValue;
|
|
9
10
|
//# sourceMappingURL=BackofficeReferenceValue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeReferenceValue.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeReferenceValue.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeReferenceValue.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeReferenceValue.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKjD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,yCAKtC,6BAA6B,KAAG,GAAG,CAAC,OAWtC,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type JSX, type ReactNode } from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { MetricTone } from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';
|
|
3
3
|
export type BackofficeRelationSummaryItem = {
|
|
4
4
|
readonly id: string;
|
|
5
5
|
readonly label: string;
|
|
6
6
|
readonly count?: number | null;
|
|
7
7
|
readonly href?: string;
|
|
8
8
|
readonly description?: ReactNode;
|
|
9
|
-
readonly tone?:
|
|
9
|
+
readonly tone?: MetricTone;
|
|
10
10
|
};
|
|
11
11
|
export type BackofficeRelationsSummaryGridProps = {
|
|
12
12
|
readonly title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeRelationsSummaryGrid.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeRelationsSummaryGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeRelationsSummaryGrid.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeRelationsSummaryGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4DAA4D,CAAC;AAK7F,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC1D,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,mBAG5C,mCAAmC,KAAG,GAAG,CAAC,OAAO,GAAG,IAuCtD,CAAC;AAEF,eAAe,8BAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeStatusGroup.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeStatusGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeStatusGroup.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeStatusGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,eAEnC,0BAA0B,KAAG,GAAG,CAAC,OAEnC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { type JSX } from 'react';
|
|
2
|
-
|
|
3
|
-
export type BackofficeStatusMeta
|
|
4
|
-
readonly label: string;
|
|
5
|
-
readonly tone: BackofficeStatusMetaTone;
|
|
6
|
-
};
|
|
2
|
+
import { type BackofficeStatusMeta, type BackofficeStatusMetaTone } from '@plumile/ui/backoffice/molecules/backoffice_status_meta_badge/BackofficeStatusMetaBadge.js';
|
|
3
|
+
export type { BackofficeStatusMeta, BackofficeStatusMetaTone };
|
|
7
4
|
export type BackofficeStatusMetaBadgeProps = {
|
|
8
5
|
readonly status: BackofficeStatusMeta | null | undefined;
|
|
9
6
|
readonly emptyLabel?: string;
|
|
7
|
+
readonly className?: string;
|
|
10
8
|
};
|
|
11
|
-
export declare const BackofficeStatusMetaBadge: ({ status, emptyLabel, }: BackofficeStatusMetaBadgeProps) => JSX.Element;
|
|
9
|
+
export declare const BackofficeStatusMetaBadge: ({ status, emptyLabel, className, }: BackofficeStatusMetaBadgeProps) => JSX.Element;
|
|
12
10
|
export default BackofficeStatusMetaBadge;
|
|
13
11
|
//# sourceMappingURL=BackofficeStatusMetaBadge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeStatusMetaBadge.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeStatusMetaBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeStatusMetaBadge.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeStatusMetaBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,4FAA4F,CAAC;AAIpG,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,CAAC;AAE/D,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,oCAIvC,8BAA8B,KAAG,GAAG,CAAC,OAUvC,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeTokenUsageBreakdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeTokenUsageBreakdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,MAAM,MAAM,kCAAkC,GAAG;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,kEAQ3C,kCAAkC,KAAG,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"BackofficeTokenUsageBreakdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeTokenUsageBreakdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,MAAM,MAAM,kCAAkC,GAAG;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,kEAQ3C,kCAAkC,KAAG,GAAG,CAAC,OA8B3C,CAAC;AAEF,eAAe,6BAA6B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type JSX, type ReactNode } from 'react';
|
|
2
|
-
import { type
|
|
2
|
+
import { type MetricTone } from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';
|
|
3
3
|
export type BackofficeMoneyValue = {
|
|
4
4
|
readonly amount: string | number;
|
|
5
5
|
readonly currency: string;
|
|
@@ -13,10 +13,18 @@ export type BackofficeUsageCostBreakdownRow = {
|
|
|
13
13
|
readonly eventsCount?: ReactNode;
|
|
14
14
|
readonly quantity?: ReactNode;
|
|
15
15
|
};
|
|
16
|
+
export type BackofficeUsageCostBreakdownTotal = {
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly label: string;
|
|
19
|
+
readonly value: ReactNode;
|
|
20
|
+
readonly hint?: ReactNode;
|
|
21
|
+
readonly tone?: MetricTone;
|
|
22
|
+
readonly copyValue?: string;
|
|
23
|
+
};
|
|
16
24
|
export type BackofficeUsageCostBreakdownProps = {
|
|
17
25
|
readonly title: string;
|
|
18
26
|
readonly rows: readonly BackofficeUsageCostBreakdownRow[];
|
|
19
|
-
readonly totals?: readonly
|
|
27
|
+
readonly totals?: readonly BackofficeUsageCostBreakdownTotal[];
|
|
20
28
|
readonly emptyLabel?: string;
|
|
21
29
|
readonly columnLabels?: {
|
|
22
30
|
readonly name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeUsageCostBreakdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeUsageCostBreakdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BackofficeUsageCostBreakdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/BackofficeUsageCostBreakdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,4DAA4D,CAAC;AAOpE,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,iCAAiC,EAAE,CAAC;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,oDAM1C,iCAAiC,KAAG,GAAG,CAAC,OAsE1C,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detailPayloadUtils.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/detailPayloadUtils.ts"],"names":[],"mappings":"AAGA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"detailPayloadUtils.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/detail/detailPayloadUtils.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CASrE"}
|