@jini-ai/ui 0.3.14 → 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.
Files changed (327) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/README.md +120 -26
  3. package/dist/browser/index.js +1 -1
  4. package/dist/browser/useDismissOnOutsideOrEscape.d.ts +10 -1
  5. package/dist/browser/useDismissOnOutsideOrEscape.js +7 -4
  6. package/dist/browser/useGlobalKeydown.d.ts +14 -2
  7. package/dist/browser/useGlobalKeydown.js +8 -17
  8. package/dist/features/a2ui/catalog-from-registry.d.ts +6 -3
  9. package/dist/features/a2ui/catalog-from-registry.js +1 -1
  10. package/dist/features/a2ui/index.d.ts +1 -1
  11. package/dist/features/a2ui/protocol.d.ts +1 -1
  12. package/dist/features/a2ui/renderer.js +23 -10
  13. package/dist/features/a2ui/use-a2ui-surface.d.ts +11 -6
  14. package/dist/features/a2ui/use-a2ui-surface.js +40 -10
  15. package/dist/features/admin-widgets/components/ComingSoonNotice.d.ts +11 -0
  16. package/dist/features/admin-widgets/components/ComingSoonNotice.js +7 -0
  17. package/dist/features/admin-widgets/components/ComingSoonPanel.d.ts +10 -0
  18. package/dist/features/admin-widgets/components/ComingSoonPanel.js +10 -0
  19. package/dist/features/admin-widgets/components/ImagePreviewModal.d.ts +16 -0
  20. package/dist/features/admin-widgets/components/ImagePreviewModal.hooks.d.ts +13 -0
  21. package/dist/features/admin-widgets/components/ImagePreviewModal.hooks.js +46 -0
  22. package/dist/features/admin-widgets/components/ImagePreviewModal.js +13 -0
  23. package/dist/features/admin-widgets/components/InfoTip.d.ts +18 -0
  24. package/dist/features/admin-widgets/components/InfoTip.hooks.d.ts +16 -0
  25. package/dist/features/admin-widgets/components/InfoTip.hooks.js +45 -0
  26. package/dist/features/admin-widgets/components/InfoTip.js +12 -0
  27. package/dist/features/admin-widgets/components/SeeMore/SeeMore.d.ts +41 -0
  28. package/dist/features/admin-widgets/components/SeeMore/SeeMore.hooks.d.ts +14 -0
  29. package/dist/features/admin-widgets/components/SeeMore/SeeMore.hooks.js +57 -0
  30. package/dist/features/admin-widgets/components/SeeMore/SeeMore.js +24 -0
  31. package/dist/features/admin-widgets/components/Select/Select.d.ts +39 -0
  32. package/dist/features/admin-widgets/components/Select/Select.hooks.d.ts +105 -0
  33. package/dist/features/admin-widgets/components/Select/Select.hooks.js +359 -0
  34. package/dist/features/admin-widgets/components/Select/Select.js +46 -0
  35. package/dist/features/admin-widgets/index.d.ts +20 -0
  36. package/dist/features/admin-widgets/index.js +11 -0
  37. package/dist/features/admin-widgets/styles/admin-widgets.css +2 -0
  38. package/dist/features/appearance/constants.d.ts +2 -2
  39. package/dist/features/appearance/constants.js +2 -1
  40. package/dist/features/appearance/react/components/AppearanceTab.js +5 -5
  41. package/dist/features/appearance/rules.d.ts +10 -4
  42. package/dist/features/appearance/rules.js +5 -5
  43. package/dist/features/appearance/types.d.ts +1 -1
  44. package/dist/features/appearance/types.js +1 -1
  45. package/dist/features/asset-grid/react/components/AssetGrid.js +1 -1
  46. package/dist/features/asset-grid/react/components/DeleteConfirmDialog.js +1 -1
  47. package/dist/features/asset-grid/react/hooks/useAssetGridKeyboardShortcuts.js +23 -21
  48. package/dist/features/asset-grid/react/hooks/useAssetGridLiveUpdates.d.ts +1 -1
  49. package/dist/features/asset-grid/react/hooks/useAssetGridLiveUpdates.js +1 -1
  50. package/dist/features/asset-tree-browser/ports.d.ts +3 -1
  51. package/dist/features/asset-tree-browser/react/hooks/useAssetTreeCopyLocalPath.js +1 -1
  52. package/dist/features/browser-chrome/react/components/BrowserViewportControls.js +1 -1
  53. package/dist/features/browser-chrome/types.js +1 -1
  54. package/dist/features/command-palette/ports.js +1 -1
  55. package/dist/features/connectors/ConnectorsBrowser.js +2 -2
  56. package/dist/features/connectors/components/ConnectorCard.js +3 -3
  57. package/dist/features/connectors/components/ConnectorDetailDrawer.js +1 -1
  58. package/dist/features/connectors/components/ConnectorGrid.js +2 -2
  59. package/dist/features/connectors/components/ConnectorSearchBar.js +2 -2
  60. package/dist/features/connectors/components/ProviderTabBar.js +2 -2
  61. package/dist/features/connectors/constants.d.ts +1 -1
  62. package/dist/features/connectors/constants.js +1 -1
  63. package/dist/features/connectors/hooks/useConnectorAuthorization.js +1 -1
  64. package/dist/features/connectors/rules.d.ts +2 -2
  65. package/dist/features/connectors/rules.js +1 -1
  66. package/dist/features/connectors/types.d.ts +2 -2
  67. package/dist/features/connectors/types.js +1 -1
  68. package/dist/features/execution/react/components/ByokProviderForm.js +3 -3
  69. package/dist/features/execution/react/components/ExecutionTab.js +2 -2
  70. package/dist/features/execution/react/components/LocalCliAgentCard.js +3 -3
  71. package/dist/features/execution/react/components/LocalCliAgentList.js +2 -2
  72. package/dist/features/execution/react/components/ProviderChipGroup.js +2 -2
  73. package/dist/features/execution/react/components/SearchableModelSelect.js +1 -1
  74. package/dist/features/execution/rules.js +1 -1
  75. package/dist/features/file-dropzone/react/components/FileDropzone.js +5 -3
  76. package/dist/features/file-dropzone/react/hooks/useFileDropzone.d.ts +1 -1
  77. package/dist/features/file-dropzone/react/hooks/useFileDropzone.js +1 -1
  78. package/dist/features/file-dropzone/types.d.ts +1 -1
  79. package/dist/features/file-dropzone/types.js +1 -1
  80. package/dist/features/folder-path-drop/react/hooks/useFolderPathDropCapture.js +6 -4
  81. package/dist/features/html-editor/canvas-content-wrapper.js +1 -1
  82. package/dist/features/html-editor/canvas-embed-placeholders.js +7 -7
  83. package/dist/features/html-editor/canvas-style.d.ts +4 -0
  84. package/dist/features/html-editor/canvas-style.js +6 -21
  85. package/dist/features/html-viewer/constants.d.ts +1 -1
  86. package/dist/features/html-viewer/constants.js +1 -1
  87. package/dist/features/html-viewer/react/components/PresentMenu.js +1 -1
  88. package/dist/features/html-viewer/react/components/ZoomMenu.js +1 -1
  89. package/dist/features/html-viewer/types.d.ts +1 -1
  90. package/dist/features/html-viewer/types.js +1 -1
  91. package/dist/features/i18n/dictionaries/index.d.ts +2 -3
  92. package/dist/features/i18n/dictionaries/settings-dialog.en.d.ts +1 -1
  93. package/dist/features/i18n/dictionary-translator.d.ts +16 -0
  94. package/dist/features/i18n/dictionary-translator.js +14 -0
  95. package/dist/features/i18n/index.d.ts +3 -0
  96. package/dist/features/i18n/index.js +2 -0
  97. package/dist/features/i18n/locale.d.ts +1 -1
  98. package/dist/features/i18n/template-i18n.d.ts +26 -0
  99. package/dist/features/i18n/template-i18n.js +36 -0
  100. package/dist/features/iframe-pool/react/components/IframeKeepAliveProvider.d.ts +1 -1
  101. package/dist/features/iframe-pool/react/components/IframeKeepAliveProvider.js +1 -1
  102. package/dist/features/instructions/react/components/InstructionsTab.js +1 -1
  103. package/dist/features/integrations/react/components/ClientPicker.js +4 -4
  104. package/dist/features/integrations/react/components/CodexInstallToggleButton.js +1 -1
  105. package/dist/features/integrations/react/components/IntegrationsTab.js +2 -2
  106. package/dist/features/integrations/react/components/SnippetBlock.js +1 -1
  107. package/dist/features/integrations/types.d.ts +1 -1
  108. package/dist/features/integrations/types.js +1 -1
  109. package/dist/features/interactive-ui/index.js +13 -13
  110. package/dist/features/interactive-ui/interactive-ui.css +1 -1
  111. package/dist/features/interactive-ui/providers/recharts/bar-chart.js +1 -1
  112. package/dist/features/interactive-ui/providers/recharts/line-chart.js +1 -1
  113. package/dist/features/interactive-ui/providers/recharts/pie-chart.js +2 -2
  114. package/dist/features/interactive-ui/providers/shadcn/lib/utils.d.ts +1 -1
  115. package/dist/features/interactive-ui/providers/shadcn/lib/utils.js +1 -1
  116. package/dist/features/interactive-ui/registry.d.ts +15 -4
  117. package/dist/features/interactive-ui/registry.js +5 -5
  118. package/dist/features/language/react/components/LanguageTab.js +2 -2
  119. package/dist/features/list-detail-panel/types.d.ts +1 -1
  120. package/dist/features/list-detail-panel/types.js +1 -1
  121. package/dist/features/mcp-ui/confirmation-store.js +2 -1
  122. package/dist/features/mcp-ui/surfaces/tokens.d.ts +17 -20
  123. package/dist/features/mcp-ui/surfaces/tokens.js +33 -35
  124. package/dist/features/media-providers/index.d.ts +1 -1
  125. package/dist/features/media-providers/index.js +1 -1
  126. package/dist/features/media-providers/react/components/MediaProvidersTab.js +4 -4
  127. package/dist/features/media-providers/rules.js +1 -1
  128. package/dist/features/memory/async-commit-guard.d.ts +1 -1
  129. package/dist/features/memory/constants.d.ts +1 -1
  130. package/dist/features/memory/constants.js +1 -1
  131. package/dist/features/memory/dependencies.d.ts +11 -23
  132. package/dist/features/memory/dependencies.js +116 -106
  133. package/dist/features/memory/index.d.ts +1 -1
  134. package/dist/features/memory/index.js +1 -1
  135. package/dist/features/memory/react/components/MemoryAdvancedModal.js +2 -2
  136. package/dist/features/memory/react/components/MemoryEntryCard.js +1 -1
  137. package/dist/features/memory/react/components/MemoryExtractionCard.js +1 -1
  138. package/dist/features/memory/react/components/MemoryHooksPanel.js +1 -1
  139. package/dist/features/memory/react/components/MemoryList.js +5 -5
  140. package/dist/features/memory/react/components/MemoryManualEditor.js +5 -5
  141. package/dist/features/memory/react/components/MemorySettingsPanel.js +1 -1
  142. package/dist/features/memory/react/hooks/useMemoryEntries.hooks.js +1 -1
  143. package/dist/features/memory/react/hooks/useMemoryNavigation.hooks.js +1 -1
  144. package/dist/features/memory/react/styles.js +1 -1
  145. package/dist/features/memory/rules.js +1 -1
  146. package/dist/features/memory/types.d.ts +1 -1
  147. package/dist/features/mention-autocomplete/react/hooks/useMentionAutocomplete.js +1 -1
  148. package/dist/features/notifications/react/components/NotificationsTab.js +7 -7
  149. package/dist/features/notifications/types.d.ts +1 -1
  150. package/dist/features/observability/boot-timing.js +2 -2
  151. package/dist/features/observability/stuck-run.js +1 -1
  152. package/dist/features/observability/white-screen.js +4 -4
  153. package/dist/features/panel-kit/fetch-query/adapter.react.d.ts +35 -0
  154. package/dist/features/panel-kit/fetch-query/adapter.react.js +122 -0
  155. package/dist/features/panel-kit/fetch-query/cache.d.ts +123 -0
  156. package/dist/features/panel-kit/fetch-query/cache.js +231 -0
  157. package/dist/features/panel-kit/fetch-query/environment.browser.d.ts +4 -0
  158. package/dist/features/panel-kit/fetch-query/environment.browser.js +25 -0
  159. package/dist/features/panel-kit/fetch-query/index.d.ts +4 -0
  160. package/dist/features/panel-kit/fetch-query/index.js +2 -0
  161. package/dist/features/panel-kit/fetch-query/types.d.ts +91 -0
  162. package/dist/features/panel-kit/fetch-query/types.js +2 -0
  163. package/dist/features/panel-kit/helpers/format-timestamp.d.ts +18 -0
  164. package/dist/features/panel-kit/helpers/format-timestamp.js +20 -0
  165. package/dist/features/panel-kit/helpers/permissions.d.ts +11 -0
  166. package/dist/features/panel-kit/helpers/permissions.js +10 -0
  167. package/dist/features/panel-kit/helpers/resolve-active-tab-id.d.ts +13 -0
  168. package/dist/features/panel-kit/helpers/resolve-active-tab-id.js +13 -0
  169. package/dist/features/panel-kit/helpers/retry-unreachable.d.ts +20 -0
  170. package/dist/features/panel-kit/helpers/retry-unreachable.js +39 -0
  171. package/dist/features/panel-kit/hooks/use-async-action.hooks.d.ts +13 -0
  172. package/dist/features/panel-kit/hooks/use-async-action.hooks.js +27 -0
  173. package/dist/features/panel-kit/hooks/use-dirty-guard.hooks.d.ts +18 -0
  174. package/dist/features/panel-kit/hooks/use-dirty-guard.hooks.js +33 -0
  175. package/dist/features/panel-kit/hooks/use-focus-trap.hooks.d.ts +8 -0
  176. package/dist/features/panel-kit/hooks/use-focus-trap.hooks.js +66 -0
  177. package/dist/features/panel-kit/hooks/use-serial-writes.hooks.d.ts +26 -0
  178. package/dist/features/panel-kit/hooks/use-serial-writes.hooks.js +41 -0
  179. package/dist/features/panel-kit/hooks/use-settlement-generation.hooks.d.ts +9 -0
  180. package/dist/features/panel-kit/hooks/use-settlement-generation.hooks.js +25 -0
  181. package/dist/features/panel-kit/index.d.ts +19 -0
  182. package/dist/features/panel-kit/index.js +13 -0
  183. package/dist/features/privacy/react/components/PrivacyTab.js +2 -2
  184. package/dist/features/privacy/types.d.ts +1 -1
  185. package/dist/features/privacy/types.js +1 -1
  186. package/dist/features/progress-card/reference-adapters.d.ts +1 -1
  187. package/dist/features/progress-card/rules.d.ts +1 -1
  188. package/dist/features/progress-card/rules.js +1 -1
  189. package/dist/features/progress-card/types.d.ts +1 -1
  190. package/dist/features/progress-card/types.js +1 -1
  191. package/dist/features/resource-dashboard/dependencies.d.ts +1 -1
  192. package/dist/features/resource-dashboard/ports.d.ts +1 -1
  193. package/dist/features/resource-dashboard/react/hooks/useResourceBoard.d.ts +1 -1
  194. package/dist/features/resource-dashboard/react/hooks/useResourceBoard.js +1 -1
  195. package/dist/features/resource-dashboard/rules.d.ts +1 -1
  196. package/dist/features/resource-dashboard/rules.js +2 -2
  197. package/dist/features/resource-dashboard/types.d.ts +4 -4
  198. package/dist/features/resource-dashboard/types.js +1 -1
  199. package/dist/features/schedule-picker/react/hooks/useRecurringSchedulePicker.js +1 -1
  200. package/dist/features/settings/dialog/styles/settings-dialog.css +62 -60
  201. package/dist/features/sketch-editor/constants.d.ts +1 -1
  202. package/dist/features/sketch-editor/constants.js +1 -1
  203. package/dist/features/sketch-editor/dom.d.ts +1 -1
  204. package/dist/features/sketch-editor/dom.js +1 -1
  205. package/dist/features/sketch-editor/react/hooks/useSketchDomEnhancements.d.ts +1 -1
  206. package/dist/features/sketch-editor/react/hooks/useSketchDomEnhancements.js +11 -9
  207. package/dist/features/sketch-editor/types.d.ts +1 -1
  208. package/dist/features/sketch-editor/types.js +1 -1
  209. package/dist/features/skills/react/components/SkillDraftForm.js +1 -1
  210. package/dist/features/skills/react/components/SkillRow.js +1 -1
  211. package/dist/features/skills/react/components/SkillsTab.js +2 -2
  212. package/dist/features/source-config-list/agent-handles.js +2 -2
  213. package/dist/features/source-config-list/react/hooks/useSourceConfigAddForm.d.ts +1 -1
  214. package/dist/features/source-config-list/react/hooks/useSourceConfigAddForm.js +1 -1
  215. package/dist/features/source-config-list/rules.d.ts +1 -1
  216. package/dist/features/source-config-list/rules.js +3 -3
  217. package/dist/features/source-config-list/types.d.ts +1 -1
  218. package/dist/features/source-config-list/types.js +1 -1
  219. package/dist/features/tab-launcher-menu/react/hooks/useTabLauncherMenu.js +1 -1
  220. package/dist/features/tab-strip/index.d.ts +4 -0
  221. package/dist/features/tab-strip/index.js +2 -0
  222. package/dist/features/tab-strip/react/components/TabBar.d.ts +23 -0
  223. package/dist/features/tab-strip/react/components/TabBar.hooks.d.ts +25 -0
  224. package/dist/features/tab-strip/react/components/TabBar.hooks.js +57 -0
  225. package/dist/features/tab-strip/react/components/TabBar.js +18 -0
  226. package/dist/features/tab-strip/react/components/TabStrip.js +2 -1
  227. package/dist/features/tab-strip/react/components/TabStripFrame.d.ts +3 -0
  228. package/dist/features/tab-strip/react/components/TabStripFrame.js +7 -0
  229. package/dist/features/tabbed-dialog/react/hooks/useTabbedDialog.js +1 -1
  230. package/dist/features/tabbed-dialog/styles/tabbed-dialog.css +8 -141
  231. package/dist/features/tabbed-dialog/types.d.ts +1 -1
  232. package/dist/features/tabbed-dialog/types.js +1 -1
  233. package/dist/features/version-manager/ports.d.ts +1 -1
  234. package/dist/features/version-manager/react/components/VersionPromptPopover.js +5 -3
  235. package/dist/features/version-manager/react/components/VersionRestoreControl.js +1 -1
  236. package/dist/features/version-manager/types.d.ts +1 -1
  237. package/dist/features/version-manager/types.js +1 -1
  238. package/dist/features/viewer-shell/dependencies.js +1 -1
  239. package/dist/features/viewer-shell/ports.d.ts +1 -1
  240. package/dist/features/viewer-shell/react/components/ViewportSwitcher.js +1 -1
  241. package/dist/features/viewer-shell/react/hooks/useMarkdownScrollSync.d.ts +1 -1
  242. package/dist/features/viewer-shell/react/hooks/useMarkdownScrollSync.js +1 -1
  243. package/dist/features/viewer-shell/types.d.ts +1 -1
  244. package/dist/features/viewer-shell/types.js +1 -1
  245. package/dist/index.d.ts +420 -0
  246. package/dist/index.js +421 -1
  247. package/dist/react/components/ComponentKitPreview.js +1 -1
  248. package/dist/react/components/EditorIcon.d.ts +1 -1
  249. package/dist/react/components/EditorIcon.js +22 -22
  250. package/dist/react/components/ExportDiagnosticsButton.d.ts +8 -1
  251. package/dist/react/components/ExportDiagnosticsButton.js +6 -6
  252. package/dist/react/components/PaletteTweaks.js +5 -5
  253. package/dist/react/hooks/useBrandFonts.d.ts +19 -4
  254. package/dist/react/hooks/useBrandFonts.js +11 -7
  255. package/dist/react/hooks/useDebouncedValue.d.ts +12 -1
  256. package/dist/react/hooks/useDebouncedValue.js +9 -4
  257. package/dist/react/hooks/useStableHandler.d.ts +3 -1
  258. package/dist/react/hooks/useStableHandler.js +1 -1
  259. package/dist/renderers/annotation-canvas/drawing.d.ts +4 -4
  260. package/dist/renderers/annotation-canvas/drawing.js +28 -15
  261. package/dist/renderers/annotation-canvas/react/components/AnnotationCanvas.js +2 -2
  262. package/dist/renderers/annotation-canvas/react/hooks/useAnnotationCanvas.js +4 -3
  263. package/dist/renderers/annotation-canvas/rules.d.ts +1 -1
  264. package/dist/renderers/annotation-canvas/theme.d.ts +13 -0
  265. package/dist/renderers/annotation-canvas/theme.js +16 -0
  266. package/dist/renderers/annotation-canvas/types.d.ts +1 -1
  267. package/dist/renderers/index.d.ts +1 -1
  268. package/dist/renderers/new-tab-preview.d.ts +3 -0
  269. package/dist/renderers/new-tab-preview.js +3 -1
  270. package/dist/renderers/preview-modal-shell/react/hooks/usePreviewModalShell.d.ts +1 -1
  271. package/dist/renderers/preview-modal-shell/react/hooks/usePreviewModalShell.js +1 -1
  272. package/dist/renderers/preview-modal-shell/rules.d.ts +1 -1
  273. package/dist/renderers/preview-modal-shell/types.d.ts +3 -3
  274. package/dist/renderers/preview-modal-shell/types.js +2 -2
  275. package/dist/renderers/react/components/ArtifactView.d.ts +1 -1
  276. package/dist/renderers/react/components/ArtifactView.js +1 -1
  277. package/dist/renderers/registry.d.ts +12 -6
  278. package/dist/renderers/registry.js +7 -9
  279. package/dist/renderers/renderers/html.js +2 -2
  280. package/dist/renderers/renderers/index.js +1 -1
  281. package/dist/renderers/renderers/markdown.js +2 -2
  282. package/dist/renderers/renderers/react-component.js +1 -1
  283. package/dist/renderers/renderers/svg.js +1 -1
  284. package/dist/renderers/shiki.js +1 -1
  285. package/dist/renderers/srcdoc/build.d.ts +1 -1
  286. package/dist/renderers/srcdoc/build.js +1 -1
  287. package/dist/renderers/url-load-decision.d.ts +1 -1
  288. package/dist/renderers/url-load-decision.js +1 -1
  289. package/dist/styles/admin.css +273 -0
  290. package/dist/styles/variables.css +117 -0
  291. package/dist/theme/apply.d.ts +9 -0
  292. package/dist/theme/apply.js +77 -0
  293. package/dist/theme/color-scheme.d.ts +8 -0
  294. package/dist/theme/color-scheme.js +9 -0
  295. package/dist/theme/default.d.ts +4 -0
  296. package/dist/theme/default.js +11 -0
  297. package/dist/theme/index.d.ts +6 -0
  298. package/dist/theme/index.js +5 -0
  299. package/dist/theme/stylesheet.d.ts +8 -0
  300. package/dist/theme/stylesheet.js +14 -0
  301. package/dist/theme/types.d.ts +39 -0
  302. package/dist/theme/types.js +2 -0
  303. package/dist/theme/validation.d.ts +15 -0
  304. package/dist/theme/validation.js +55 -0
  305. package/dist/utils/appearance.js +1 -1
  306. package/dist/utils/browser-request.d.ts +12 -0
  307. package/dist/utils/browser-request.js +10 -0
  308. package/dist/utils/color-math.d.ts +20 -6
  309. package/dist/utils/color-math.js +12 -12
  310. package/dist/utils/copy-to-clipboard.d.ts +19 -8
  311. package/dist/utils/copy-to-clipboard.js +15 -11
  312. package/dist/utils/dom-subscriptions.js +1 -1
  313. package/dist/utils/endpoint-policy.d.ts +9 -3
  314. package/dist/utils/endpoint-policy.js +5 -5
  315. package/dist/utils/markdown-scroll-sync.js +3 -3
  316. package/dist/utils/notifications.d.ts +1 -1
  317. package/dist/utils/notifications.js +1 -1
  318. package/dist/utils/polygon-selection.d.ts +1 -1
  319. package/dist/utils/polygon-selection.js +1 -1
  320. package/dist/utils/scroll-tabs-with-wheel.d.ts +4 -1
  321. package/dist/utils/scroll-tabs-with-wheel.js +1 -1
  322. package/dist/utils/smooth-scroll-to-top.js +1 -1
  323. package/dist/utils/sse.d.ts +3 -1
  324. package/dist/utils/sse.js +1 -1
  325. package/package.json +105 -16
  326. package/dist/features/lexical-rich-text-editor/react/test-support/lexical-harness.d.ts +0 -11
  327. package/dist/features/lexical-rich-text-editor/react/test-support/lexical-harness.js +0 -35
