@object-ui/app-shell 6.2.3 → 7.1.0
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/CHANGELOG.md +1229 -0
- package/README.md +292 -0
- package/dist/assistant/assistantBus.d.ts +72 -0
- package/dist/assistant/assistantBus.js +133 -0
- package/dist/chrome/CommandPalette.d.ts +1 -1
- package/dist/chrome/CommandPalette.js +26 -22
- package/dist/chrome/ConditionalAuthWrapper.d.ts +1 -1
- package/dist/chrome/ConsoleToaster.d.ts +1 -1
- package/dist/chrome/ConsoleToaster.js +3 -1
- package/dist/chrome/ErrorBoundary.d.ts +1 -1
- package/dist/chrome/KeyboardShortcutsDialog.d.ts +1 -1
- package/dist/chrome/KeyboardShortcutsDialog.js +16 -5
- package/dist/chrome/LoadingScreen.d.ts +1 -1
- package/dist/chrome/LoadingScreen.js +22 -26
- package/dist/chrome/RouteFader.d.ts +1 -1
- package/dist/chrome/ThemeProvider.d.ts +1 -1
- package/dist/components/ManagedByBadge.d.ts +1 -1
- package/dist/console/AppContent.d.ts +1 -1
- package/dist/console/AppContent.js +184 -39
- package/dist/console/ConsoleShell.d.ts +7 -7
- package/dist/console/ConsoleShell.js +32 -3
- package/dist/console/ai/AiChatPage.d.ts +88 -1
- package/dist/console/ai/AiChatPage.js +747 -66
- package/dist/console/ai/ConversationsSidebar.d.ts +26 -1
- package/dist/console/ai/ConversationsSidebar.js +149 -34
- package/dist/console/ai/LiveCanvas.d.ts +28 -0
- package/dist/console/ai/LiveCanvas.js +80 -0
- package/dist/console/ai/reconcileTurn.d.ts +8 -0
- package/dist/console/ai/reconcileTurn.js +20 -0
- package/dist/console/auth/AuthPageLayout.d.ts +1 -1
- package/dist/console/auth/ForgotPasswordPage.d.ts +1 -1
- package/dist/console/auth/LoginPage.d.ts +1 -1
- package/dist/console/auth/RegisterPage.d.ts +1 -1
- package/dist/console/auth/RegisterPage.js +23 -3
- package/dist/console/cloud-connection/CloudConnectionPanel.d.ts +1 -0
- package/dist/console/cloud-connection/CloudConnectionPanel.js +169 -0
- package/dist/console/home/AppCard.d.ts +1 -1
- package/dist/console/home/AppCard.js +6 -12
- package/dist/console/home/HomeAppsStrip.d.ts +8 -0
- package/dist/console/home/HomeAppsStrip.js +61 -0
- package/dist/console/home/HomeLayout.d.ts +1 -1
- package/dist/console/home/HomeLayout.js +3 -1
- package/dist/console/home/HomePage.d.ts +1 -2
- package/dist/console/home/HomePage.js +149 -21
- package/dist/console/home/HomeRail.d.ts +22 -0
- package/dist/console/home/HomeRail.js +62 -0
- package/dist/console/home/QuickActions.d.ts +1 -1
- package/dist/console/home/QuickActions.js +3 -11
- package/dist/console/home/RecentApps.d.ts +1 -1
- package/dist/console/home/RecentApps.js +2 -2
- package/dist/console/home/StarredApps.d.ts +1 -1
- package/dist/console/home/StarredApps.js +2 -2
- package/dist/console/marketplace/InstalledListWidget.d.ts +1 -0
- package/dist/console/marketplace/InstalledListWidget.js +93 -0
- package/dist/console/marketplace/MarkdownText.d.ts +1 -1
- package/dist/console/marketplace/MarketplaceAccessDenied.d.ts +1 -1
- package/dist/console/marketplace/MarketplaceInstalledPage.d.ts +8 -14
- package/dist/console/marketplace/MarketplaceInstalledPage.js +14 -66
- package/dist/console/marketplace/MarketplacePackagePage.d.ts +1 -1
- package/dist/console/marketplace/MarketplacePackagePage.js +249 -8
- package/dist/console/marketplace/MarketplacePage.d.ts +1 -1
- package/dist/console/marketplace/MarketplacePage.js +60 -3
- package/dist/console/marketplace/PackageIcon.d.ts +1 -1
- package/dist/console/marketplace/PluginDisclosure.d.ts +14 -0
- package/dist/console/marketplace/PluginDisclosure.js +38 -0
- package/dist/console/marketplace/marketplaceApi.d.ts +123 -0
- package/dist/console/marketplace/marketplaceApi.js +254 -1
- package/dist/console/organizations/CreateWorkspaceDialog.d.ts +1 -1
- package/dist/console/organizations/OrganizationsLayout.d.ts +1 -1
- package/dist/console/organizations/OrganizationsPage.d.ts +1 -1
- package/dist/console/organizations/manage/AcceptInvitationPage.d.ts +1 -1
- package/dist/console/organizations/manage/InvitationsPage.d.ts +1 -1
- package/dist/console/organizations/manage/InviteMemberDialog.d.ts +1 -1
- package/dist/console/organizations/manage/MembersPage.d.ts +1 -1
- package/dist/console/organizations/manage/OrganizationLayout.d.ts +1 -1
- package/dist/console/organizations/manage/SettingsPage.d.ts +1 -1
- package/dist/context/CommandPaletteProvider.d.ts +44 -0
- package/dist/context/CommandPaletteProvider.js +71 -0
- package/dist/context/FavoritesProvider.d.ts +1 -1
- package/dist/context/NavigationContext.d.ts +1 -1
- package/dist/context/RecentItemsProvider.d.ts +2 -2
- package/dist/context/UserStateAdapters.d.ts +1 -1
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.js +1 -0
- package/dist/hooks/index.d.ts +5 -2
- package/dist/hooks/index.js +4 -1
- package/dist/hooks/useActionModal.d.ts +53 -0
- package/dist/hooks/useActionModal.js +111 -0
- package/dist/hooks/useChatConversation.d.ts +137 -4
- package/dist/hooks/useChatConversation.js +316 -25
- package/dist/hooks/useConsoleActionRuntime.d.ts +70 -0
- package/dist/hooks/useConsoleActionRuntime.js +564 -0
- package/dist/hooks/useConversationList.js +61 -3
- package/dist/hooks/useHomeInbox.d.ts +13 -0
- package/dist/hooks/useHomeInbox.js +142 -0
- package/dist/hooks/useNavPins.js +17 -23
- package/dist/hooks/useNavigationSync.d.ts +33 -0
- package/dist/hooks/useNavigationSync.js +98 -12
- package/dist/hooks/useReconcileOnError.d.ts +40 -0
- package/dist/hooks/useReconcileOnError.js +37 -0
- package/dist/hooks/useRecordApprovals.d.ts +18 -19
- package/dist/hooks/useRecordApprovals.js +24 -40
- package/dist/hooks/useResponsiveSidebar.js +14 -5
- package/dist/hooks/useSettleSignal.d.ts +19 -0
- package/dist/hooks/useSettleSignal.js +20 -0
- package/dist/hooks/useTrackRouteAsRecent.js +35 -0
- package/dist/hooks/useUrlOverlay.d.ts +62 -0
- package/dist/hooks/useUrlOverlay.js +88 -0
- package/dist/index.d.ts +18 -8
- package/dist/index.js +17 -5
- package/dist/layout/ActivityFeed.d.ts +1 -1
- package/dist/layout/AppHeader.d.ts +3 -2
- package/dist/layout/AppHeader.js +237 -72
- package/dist/layout/AppSidebar.d.ts +2 -1
- package/dist/layout/AppSidebar.js +26 -46
- package/dist/layout/AppSwitcher.d.ts +2 -1
- package/dist/layout/AppSwitcher.js +9 -5
- package/dist/layout/AuthPageLayout.d.ts +1 -1
- package/dist/layout/ConnectionStatus.d.ts +1 -1
- package/dist/layout/ConnectionStatus.js +9 -6
- package/dist/layout/ConsoleChatbotFab.d.ts +19 -1
- package/dist/layout/ConsoleChatbotFab.js +16 -2
- package/dist/layout/ConsoleFloatingChatbot.d.ts +34 -2
- package/dist/layout/ConsoleFloatingChatbot.js +391 -41
- package/dist/layout/ConsoleLayout.d.ts +1 -1
- package/dist/layout/ConsoleLayout.js +27 -11
- package/dist/layout/ContextSelectors.d.ts +44 -0
- package/dist/layout/ContextSelectors.js +242 -0
- package/dist/layout/InboxPopover.d.ts +6 -1
- package/dist/layout/InboxPopover.js +25 -6
- package/dist/layout/LocaleSwitcher.d.ts +1 -1
- package/dist/layout/LocalizedSidebarTrigger.d.ts +2 -0
- package/dist/layout/LocalizedSidebarTrigger.js +15 -0
- package/dist/layout/MobileViewSwitcherContext.d.ts +1 -1
- package/dist/layout/ModeToggle.d.ts +1 -1
- package/dist/layout/PageHeader.d.ts +1 -1
- package/dist/layout/UnifiedSidebar.d.ts +2 -1
- package/dist/layout/UnifiedSidebar.js +116 -15
- package/dist/layout/agentPicker.d.ts +56 -0
- package/dist/layout/agentPicker.js +40 -0
- package/dist/observability/index.d.ts +1 -0
- package/dist/observability/index.js +1 -0
- package/dist/observability/settleSignal.d.ts +64 -0
- package/dist/observability/settleSignal.js +131 -0
- package/dist/preview/CommitTimeline.d.ts +15 -0
- package/dist/preview/CommitTimeline.js +82 -0
- package/dist/preview/DraftChangesPanel.d.ts +19 -0
- package/dist/preview/DraftChangesPanel.js +114 -0
- package/dist/preview/DraftPreviewBar.d.ts +8 -0
- package/dist/preview/DraftPreviewBar.js +86 -0
- package/dist/preview/PreviewDraftEmptyState.d.ts +16 -0
- package/dist/preview/PreviewDraftEmptyState.js +47 -0
- package/dist/preview/PreviewModeContext.d.ts +57 -0
- package/dist/preview/PreviewModeContext.js +99 -0
- package/dist/preview/UnpublishedAppBar.d.ts +8 -0
- package/dist/preview/UnpublishedAppBar.js +83 -0
- package/dist/preview/commitHistory.d.ts +28 -0
- package/dist/preview/commitHistory.js +48 -0
- package/dist/preview/draftStatus.d.ts +20 -0
- package/dist/preview/draftStatus.js +27 -0
- package/dist/preview/usePublishAllDrafts.d.ts +18 -0
- package/dist/preview/usePublishAllDrafts.js +106 -0
- package/dist/providers/AdapterProvider.d.ts +1 -1
- package/dist/providers/AdapterProvider.js +6 -1
- package/dist/providers/ExpressionProvider.d.ts +1 -1
- package/dist/providers/MetadataProvider.d.ts +17 -2
- package/dist/providers/MetadataProvider.js +192 -12
- package/dist/runtime-config.d.ts +46 -2
- package/dist/runtime-config.js +39 -2
- package/dist/services/builtinComponents.js +68 -59
- package/dist/skeletons/SkeletonDashboard.d.ts +1 -1
- package/dist/skeletons/SkeletonDetail.d.ts +1 -1
- package/dist/skeletons/SkeletonGrid.d.ts +1 -1
- package/dist/utils/appRoute.d.ts +21 -0
- package/dist/utils/appRoute.js +25 -0
- package/dist/utils/deriveRelatedLists.d.ts +54 -0
- package/dist/utils/deriveRelatedLists.js +91 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/managedByEmptyState.d.ts +8 -1
- package/dist/utils/managedByEmptyState.js +13 -7
- package/dist/utils/preferLocal.d.ts +18 -0
- package/dist/utils/preferLocal.js +24 -0
- package/dist/views/ActionConfirmDialog.d.ts +1 -1
- package/dist/views/ActionConfirmDialog.js +3 -1
- package/dist/views/ActionParamDialog.d.ts +6 -1
- package/dist/views/ActionParamDialog.js +9 -3
- package/dist/views/ActionResultDialog.d.ts +13 -0
- package/dist/views/ActionResultDialog.js +134 -0
- package/dist/views/ComponentNavView.d.ts +14 -1
- package/dist/views/CreateViewDialog.d.ts +1 -1
- package/dist/views/DashboardConfigPanel.d.ts +28 -0
- package/dist/views/DashboardConfigPanel.js +81 -0
- package/dist/views/DashboardView.d.ts +4 -3
- package/dist/views/DashboardView.js +38 -239
- package/dist/views/FlowRunner.d.ts +31 -0
- package/dist/views/FlowRunner.js +121 -0
- package/dist/views/InterfaceListPage.d.ts +49 -0
- package/dist/views/InterfaceListPage.js +347 -0
- package/dist/views/MetadataInspector.d.ts +2 -2
- package/dist/views/ObjectView.d.ts +1 -1
- package/dist/views/ObjectView.js +209 -532
- package/dist/views/PageView.d.ts +8 -3
- package/dist/views/PageView.js +45 -32
- package/dist/views/RecordDetailView.d.ts +1 -1
- package/dist/views/RecordDetailView.js +363 -148
- package/dist/views/RecordFormPage.d.ts +1 -1
- package/dist/views/RecordFormPage.js +26 -1
- package/dist/views/ReportConfigPanel.d.ts +37 -0
- package/dist/views/ReportConfigPanel.js +85 -0
- package/dist/views/ReportView.d.ts +1 -1
- package/dist/views/ReportView.js +116 -7
- package/dist/views/RuntimeDraftBar.d.ts +30 -0
- package/dist/views/RuntimeDraftBar.js +112 -0
- package/dist/views/ScreenView.d.ts +70 -0
- package/dist/views/ScreenView.js +73 -0
- package/dist/views/SearchResultsPage.d.ts +1 -1
- package/dist/views/SearchResultsPage.js +8 -18
- package/dist/views/ViewConfigPanel.d.ts +24 -17
- package/dist/views/ViewConfigPanel.js +121 -77
- package/dist/views/index.d.ts +1 -1
- package/dist/views/index.js +1 -1
- package/dist/views/metadata-admin/AuditPanel.d.ts +28 -0
- package/dist/views/metadata-admin/AuditPanel.js +79 -0
- package/dist/views/metadata-admin/DiagnosticsPage.d.ts +20 -0
- package/dist/views/metadata-admin/DiagnosticsPage.js +69 -0
- package/dist/views/metadata-admin/DirectoryPage.d.ts +16 -1
- package/dist/views/metadata-admin/DirectoryPage.js +101 -24
- package/dist/views/metadata-admin/DraftReviewPanel.d.ts +33 -0
- package/dist/views/metadata-admin/DraftReviewPanel.js +77 -0
- package/dist/views/metadata-admin/EmbeddedItemEditor.d.ts +17 -1
- package/dist/views/metadata-admin/EmbeddedItemEditor.js +15 -8
- package/dist/views/metadata-admin/JsonSourceEditor.d.ts +39 -0
- package/dist/views/metadata-admin/JsonSourceEditor.js +196 -0
- package/dist/views/metadata-admin/LayeredDiff.d.ts +39 -1
- package/dist/views/metadata-admin/LayeredDiff.js +171 -5
- package/dist/views/metadata-admin/MetadataDetailDrawer.d.ts +15 -1
- package/dist/views/metadata-admin/MetadataTypeActions.d.ts +48 -0
- package/dist/views/metadata-admin/MetadataTypeActions.js +165 -0
- package/dist/views/metadata-admin/PackagesPage.d.ts +18 -0
- package/dist/views/metadata-admin/PackagesPage.js +403 -0
- package/dist/views/metadata-admin/PageShell.d.ts +1 -1
- package/dist/views/metadata-admin/PageShell.js +9 -4
- package/dist/views/metadata-admin/PermissionMatrixEditor.d.ts +35 -1
- package/dist/views/metadata-admin/QuickFind.d.ts +21 -1
- package/dist/views/metadata-admin/QuickFind.js +6 -3
- package/dist/views/metadata-admin/RelatedPanel.d.ts +24 -1
- package/dist/views/metadata-admin/RelatedPanel.js +20 -18
- package/dist/views/metadata-admin/ResourceEditPage.d.ts +40 -1
- package/dist/views/metadata-admin/ResourceEditPage.js +1250 -60
- package/dist/views/metadata-admin/ResourceHistoryPage.d.ts +39 -1
- package/dist/views/metadata-admin/ResourceHistoryPage.js +66 -16
- package/dist/views/metadata-admin/ResourceListPage.d.ts +13 -1
- package/dist/views/metadata-admin/ResourceListPage.js +258 -30
- package/dist/views/metadata-admin/ResourceRouter.d.ts +23 -1
- package/dist/views/metadata-admin/SchemaForm.d.ts +34 -1
- package/dist/views/metadata-admin/SchemaForm.js +559 -49
- package/dist/views/metadata-admin/StudioHomePage.d.ts +22 -0
- package/dist/views/metadata-admin/StudioHomePage.js +205 -0
- package/dist/views/metadata-admin/anchors.js +255 -24
- package/dist/views/metadata-admin/clientValidation.d.ts +50 -0
- package/dist/views/metadata-admin/clientValidation.js +169 -0
- package/dist/views/metadata-admin/color-variant-field.d.ts +30 -0
- package/dist/views/metadata-admin/color-variant-field.js +38 -0
- package/dist/views/metadata-admin/createDerive.d.ts +75 -0
- package/dist/views/metadata-admin/createDerive.js +179 -0
- package/dist/views/metadata-admin/dashboard-schema.d.ts +12 -0
- package/dist/views/metadata-admin/dashboard-schema.js +80 -0
- package/dist/views/metadata-admin/datasource/DatasourceResourcePage.d.ts +35 -0
- package/dist/views/metadata-admin/datasource/DatasourceResourcePage.js +327 -0
- package/dist/views/metadata-admin/datasource/register.d.ts +1 -0
- package/dist/views/metadata-admin/datasource/register.js +24 -0
- package/dist/views/metadata-admin/default-inspector-registry.d.ts +49 -0
- package/dist/views/metadata-admin/default-inspector-registry.js +8 -0
- package/dist/views/metadata-admin/default-schemas.js +115 -10
- package/dist/views/metadata-admin/external/ExternalDatasourcePanel.d.ts +27 -0
- package/dist/views/metadata-admin/external/ExternalDatasourcePanel.js +69 -0
- package/dist/views/metadata-admin/external/ImportObjectDialog.d.ts +27 -0
- package/dist/views/metadata-admin/external/ImportObjectDialog.js +77 -0
- package/dist/views/metadata-admin/external/SchemaBrowser.d.ts +16 -0
- package/dist/views/metadata-admin/external/SchemaBrowser.js +74 -0
- package/dist/views/metadata-admin/external/ValidationPanel.d.ts +16 -0
- package/dist/views/metadata-admin/external/ValidationPanel.js +68 -0
- package/dist/views/metadata-admin/external/api.d.ts +100 -0
- package/dist/views/metadata-admin/external/api.js +124 -0
- package/dist/views/metadata-admin/i18n.d.ts +1 -0
- package/dist/views/metadata-admin/i18n.js +1252 -2
- package/dist/views/metadata-admin/index.d.ts +8 -5
- package/dist/views/metadata-admin/index.js +12 -2
- package/dist/views/metadata-admin/inspector-registry.d.ts +51 -0
- package/dist/views/metadata-admin/inspector-registry.js +11 -0
- package/dist/views/metadata-admin/inspectors/ActionDefaultInspector.d.ts +30 -0
- package/dist/views/metadata-admin/inspectors/ActionDefaultInspector.js +180 -0
- package/dist/views/metadata-admin/inspectors/AppNavInspector.d.ts +16 -0
- package/dist/views/metadata-admin/inspectors/AppNavInspector.js +110 -0
- package/dist/views/metadata-admin/inspectors/ConditionBuilder.d.ts +29 -0
- package/dist/views/metadata-admin/inspectors/ConditionBuilder.js +154 -0
- package/dist/views/metadata-admin/inspectors/DashboardDefaultInspector.d.ts +28 -0
- package/dist/views/metadata-admin/inspectors/DashboardDefaultInspector.js +110 -0
- package/dist/views/metadata-admin/inspectors/DashboardWidgetInspector.d.ts +18 -0
- package/dist/views/metadata-admin/inspectors/DashboardWidgetInspector.js +139 -0
- package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.d.ts +21 -0
- package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.js +221 -0
- package/dist/views/metadata-admin/inspectors/FlowEdgeInspector.d.ts +16 -0
- package/dist/views/metadata-admin/inspectors/FlowEdgeInspector.js +126 -0
- package/dist/views/metadata-admin/inspectors/FlowInspector.d.ts +12 -0
- package/dist/views/metadata-admin/inspectors/FlowInspector.js +9 -0
- package/dist/views/metadata-admin/inspectors/FlowKeyValueField.d.ts +30 -0
- package/dist/views/metadata-admin/inspectors/FlowKeyValueField.js +125 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.d.ts +18 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.js +40 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeInspector.d.ts +14 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeInspector.js +205 -0
- package/dist/views/metadata-admin/inspectors/FlowObjectListField.d.ts +26 -0
- package/dist/views/metadata-admin/inspectors/FlowObjectListField.js +105 -0
- package/dist/views/metadata-admin/inspectors/FlowReferenceField.d.ts +83 -0
- package/dist/views/metadata-admin/inspectors/FlowReferenceField.js +181 -0
- package/dist/views/metadata-admin/inspectors/FlowStringListField.d.ts +21 -0
- package/dist/views/metadata-admin/inspectors/FlowStringListField.js +60 -0
- package/dist/views/metadata-admin/inspectors/InspectorComboField.d.ts +40 -0
- package/dist/views/metadata-admin/inspectors/InspectorComboField.js +61 -0
- package/dist/views/metadata-admin/inspectors/ObjectDefaultInspector.d.ts +21 -0
- package/dist/views/metadata-admin/inspectors/ObjectDefaultInspector.js +55 -0
- package/dist/views/metadata-admin/inspectors/ObjectFieldInspector.d.ts +23 -0
- package/dist/views/metadata-admin/inspectors/ObjectFieldInspector.js +365 -0
- package/dist/views/metadata-admin/inspectors/PageBlockInspector.d.ts +48 -0
- package/dist/views/metadata-admin/inspectors/PageBlockInspector.js +332 -0
- package/dist/views/metadata-admin/inspectors/ReportDefaultInspector.d.ts +58 -0
- package/dist/views/metadata-admin/inspectors/ReportDefaultInspector.js +218 -0
- package/dist/views/metadata-admin/inspectors/ViewColumnInspector.d.ts +19 -0
- package/dist/views/metadata-admin/inspectors/ViewColumnInspector.js +144 -0
- package/dist/views/metadata-admin/inspectors/ViewInspector.d.ts +19 -0
- package/dist/views/metadata-admin/inspectors/ViewInspector.js +21 -0
- package/dist/views/metadata-admin/inspectors/ViewVariantInspector.d.ts +54 -0
- package/dist/views/metadata-admin/inspectors/ViewVariantInspector.js +191 -0
- package/dist/views/metadata-admin/inspectors/_shared.d.ts +128 -0
- package/dist/views/metadata-admin/inspectors/_shared.js +113 -0
- package/dist/views/metadata-admin/inspectors/datasetFilterCondition.d.ts +24 -0
- package/dist/views/metadata-admin/inspectors/datasetFilterCondition.js +97 -0
- package/dist/views/metadata-admin/inspectors/expression-validate.d.ts +26 -0
- package/dist/views/metadata-admin/inspectors/expression-validate.js +66 -0
- package/dist/views/metadata-admin/inspectors/flow-node-config.d.ts +143 -0
- package/dist/views/metadata-admin/inspectors/flow-node-config.js +506 -0
- package/dist/views/metadata-admin/inspectors/index.d.ts +1 -0
- package/dist/views/metadata-admin/inspectors/index.js +45 -0
- package/dist/views/metadata-admin/inspectors/json-schema-to-fields.d.ts +40 -0
- package/dist/views/metadata-admin/inspectors/json-schema-to-fields.js +227 -0
- package/dist/views/metadata-admin/inspectors/useDatasetFields.d.ts +72 -0
- package/dist/views/metadata-admin/inspectors/useDatasetFields.js +0 -0
- package/dist/views/metadata-admin/issuePath.d.ts +22 -0
- package/dist/views/metadata-admin/issuePath.js +65 -0
- package/dist/views/metadata-admin/mergeServerFields.d.ts +65 -0
- package/dist/views/metadata-admin/mergeServerFields.js +56 -0
- package/dist/views/metadata-admin/package-scope.d.ts +26 -0
- package/dist/views/metadata-admin/package-scope.js +43 -0
- package/dist/views/metadata-admin/preview-registry.d.ts +55 -0
- package/dist/views/metadata-admin/previews/ActionPreview.d.ts +25 -0
- package/dist/views/metadata-admin/previews/ActionPreview.js +238 -0
- package/dist/views/metadata-admin/previews/AddWidgetPicker.d.ts +12 -0
- package/dist/views/metadata-admin/previews/AddWidgetPicker.js +56 -0
- package/dist/views/metadata-admin/previews/AgentPreview.d.ts +24 -0
- package/dist/views/metadata-admin/previews/AgentPreview.js +100 -0
- package/dist/views/metadata-admin/previews/AppNavCanvas.d.ts +31 -0
- package/dist/views/metadata-admin/previews/AppNavCanvas.js +260 -0
- package/dist/views/metadata-admin/previews/AppPreview.d.ts +16 -1
- package/dist/views/metadata-admin/previews/AppPreview.js +23 -14
- package/dist/views/metadata-admin/previews/BookPreview.d.ts +20 -0
- package/dist/views/metadata-admin/previews/BookPreview.js +132 -0
- package/dist/views/metadata-admin/previews/DashboardPreview.d.ts +16 -1
- package/dist/views/metadata-admin/previews/DashboardPreview.js +110 -8
- package/dist/views/metadata-admin/previews/DatasetPreview.d.ts +18 -0
- package/dist/views/metadata-admin/previews/DatasetPreview.js +105 -0
- package/dist/views/metadata-admin/previews/DatasourcePreview.d.ts +23 -0
- package/dist/views/metadata-admin/previews/DatasourcePreview.js +68 -0
- package/dist/views/metadata-admin/previews/EmailTemplatePreview.d.ts +14 -1
- package/dist/views/metadata-admin/previews/FieldStub.d.ts +30 -0
- package/dist/views/metadata-admin/previews/FieldStub.js +104 -0
- package/dist/views/metadata-admin/previews/FieldsListEditor.d.ts +50 -0
- package/dist/views/metadata-admin/previews/FieldsListEditor.js +97 -0
- package/dist/views/metadata-admin/previews/FlowCanvas.d.ts +49 -0
- package/dist/views/metadata-admin/previews/FlowCanvas.js +416 -0
- package/dist/views/metadata-admin/previews/FlowPreview.d.ts +20 -0
- package/dist/views/metadata-admin/previews/FlowPreview.js +120 -0
- package/dist/views/metadata-admin/previews/FlowRunsPanel.d.ts +46 -0
- package/dist/views/metadata-admin/previews/FlowRunsPanel.js +97 -0
- package/dist/views/metadata-admin/previews/FlowSimulatorPanel.d.ts +25 -0
- package/dist/views/metadata-admin/previews/FlowSimulatorPanel.js +204 -0
- package/dist/views/metadata-admin/previews/JobPreview.d.ts +28 -0
- package/dist/views/metadata-admin/previews/JobPreview.js +290 -0
- package/dist/views/metadata-admin/previews/ObjectFormCanvas.d.ts +30 -0
- package/dist/views/metadata-admin/previews/ObjectFormCanvas.js +547 -0
- package/dist/views/metadata-admin/previews/ObjectPreview.d.ts +14 -1
- package/dist/views/metadata-admin/previews/ObjectPreview.js +5 -30
- package/dist/views/metadata-admin/previews/OutlineStrip.d.ts +32 -0
- package/dist/views/metadata-admin/previews/OutlineStrip.js +8 -0
- package/dist/views/metadata-admin/previews/PageBlockCanvas.d.ts +49 -0
- package/dist/views/metadata-admin/previews/PageBlockCanvas.js +510 -0
- package/dist/views/metadata-admin/previews/PagePreview.d.ts +10 -1
- package/dist/views/metadata-admin/previews/PagePreview.js +200 -5
- package/dist/views/metadata-admin/previews/PermissionPreview.d.ts +27 -0
- package/dist/views/metadata-admin/previews/PermissionPreview.js +115 -0
- package/dist/views/metadata-admin/previews/PreviewShell.d.ts +29 -6
- package/dist/views/metadata-admin/previews/PreviewShell.js +16 -3
- package/dist/views/metadata-admin/previews/ReportPreview.d.ts +18 -1
- package/dist/views/metadata-admin/previews/ReportPreview.js +23 -15
- package/dist/views/metadata-admin/previews/RolePreview.d.ts +19 -0
- package/dist/views/metadata-admin/previews/RolePreview.js +14 -0
- package/dist/views/metadata-admin/previews/ScreenPreview.d.ts +38 -0
- package/dist/views/metadata-admin/previews/ScreenPreview.js +61 -0
- package/dist/views/metadata-admin/previews/SkillPreview.d.ts +22 -0
- package/dist/views/metadata-admin/previews/SkillPreview.js +34 -0
- package/dist/views/metadata-admin/previews/ToolPreview.d.ts +25 -0
- package/dist/views/metadata-admin/previews/ToolPreview.js +122 -0
- package/dist/views/metadata-admin/previews/TranslationPreview.d.ts +25 -0
- package/dist/views/metadata-admin/previews/TranslationPreview.js +52 -0
- package/dist/views/metadata-admin/previews/ValidationPreview.d.ts +27 -0
- package/dist/views/metadata-admin/previews/ValidationPreview.js +110 -0
- package/dist/views/metadata-admin/previews/ViewColumnPanes.d.ts +62 -0
- package/dist/views/metadata-admin/previews/ViewColumnPanes.js +140 -0
- package/dist/views/metadata-admin/previews/ViewPreview.d.ts +23 -1
- package/dist/views/metadata-admin/previews/ViewPreview.js +101 -73
- package/dist/views/metadata-admin/previews/block-config.d.ts +82 -0
- package/dist/views/metadata-admin/previews/block-config.js +324 -0
- package/dist/views/metadata-admin/previews/block-types.d.ts +40 -0
- package/dist/views/metadata-admin/previews/block-types.js +110 -0
- package/dist/views/metadata-admin/previews/field-types.d.ts +53 -0
- package/dist/views/metadata-admin/previews/field-types.js +97 -0
- package/dist/views/metadata-admin/previews/flow-canvas-layout.d.ts +102 -0
- package/dist/views/metadata-admin/previews/flow-canvas-layout.js +227 -0
- package/dist/views/metadata-admin/previews/flow-canvas-parts.d.ts +96 -0
- package/dist/views/metadata-admin/previews/flow-canvas-parts.js +373 -0
- package/dist/views/metadata-admin/previews/form-preview.d.ts +24 -0
- package/dist/views/metadata-admin/previews/form-preview.js +29 -0
- package/dist/views/metadata-admin/previews/index.js +43 -0
- package/dist/views/metadata-admin/previews/object-fields-bridge.d.ts +66 -0
- package/dist/views/metadata-admin/previews/object-fields-bridge.js +171 -0
- package/dist/views/metadata-admin/previews/object-fields-io.d.ts +130 -0
- package/dist/views/metadata-admin/previews/object-fields-io.js +243 -0
- package/dist/views/metadata-admin/previews/screen-spec.d.ts +43 -0
- package/dist/views/metadata-admin/previews/screen-spec.js +108 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-types.d.ts +102 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-types.js +2 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-validate.d.ts +15 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-validate.js +185 -0
- package/dist/views/metadata-admin/previews/simulator/flow-simulator.d.ts +73 -0
- package/dist/views/metadata-admin/previews/simulator/flow-simulator.js +426 -0
- package/dist/views/metadata-admin/previews/useDatasetCatalog.d.ts +47 -0
- package/dist/views/metadata-admin/previews/useDatasetCatalog.js +133 -0
- package/dist/views/metadata-admin/previews/useFlowNodePalette.d.ts +44 -0
- package/dist/views/metadata-admin/previews/useFlowNodePalette.js +124 -0
- package/dist/views/metadata-admin/previews/useMetaOptions.d.ts +8 -0
- package/dist/views/metadata-admin/previews/useMetaOptions.js +50 -0
- package/dist/views/metadata-admin/previews/useObjectFields.d.ts +23 -0
- package/dist/views/metadata-admin/previews/useObjectFields.js +79 -0
- package/dist/views/metadata-admin/previews/useObjectOptions.d.ts +8 -0
- package/dist/views/metadata-admin/previews/useObjectOptions.js +43 -0
- package/dist/views/metadata-admin/previews/view-column-io.d.ts +42 -0
- package/dist/views/metadata-admin/previews/view-column-io.js +73 -0
- package/dist/views/metadata-admin/previews/widget-types.d.ts +24 -0
- package/dist/views/metadata-admin/previews/widget-types.js +40 -0
- package/dist/views/metadata-admin/registry.d.ts +140 -19
- package/dist/views/metadata-admin/report-schema.d.ts +26 -0
- package/dist/views/metadata-admin/report-schema.js +121 -0
- package/dist/views/metadata-admin/useMetadata.d.ts +100 -2
- package/dist/views/metadata-admin/useMetadata.js +155 -4
- package/dist/views/metadata-admin/view-item-normalize.d.ts +20 -0
- package/dist/views/metadata-admin/view-item-normalize.js +68 -0
- package/dist/views/metadata-admin/view-schema.d.ts +16 -0
- package/dist/views/metadata-admin/view-schema.js +107 -0
- package/dist/views/metadata-admin/view-variant-model.d.ts +23 -0
- package/dist/views/metadata-admin/view-variant-model.js +64 -0
- package/dist/views/metadata-admin/widgets.d.ts +89 -1
- package/dist/views/metadata-admin/widgets.js +491 -17
- package/dist/views/runtime-metadata-persistence.d.ts +78 -0
- package/dist/views/runtime-metadata-persistence.js +89 -0
- package/dist/views/useOpenRecordList.d.ts +18 -0
- package/dist/views/useOpenRecordList.js +36 -0
- package/dist/views/userFilterUrlState.d.ts +15 -0
- package/dist/views/userFilterUrlState.js +53 -0
- package/dist/views/view-config-adapter.d.ts +38 -0
- package/dist/views/view-config-adapter.js +80 -0
- package/package.json +52 -34
- package/dist/views/DesignDrawer.d.ts +0 -28
- package/dist/views/DesignDrawer.js +0 -51
- package/dist/views/metadata-admin/DesignerEditorWrapper.d.ts +0 -68
- package/dist/views/metadata-admin/DesignerEditorWrapper.js +0 -158
|
@@ -2,12 +2,20 @@
|
|
|
2
2
|
* useRecordApprovals
|
|
3
3
|
*
|
|
4
4
|
* Resolves the approval state for a single record so the detail-view header
|
|
5
|
-
* can surface
|
|
5
|
+
* can surface a status badge and — when the current user is a pending
|
|
6
|
+
* approver — "Approve" / "Reject" actions.
|
|
7
|
+
*
|
|
8
|
+
* Since ADR-0019 an approval is a **flow node** (`type: 'approval'`), not a
|
|
9
|
+
* standalone process: the flow opens the request when it reaches the node,
|
|
10
|
+
* and a decision resumes the run down its `approve` / `reject` edge. There is
|
|
11
|
+
* therefore no manual "submit" or "recall" from the record header — those
|
|
12
|
+
* endpoints were removed. This hook reads the record's requests and lets a
|
|
13
|
+
* pending approver record a decision.
|
|
6
14
|
*
|
|
7
15
|
* Talks directly to the framework REST endpoints under
|
|
8
|
-
* `/api/v1/approvals/*`. Fails open: if the approvals plugin is not
|
|
9
|
-
*
|
|
10
|
-
*
|
|
16
|
+
* `/api/v1/approvals/*`. Fails open: if the approvals plugin is not installed
|
|
17
|
+
* (404 / 501) or the user has no identity, returns inert state so the detail
|
|
18
|
+
* view continues to render normally.
|
|
11
19
|
*/
|
|
12
20
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
13
21
|
function apiBase() {
|
|
@@ -36,7 +44,6 @@ async function fetchJson(path, init) {
|
|
|
36
44
|
export function useRecordApprovals(objectName, recordId, currentUserId) {
|
|
37
45
|
const [loading, setLoading] = useState(false);
|
|
38
46
|
const [available, setAvailable] = useState(true);
|
|
39
|
-
const [processes, setProcesses] = useState([]);
|
|
40
47
|
const [requests, setRequests] = useState([]);
|
|
41
48
|
const unavailableRef = useRef(false);
|
|
42
49
|
const refresh = useCallback(async () => {
|
|
@@ -46,16 +53,12 @@ export function useRecordApprovals(objectName, recordId, currentUserId) {
|
|
|
46
53
|
return;
|
|
47
54
|
setLoading(true);
|
|
48
55
|
try {
|
|
49
|
-
const
|
|
50
|
-
fetchJson(`/approvals/processes?object=${encodeURIComponent(objectName)}&activeOnly=true`),
|
|
51
|
-
fetchJson(`/approvals/requests?object=${encodeURIComponent(objectName)}&recordId=${encodeURIComponent(recordId)}`),
|
|
52
|
-
]);
|
|
53
|
-
setProcesses(procResp?.data ?? []);
|
|
56
|
+
const reqResp = await fetchJson(`/approvals/requests?object=${encodeURIComponent(objectName)}&recordId=${encodeURIComponent(recordId)}`);
|
|
54
57
|
setRequests(reqResp?.data ?? []);
|
|
55
58
|
setAvailable(true);
|
|
56
59
|
}
|
|
57
60
|
catch (err) {
|
|
58
|
-
if (err?.status === 404) {
|
|
61
|
+
if (err?.status === 404 || err?.status === 501) {
|
|
59
62
|
unavailableRef.current = true;
|
|
60
63
|
setAvailable(false);
|
|
61
64
|
}
|
|
@@ -67,7 +70,6 @@ export function useRecordApprovals(objectName, recordId, currentUserId) {
|
|
|
67
70
|
}, [objectName, recordId]);
|
|
68
71
|
useEffect(() => {
|
|
69
72
|
if (!objectName || !recordId) {
|
|
70
|
-
setProcesses([]);
|
|
71
73
|
setRequests([]);
|
|
72
74
|
return;
|
|
73
75
|
}
|
|
@@ -84,30 +86,12 @@ export function useRecordApprovals(objectName, recordId, currentUserId) {
|
|
|
84
86
|
});
|
|
85
87
|
return sorted[0] ?? null;
|
|
86
88
|
}, [requests]);
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const submit = useCallback(async (input) => {
|
|
91
|
-
if (!objectName || !recordId)
|
|
92
|
-
throw new Error('Missing object or record');
|
|
93
|
-
const processName = input?.processName
|
|
94
|
-
?? (processes.length === 1 ? processes[0].name : undefined);
|
|
95
|
-
const row = await fetchJson(`/approvals/requests`, {
|
|
96
|
-
method: 'POST',
|
|
97
|
-
body: JSON.stringify({
|
|
98
|
-
object: objectName,
|
|
99
|
-
recordId,
|
|
100
|
-
...(processName ? { processName } : {}),
|
|
101
|
-
...(input?.comment ? { comment: input.comment } : {}),
|
|
102
|
-
}),
|
|
103
|
-
});
|
|
104
|
-
await refresh();
|
|
105
|
-
return row;
|
|
106
|
-
}, [objectName, recordId, processes, refresh]);
|
|
107
|
-
const recall = useCallback(async (input) => {
|
|
89
|
+
const canDecide = !!pendingRequest && !!currentUserId
|
|
90
|
+
&& (pendingRequest.pending_approvers ?? []).includes(currentUserId);
|
|
91
|
+
const decide = useCallback(async (decision, input) => {
|
|
108
92
|
if (!pendingRequest)
|
|
109
93
|
throw new Error('No pending request');
|
|
110
|
-
const out = await fetchJson(`/approvals/requests/${encodeURIComponent(pendingRequest.id)}
|
|
94
|
+
const out = await fetchJson(`/approvals/requests/${encodeURIComponent(pendingRequest.id)}/${decision}`, {
|
|
111
95
|
method: 'POST',
|
|
112
96
|
body: JSON.stringify({
|
|
113
97
|
...(currentUserId ? { actorId: currentUserId } : {}),
|
|
@@ -115,18 +99,18 @@ export function useRecordApprovals(objectName, recordId, currentUserId) {
|
|
|
115
99
|
}),
|
|
116
100
|
});
|
|
117
101
|
await refresh();
|
|
118
|
-
return out
|
|
102
|
+
return out?.request;
|
|
119
103
|
}, [pendingRequest, currentUserId, refresh]);
|
|
104
|
+
const approve = useCallback((input) => decide('approve', input), [decide]);
|
|
105
|
+
const reject = useCallback((input) => decide('reject', input), [decide]);
|
|
120
106
|
return {
|
|
121
107
|
loading,
|
|
122
108
|
available,
|
|
123
|
-
processes,
|
|
124
109
|
pendingRequest,
|
|
125
110
|
latestRequest,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
recall,
|
|
111
|
+
canDecide,
|
|
112
|
+
approve,
|
|
113
|
+
reject,
|
|
130
114
|
refresh,
|
|
131
115
|
};
|
|
132
116
|
}
|
|
@@ -5,24 +5,33 @@
|
|
|
5
5
|
* Must be called inside a SidebarProvider context.
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
|
-
import { useEffect } from 'react';
|
|
8
|
+
import { useEffect, useRef } from 'react';
|
|
9
9
|
import { useSidebar } from '@object-ui/components';
|
|
10
10
|
/** Tablet breakpoint range: 768px <= width < 1024px */
|
|
11
11
|
const TABLET_MIN = 768;
|
|
12
12
|
const TABLET_MAX = 1024;
|
|
13
13
|
export function useResponsiveSidebar() {
|
|
14
14
|
const { setOpen, isMobile } = useSidebar();
|
|
15
|
+
const setOpenRef = useRef(setOpen);
|
|
15
16
|
useEffect(() => {
|
|
17
|
+
setOpenRef.current = setOpen;
|
|
18
|
+
}, [setOpen]);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (isMobile)
|
|
21
|
+
return undefined;
|
|
22
|
+
let wasTablet = false;
|
|
16
23
|
function handleResize() {
|
|
17
24
|
const width = window.innerWidth;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
const isTablet = width >= TABLET_MIN && width < TABLET_MAX;
|
|
26
|
+
if (isTablet && !wasTablet) {
|
|
27
|
+
// Auto-collapse once when entering tablet width, then preserve manual toggles.
|
|
28
|
+
setOpenRef.current(false);
|
|
21
29
|
}
|
|
30
|
+
wasTablet = isTablet;
|
|
22
31
|
}
|
|
23
32
|
// Run on mount to set initial state
|
|
24
33
|
handleResize();
|
|
25
34
|
window.addEventListener('resize', handleResize);
|
|
26
35
|
return () => window.removeEventListener('resize', handleResize);
|
|
27
|
-
}, [
|
|
36
|
+
}, [isMobile]);
|
|
28
37
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useSettleSignal — React binding for the global in-flight/idle signal.
|
|
3
|
+
*
|
|
4
|
+
* Subscribes to the app-shell settle counter (ADR-0054 C5) so a component can
|
|
5
|
+
* render a global busy indicator or gate UI on "no requests in flight".
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const { pending, idle } = useSettleSignal();
|
|
9
|
+
* return idle ? null : <GlobalSpinner count={pending} />;
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
export interface SettleSignalState {
|
|
14
|
+
/** Number of requests currently in flight. */
|
|
15
|
+
pending: number;
|
|
16
|
+
/** Whether the app is idle (no requests in flight). */
|
|
17
|
+
idle: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare function useSettleSignal(): SettleSignalState;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useSettleSignal — React binding for the global in-flight/idle signal.
|
|
3
|
+
*
|
|
4
|
+
* Subscribes to the app-shell settle counter (ADR-0054 C5) so a component can
|
|
5
|
+
* render a global busy indicator or gate UI on "no requests in flight".
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const { pending, idle } = useSettleSignal();
|
|
9
|
+
* return idle ? null : <GlobalSpinner count={pending} />;
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import { useSyncExternalStore } from 'react';
|
|
14
|
+
import { getPendingRequests, subscribeSettle, } from '../observability/settleSignal';
|
|
15
|
+
export function useSettleSignal() {
|
|
16
|
+
const pending = useSyncExternalStore(subscribeSettle, getPendingRequests,
|
|
17
|
+
// SSR/server snapshot — there is no client request activity yet.
|
|
18
|
+
() => 0);
|
|
19
|
+
return { pending, idle: pending === 0 };
|
|
20
|
+
}
|
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
* /apps/:appName/page/:id
|
|
14
14
|
* /apps/:appName/report/:id
|
|
15
15
|
*
|
|
16
|
+
* It also understands the Studio metadata-admin item routes so that browsing
|
|
17
|
+
* metadata records "recently viewed" entries:
|
|
18
|
+
*
|
|
19
|
+
* /apps/:appName/metadata/:type/:name
|
|
20
|
+
* /apps/:appName/metadata/:type/:name/history
|
|
21
|
+
*
|
|
16
22
|
* Pass `objects` (the list available in the current app) so we can resolve
|
|
17
23
|
* a human-readable label for object routes.
|
|
18
24
|
*
|
|
@@ -25,6 +31,15 @@ const ROUTE_PREFIXES = new Set(['view', 'record', 'page', 'dashboard', 'design',
|
|
|
25
31
|
function titleize(slug) {
|
|
26
32
|
return slug.replace(/[-_]/g, ' ').replace(/\b\w/g, c => c.toUpperCase());
|
|
27
33
|
}
|
|
34
|
+
/** Decode a URL path segment, falling back to the raw value on malformed input. */
|
|
35
|
+
function safeDecode(value) {
|
|
36
|
+
try {
|
|
37
|
+
return decodeURIComponent(value);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
28
43
|
export function useTrackRouteAsRecent({ pathname, appName, objects = [], basePathSegment = 'apps', disabled = false, }) {
|
|
29
44
|
const { addRecentItem } = useRecentItems();
|
|
30
45
|
// Hold `objects` in a ref so we don't re-fire the tracking effect every
|
|
@@ -42,6 +57,26 @@ export function useTrackRouteAsRecent({ pathname, appName, objects = [], basePat
|
|
|
42
57
|
const seg2 = parts[2];
|
|
43
58
|
const seg3 = parts[3];
|
|
44
59
|
const basePath = `/${basePathSegment}/${appName}`;
|
|
60
|
+
// Studio metadata-admin item routes:
|
|
61
|
+
// /apps/:app/metadata/:type/:name (view / edit a metadata item)
|
|
62
|
+
// /apps/:app/metadata/:type/:name/history
|
|
63
|
+
// Record the specific item as recently-viewed. The bare list route
|
|
64
|
+
// (/metadata/:type) and the create route (/metadata/:type/new) are skipped
|
|
65
|
+
// to keep the list focused on concrete resources. Placed before the
|
|
66
|
+
// object-name branch since `metadata` is a route prefix, not an object.
|
|
67
|
+
if (seg2 === 'metadata') {
|
|
68
|
+
const metaType = parts[3];
|
|
69
|
+
const metaName = parts[4];
|
|
70
|
+
if (metaType && metaName && metaName !== 'new') {
|
|
71
|
+
addRecentItem({
|
|
72
|
+
id: `metadata:${metaType}:${safeDecode(metaName)}`,
|
|
73
|
+
label: safeDecode(metaName),
|
|
74
|
+
href: `${basePath}/metadata/${metaType}/${metaName}`,
|
|
75
|
+
type: 'metadata',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
45
80
|
if (seg2 && !ROUTE_PREFIXES.has(seg2)) {
|
|
46
81
|
const obj = objectsRef.current.find(o => o.name === seg2);
|
|
47
82
|
if (obj) {
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useUrlOverlay
|
|
3
|
+
*
|
|
4
|
+
* Router-aware open-state for a navigable overlay (command palette, keyboard-
|
|
5
|
+
* shortcuts dialog, record drawer, action dialog, wizard step). The open state
|
|
6
|
+
* is stored in a `?<key>=1` URL search param instead of component `useState`.
|
|
7
|
+
*
|
|
8
|
+
* Why — ADR-0054 "UI testability contract", invariant C3 (URL-addressable
|
|
9
|
+
* state) + C1 (idempotent, direct triggers):
|
|
10
|
+
*
|
|
11
|
+
* - **Deep-linkable / restore-on-reload / back-forward aware.** Open state is
|
|
12
|
+
* a single source of truth in the URL, so the overlay can be reached by
|
|
13
|
+
* navigating to a URL — the most powerful automation primitive — and shared
|
|
14
|
+
* as a link.
|
|
15
|
+
* - **Idempotent open.** `openOverlay()` / `setOpen(true)` are no-ops when the
|
|
16
|
+
* overlay is already open (they never toggle), so an automated driver can
|
|
17
|
+
* always *ensure* it is open. `toggleOverlay()` is provided separately for
|
|
18
|
+
* keyboard accelerators (close-on-repeat).
|
|
19
|
+
*
|
|
20
|
+
* This generalizes the command-palette implementation from ADR-0054 Phase 1 so
|
|
21
|
+
* every navigable overlay can adopt the same contract with one line.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const { open, setOpen, openOverlay } = useUrlOverlay('palette', { alias: 'cmdk' });
|
|
25
|
+
* // header button: onClick={openOverlay}
|
|
26
|
+
* // dialog: <Dialog open={open} onOpenChange={setOpen}>
|
|
27
|
+
* // deep-link that opens: /apps/foo?palette=1
|
|
28
|
+
*
|
|
29
|
+
* @module
|
|
30
|
+
*/
|
|
31
|
+
export interface UseUrlOverlayOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Additional param name(s) accepted as "open" on read (e.g. a legacy alias).
|
|
34
|
+
* Writes always use the canonical `key`; aliases are removed when present.
|
|
35
|
+
*/
|
|
36
|
+
alias?: string | string[];
|
|
37
|
+
/** The truthy value written/compared for the param. Defaults to `'1'`. */
|
|
38
|
+
value?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Use `history.replaceState` instead of `pushState` when toggling. Defaults
|
|
41
|
+
* to `true` so a transient overlay doesn't pile up browser-history entries.
|
|
42
|
+
*/
|
|
43
|
+
replace?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface UrlOverlayControls {
|
|
46
|
+
/** Whether the overlay is currently open (derived from the URL). */
|
|
47
|
+
open: boolean;
|
|
48
|
+
/** Idempotent setter — no navigation when already in the target state. */
|
|
49
|
+
setOpen: (open: boolean) => void;
|
|
50
|
+
/** Idempotent open — a no-op when already open (C1). */
|
|
51
|
+
openOverlay: () => void;
|
|
52
|
+
/** Idempotent close. */
|
|
53
|
+
closeOverlay: () => void;
|
|
54
|
+
/** Toggle — for keyboard accelerators, not for "open" affordances. */
|
|
55
|
+
toggleOverlay: () => void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Manage a navigable overlay's open state via a `?<key>=1` URL param.
|
|
59
|
+
*
|
|
60
|
+
* Must be called inside a React Router context (uses `useSearchParams`).
|
|
61
|
+
*/
|
|
62
|
+
export declare function useUrlOverlay(key: string, options?: UseUrlOverlayOptions): UrlOverlayControls;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useUrlOverlay
|
|
3
|
+
*
|
|
4
|
+
* Router-aware open-state for a navigable overlay (command palette, keyboard-
|
|
5
|
+
* shortcuts dialog, record drawer, action dialog, wizard step). The open state
|
|
6
|
+
* is stored in a `?<key>=1` URL search param instead of component `useState`.
|
|
7
|
+
*
|
|
8
|
+
* Why — ADR-0054 "UI testability contract", invariant C3 (URL-addressable
|
|
9
|
+
* state) + C1 (idempotent, direct triggers):
|
|
10
|
+
*
|
|
11
|
+
* - **Deep-linkable / restore-on-reload / back-forward aware.** Open state is
|
|
12
|
+
* a single source of truth in the URL, so the overlay can be reached by
|
|
13
|
+
* navigating to a URL — the most powerful automation primitive — and shared
|
|
14
|
+
* as a link.
|
|
15
|
+
* - **Idempotent open.** `openOverlay()` / `setOpen(true)` are no-ops when the
|
|
16
|
+
* overlay is already open (they never toggle), so an automated driver can
|
|
17
|
+
* always *ensure* it is open. `toggleOverlay()` is provided separately for
|
|
18
|
+
* keyboard accelerators (close-on-repeat).
|
|
19
|
+
*
|
|
20
|
+
* This generalizes the command-palette implementation from ADR-0054 Phase 1 so
|
|
21
|
+
* every navigable overlay can adopt the same contract with one line.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const { open, setOpen, openOverlay } = useUrlOverlay('palette', { alias: 'cmdk' });
|
|
25
|
+
* // header button: onClick={openOverlay}
|
|
26
|
+
* // dialog: <Dialog open={open} onOpenChange={setOpen}>
|
|
27
|
+
* // deep-link that opens: /apps/foo?palette=1
|
|
28
|
+
*
|
|
29
|
+
* @module
|
|
30
|
+
*/
|
|
31
|
+
import { useCallback, useMemo } from 'react';
|
|
32
|
+
import { useSearchParams } from 'react-router-dom';
|
|
33
|
+
function asArray(v) {
|
|
34
|
+
if (v == null)
|
|
35
|
+
return [];
|
|
36
|
+
return Array.isArray(v) ? v : [v];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Manage a navigable overlay's open state via a `?<key>=1` URL param.
|
|
40
|
+
*
|
|
41
|
+
* Must be called inside a React Router context (uses `useSearchParams`).
|
|
42
|
+
*/
|
|
43
|
+
export function useUrlOverlay(key, options) {
|
|
44
|
+
const { alias, value = '1', replace = true } = options ?? {};
|
|
45
|
+
const [searchParams, setSearchParams] = useSearchParams();
|
|
46
|
+
const aliasKeys = useMemo(() => asArray(alias), [alias]);
|
|
47
|
+
const isOpen = useCallback((params) => params.get(key) === value || aliasKeys.some((a) => params.get(a) === value), [key, value, aliasKeys]);
|
|
48
|
+
const open = isOpen(searchParams);
|
|
49
|
+
const setOpen = useCallback((next) => {
|
|
50
|
+
// Truly idempotent: when already in the target state, do nothing — no
|
|
51
|
+
// redundant history navigation.
|
|
52
|
+
if (next === isOpen(searchParams))
|
|
53
|
+
return;
|
|
54
|
+
const sp = new URLSearchParams(searchParams);
|
|
55
|
+
if (next) {
|
|
56
|
+
sp.set(key, value);
|
|
57
|
+
for (const a of aliasKeys)
|
|
58
|
+
sp.delete(a);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
sp.delete(key);
|
|
62
|
+
for (const a of aliasKeys)
|
|
63
|
+
sp.delete(a);
|
|
64
|
+
}
|
|
65
|
+
setSearchParams(sp, { replace });
|
|
66
|
+
}, [isOpen, searchParams, setSearchParams, key, value, aliasKeys, replace]);
|
|
67
|
+
const openOverlay = useCallback(() => setOpen(true), [setOpen]);
|
|
68
|
+
const closeOverlay = useCallback(() => setOpen(false), [setOpen]);
|
|
69
|
+
// Toggle uses the functional updater so it never depends on `open` — keeping
|
|
70
|
+
// a keydown listener that references it stable across navigations.
|
|
71
|
+
const toggleOverlay = useCallback(() => {
|
|
72
|
+
setSearchParams((prev) => {
|
|
73
|
+
const sp = new URLSearchParams(prev);
|
|
74
|
+
if (isOpen(sp)) {
|
|
75
|
+
sp.delete(key);
|
|
76
|
+
for (const a of aliasKeys)
|
|
77
|
+
sp.delete(a);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
sp.set(key, value);
|
|
81
|
+
for (const a of aliasKeys)
|
|
82
|
+
sp.delete(a);
|
|
83
|
+
}
|
|
84
|
+
return sp;
|
|
85
|
+
}, { replace });
|
|
86
|
+
}, [setSearchParams, isOpen, key, value, aliasKeys, replace]);
|
|
87
|
+
return { open, setOpen, openOverlay, closeOverlay, toggleOverlay };
|
|
88
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,11 @@ export { AdapterProvider, useAdapter } from './providers/AdapterProvider';
|
|
|
9
9
|
export { MetadataProvider, useMetadata, useMetadataItem } from './providers/MetadataProvider';
|
|
10
10
|
export { ExpressionProvider, useExpressionContext, evaluateVisibility } from './providers/ExpressionProvider';
|
|
11
11
|
export { useObjectActions } from './hooks/useObjectActions';
|
|
12
|
+
export { useUrlOverlay } from './hooks/useUrlOverlay';
|
|
13
|
+
export type { UseUrlOverlayOptions, UrlOverlayControls } from './hooks/useUrlOverlay';
|
|
14
|
+
export { useSettleSignal } from './hooks/useSettleSignal';
|
|
15
|
+
export type { SettleSignalState } from './hooks/useSettleSignal';
|
|
16
|
+
export { getPendingRequests, isIdle, subscribeSettle, whenIdle, withSettleSignal, installSettleSignalGlobal, type ObjectUiGlobal, } from './observability/settleSignal';
|
|
12
17
|
export { useRecentItems } from './hooks/useRecentItems';
|
|
13
18
|
export type { AppShellProps, } from './types';
|
|
14
19
|
export type { MetadataState, MetadataContextValue, MetadataTypeStatus, } from './providers/MetadataProvider';
|
|
@@ -19,14 +24,14 @@ export { ConsoleLayout, AppHeader, AppSidebar, UnifiedSidebar, AppSwitcher, Conn
|
|
|
19
24
|
export type { ActivityItem } from './layout';
|
|
20
25
|
export { CommandPalette, KeyboardShortcutsDialog, OnboardingWalkthrough, ConditionalAuthWrapper, ConsoleToaster, RouteFader, toastWithUndo, type ToastWithUndoOptions, ErrorBoundary, LoadingScreen, ThemeProvider, useTheme, } from './chrome';
|
|
21
26
|
export { initSentry, captureError, setSentryUser, getSentry } from './observability';
|
|
22
|
-
export { initRuntimeConfig, getRuntimeConfig, getCloudBase, isRuntimeConfigInitialised, resetRuntimeConfigForTesting, } from './runtime-config';
|
|
23
|
-
export type { RuntimeConfig, RuntimeFeatures } from './runtime-config';
|
|
27
|
+
export { initRuntimeConfig, getRuntimeConfig, getCloudBase, getProductName, getProductShortName, isRuntimeConfigInitialised, resetRuntimeConfigForTesting, } from './runtime-config';
|
|
28
|
+
export type { RuntimeConfig, RuntimeFeatures, RuntimeBranding } from './runtime-config';
|
|
24
29
|
export { ObjectView, RecordDetailView, RecordFormPage, DashboardView, PageView, ReportView, SearchResultsPage, ViewConfigPanel, } from './views';
|
|
25
30
|
export type { RecordFormPageProps } from './views';
|
|
26
|
-
export { useFavorites, useMetadataService, useNavPins, useNavigationSync, NavigationSyncEffect, addNavigationItem, removeNavigationItems, renameNavigationItems, navigationEqual, generateNavId, useResponsiveSidebar, } from './hooks';
|
|
31
|
+
export { useFavorites, useMetadataService, useNavPins, useNavigationSync, NavigationSyncEffect, addNavigationItem, removeNavigationItems, renameNavigationItems, navigationEqual, generateNavId, useResponsiveSidebar, useActionModal, } from './hooks';
|
|
27
32
|
export type { FavoriteItem } from './hooks';
|
|
28
|
-
export { NavigationProvider, useNavigationContext, FavoritesProvider, RecentItemsProvider, UserStateAdaptersProvider, useUserStateAdapter, useAttachUserStateAdapters, } from './context';
|
|
29
|
-
export type { UserDataAdapter, UserStateKind } from './context';
|
|
33
|
+
export { NavigationProvider, useNavigationContext, FavoritesProvider, RecentItemsProvider, CommandPaletteProvider, useCommandPalette, UserStateAdaptersProvider, useUserStateAdapter, useAttachUserStateAdapters, } from './context';
|
|
34
|
+
export type { UserDataAdapter, UserStateKind, CommandPaletteContextValue } from './context';
|
|
30
35
|
export { AppContent as DefaultAppContent } from './console/AppContent';
|
|
31
36
|
export { MarketplacePage } from './console/marketplace/MarketplacePage';
|
|
32
37
|
export { MarketplacePackagePage } from './console/marketplace/MarketplacePackagePage';
|
|
@@ -43,10 +48,15 @@ export { MembersPage as DefaultMembersPage } from './console/organizations/manag
|
|
|
43
48
|
export { InvitationsPage as DefaultInvitationsPage } from './console/organizations/manage/InvitationsPage';
|
|
44
49
|
export { SettingsPage as DefaultSettingsPage } from './console/organizations/manage/SettingsPage';
|
|
45
50
|
export { AcceptInvitationPage as DefaultAcceptInvitationPage } from './console/organizations/manage/AcceptInvitationPage';
|
|
46
|
-
export { AiChatPage as DefaultAiChatPage, AiChatPage } from './console/ai/AiChatPage';
|
|
51
|
+
export { AiChatPage as DefaultAiChatPage, AiChatPage, hydratedMessagesToChatMessages, } from './console/ai/AiChatPage';
|
|
47
52
|
export { ConversationsSidebar } from './console/ai/ConversationsSidebar';
|
|
53
|
+
export { toUIMessages, aiMessageRowsToServerMessages, type HydratedUIMessage, type RawAiMessageRow, } from './hooks/useChatConversation';
|
|
48
54
|
export { registerAppComponent, getAppComponent, listAppComponents, componentRefToUrlSegments, urlSegmentsToComponentRef, } from './services/componentRegistry';
|
|
49
55
|
export type { AppComponentRegistryEntry } from './services/componentRegistry';
|
|
50
56
|
import './services/builtinComponents';
|
|
51
|
-
|
|
52
|
-
|
|
57
|
+
import './console/cloud-connection/CloudConnectionPanel';
|
|
58
|
+
import './console/marketplace/InstalledListWidget';
|
|
59
|
+
export { MetadataDirectoryPage, MetadataResourceRouter, MetadataResourceListPage, MetadataResourceEditPage, MetadataResourceHistoryPage, MetadataDiagnosticsPage, MetadataQuickFind, MetadataPageShell, SchemaForm, LayeredDiff, registerMetadataResource, getMetadataResource, listMetadataResources, resolveResourceConfig, useMetadataClient, useMetadataTypes, useTypesIndex, useGlobalDiagnostics, matchesQuery, registerMetadataPreview, getMetadataPreview, listMetadataPreviewTypes, registerMetadataInspector, getMetadataInspector, listMetadataInspectorTypes, } from './views/metadata-admin';
|
|
60
|
+
export type { MetadataResourceConfig, MetadataDomain, RichMetadataTypeEntry, MetadataPreview, MetadataPreviewProps, MetadataSelection, MetadataInspector, MetadataInspectorProps, } from './views/metadata-admin';
|
|
61
|
+
export { assistantBus, useAssistant, useRegisterAssistantEditor, requestAssistantOpen, } from './assistant/assistantBus';
|
|
62
|
+
export type { AssistantSnapshot, AssistantEditorContext, AssistantEditorField, } from './assistant/assistantBus';
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,9 @@ export { MetadataProvider, useMetadata, useMetadataItem } from './providers/Meta
|
|
|
12
12
|
export { ExpressionProvider, useExpressionContext, evaluateVisibility } from './providers/ExpressionProvider';
|
|
13
13
|
// Hooks
|
|
14
14
|
export { useObjectActions } from './hooks/useObjectActions';
|
|
15
|
+
export { useUrlOverlay } from './hooks/useUrlOverlay';
|
|
16
|
+
export { useSettleSignal } from './hooks/useSettleSignal';
|
|
17
|
+
export { getPendingRequests, isIdle, subscribeSettle, whenIdle, withSettleSignal, installSettleSignalGlobal, } from './observability/settleSignal';
|
|
15
18
|
export { useRecentItems } from './hooks/useRecentItems';
|
|
16
19
|
// Console building blocks — compose these in your App.tsx to build the console
|
|
17
20
|
// routing tree. See examples/console-starter/src/App.tsx for a minimal example.
|
|
@@ -25,13 +28,13 @@ export { initSentry, captureError, setSentryUser, getSentry } from './observabil
|
|
|
25
28
|
// Runtime configuration pushed by the server at boot. Consumers fetch
|
|
26
29
|
// `/api/v1/runtime/config` via `initRuntimeConfig()` before first render
|
|
27
30
|
// and read upstream cloud URL + capability flags from `getRuntimeConfig()`.
|
|
28
|
-
export { initRuntimeConfig, getRuntimeConfig, getCloudBase, isRuntimeConfigInitialised, resetRuntimeConfigForTesting, } from './runtime-config';
|
|
31
|
+
export { initRuntimeConfig, getRuntimeConfig, getCloudBase, getProductName, getProductShortName, isRuntimeConfigInitialised, resetRuntimeConfigForTesting, } from './runtime-config';
|
|
29
32
|
// Standard inner-SPA views
|
|
30
33
|
export { ObjectView, RecordDetailView, RecordFormPage, DashboardView, PageView, ReportView, SearchResultsPage, ViewConfigPanel, } from './views';
|
|
31
34
|
// Hooks
|
|
32
|
-
export { useFavorites, useMetadataService, useNavPins, useNavigationSync, NavigationSyncEffect, addNavigationItem, removeNavigationItems, renameNavigationItems, navigationEqual, generateNavId, useResponsiveSidebar, } from './hooks';
|
|
35
|
+
export { useFavorites, useMetadataService, useNavPins, useNavigationSync, NavigationSyncEffect, addNavigationItem, removeNavigationItems, renameNavigationItems, navigationEqual, generateNavId, useResponsiveSidebar, useActionModal, } from './hooks';
|
|
33
36
|
// Context providers
|
|
34
|
-
export { NavigationProvider, useNavigationContext, FavoritesProvider, RecentItemsProvider, UserStateAdaptersProvider, useUserStateAdapter, useAttachUserStateAdapters, } from './context';
|
|
37
|
+
export { NavigationProvider, useNavigationContext, FavoritesProvider, RecentItemsProvider, CommandPaletteProvider, useCommandPalette, UserStateAdaptersProvider, useUserStateAdapter, useAttachUserStateAdapters, } from './context';
|
|
35
38
|
// Default page implementations (consumers can partial-override slots)
|
|
36
39
|
export { AppContent as DefaultAppContent } from './console/AppContent';
|
|
37
40
|
export { MarketplacePage } from './console/marketplace/MarketplacePage';
|
|
@@ -49,8 +52,12 @@ export { MembersPage as DefaultMembersPage } from './console/organizations/manag
|
|
|
49
52
|
export { InvitationsPage as DefaultInvitationsPage } from './console/organizations/manage/InvitationsPage';
|
|
50
53
|
export { SettingsPage as DefaultSettingsPage } from './console/organizations/manage/SettingsPage';
|
|
51
54
|
export { AcceptInvitationPage as DefaultAcceptInvitationPage } from './console/organizations/manage/AcceptInvitationPage';
|
|
52
|
-
export { AiChatPage as DefaultAiChatPage, AiChatPage } from './console/ai/AiChatPage';
|
|
55
|
+
export { AiChatPage as DefaultAiChatPage, AiChatPage, hydratedMessagesToChatMessages, } from './console/ai/AiChatPage';
|
|
53
56
|
export { ConversationsSidebar } from './console/ai/ConversationsSidebar';
|
|
57
|
+
// Conversation-history hydration helpers — reused by the public read-only
|
|
58
|
+
// share page (`/s/:token`) so a shared transcript renders identically to the
|
|
59
|
+
// live chat (tool cards included) instead of dumping raw envelopes.
|
|
60
|
+
export { toUIMessages, aiMessageRowsToServerMessages, } from './hooks/useChatConversation';
|
|
54
61
|
// Phase 3b: Component nav registry — plugins use this to register
|
|
55
62
|
// admin/setup UI surfaces that are addressable from App metadata via
|
|
56
63
|
// `{ type: 'component', componentRef: 'ns:name' }` nav items.
|
|
@@ -58,8 +65,13 @@ export { registerAppComponent, getAppComponent, listAppComponents, componentRefT
|
|
|
58
65
|
// Side-effect import: registers built-in admin components
|
|
59
66
|
// (metadata:directory, metadata:resource) at module load.
|
|
60
67
|
import './services/builtinComponents';
|
|
68
|
+
// SDUI widget for the metadata-driven Cloud Connection page (cloud ADR-0008).
|
|
69
|
+
import './console/cloud-connection/CloudConnectionPanel';
|
|
70
|
+
import './console/marketplace/InstalledListWidget';
|
|
61
71
|
// Phase 3c — generic metadata admin engine. Re-exported so plugins
|
|
62
72
|
// can call `registerMetadataResource()` to override the per-type
|
|
63
73
|
// list / edit / create components, and host apps can compose the
|
|
64
74
|
// page primitives directly when needed.
|
|
65
|
-
export { MetadataDirectoryPage, MetadataResourceRouter, MetadataResourceListPage, MetadataResourceEditPage, MetadataResourceHistoryPage, MetadataQuickFind, MetadataPageShell, SchemaForm, LayeredDiff, registerMetadataResource, getMetadataResource, listMetadataResources, resolveResourceConfig, useMetadataClient, useMetadataTypes, useTypesIndex, matchesQuery, } from './views/metadata-admin';
|
|
75
|
+
export { MetadataDirectoryPage, MetadataResourceRouter, MetadataResourceListPage, MetadataResourceEditPage, MetadataResourceHistoryPage, MetadataDiagnosticsPage, MetadataQuickFind, MetadataPageShell, SchemaForm, LayeredDiff, registerMetadataResource, getMetadataResource, listMetadataResources, resolveResourceConfig, useMetadataClient, useMetadataTypes, useTypesIndex, useGlobalDiagnostics, matchesQuery, registerMetadataPreview, getMetadataPreview, listMetadataPreviewTypes, registerMetadataInspector, getMetadataInspector, listMetadataInspectorTypes, } from './views/metadata-admin';
|
|
76
|
+
// AI assistant bus — connects the metadata designers to the global chat.
|
|
77
|
+
export { assistantBus, useAssistant, useRegisterAssistantEditor, requestAssistantOpen, } from './assistant/assistantBus';
|
|
@@ -19,4 +19,4 @@ export interface ActivityFeedProps {
|
|
|
19
19
|
activities?: ActivityItem[];
|
|
20
20
|
className?: string;
|
|
21
21
|
}
|
|
22
|
-
export declare function ActivityFeed({ activities, className }: ActivityFeedProps): import("react
|
|
22
|
+
export declare function ActivityFeed({ activities, className }: ActivityFeedProps): import("react").JSX.Element;
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* Variants:
|
|
8
8
|
* - `app` (default when `appName` is present): sidebar trigger + AppSwitcher
|
|
9
9
|
* + breadcrumb path. Used by `ConsoleLayout` inside `/apps/:appName/*`.
|
|
10
|
-
* - `home` : no breadcrumb; displays the
|
|
10
|
+
* - `home` : no breadcrumb; displays the product wordmark (from
|
|
11
|
+
* `getProductName()`, default "ObjectOS") next to the brand
|
|
11
12
|
* logo. Used by `/home`.
|
|
12
13
|
* - `orgs` : no breadcrumb; logo + "Organizations" title. Used by the
|
|
13
14
|
* `/organizations` landing page.
|
|
@@ -30,4 +31,4 @@ export interface AppHeaderProps {
|
|
|
30
31
|
activeAppName?: string;
|
|
31
32
|
onAppChange?: (name: string) => void;
|
|
32
33
|
}
|
|
33
|
-
export declare function AppHeader({ variant, appName, objects, connectionState, presenceUsers, activities, activeAppName, onAppChange, }: AppHeaderProps): import("react
|
|
34
|
+
export declare function AppHeader({ variant, appName, objects, connectionState, presenceUsers, activities, activeAppName, onAppChange, }: AppHeaderProps): import("react").JSX.Element;
|