@jini-ai/ui 0.3.13 → 0.4.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 +139 -0
- package/README.md +120 -26
- package/dist/browser/index.js +1 -1
- package/dist/browser/useDismissOnOutsideOrEscape.d.ts +10 -1
- package/dist/browser/useDismissOnOutsideOrEscape.js +7 -4
- package/dist/browser/useGlobalKeydown.d.ts +14 -2
- package/dist/browser/useGlobalKeydown.js +8 -17
- package/dist/features/a2ui/catalog-from-registry.d.ts +6 -3
- package/dist/features/a2ui/catalog-from-registry.js +1 -1
- package/dist/features/a2ui/index.d.ts +1 -1
- package/dist/features/a2ui/protocol.d.ts +1 -1
- package/dist/features/a2ui/renderer.js +23 -10
- package/dist/features/a2ui/use-a2ui-surface.d.ts +11 -6
- package/dist/features/a2ui/use-a2ui-surface.js +40 -10
- package/dist/features/admin-widgets/components/ComingSoonNotice.d.ts +11 -0
- package/dist/features/admin-widgets/components/ComingSoonNotice.js +7 -0
- package/dist/features/admin-widgets/components/ComingSoonPanel.d.ts +10 -0
- package/dist/features/admin-widgets/components/ComingSoonPanel.js +10 -0
- package/dist/features/admin-widgets/components/ImagePreviewModal.d.ts +16 -0
- package/dist/features/admin-widgets/components/ImagePreviewModal.hooks.d.ts +13 -0
- package/dist/features/admin-widgets/components/ImagePreviewModal.hooks.js +46 -0
- package/dist/features/admin-widgets/components/ImagePreviewModal.js +13 -0
- package/dist/features/admin-widgets/components/InfoTip.d.ts +18 -0
- package/dist/features/admin-widgets/components/InfoTip.hooks.d.ts +16 -0
- package/dist/features/admin-widgets/components/InfoTip.hooks.js +45 -0
- package/dist/features/admin-widgets/components/InfoTip.js +12 -0
- package/dist/features/admin-widgets/components/SeeMore/SeeMore.d.ts +41 -0
- package/dist/features/admin-widgets/components/SeeMore/SeeMore.hooks.d.ts +14 -0
- package/dist/features/admin-widgets/components/SeeMore/SeeMore.hooks.js +57 -0
- package/dist/features/admin-widgets/components/SeeMore/SeeMore.js +24 -0
- package/dist/features/admin-widgets/components/Select/Select.d.ts +39 -0
- package/dist/features/admin-widgets/components/Select/Select.hooks.d.ts +105 -0
- package/dist/features/admin-widgets/components/Select/Select.hooks.js +359 -0
- package/dist/features/admin-widgets/components/Select/Select.js +46 -0
- package/dist/features/admin-widgets/index.d.ts +20 -0
- package/dist/features/admin-widgets/index.js +11 -0
- package/dist/features/admin-widgets/styles/admin-widgets.css +2 -0
- package/dist/features/appearance/constants.d.ts +2 -2
- package/dist/features/appearance/constants.js +2 -1
- package/dist/features/appearance/react/components/AppearanceTab.js +5 -5
- package/dist/features/appearance/rules.d.ts +10 -4
- package/dist/features/appearance/rules.js +5 -5
- package/dist/features/appearance/types.d.ts +1 -1
- package/dist/features/appearance/types.js +1 -1
- package/dist/features/asset-grid/react/components/AssetGrid.js +1 -1
- package/dist/features/asset-grid/react/components/DeleteConfirmDialog.js +1 -1
- package/dist/features/asset-grid/react/hooks/useAssetGridKeyboardShortcuts.js +23 -21
- package/dist/features/asset-grid/react/hooks/useAssetGridLiveUpdates.d.ts +1 -1
- package/dist/features/asset-grid/react/hooks/useAssetGridLiveUpdates.js +1 -1
- package/dist/features/asset-tree-browser/ports.d.ts +3 -1
- package/dist/features/asset-tree-browser/react/hooks/useAssetTreeCopyLocalPath.js +1 -1
- package/dist/features/browser-chrome/react/components/BrowserViewportControls.js +1 -1
- package/dist/features/browser-chrome/types.js +1 -1
- package/dist/features/command-palette/ports.js +1 -1
- package/dist/features/connectors/ConnectorsBrowser.js +2 -2
- package/dist/features/connectors/components/ConnectorCard.js +3 -3
- package/dist/features/connectors/components/ConnectorDetailDrawer.js +1 -1
- package/dist/features/connectors/components/ConnectorGrid.js +2 -2
- package/dist/features/connectors/components/ConnectorSearchBar.js +2 -2
- package/dist/features/connectors/components/ProviderTabBar.js +2 -2
- package/dist/features/connectors/constants.d.ts +1 -1
- package/dist/features/connectors/constants.js +1 -1
- package/dist/features/connectors/hooks/useConnectorAuthorization.js +1 -1
- package/dist/features/connectors/rules.d.ts +2 -2
- package/dist/features/connectors/rules.js +1 -1
- package/dist/features/connectors/types.d.ts +2 -2
- package/dist/features/connectors/types.js +1 -1
- package/dist/features/execution/react/components/ByokProviderForm.js +3 -3
- package/dist/features/execution/react/components/ExecutionTab.js +2 -2
- package/dist/features/execution/react/components/LocalCliAgentCard.js +3 -3
- package/dist/features/execution/react/components/LocalCliAgentList.js +2 -2
- package/dist/features/execution/react/components/ProviderChipGroup.js +2 -2
- package/dist/features/execution/react/components/SearchableModelSelect.js +1 -1
- package/dist/features/execution/rules.js +1 -1
- package/dist/features/file-dropzone/react/components/FileDropzone.js +5 -3
- package/dist/features/file-dropzone/react/hooks/useFileDropzone.d.ts +1 -1
- package/dist/features/file-dropzone/react/hooks/useFileDropzone.js +1 -1
- package/dist/features/file-dropzone/types.d.ts +1 -1
- package/dist/features/file-dropzone/types.js +1 -1
- package/dist/features/folder-path-drop/react/hooks/useFolderPathDropCapture.js +6 -4
- package/dist/features/html-editor/canvas-content-wrapper.js +1 -1
- package/dist/features/html-editor/canvas-embed-placeholders.js +7 -7
- package/dist/features/html-editor/canvas-style.d.ts +4 -0
- package/dist/features/html-editor/canvas-style.js +6 -21
- package/dist/features/html-viewer/constants.d.ts +1 -1
- package/dist/features/html-viewer/constants.js +1 -1
- package/dist/features/html-viewer/react/components/PresentMenu.js +1 -1
- package/dist/features/html-viewer/react/components/ZoomMenu.js +1 -1
- package/dist/features/html-viewer/types.d.ts +1 -1
- package/dist/features/html-viewer/types.js +1 -1
- package/dist/features/i18n/dictionaries/index.d.ts +2 -3
- package/dist/features/i18n/dictionaries/settings-dialog.en.d.ts +1 -1
- package/dist/features/i18n/dictionary-translator.d.ts +16 -0
- package/dist/features/i18n/dictionary-translator.js +14 -0
- package/dist/features/i18n/index.d.ts +3 -0
- package/dist/features/i18n/index.js +2 -0
- package/dist/features/i18n/locale.d.ts +1 -1
- package/dist/features/i18n/template-i18n.d.ts +26 -0
- package/dist/features/i18n/template-i18n.js +36 -0
- package/dist/features/iframe-pool/react/components/IframeKeepAliveProvider.d.ts +1 -1
- package/dist/features/iframe-pool/react/components/IframeKeepAliveProvider.js +1 -1
- package/dist/features/instructions/react/components/InstructionsTab.js +1 -1
- package/dist/features/integrations/react/components/ClientPicker.js +4 -4
- package/dist/features/integrations/react/components/CodexInstallToggleButton.js +1 -1
- package/dist/features/integrations/react/components/IntegrationsTab.js +2 -2
- package/dist/features/integrations/react/components/SnippetBlock.js +1 -1
- package/dist/features/integrations/types.d.ts +1 -1
- package/dist/features/integrations/types.js +1 -1
- package/dist/features/interactive-ui/index.js +13 -13
- package/dist/features/interactive-ui/interactive-ui.css +1 -1
- package/dist/features/interactive-ui/providers/recharts/bar-chart.js +1 -1
- package/dist/features/interactive-ui/providers/recharts/line-chart.js +1 -1
- package/dist/features/interactive-ui/providers/recharts/pie-chart.js +2 -2
- package/dist/features/interactive-ui/providers/shadcn/lib/utils.d.ts +1 -1
- package/dist/features/interactive-ui/providers/shadcn/lib/utils.js +1 -1
- package/dist/features/interactive-ui/registry.d.ts +15 -4
- package/dist/features/interactive-ui/registry.js +5 -5
- package/dist/features/language/react/components/LanguageTab.js +2 -2
- package/dist/features/list-detail-panel/types.d.ts +1 -1
- package/dist/features/list-detail-panel/types.js +1 -1
- package/dist/features/mcp-ui/confirmation-store.js +2 -1
- package/dist/features/mcp-ui/surfaces/bridge.d.ts +2 -1
- package/dist/features/mcp-ui/surfaces/bridge.js +17 -7
- package/dist/features/mcp-ui/surfaces/confirmation.d.ts +20 -0
- package/dist/features/mcp-ui/surfaces/confirmation.js +38 -6
- package/dist/features/mcp-ui/surfaces/document.d.ts +7 -1
- package/dist/features/mcp-ui/surfaces/document.js +19 -1
- package/dist/features/mcp-ui/surfaces/text-input.js +4 -4
- package/dist/features/mcp-ui/surfaces/tokens.d.ts +17 -20
- package/dist/features/mcp-ui/surfaces/tokens.js +33 -35
- package/dist/features/media-providers/index.d.ts +1 -1
- package/dist/features/media-providers/index.js +1 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.js +4 -4
- package/dist/features/media-providers/rules.js +1 -1
- package/dist/features/memory/async-commit-guard.d.ts +1 -1
- package/dist/features/memory/constants.d.ts +1 -1
- package/dist/features/memory/constants.js +1 -1
- package/dist/features/memory/dependencies.d.ts +11 -23
- package/dist/features/memory/dependencies.js +116 -106
- package/dist/features/memory/index.d.ts +1 -1
- package/dist/features/memory/index.js +1 -1
- package/dist/features/memory/react/components/MemoryAdvancedModal.js +2 -2
- package/dist/features/memory/react/components/MemoryEntryCard.js +1 -1
- package/dist/features/memory/react/components/MemoryExtractionCard.js +1 -1
- package/dist/features/memory/react/components/MemoryHooksPanel.js +1 -1
- package/dist/features/memory/react/components/MemoryList.js +5 -5
- package/dist/features/memory/react/components/MemoryManualEditor.js +5 -5
- package/dist/features/memory/react/components/MemorySettingsPanel.js +1 -1
- package/dist/features/memory/react/hooks/useMemoryEntries.hooks.js +1 -1
- package/dist/features/memory/react/hooks/useMemoryNavigation.hooks.js +1 -1
- package/dist/features/memory/react/styles.js +1 -1
- package/dist/features/memory/rules.js +1 -1
- package/dist/features/memory/types.d.ts +1 -1
- package/dist/features/mention-autocomplete/react/hooks/useMentionAutocomplete.js +1 -1
- package/dist/features/notifications/react/components/NotificationsTab.js +7 -7
- package/dist/features/notifications/types.d.ts +1 -1
- package/dist/features/observability/boot-timing.js +2 -2
- package/dist/features/observability/stuck-run.js +1 -1
- package/dist/features/observability/white-screen.js +4 -4
- package/dist/features/panel-kit/fetch-query/adapter.react.d.ts +35 -0
- package/dist/features/panel-kit/fetch-query/adapter.react.js +122 -0
- package/dist/features/panel-kit/fetch-query/cache.d.ts +123 -0
- package/dist/features/panel-kit/fetch-query/cache.js +231 -0
- package/dist/features/panel-kit/fetch-query/environment.browser.d.ts +4 -0
- package/dist/features/panel-kit/fetch-query/environment.browser.js +25 -0
- package/dist/features/panel-kit/fetch-query/index.d.ts +4 -0
- package/dist/features/panel-kit/fetch-query/index.js +2 -0
- package/dist/features/panel-kit/fetch-query/types.d.ts +91 -0
- package/dist/features/panel-kit/fetch-query/types.js +2 -0
- package/dist/features/panel-kit/helpers/format-timestamp.d.ts +18 -0
- package/dist/features/panel-kit/helpers/format-timestamp.js +20 -0
- package/dist/features/panel-kit/helpers/permissions.d.ts +11 -0
- package/dist/features/panel-kit/helpers/permissions.js +10 -0
- package/dist/features/panel-kit/helpers/resolve-active-tab-id.d.ts +13 -0
- package/dist/features/panel-kit/helpers/resolve-active-tab-id.js +13 -0
- package/dist/features/panel-kit/helpers/retry-unreachable.d.ts +20 -0
- package/dist/features/panel-kit/helpers/retry-unreachable.js +39 -0
- package/dist/features/panel-kit/hooks/use-async-action.hooks.d.ts +13 -0
- package/dist/features/panel-kit/hooks/use-async-action.hooks.js +27 -0
- package/dist/features/panel-kit/hooks/use-dirty-guard.hooks.d.ts +18 -0
- package/dist/features/panel-kit/hooks/use-dirty-guard.hooks.js +33 -0
- package/dist/features/panel-kit/hooks/use-focus-trap.hooks.d.ts +8 -0
- package/dist/features/panel-kit/hooks/use-focus-trap.hooks.js +66 -0
- package/dist/features/panel-kit/hooks/use-serial-writes.hooks.d.ts +26 -0
- package/dist/features/panel-kit/hooks/use-serial-writes.hooks.js +41 -0
- package/dist/features/panel-kit/hooks/use-settlement-generation.hooks.d.ts +9 -0
- package/dist/features/panel-kit/hooks/use-settlement-generation.hooks.js +25 -0
- package/dist/features/panel-kit/index.d.ts +19 -0
- package/dist/features/panel-kit/index.js +13 -0
- package/dist/features/privacy/react/components/PrivacyTab.js +2 -2
- package/dist/features/privacy/types.d.ts +1 -1
- package/dist/features/privacy/types.js +1 -1
- package/dist/features/progress-card/reference-adapters.d.ts +1 -1
- package/dist/features/progress-card/rules.d.ts +1 -1
- package/dist/features/progress-card/rules.js +1 -1
- package/dist/features/progress-card/types.d.ts +1 -1
- package/dist/features/progress-card/types.js +1 -1
- package/dist/features/resource-dashboard/dependencies.d.ts +1 -1
- package/dist/features/resource-dashboard/ports.d.ts +1 -1
- package/dist/features/resource-dashboard/react/hooks/useResourceBoard.d.ts +1 -1
- package/dist/features/resource-dashboard/react/hooks/useResourceBoard.js +1 -1
- package/dist/features/resource-dashboard/rules.d.ts +1 -1
- package/dist/features/resource-dashboard/rules.js +2 -2
- package/dist/features/resource-dashboard/types.d.ts +4 -4
- package/dist/features/resource-dashboard/types.js +1 -1
- package/dist/features/schedule-picker/react/hooks/useRecurringSchedulePicker.js +1 -1
- package/dist/features/settings/dialog/styles/settings-dialog.css +62 -60
- package/dist/features/sketch-editor/constants.d.ts +1 -1
- package/dist/features/sketch-editor/constants.js +1 -1
- package/dist/features/sketch-editor/dom.d.ts +1 -1
- package/dist/features/sketch-editor/dom.js +1 -1
- package/dist/features/sketch-editor/react/hooks/useSketchDomEnhancements.d.ts +1 -1
- package/dist/features/sketch-editor/react/hooks/useSketchDomEnhancements.js +11 -9
- package/dist/features/sketch-editor/types.d.ts +1 -1
- package/dist/features/sketch-editor/types.js +1 -1
- package/dist/features/skills/react/components/SkillDraftForm.js +1 -1
- package/dist/features/skills/react/components/SkillRow.js +1 -1
- package/dist/features/skills/react/components/SkillsTab.js +2 -2
- package/dist/features/source-config-list/agent-handles.js +2 -2
- package/dist/features/source-config-list/react/hooks/useSourceConfigAddForm.d.ts +1 -1
- package/dist/features/source-config-list/react/hooks/useSourceConfigAddForm.js +1 -1
- package/dist/features/source-config-list/rules.d.ts +1 -1
- package/dist/features/source-config-list/rules.js +3 -3
- package/dist/features/source-config-list/types.d.ts +1 -1
- package/dist/features/source-config-list/types.js +1 -1
- package/dist/features/tab-launcher-menu/react/hooks/useTabLauncherMenu.js +1 -1
- package/dist/features/tab-strip/index.d.ts +4 -0
- package/dist/features/tab-strip/index.js +2 -0
- package/dist/features/tab-strip/react/components/TabBar.d.ts +23 -0
- package/dist/features/tab-strip/react/components/TabBar.hooks.d.ts +25 -0
- package/dist/features/tab-strip/react/components/TabBar.hooks.js +57 -0
- package/dist/features/tab-strip/react/components/TabBar.js +18 -0
- package/dist/features/tab-strip/react/components/TabStrip.js +2 -1
- package/dist/features/tab-strip/react/components/TabStripFrame.d.ts +3 -0
- package/dist/features/tab-strip/react/components/TabStripFrame.js +7 -0
- package/dist/features/tabbed-dialog/react/hooks/useTabbedDialog.js +1 -1
- package/dist/features/tabbed-dialog/styles/tabbed-dialog.css +8 -141
- package/dist/features/tabbed-dialog/types.d.ts +1 -1
- package/dist/features/tabbed-dialog/types.js +1 -1
- package/dist/features/version-manager/ports.d.ts +1 -1
- package/dist/features/version-manager/react/components/VersionPromptPopover.js +5 -3
- package/dist/features/version-manager/react/components/VersionRestoreControl.js +1 -1
- package/dist/features/version-manager/types.d.ts +1 -1
- package/dist/features/version-manager/types.js +1 -1
- package/dist/features/viewer-shell/dependencies.js +1 -1
- package/dist/features/viewer-shell/ports.d.ts +1 -1
- package/dist/features/viewer-shell/react/components/ViewportSwitcher.js +1 -1
- package/dist/features/viewer-shell/react/hooks/useMarkdownScrollSync.d.ts +1 -1
- package/dist/features/viewer-shell/react/hooks/useMarkdownScrollSync.js +1 -1
- package/dist/features/viewer-shell/types.d.ts +1 -1
- package/dist/features/viewer-shell/types.js +1 -1
- package/dist/index.d.ts +420 -0
- package/dist/index.js +421 -1
- package/dist/react/components/ComponentKitPreview.js +1 -1
- package/dist/react/components/EditorIcon.d.ts +1 -1
- package/dist/react/components/EditorIcon.js +22 -22
- package/dist/react/components/ExportDiagnosticsButton.d.ts +8 -1
- package/dist/react/components/ExportDiagnosticsButton.js +6 -6
- package/dist/react/components/PaletteTweaks.js +5 -5
- package/dist/react/hooks/useBrandFonts.d.ts +19 -4
- package/dist/react/hooks/useBrandFonts.js +11 -7
- package/dist/react/hooks/useDebouncedValue.d.ts +12 -1
- package/dist/react/hooks/useDebouncedValue.js +9 -4
- package/dist/react/hooks/useStableHandler.d.ts +3 -1
- package/dist/react/hooks/useStableHandler.js +1 -1
- package/dist/renderers/annotation-canvas/drawing.d.ts +4 -4
- package/dist/renderers/annotation-canvas/drawing.js +28 -15
- package/dist/renderers/annotation-canvas/react/components/AnnotationCanvas.js +2 -2
- package/dist/renderers/annotation-canvas/react/hooks/useAnnotationCanvas.js +4 -3
- package/dist/renderers/annotation-canvas/rules.d.ts +1 -1
- package/dist/renderers/annotation-canvas/theme.d.ts +13 -0
- package/dist/renderers/annotation-canvas/theme.js +16 -0
- package/dist/renderers/annotation-canvas/types.d.ts +1 -1
- package/dist/renderers/index.d.ts +1 -1
- package/dist/renderers/new-tab-preview.d.ts +3 -0
- package/dist/renderers/new-tab-preview.js +3 -1
- package/dist/renderers/preview-modal-shell/react/hooks/usePreviewModalShell.d.ts +1 -1
- package/dist/renderers/preview-modal-shell/react/hooks/usePreviewModalShell.js +1 -1
- package/dist/renderers/preview-modal-shell/rules.d.ts +1 -1
- package/dist/renderers/preview-modal-shell/types.d.ts +3 -3
- package/dist/renderers/preview-modal-shell/types.js +2 -2
- package/dist/renderers/react/components/ArtifactView.d.ts +1 -1
- package/dist/renderers/react/components/ArtifactView.js +1 -1
- package/dist/renderers/registry.d.ts +12 -6
- package/dist/renderers/registry.js +7 -9
- package/dist/renderers/renderers/html.js +2 -2
- package/dist/renderers/renderers/index.js +1 -1
- package/dist/renderers/renderers/markdown.js +2 -2
- package/dist/renderers/renderers/react-component.js +1 -1
- package/dist/renderers/renderers/svg.js +1 -1
- package/dist/renderers/shiki.js +1 -1
- package/dist/renderers/srcdoc/build.d.ts +1 -1
- package/dist/renderers/srcdoc/build.js +1 -1
- package/dist/renderers/url-load-decision.d.ts +1 -1
- package/dist/renderers/url-load-decision.js +1 -1
- package/dist/styles/admin.css +273 -0
- package/dist/styles/variables.css +117 -0
- package/dist/theme/apply.d.ts +9 -0
- package/dist/theme/apply.js +77 -0
- package/dist/theme/color-scheme.d.ts +8 -0
- package/dist/theme/color-scheme.js +9 -0
- package/dist/theme/default.d.ts +4 -0
- package/dist/theme/default.js +11 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.js +5 -0
- package/dist/theme/stylesheet.d.ts +8 -0
- package/dist/theme/stylesheet.js +14 -0
- package/dist/theme/types.d.ts +39 -0
- package/dist/theme/types.js +2 -0
- package/dist/theme/validation.d.ts +15 -0
- package/dist/theme/validation.js +55 -0
- package/dist/utils/appearance.js +1 -1
- package/dist/utils/browser-request.d.ts +12 -0
- package/dist/utils/browser-request.js +10 -0
- package/dist/utils/color-math.d.ts +20 -6
- package/dist/utils/color-math.js +12 -12
- package/dist/utils/copy-to-clipboard.d.ts +19 -8
- package/dist/utils/copy-to-clipboard.js +15 -11
- package/dist/utils/dom-subscriptions.js +1 -1
- package/dist/utils/endpoint-policy.d.ts +9 -3
- package/dist/utils/endpoint-policy.js +5 -5
- package/dist/utils/markdown-scroll-sync.js +3 -3
- package/dist/utils/notifications.d.ts +1 -1
- package/dist/utils/notifications.js +1 -1
- package/dist/utils/polygon-selection.d.ts +1 -1
- package/dist/utils/polygon-selection.js +1 -1
- package/dist/utils/scroll-tabs-with-wheel.d.ts +4 -1
- package/dist/utils/scroll-tabs-with-wheel.js +1 -1
- package/dist/utils/smooth-scroll-to-top.js +1 -1
- package/dist/utils/sse.d.ts +3 -1
- package/dist/utils/sse.js +1 -1
- package/package.json +105 -16
- package/dist/features/lexical-rich-text-editor/react/test-support/lexical-harness.d.ts +0 -11
- package/dist/features/lexical-rich-text-editor/react/test-support/lexical-harness.js +0 -35
|
@@ -12,7 +12,7 @@ export declare function progressCardItemIcon(status: ProgressStatus): IconName |
|
|
|
12
12
|
export declare function progressCardStatusLabel(status: ProgressStatus): string;
|
|
13
13
|
/** Neutral fallback title used when a host doesn't supply one. Deliberately
|
|
14
14
|
* generic — the source cards' actual default copy is branded product voice,
|
|
15
|
-
* not part of the generic component (see `packages/ui/
|
|
15
|
+
* not part of the generic component (see `packages/ui/archived provenance ledger`). */
|
|
16
16
|
export declare function defaultProgressCardTitle(status: ProgressStatus): string;
|
|
17
17
|
/** Neutral fallback detail line used when a host doesn't supply one. */
|
|
18
18
|
export declare function defaultProgressCardDetail(status: ProgressStatus): string;
|
|
@@ -29,7 +29,7 @@ export function progressCardStatusLabel(status) {
|
|
|
29
29
|
}
|
|
30
30
|
/** Neutral fallback title used when a host doesn't supply one. Deliberately
|
|
31
31
|
* generic — the source cards' actual default copy is branded product voice,
|
|
32
|
-
* not part of the generic component (see `packages/ui/
|
|
32
|
+
* not part of the generic component (see `packages/ui/archived provenance ledger`). */
|
|
33
33
|
export function defaultProgressCardTitle(status) {
|
|
34
34
|
return progressCardStatusLabel(status);
|
|
35
35
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic "a run/job in progress" domain shape — a progress bar + status icon
|
|
3
3
|
* + step list, the pattern independently reimplemented twice against two
|
|
4
|
-
* different source shapes. See `packages/ui/
|
|
4
|
+
* different source shapes. See `packages/ui/archived provenance ledger` for provenance.
|
|
5
5
|
* Deliberately maps close to Jini's own Run/Agent/Tool vocabulary rather than
|
|
6
6
|
* either source's own naming.
|
|
7
7
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic "a run/job in progress" domain shape — a progress bar + status icon
|
|
3
3
|
* + step list, the pattern independently reimplemented twice against two
|
|
4
|
-
* different source shapes. See `packages/ui/
|
|
4
|
+
* different source shapes. See `packages/ui/archived provenance ledger` for provenance.
|
|
5
5
|
* Deliberately maps close to Jini's own Run/Agent/Tool vocabulary rather than
|
|
6
6
|
* either source's own naming.
|
|
7
7
|
*/
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* `ResourceBoardPort` nor `ResourceRowListPort` has an "add" concept at all
|
|
7
7
|
* — both origins delegate creation entirely to host UI (DesignsTab's
|
|
8
8
|
* `onNewProject`, TasksView's template-gallery + `NewAutomationModal`, both
|
|
9
|
-
* out of this primitive's scope, see `packages/ui/
|
|
9
|
+
* out of this primitive's scope, see `packages/ui/archived provenance ledger`'s
|
|
10
10
|
* "Dropped" list). So both fakes below can ship a genuinely useful
|
|
11
11
|
* zero-config default, same reasoning as `features/asset-grid`'s read-only
|
|
12
12
|
* fake.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The DI seam for both composed components. Two separate port interfaces,
|
|
3
3
|
* matching the two composed components — nothing here is shared, which is
|
|
4
4
|
* itself evidence for the shared-vs-separate verdict recorded in `types.ts`
|
|
5
|
-
* and `packages/ui/
|
|
5
|
+
* and `packages/ui/archived provenance ledger`: the only shared surface in this feature
|
|
6
6
|
* is pure (`rules.ts`) plus one presentational leaf (`StatusPill`), never a
|
|
7
7
|
* transport-level one.
|
|
8
8
|
*/
|
|
@@ -67,7 +67,7 @@ export interface ResourceBoardController<TItem extends ResourceBoardItem> {
|
|
|
67
67
|
* derivation. Interactive rename (which needs a text input the origin
|
|
68
68
|
* collects via its own `Dialog`) is deliberately NOT handled here — see
|
|
69
69
|
* `ResourceBoard.tsx`'s `onRenameRequest` prop and
|
|
70
|
-
* `packages/ui/
|
|
70
|
+
* `packages/ui/archived provenance ledger`'s "Dropped" list.
|
|
71
71
|
*/
|
|
72
72
|
export declare function useResourceBoard<TItem extends ResourceBoardItem>(params: UseResourceBoardParams<TItem>): ResourceBoardController<TItem>;
|
|
73
73
|
export type UseWiredResourceBoardParams<TItem extends ResourceBoardItem> = {
|
|
@@ -16,7 +16,7 @@ const DUPLICATE_FAILED_MESSAGE = 'Failed to duplicate item.';
|
|
|
16
16
|
* derivation. Interactive rename (which needs a text input the origin
|
|
17
17
|
* collects via its own `Dialog`) is deliberately NOT handled here — see
|
|
18
18
|
* `ResourceBoard.tsx`'s `onRenameRequest` prop and
|
|
19
|
-
* `packages/ui/
|
|
19
|
+
* `packages/ui/archived provenance ledger`'s "Dropped" list.
|
|
20
20
|
*/
|
|
21
21
|
export function useResourceBoard(params) {
|
|
22
22
|
const { port, refreshToken } = params;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ResourceBoardItem, ResourceStatusTone, ResourceStatusToneMap } from './types.js';
|
|
2
2
|
/** Resolves a status value's visual tone from a host-supplied map, defaulting to `'neutral'` for any status the host didn't classify. */
|
|
3
3
|
export declare function statusToneFor(status: string, toneMap: ResourceStatusToneMap | undefined): ResourceStatusTone;
|
|
4
|
-
/** Stable per-(id, kind) key used to track in-flight per-item actions independently, so one item's busy action never disables an unrelated item — same pattern already established by `features/source-config-list`'s `pendingActionKey`, re-derived fresh here (deliberately not imported cross-feature; see `packages/ui/
|
|
4
|
+
/** Stable per-(id, kind) key used to track in-flight per-item actions independently, so one item's busy action never disables an unrelated item — same pattern already established by `features/source-config-list`'s `pendingActionKey`, re-derived fresh here (deliberately not imported cross-feature; see `packages/ui/archived provenance ledger`'s "share only what correctness forces" note). */
|
|
5
5
|
export declare function pendingActionKey(id: string, kind: string): string;
|
|
6
6
|
export declare function isActionPending(pendingKeys: ReadonlySet<string>, id: string, kind: string): boolean;
|
|
7
7
|
export declare function withPendingAction(pendingKeys: ReadonlySet<string>, id: string, kind: string): ReadonlySet<string>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pure logic shared by `ResourceBoard` and `ResourceRowList`. No React, no
|
|
3
|
-
* transport, no DOM. See `packages/ui/
|
|
3
|
+
* transport, no DOM. See `packages/ui/archived provenance ledger` for full provenance.
|
|
4
4
|
*/
|
|
5
5
|
import { DEFAULT_STATUS_TONE, UNMATCHED_STATUS_BUCKET } from './constants.js';
|
|
6
6
|
// --- Shared: status tone + pending-action tracking ----------------------
|
|
@@ -8,7 +8,7 @@ import { DEFAULT_STATUS_TONE, UNMATCHED_STATUS_BUCKET } from './constants.js';
|
|
|
8
8
|
export function statusToneFor(status, toneMap) {
|
|
9
9
|
return toneMap?.[status] ?? DEFAULT_STATUS_TONE;
|
|
10
10
|
}
|
|
11
|
-
/** Stable per-(id, kind) key used to track in-flight per-item actions independently, so one item's busy action never disables an unrelated item — same pattern already established by `features/source-config-list`'s `pendingActionKey`, re-derived fresh here (deliberately not imported cross-feature; see `packages/ui/
|
|
11
|
+
/** Stable per-(id, kind) key used to track in-flight per-item actions independently, so one item's busy action never disables an unrelated item — same pattern already established by `features/source-config-list`'s `pendingActionKey`, re-derived fresh here (deliberately not imported cross-feature; see `packages/ui/archived provenance ledger`'s "share only what correctness forces" note). */
|
|
12
12
|
export function pendingActionKey(id, kind) {
|
|
13
13
|
return `${kind}:${id}`;
|
|
14
14
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* over a config-driven status-kanban board) and `TasksView.tsx` (hero header
|
|
9
9
|
* with metric tiles + a flat row-list with inline per-item action buttons +
|
|
10
10
|
* a lazy-loaded expandable per-row run-history sublist). Both were read in
|
|
11
|
-
* full from `/tmp/od-source` (see `packages/ui/
|
|
11
|
+
* full from `/tmp/od-source` (see `packages/ui/archived provenance ledger`'s
|
|
12
12
|
* `features/resource-dashboard/` section for the full shared-vs-separate
|
|
13
13
|
* verdict and quoted structural evidence).
|
|
14
14
|
*
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* and TasksView's own 5-value run vocabulary
|
|
34
34
|
* (`succeeded`/`failed`/`running`/`queued`/`canceled`) are two different,
|
|
35
35
|
* non-identical instantiations of this same shape — see
|
|
36
|
-
* `packages/ui/
|
|
36
|
+
* `packages/ui/archived provenance ledger` for the note on reconciling either against
|
|
37
37
|
* `@jini-ai/protocol`'s own `RunState` later (explicitly out of scope here).
|
|
38
38
|
*/
|
|
39
39
|
export interface ResourceStatusOption {
|
|
@@ -66,7 +66,7 @@ export interface ResourceMenuActionSpec {
|
|
|
66
66
|
* `body` is a host-supplied render slot for anything else (DesignsTab's
|
|
67
67
|
* cover-thumbnail resolution across html/image/video/logo/brand kinds stays
|
|
68
68
|
* entirely host-owned, never ported into this generic primitive — see
|
|
69
|
-
*
|
|
69
|
+
* archived provenance ledger's "Dropped" list).
|
|
70
70
|
*/
|
|
71
71
|
export interface ResourceBoardItem<TBody = unknown> {
|
|
72
72
|
id: string;
|
|
@@ -110,7 +110,7 @@ export interface ResourceRowItem {
|
|
|
110
110
|
paused?: boolean;
|
|
111
111
|
actions: ResourceRowAction[];
|
|
112
112
|
}
|
|
113
|
-
/** One entry in a row's expandable run-history sublist (TasksView's `RoutineRun`, lazy-fetched on first expand). `actions` generalizes the origin's per-run "crystallize"/"view progress" buttons — see
|
|
113
|
+
/** One entry in a row's expandable run-history sublist (TasksView's `RoutineRun`, lazy-fetched on first expand). `actions` generalizes the origin's per-run "crystallize"/"view progress" buttons — see archived provenance ledger for what was dropped (the crystallize automation-evolution workflow is OD-specific and not ported; "open" is the one generic action kept). */
|
|
114
114
|
export interface ResourceRunHistoryItem {
|
|
115
115
|
id: string;
|
|
116
116
|
status: string;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* over a config-driven status-kanban board) and `TasksView.tsx` (hero header
|
|
9
9
|
* with metric tiles + a flat row-list with inline per-item action buttons +
|
|
10
10
|
* a lazy-loaded expandable per-row run-history sublist). Both were read in
|
|
11
|
-
* full from `/tmp/od-source` (see `packages/ui/
|
|
11
|
+
* full from `/tmp/od-source` (see `packages/ui/archived provenance ledger`'s
|
|
12
12
|
* `features/resource-dashboard/` section for the full shared-vs-separate
|
|
13
13
|
* verdict and quoted structural evidence).
|
|
14
14
|
*
|
|
@@ -22,7 +22,7 @@ export function useRecurringSchedulePicker({ value, onChange, timezones, }) {
|
|
|
22
22
|
const local = detectLocalTimezone();
|
|
23
23
|
return Array.from(new Set([local, ...listSupportedTimezones()]));
|
|
24
24
|
}, [timezones]);
|
|
25
|
-
useDismissOnOutsideOrEscape(() => setOpen(false), { enabled: open, containerRef });
|
|
25
|
+
useDismissOnOutsideOrEscape({ onDismiss: () => setOpen(false) }, { enabled: open, containerRef });
|
|
26
26
|
const toggleOpen = () => {
|
|
27
27
|
setOpen((current) => {
|
|
28
28
|
const next = !current;
|
|
@@ -122,9 +122,11 @@
|
|
|
122
122
|
controls use this family instead of `.jini-btn`. `<a>` is included
|
|
123
123
|
alongside `<button>` because the MCP server tab's "One-click install"
|
|
124
124
|
deep link renders as an anchor styled as a button, not a real button. */
|
|
125
|
-
.
|
|
126
|
-
.
|
|
127
|
-
|
|
125
|
+
/* These primitives belong to settings tab content, including standalone sections.
|
|
126
|
+
Scope them so loading this stylesheet cannot style another package's buttons. */
|
|
127
|
+
.jini-settings-section .jini-btn,
|
|
128
|
+
.jini-settings-section .jini-button,
|
|
129
|
+
.jini-settings-section a.jini-button {
|
|
128
130
|
display: inline-flex;
|
|
129
131
|
align-items: center;
|
|
130
132
|
justify-content: center;
|
|
@@ -142,13 +144,13 @@ a.jini-button {
|
|
|
142
144
|
transition: border-color 120ms var(--jini-ease-out), background-color 120ms var(--jini-ease-out);
|
|
143
145
|
}
|
|
144
146
|
|
|
145
|
-
.jini-btn:hover:not(:disabled),
|
|
146
|
-
.jini-button:hover:not(:disabled) {
|
|
147
|
+
.jini-settings-section .jini-btn:hover:not(:disabled),
|
|
148
|
+
.jini-settings-section .jini-button:hover:not(:disabled) {
|
|
147
149
|
border-color: var(--jini-border-strong);
|
|
148
150
|
}
|
|
149
151
|
|
|
150
|
-
.jini-btn:disabled,
|
|
151
|
-
.jini-button:disabled {
|
|
152
|
+
.jini-settings-section .jini-btn:disabled,
|
|
153
|
+
.jini-settings-section .jini-button:disabled {
|
|
152
154
|
opacity: 0.55;
|
|
153
155
|
cursor: not-allowed;
|
|
154
156
|
}
|
|
@@ -160,18 +162,18 @@ a.jini-button {
|
|
|
160
162
|
`disabled` (it drops `href` instead — see `IntegrationsTab.tsx`), so the
|
|
161
163
|
component sets this class in the same case a real `disabled` attribute
|
|
162
164
|
would apply. */
|
|
163
|
-
.jini-button-primary {
|
|
164
|
-
color:
|
|
165
|
+
.jini-settings-section .jini-button-primary {
|
|
166
|
+
color: var(--jini-accent-ink);
|
|
165
167
|
background: var(--jini-accent);
|
|
166
168
|
border-color: var(--jini-accent);
|
|
167
169
|
}
|
|
168
170
|
|
|
169
|
-
.jini-button-primary:hover {
|
|
171
|
+
.jini-settings-section .jini-button-primary:hover {
|
|
170
172
|
background: var(--jini-accent-hover);
|
|
171
173
|
border-color: var(--jini-accent-hover);
|
|
172
174
|
}
|
|
173
175
|
|
|
174
|
-
.jini-button-disabled {
|
|
176
|
+
.jini-settings-section .jini-button-disabled {
|
|
175
177
|
opacity: 0.55;
|
|
176
178
|
cursor: not-allowed;
|
|
177
179
|
pointer-events: none;
|
|
@@ -344,7 +346,7 @@ a.jini-button {
|
|
|
344
346
|
.jini-provider-chip.active {
|
|
345
347
|
background: var(--jini-accent);
|
|
346
348
|
border-color: var(--jini-accent);
|
|
347
|
-
color:
|
|
349
|
+
color: var(--jini-accent-ink);
|
|
348
350
|
}
|
|
349
351
|
|
|
350
352
|
.jini-provider-chip-status {
|
|
@@ -363,7 +365,7 @@ a.jini-button {
|
|
|
363
365
|
|
|
364
366
|
.jini-provider-chip.active .jini-provider-chip-status.is-configured,
|
|
365
367
|
.jini-provider-chip.active .jini-provider-chip-status.is-unset {
|
|
366
|
-
box-shadow: 0 0 0 2px color-mix(in srgb,
|
|
368
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--jini-accent-ink) 40%, transparent);
|
|
367
369
|
}
|
|
368
370
|
|
|
369
371
|
.jini-byok-card {
|
|
@@ -843,12 +845,12 @@ a.jini-button {
|
|
|
843
845
|
gap: 8px;
|
|
844
846
|
}
|
|
845
847
|
|
|
846
|
-
.jini-btn-ghost,
|
|
847
|
-
.jini-button-ghost {
|
|
848
|
+
.jini-settings-section .jini-btn-ghost,
|
|
849
|
+
.jini-settings-section .jini-button-ghost {
|
|
848
850
|
background: transparent;
|
|
849
851
|
}
|
|
850
852
|
|
|
851
|
-
/* A host app's own global `button:disabled` reset (
|
|
853
|
+
/* A host app's own global `button:disabled` reset (the host’s admin: `styles.css`'s burnt-orange
|
|
852
854
|
`color-mix` tint) is a type selector + pseudo-class, (0,1,1) specificity — it outranks the
|
|
853
855
|
class-only rule above for the SAME property, so a disabled ghost button would otherwise show
|
|
854
856
|
that host's accent tint behind it instead of staying transparent (confirmed live: the Media
|
|
@@ -857,14 +859,14 @@ a.jini-button {
|
|
|
857
859
|
any state, disabled included, and that contract shouldn't depend on what a consuming app's own
|
|
858
860
|
button reset happens to do.
|
|
859
861
|
|
|
860
|
-
`color` needs the same treatment, not just `background`:
|
|
862
|
+
`color` needs the same treatment, not just `background`: the host’s global rule sets BOTH as a
|
|
861
863
|
matched pair (a near-white "ink" meant to sit on ITS OWN peach fill), so resetting only the
|
|
862
864
|
background left white-on-white invisible text — confirmed live, not a hypothetical. `.jini-
|
|
863
865
|
button:disabled` (above, line ~150) already dims via `opacity: 0.55`; restoring the ordinary
|
|
864
866
|
`var(--jini-text)` here just gives that opacity something visible to dim, same as every other
|
|
865
867
|
disabled `.jini-button` variant that doesn't hit this host-specific collision. */
|
|
866
|
-
.jini-btn-ghost:disabled,
|
|
867
|
-
.jini-button-ghost:disabled {
|
|
868
|
+
.jini-settings-section .jini-btn-ghost:disabled,
|
|
869
|
+
.jini-settings-section .jini-button-ghost:disabled {
|
|
868
870
|
background: transparent;
|
|
869
871
|
color: var(--jini-text);
|
|
870
872
|
}
|
|
@@ -1200,7 +1202,7 @@ a.jini-button {
|
|
|
1200
1202
|
}
|
|
1201
1203
|
|
|
1202
1204
|
.jini-privacy-consent-action--primary {
|
|
1203
|
-
color:
|
|
1205
|
+
color: var(--jini-accent-ink);
|
|
1204
1206
|
background: var(--jini-accent);
|
|
1205
1207
|
border-color: var(--jini-accent);
|
|
1206
1208
|
}
|
|
@@ -1268,7 +1270,7 @@ a.jini-button {
|
|
|
1268
1270
|
width: 16px;
|
|
1269
1271
|
height: 16px;
|
|
1270
1272
|
border-radius: 50%;
|
|
1271
|
-
background:
|
|
1273
|
+
background: var(--jini-bg);
|
|
1272
1274
|
box-shadow: var(--jini-shadow-xs);
|
|
1273
1275
|
transition: transform 120ms var(--jini-ease-out);
|
|
1274
1276
|
}
|
|
@@ -1577,7 +1579,7 @@ a.jini-button {
|
|
|
1577
1579
|
}
|
|
1578
1580
|
|
|
1579
1581
|
.jini-snippet-code {
|
|
1580
|
-
font-family:
|
|
1582
|
+
font-family: var(--jini-font-mono);
|
|
1581
1583
|
font-size: 12px;
|
|
1582
1584
|
line-height: 1.6;
|
|
1583
1585
|
color: var(--jini-bg-panel);
|
|
@@ -1613,7 +1615,7 @@ a.jini-button {
|
|
|
1613
1615
|
OD-global `button`/`.ghost`/`.primary`/`.icon-only` rule is rescoped
|
|
1614
1616
|
under `.connectors-panel` — those are unscoped in OD's own app (a
|
|
1615
1617
|
single-purpose SPA where every button gets that treatment), but here
|
|
1616
|
-
they'd otherwise leak onto every unrelated `<button>` in the
|
|
1618
|
+
they'd otherwise leak onto every unrelated `<button>` in the the host admin.
|
|
1617
1619
|
Two intentional substitutions where jini's token set has no equivalent:
|
|
1618
1620
|
`var(--bg)` (OD's page-level background, distinct from `--bg-panel`) →
|
|
1619
1621
|
`var(--jini-bg-subtle)` in the gate's backdrop gradient; OD's
|
|
@@ -1791,14 +1793,14 @@ a.jini-button {
|
|
|
1791
1793
|
.connector-card:hover:not(.is-locked) {
|
|
1792
1794
|
transform: translateY(-1px);
|
|
1793
1795
|
border-color: color-mix(in srgb, var(--jini-text) 28%, var(--jini-border));
|
|
1794
|
-
box-shadow: 0 8px 24px -14px
|
|
1796
|
+
box-shadow: 0 8px 24px -14px color-mix(in srgb, var(--jini-text) 25%, transparent), var(--jini-shadow-xs);
|
|
1795
1797
|
}
|
|
1796
1798
|
.connector-card:focus-visible {
|
|
1797
1799
|
outline: none;
|
|
1798
1800
|
border-color: color-mix(in srgb, var(--jini-text) 48%, var(--jini-border));
|
|
1799
1801
|
box-shadow:
|
|
1800
1802
|
0 0 0 3px color-mix(in srgb, var(--jini-text) 14%, transparent),
|
|
1801
|
-
0 8px 24px -14px
|
|
1803
|
+
0 8px 24px -14px color-mix(in srgb, var(--jini-text) 25%, transparent);
|
|
1802
1804
|
}
|
|
1803
1805
|
.connector-card.status-connected {
|
|
1804
1806
|
border-color: color-mix(in srgb, var(--jini-success) 40%, var(--jini-border));
|
|
@@ -1936,28 +1938,28 @@ a.jini-button {
|
|
|
1936
1938
|
}
|
|
1937
1939
|
.connector-logo.state-error[data-palette='1'] .connector-logo-fallback,
|
|
1938
1940
|
.connector-logo.is-fallback[data-palette='1'] .connector-logo-fallback {
|
|
1939
|
-
background: color-mix(in oklab,
|
|
1940
|
-
color: color-mix(in oklab,
|
|
1941
|
+
background: color-mix(in oklab, var(--jini-primary) 7%, var(--jini-bg-subtle));
|
|
1942
|
+
color: color-mix(in oklab, var(--jini-primary) 38%, var(--jini-text-muted));
|
|
1941
1943
|
}
|
|
1942
1944
|
.connector-logo.state-error[data-palette='2'] .connector-logo-fallback,
|
|
1943
1945
|
.connector-logo.is-fallback[data-palette='2'] .connector-logo-fallback {
|
|
1944
|
-
background: color-mix(in oklab,
|
|
1945
|
-
color: color-mix(in oklab,
|
|
1946
|
+
background: color-mix(in oklab, var(--jini-success) 7%, var(--jini-bg-subtle));
|
|
1947
|
+
color: color-mix(in oklab, var(--jini-success) 38%, var(--jini-text-muted));
|
|
1946
1948
|
}
|
|
1947
1949
|
.connector-logo.state-error[data-palette='3'] .connector-logo-fallback,
|
|
1948
1950
|
.connector-logo.is-fallback[data-palette='3'] .connector-logo-fallback {
|
|
1949
|
-
background: color-mix(in oklab,
|
|
1950
|
-
color: color-mix(in oklab,
|
|
1951
|
+
background: color-mix(in oklab, var(--jini-warning) 7%, var(--jini-bg-subtle));
|
|
1952
|
+
color: color-mix(in oklab, var(--jini-warning) 40%, var(--jini-text-muted));
|
|
1951
1953
|
}
|
|
1952
1954
|
.connector-logo.state-error[data-palette='4'] .connector-logo-fallback,
|
|
1953
1955
|
.connector-logo.is-fallback[data-palette='4'] .connector-logo-fallback {
|
|
1954
|
-
background: color-mix(in oklab,
|
|
1955
|
-
color: color-mix(in oklab,
|
|
1956
|
+
background: color-mix(in oklab, var(--jini-danger) 6%, var(--jini-bg-subtle));
|
|
1957
|
+
color: color-mix(in oklab, var(--jini-danger) 38%, var(--jini-text-muted));
|
|
1956
1958
|
}
|
|
1957
1959
|
.connector-logo.state-error[data-palette='5'] .connector-logo-fallback,
|
|
1958
1960
|
.connector-logo.is-fallback[data-palette='5'] .connector-logo-fallback {
|
|
1959
|
-
background: color-mix(in oklab,
|
|
1960
|
-
color: color-mix(in oklab,
|
|
1961
|
+
background: color-mix(in oklab, var(--jini-muted) 9%, var(--jini-bg-subtle));
|
|
1962
|
+
color: color-mix(in oklab, var(--jini-muted) 42%, var(--jini-text-muted));
|
|
1961
1963
|
}
|
|
1962
1964
|
.connector-logo.state-error,
|
|
1963
1965
|
.connector-logo.is-fallback {
|
|
@@ -2120,7 +2122,7 @@ a.jini-button {
|
|
|
2120
2122
|
/* Base button + `.ghost`/`.primary`/`.icon-only` — OD's `primitives.css`
|
|
2121
2123
|
defines these UNSCOPED (every `<button>` in its single-purpose app gets
|
|
2122
2124
|
them). Rescoped under `.connectors-panel` so they style only this
|
|
2123
|
-
feature's buttons and never leak onto the rest of the
|
|
2125
|
+
feature's buttons and never leak onto the rest of the the host admin. */
|
|
2124
2126
|
.connectors-panel button {
|
|
2125
2127
|
font: inherit;
|
|
2126
2128
|
color: var(--jini-text);
|
|
@@ -2141,10 +2143,10 @@ a.jini-button {
|
|
|
2141
2143
|
gap: 6px;
|
|
2142
2144
|
background: var(--jini-accent);
|
|
2143
2145
|
border-color: var(--jini-accent);
|
|
2144
|
-
color:
|
|
2146
|
+
color: var(--jini-accent-ink);
|
|
2145
2147
|
font-weight: 500;
|
|
2146
2148
|
line-height: 1.2;
|
|
2147
|
-
box-shadow: 0 1px 0
|
|
2149
|
+
box-shadow: 0 1px 0 color-mix(in srgb, var(--jini-text) 18%, transparent) inset, var(--jini-shadow-xs);
|
|
2148
2150
|
}
|
|
2149
2151
|
.connectors-panel button.primary:hover:not(:disabled) {
|
|
2150
2152
|
background: var(--jini-accent-hover);
|
|
@@ -2271,7 +2273,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
2271
2273
|
}
|
|
2272
2274
|
.connector-card > .connector-authorization-link { margin-top: -2px; }
|
|
2273
2275
|
|
|
2274
|
-
/* Gate: masks the grid when the
|
|
2276
|
+
/* Gate: masks the grid when the Connector Provider API key is missing. */
|
|
2275
2277
|
.connector-grid-wrap { position: relative; }
|
|
2276
2278
|
.connector-grid-wrap.is-masked .connector-grid {
|
|
2277
2279
|
filter: blur(2px) saturate(0.85);
|
|
@@ -2334,7 +2336,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
2334
2336
|
flex: 0 0 auto;
|
|
2335
2337
|
}
|
|
2336
2338
|
/* Hide the provider tabs when there is only one option — no choice = no
|
|
2337
|
-
need for a tab (matches OD exactly;
|
|
2339
|
+
need for a tab (matches OD exactly; the host’s single "All" tab hits this). */
|
|
2338
2340
|
.connectors-provider-tabs:has(> :only-child) { display: none; }
|
|
2339
2341
|
.connectors-provider-tab {
|
|
2340
2342
|
appearance: none;
|
|
@@ -2358,11 +2360,11 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
2358
2360
|
.connectors-provider-tab.is-active {
|
|
2359
2361
|
color: var(--jini-text);
|
|
2360
2362
|
background: var(--jini-bg-panel);
|
|
2361
|
-
box-shadow: 0 1px 2px
|
|
2363
|
+
box-shadow: 0 1px 2px color-mix(in srgb, var(--jini-text) 6%, transparent), 0 0 0 1px color-mix(in srgb, var(--jini-text) 12%, var(--jini-border));
|
|
2362
2364
|
}
|
|
2363
2365
|
.connectors-provider-tab:focus-visible {
|
|
2364
2366
|
outline: none;
|
|
2365
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--jini-text) 14%, transparent), 0 1px 2px
|
|
2367
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--jini-text) 14%, transparent), 0 1px 2px color-mix(in srgb, var(--jini-text) 6%, transparent);
|
|
2366
2368
|
}
|
|
2367
2369
|
.connectors-panel-embedded .connector-grid-wrap.is-masked {
|
|
2368
2370
|
min-height: clamp(320px, 45vh, 420px);
|
|
@@ -2613,7 +2615,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
2613
2615
|
position: fixed;
|
|
2614
2616
|
inset: 0;
|
|
2615
2617
|
z-index: 100;
|
|
2616
|
-
background: color-mix(in srgb,
|
|
2618
|
+
background: color-mix(in srgb, var(--jini-text) 18%, transparent);
|
|
2617
2619
|
backdrop-filter: blur(1px);
|
|
2618
2620
|
-webkit-backdrop-filter: blur(1px);
|
|
2619
2621
|
display: flex;
|
|
@@ -2636,7 +2638,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
2636
2638
|
background: var(--jini-bg-panel);
|
|
2637
2639
|
border: 1px solid color-mix(in srgb, var(--jini-border) 82%, transparent);
|
|
2638
2640
|
border-radius: var(--jini-radius-lg);
|
|
2639
|
-
box-shadow: 0 24px 64px -34px
|
|
2641
|
+
box-shadow: 0 24px 64px -34px color-mix(in srgb, var(--jini-text) 50%, transparent);
|
|
2640
2642
|
overflow: hidden;
|
|
2641
2643
|
animation: connector-drawer-slide 220ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
2642
2644
|
}
|
|
@@ -2890,7 +2892,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
2890
2892
|
line-height: 1.42;
|
|
2891
2893
|
}
|
|
2892
2894
|
.connector-drawer-tool-name {
|
|
2893
|
-
font-family:
|
|
2895
|
+
font-family: var(--jini-font-mono);
|
|
2894
2896
|
font-size: 10.5px;
|
|
2895
2897
|
color: var(--jini-text-disabled);
|
|
2896
2898
|
background: color-mix(in srgb, var(--jini-bg-subtle) 76%, transparent);
|
|
@@ -2954,7 +2956,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
2954
2956
|
height: 100%;
|
|
2955
2957
|
max-height: none;
|
|
2956
2958
|
border-radius: var(--jini-radius);
|
|
2957
|
-
box-shadow: 0 20px 48px -28px
|
|
2959
|
+
box-shadow: 0 20px 48px -28px color-mix(in srgb, var(--jini-text) 55%, transparent);
|
|
2958
2960
|
}
|
|
2959
2961
|
@media (max-width: 720px) {
|
|
2960
2962
|
.connectors-panel-embedded:has(.connector-drawer-backdrop) { min-height: clamp(520px, 70vh, 640px); }
|
|
@@ -3087,7 +3089,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
3087
3089
|
}
|
|
3088
3090
|
.jini-skills-row:hover {
|
|
3089
3091
|
border-color: var(--jini-border-strong);
|
|
3090
|
-
box-shadow: 0 1px 2px
|
|
3092
|
+
box-shadow: 0 1px 2px color-mix(in srgb, var(--jini-text) 4%, transparent);
|
|
3091
3093
|
}
|
|
3092
3094
|
.jini-skills-row-expanded {
|
|
3093
3095
|
background: var(--jini-bg-subtle);
|
|
@@ -3308,7 +3310,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
3308
3310
|
padding: 10px 12px;
|
|
3309
3311
|
font-size: 12.5px;
|
|
3310
3312
|
line-height: 1.55;
|
|
3311
|
-
font-family:
|
|
3313
|
+
font-family: var(--jini-font-mono);
|
|
3312
3314
|
white-space: pre-wrap;
|
|
3313
3315
|
}
|
|
3314
3316
|
.jini-skills-file-tree {
|
|
@@ -3355,7 +3357,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
3355
3357
|
margin: 0;
|
|
3356
3358
|
font-size: 11px;
|
|
3357
3359
|
color: var(--jini-text-disabled);
|
|
3358
|
-
font-family:
|
|
3360
|
+
font-family: var(--jini-font-mono);
|
|
3359
3361
|
}
|
|
3360
3362
|
|
|
3361
3363
|
/* Real OD form fields for `SkillDraftForm` — from `.../viewer/
|
|
@@ -3556,7 +3558,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
3556
3558
|
width: 14px;
|
|
3557
3559
|
left: 3px;
|
|
3558
3560
|
bottom: 3px;
|
|
3559
|
-
background-color:
|
|
3561
|
+
background-color: var(--jini-bg);
|
|
3560
3562
|
border-radius: 50%;
|
|
3561
3563
|
transition: transform 0.2s;
|
|
3562
3564
|
}
|
|
@@ -3577,7 +3579,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
3577
3579
|
both features were functional but had literally never been styled by any
|
|
3578
3580
|
host. Reference screenshots: `od-settings-memory.png`,
|
|
3579
3581
|
`od-settings-memory-howitworks.png`, `od-settings-external-mcp.png`,
|
|
3580
|
-
`od-settings-external-mcp-customform.png`.
|
|
3582
|
+
`od-settings-external-mcp-customform.png`. the host mounts the two new
|
|
3581
3583
|
composed components this section styles — `MemorySettingsPanel`
|
|
3582
3584
|
(`features/memory`) and `ExternalMcpTab` (new `features/external-mcp`) —
|
|
3583
3585
|
inert-wrapped in `SettingsUi.tsx`, same pattern as Media providers/
|
|
@@ -3629,7 +3631,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
3629
3631
|
width: 16px;
|
|
3630
3632
|
height: 16px;
|
|
3631
3633
|
border-radius: 50%;
|
|
3632
|
-
background:
|
|
3634
|
+
background: var(--jini-bg);
|
|
3633
3635
|
box-shadow: var(--jini-shadow-xs);
|
|
3634
3636
|
transition: transform 120ms var(--jini-ease-out);
|
|
3635
3637
|
}
|
|
@@ -3722,7 +3724,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
3722
3724
|
display: inline-flex;
|
|
3723
3725
|
align-items: center;
|
|
3724
3726
|
justify-content: center;
|
|
3725
|
-
/*
|
|
3727
|
+
/* the host’s own global `button { padding: 0.5rem 0.95rem }` reset otherwise
|
|
3726
3728
|
wins here (this rule never declared a `padding` of its own, so the
|
|
3727
3729
|
cascade fills it in from that less-specific element selector) — 15.2px
|
|
3728
3730
|
of horizontal padding on each side left a 34px button almost no room for
|
|
@@ -3888,7 +3890,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
3888
3890
|
|
|
3889
3891
|
.library-empty-hint code {
|
|
3890
3892
|
padding: 1px 6px;
|
|
3891
|
-
font-family:
|
|
3893
|
+
font-family: var(--jini-font-mono);
|
|
3892
3894
|
font-size: 11px;
|
|
3893
3895
|
color: var(--jini-text);
|
|
3894
3896
|
background: var(--jini-bg-panel);
|
|
@@ -4093,7 +4095,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
4093
4095
|
.source-config-field textarea {
|
|
4094
4096
|
min-height: 64px;
|
|
4095
4097
|
resize: vertical;
|
|
4096
|
-
font-family:
|
|
4098
|
+
font-family: var(--jini-font-mono);
|
|
4097
4099
|
font-size: 12px;
|
|
4098
4100
|
}
|
|
4099
4101
|
|
|
@@ -4149,7 +4151,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
4149
4151
|
font: inherit;
|
|
4150
4152
|
font-size: 13px;
|
|
4151
4153
|
font-weight: 500;
|
|
4152
|
-
color:
|
|
4154
|
+
color: var(--jini-accent-ink);
|
|
4153
4155
|
background: var(--jini-accent);
|
|
4154
4156
|
border: 1px solid var(--jini-accent);
|
|
4155
4157
|
border-radius: var(--jini-radius-sm);
|
|
@@ -4396,7 +4398,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
4396
4398
|
.source-config-item-card-field dd {
|
|
4397
4399
|
margin: 0;
|
|
4398
4400
|
font-size: 12px;
|
|
4399
|
-
font-family:
|
|
4401
|
+
font-family: var(--jini-font-mono);
|
|
4400
4402
|
color: var(--jini-text);
|
|
4401
4403
|
word-break: break-all;
|
|
4402
4404
|
}
|
|
@@ -4440,7 +4442,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
4440
4442
|
font: inherit;
|
|
4441
4443
|
font-size: 13px;
|
|
4442
4444
|
font-weight: 500;
|
|
4443
|
-
color:
|
|
4445
|
+
color: var(--jini-accent-ink);
|
|
4444
4446
|
background: var(--jini-accent);
|
|
4445
4447
|
border: 1px solid var(--jini-accent);
|
|
4446
4448
|
border-radius: var(--jini-radius-sm);
|
|
@@ -4495,7 +4497,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
4495
4497
|
padding: 5px 14px;
|
|
4496
4498
|
font-size: 12px;
|
|
4497
4499
|
font-weight: 600;
|
|
4498
|
-
color:
|
|
4500
|
+
color: var(--jini-accent-ink);
|
|
4499
4501
|
background: var(--jini-accent);
|
|
4500
4502
|
border-radius: var(--jini-radius-pill);
|
|
4501
4503
|
}
|
|
@@ -4507,7 +4509,7 @@ button.connector-action.is-loading { cursor: wait; }
|
|
|
4507
4509
|
|
|
4508
4510
|
.external-mcp-stored-at code {
|
|
4509
4511
|
padding: 1px 6px;
|
|
4510
|
-
font-family:
|
|
4512
|
+
font-family: var(--jini-font-mono);
|
|
4511
4513
|
font-size: 11px;
|
|
4512
4514
|
color: var(--jini-text);
|
|
4513
4515
|
background: var(--jini-bg-subtle);
|
|
@@ -38,7 +38,7 @@ export declare const DEFAULT_SKETCH_DARK_TOOL_COLOR = "#ffffff";
|
|
|
38
38
|
* Matches the Mermaid-dialog "Insert" button's rendered label (English
|
|
39
39
|
* only). The source product's own pattern also matched a hardcoded Chinese
|
|
40
40
|
* translation (`/^(Insert|插入)/i`) — dropped as real translated copy, not a
|
|
41
|
-
* mechanism (see `packages/ui/
|
|
41
|
+
* mechanism (see `packages/ui/archived provenance ledger`); a host running Excalidraw in
|
|
42
42
|
* a locale where this button's label differs should pass its own pattern via
|
|
43
43
|
* `SketchEditorProps.mermaidInsertLabelPattern`.
|
|
44
44
|
*/
|
|
@@ -96,7 +96,7 @@ export const DEFAULT_SKETCH_DARK_TOOL_COLOR = '#ffffff';
|
|
|
96
96
|
* Matches the Mermaid-dialog "Insert" button's rendered label (English
|
|
97
97
|
* only). The source product's own pattern also matched a hardcoded Chinese
|
|
98
98
|
* translation (`/^(Insert|插入)/i`) — dropped as real translated copy, not a
|
|
99
|
-
* mechanism (see `packages/ui/
|
|
99
|
+
* mechanism (see `packages/ui/archived provenance ledger`); a host running Excalidraw in
|
|
100
100
|
* a locale where this button's label differs should pass its own pattern via
|
|
101
101
|
* `SketchEditorProps.mermaidInsertLabelPattern`.
|
|
102
102
|
*/
|
|
@@ -21,7 +21,7 @@ export declare function applySketchContextMenuSimplification(root: HTMLElement,
|
|
|
21
21
|
* Walks `root`'s text nodes and a fixed set of text-bearing attributes,
|
|
22
22
|
* rewriting any that match `overrides`. `overrides` is entirely
|
|
23
23
|
* host-supplied — no translated copy ships as a default (see
|
|
24
|
-
* `packages/ui/
|
|
24
|
+
* `packages/ui/archived provenance ledger`).
|
|
25
25
|
*/
|
|
26
26
|
export declare function applySketchDomTextOverrides(root: ParentNode, overrides: SketchDomTextOverrides | undefined): void;
|
|
27
27
|
export declare function rewriteExcalidrawUnableToEmbedToasts(root: HTMLElement, replacement: string, additionalPhrases?: readonly string[]): void;
|
|
@@ -147,7 +147,7 @@ export function applySketchContextMenuSimplification(root, viewportRoot, allowLi
|
|
|
147
147
|
* Walks `root`'s text nodes and a fixed set of text-bearing attributes,
|
|
148
148
|
* rewriting any that match `overrides`. `overrides` is entirely
|
|
149
149
|
* host-supplied — no translated copy ships as a default (see
|
|
150
|
-
* `packages/ui/
|
|
150
|
+
* `packages/ui/archived provenance ledger`).
|
|
151
151
|
*/
|
|
152
152
|
export function applySketchDomTextOverrides(root, overrides) {
|
|
153
153
|
if (!overrides || Object.keys(overrides).length === 0 || typeof document === 'undefined')
|
|
@@ -4,7 +4,7 @@ export interface UseSketchDomEnhancementsParams {
|
|
|
4
4
|
containerRef: RefObject<HTMLElement | null>;
|
|
5
5
|
t: SketchTranslate;
|
|
6
6
|
/** Host-supplied translations for Excalidraw's own baked-in English UI
|
|
7
|
-
* text — no default translated copy ships (see `packages/ui/
|
|
7
|
+
* text — no default translated copy ships (see `packages/ui/archived provenance ledger`). */
|
|
8
8
|
domTextOverrides?: SketchDomTextOverrides | undefined;
|
|
9
9
|
tooltipTargets?: readonly SketchTooltipTarget[] | undefined;
|
|
10
10
|
contextMenuActionOrder?: readonly string[] | undefined;
|