@@ -4,7 +4,7 @@
4
4
  * telemetry-consent card (share/decline + two per-category toggles) over a
5
5
  * generic `{ metrics, content }` shape, plus an installation-id
6
6
  * generate/rotate flow. Verified generic for this task (see
7
- * `packages/ui/source-map.md` for the full note): the only OD coupling was
7
+ * `packages/ui/archived provenance ledger` for the full note): the only OD coupling was
8
8
  * the `AppConfig`/`TelemetryConfig` type import (replaced by the local
9
9
  * types below) and the analytics tracking calls (dropped, same as every
10
10
  * other tab in this feature).
@@ -4,7 +4,7 @@
4
4
  * telemetry-consent card (share/decline + two per-category toggles) over a
5
5
  * generic `{ metrics, content }` shape, plus an installation-id
6
6
  * generate/rotate flow. Verified generic for this task (see
7
- * `packages/ui/source-map.md` for the full note): the only OD coupling was
7
+ * `packages/ui/archived provenance ledger` for the full note): the only OD coupling was
8
8
  * the `AppConfig`/`TelemetryConfig` type import (replaced by the local
9
9
  * types below) and the analytics tracking calls (dropped, same as every
10
10
  * other tab in this feature).
@@ -6,7 +6,7 @@
6
6
  * on that package, and any host whose real types are a structural superset
7
7
  * can pass them in directly. Field-level provenance and what was
8
8
  * deliberately dropped (a Bash `rm`-command heuristic from the file-ops
9
- * derivation) are documented in `packages/ui/source-map.md`.
9
+ * derivation) are documented in `packages/ui/archived provenance ledger`.
10
10
  *
11
11
  * These adapters are shipped as documented reference material, not as the
12
12
  * package's primary port surface — a host with its own run/job shape maps
@@ -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/source-map.md`). */
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/source-map.md`). */
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/source-map.md` for provenance.
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/source-map.md` for provenance.
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/source-map.md`'s
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/source-map.md`: the only shared surface in this feature
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/source-map.md`'s "Dropped" list.
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/source-map.md`'s "Dropped" list.
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/source-map.md`'s "share only what correctness forces" note). */
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/source-map.md` for full provenance.
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/source-map.md`'s "share only what correctness forces" note). */
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/source-map.md`'s
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/source-map.md` for the note on reconciling either against
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
- * source-map.md's "Dropped" list).
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 source-map.md for what was dropped (the crystallize automation-evolution workflow is OD-specific and not ported; "open" is the one generic action kept). */
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/source-map.md`'s
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
- .jini-btn,
126
- .jini-button,
127
- a.jini-button {
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: #fff;
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: #fff;
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, #fff 40%, transparent);
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 (Tovu's admin: `styles.css`'s burnt-orange
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`: Tovu's global rule sets BOTH as a
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: #fff;
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: #fff;
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: ui-monospace, "SF Mono", Menlo, monospace;
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 Tovu admin.
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 rgba(0, 0, 0, 0.25), var(--jini-shadow-xs);
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 rgba(0, 0, 0, 0.25);
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, #6b8afd 7%, var(--jini-bg-subtle));
1940
- color: color-mix(in oklab, #6b8afd 38%, var(--jini-text-muted));
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, #2dbfa8 7%, var(--jini-bg-subtle));
1945
- color: color-mix(in oklab, #2dbfa8 38%, var(--jini-text-muted));
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, #d18b3a 7%, var(--jini-bg-subtle));
1950
- color: color-mix(in oklab, #d18b3a 40%, var(--jini-text-muted));
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, #c356b3 6%, var(--jini-bg-subtle));
1955
- color: color-mix(in oklab, #c356b3 38%, var(--jini-text-muted));
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, #5d6b85 9%, var(--jini-bg-subtle));
1960
- color: color-mix(in oklab, #5d6b85 42%, var(--jini-text-muted));
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 Tovu admin. */
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: #fff;
2146
+ color: var(--jini-accent-ink);
2145
2147
  font-weight: 500;
2146
2148
  line-height: 1.2;
2147
- box-shadow: 0 1px 0 rgba(180, 90, 59, 0.18) inset, var(--jini-shadow-xs);
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 Composio API key is missing. */
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; Tovu's single "All" tab hits this). */
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 rgba(0, 0, 0, 0.06), 0 0 0 1px color-mix(in srgb, var(--jini-text) 12%, var(--jini-border));
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 rgba(0, 0, 0, 0.06);
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, #111827 18%, transparent);
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 rgba(15, 23, 42, 0.5);
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: ui-monospace, "SF Mono", Menlo, monospace;
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 rgba(15, 23, 42, 0.55);
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 rgba(0, 0, 0, 0.04);
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: ui-monospace, "SF Mono", Menlo, monospace;
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: ui-monospace, "SF Mono", Menlo, monospace;
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: white;
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`. Tovu mounts the two new
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: #fff;
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
- /* Tovu's own global `button { padding: 0.5rem 0.95rem }` reset otherwise
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: ui-monospace, "SF Mono", Menlo, monospace;
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: ui-monospace, "SF Mono", Menlo, monospace;
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: #fff;
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: ui-monospace, "SF Mono", Menlo, monospace;
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: #fff;
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: #fff;
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: ui-monospace, "SF Mono", Menlo, monospace;
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/source-map.md`); a host running Excalidraw in
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/source-map.md`); a host running Excalidraw in
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/source-map.md`).
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/source-map.md`).
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')