@miragon/mcp-toolkit-ui 2.6.0 → 2.8.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/README.md +14 -5
- package/dist/app/adapt-data-widget.d.ts +1 -22
- package/dist/app/adapt-data-widget.d.ts.map +1 -1
- package/dist/app/adapt-data-widget.js +1 -35
- package/dist/app/adapt-data-widget.js.map +1 -1
- package/dist/app/builder/BuilderBanners.d.ts +7 -2
- package/dist/app/builder/BuilderBanners.d.ts.map +1 -1
- package/dist/app/builder/BuilderBanners.js +8 -3
- package/dist/app/builder/BuilderBanners.js.map +1 -1
- package/dist/app/builder/CanvasRow.d.ts +4 -2
- package/dist/app/builder/CanvasRow.d.ts.map +1 -1
- package/dist/app/builder/CanvasRow.js +29 -17
- package/dist/app/builder/CanvasRow.js.map +1 -1
- package/dist/app/builder/CatalogueSheet.d.ts.map +1 -1
- package/dist/app/builder/CatalogueSheet.js +14 -6
- package/dist/app/builder/CatalogueSheet.js.map +1 -1
- package/dist/app/builder/CellPropsSheet.d.ts +7 -3
- package/dist/app/builder/CellPropsSheet.d.ts.map +1 -1
- package/dist/app/builder/CellPropsSheet.js +10 -3
- package/dist/app/builder/CellPropsSheet.js.map +1 -1
- package/dist/app/builder/DiscardDialog.d.ts +18 -0
- package/dist/app/builder/DiscardDialog.d.ts.map +1 -0
- package/dist/app/builder/DiscardDialog.js +18 -0
- package/dist/app/builder/DiscardDialog.js.map +1 -0
- package/dist/app/builder/EmptyHint.d.ts +4 -0
- package/dist/app/builder/EmptyHint.d.ts.map +1 -1
- package/dist/app/builder/EmptyHint.js +6 -1
- package/dist/app/builder/EmptyHint.js.map +1 -1
- package/dist/app/builder/LayoutSurface.d.ts +33 -9
- package/dist/app/builder/LayoutSurface.d.ts.map +1 -1
- package/dist/app/builder/LayoutSurface.js +74 -23
- package/dist/app/builder/LayoutSurface.js.map +1 -1
- package/dist/app/builder/PipelineStrip.d.ts +5 -2
- package/dist/app/builder/PipelineStrip.d.ts.map +1 -1
- package/dist/app/builder/PipelineStrip.js +33 -15
- package/dist/app/builder/PipelineStrip.js.map +1 -1
- package/dist/app/builder/SaveDialog.d.ts +9 -1
- package/dist/app/builder/SaveDialog.d.ts.map +1 -1
- package/dist/app/builder/SaveDialog.js +9 -3
- package/dist/app/builder/SaveDialog.js.map +1 -1
- package/dist/app/builder/Toolbar.d.ts +14 -4
- package/dist/app/builder/Toolbar.d.ts.map +1 -1
- package/dist/app/builder/Toolbar.js +24 -7
- package/dist/app/builder/Toolbar.js.map +1 -1
- package/dist/app/builder/Workspace.d.ts +23 -3
- package/dist/app/builder/Workspace.d.ts.map +1 -1
- package/dist/app/builder/Workspace.js +58 -8
- package/dist/app/builder/Workspace.js.map +1 -1
- package/dist/app/builder/builder-model.d.ts +146 -3
- package/dist/app/builder/builder-model.d.ts.map +1 -1
- package/dist/app/builder/builder-model.js +196 -5
- package/dist/app/builder/builder-model.js.map +1 -1
- package/dist/app/builder/labels.d.ts +13 -62
- package/dist/app/builder/labels.d.ts.map +1 -1
- package/dist/app/builder/labels.js +9 -58
- package/dist/app/builder/labels.js.map +1 -1
- package/dist/app/builder/reveal.d.ts +10 -0
- package/dist/app/builder/reveal.d.ts.map +1 -0
- package/dist/app/builder/reveal.js +10 -0
- package/dist/app/builder/reveal.js.map +1 -0
- package/dist/app/builder/status-chip.d.ts.map +1 -1
- package/dist/app/builder/status-chip.js +3 -2
- package/dist/app/builder/status-chip.js.map +1 -1
- package/dist/app/builder/use-builder-catalogue.d.ts +5 -1
- package/dist/app/builder/use-builder-catalogue.d.ts.map +1 -1
- package/dist/app/builder/use-builder-catalogue.js +50 -17
- package/dist/app/builder/use-builder-catalogue.js.map +1 -1
- package/dist/app/builder/use-builder-session.d.ts +30 -0
- package/dist/app/builder/use-builder-session.d.ts.map +1 -0
- package/dist/app/builder/use-builder-session.js +58 -0
- package/dist/app/builder/use-builder-session.js.map +1 -0
- package/dist/app/builder/use-display-resolver.d.ts +17 -0
- package/dist/app/builder/use-display-resolver.d.ts.map +1 -0
- package/dist/app/builder/use-display-resolver.js +16 -0
- package/dist/app/builder/use-display-resolver.js.map +1 -0
- package/dist/app/builder/use-save-dashboard.d.ts +3 -1
- package/dist/app/builder/use-save-dashboard.d.ts.map +1 -1
- package/dist/app/builder/use-save-dashboard.js +3 -1
- package/dist/app/builder/use-save-dashboard.js.map +1 -1
- package/dist/app/index.d.ts +8 -3
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +8 -2
- package/dist/app/index.js.map +1 -1
- package/dist/app/layout-builder.d.ts +18 -25
- package/dist/app/layout-builder.d.ts.map +1 -1
- package/dist/app/layout-builder.js +84 -78
- package/dist/app/layout-builder.js.map +1 -1
- package/dist/app/mcp-app-view-chrome.d.ts +103 -20
- package/dist/app/mcp-app-view-chrome.d.ts.map +1 -1
- package/dist/app/mcp-app-view-chrome.js +125 -40
- package/dist/app/mcp-app-view-chrome.js.map +1 -1
- package/dist/app/mcp-app-view-states.d.ts +23 -0
- package/dist/app/mcp-app-view-states.d.ts.map +1 -0
- package/dist/app/mcp-app-view-states.js +55 -0
- package/dist/app/mcp-app-view-states.js.map +1 -0
- package/dist/app/mcp-app-view.d.ts +72 -5
- package/dist/app/mcp-app-view.d.ts.map +1 -1
- package/dist/app/mcp-app-view.js +241 -141
- package/dist/app/mcp-app-view.js.map +1 -1
- package/dist/app/mcp-toolkit-app.d.ts +8 -2
- package/dist/app/mcp-toolkit-app.d.ts.map +1 -1
- package/dist/app/mcp-toolkit-app.js +33 -4
- package/dist/app/mcp-toolkit-app.js.map +1 -1
- package/dist/app/mcp-use-host-bridge.d.ts +15 -6
- package/dist/app/mcp-use-host-bridge.d.ts.map +1 -1
- package/dist/app/mcp-use-host-bridge.js +51 -22
- package/dist/app/mcp-use-host-bridge.js.map +1 -1
- package/dist/app/model-context.d.ts +71 -0
- package/dist/app/model-context.d.ts.map +1 -0
- package/dist/app/model-context.js +101 -0
- package/dist/app/model-context.js.map +1 -0
- package/dist/app/use-build-mode-focus.d.ts +33 -0
- package/dist/app/use-build-mode-focus.d.ts.map +1 -0
- package/dist/app/use-build-mode-focus.js +59 -0
- package/dist/app/use-build-mode-focus.js.map +1 -0
- package/dist/app/use-view-actions.d.ts +31 -0
- package/dist/app/use-view-actions.d.ts.map +1 -0
- package/dist/app/use-view-actions.js +81 -0
- package/dist/app/use-view-actions.js.map +1 -0
- package/dist/app/use-view-lifecycle.d.ts +42 -0
- package/dist/app/use-view-lifecycle.d.ts.map +1 -0
- package/dist/app/use-view-lifecycle.js +81 -0
- package/dist/app/use-view-lifecycle.js.map +1 -0
- package/dist/app/view-lifecycle.d.ts +185 -0
- package/dist/app/view-lifecycle.d.ts.map +1 -0
- package/dist/app/view-lifecycle.js +207 -0
- package/dist/app/view-lifecycle.js.map +1 -0
- package/dist/app/widget-fixture.d.ts +10 -3
- package/dist/app/widget-fixture.d.ts.map +1 -1
- package/dist/app/widget-fixture.js +21 -8
- package/dist/app/widget-fixture.js.map +1 -1
- package/dist/app/widget-props-sheet.d.ts +6 -10
- package/dist/app/widget-props-sheet.d.ts.map +1 -1
- package/dist/app/widget-props-sheet.js +25 -20
- package/dist/app/widget-props-sheet.js.map +1 -1
- package/dist/app/widget-renderer.d.ts +41 -1
- package/dist/app/widget-renderer.d.ts.map +1 -1
- package/dist/app/widget-renderer.js +82 -31
- package/dist/app/widget-renderer.js.map +1 -1
- package/dist/components/DrillButton.d.ts +9 -6
- package/dist/components/DrillButton.d.ts.map +1 -1
- package/dist/components/DrillButton.js +9 -6
- package/dist/components/DrillButton.js.map +1 -1
- package/dist/components/EmptyState.d.ts +33 -0
- package/dist/components/EmptyState.d.ts.map +1 -0
- package/dist/components/EmptyState.js +19 -0
- package/dist/components/EmptyState.js.map +1 -0
- package/dist/components/ErrorState.d.ts +53 -0
- package/dist/components/ErrorState.d.ts.map +1 -0
- package/dist/components/ErrorState.js +77 -0
- package/dist/components/ErrorState.js.map +1 -0
- package/dist/components/FilterBar.d.ts +16 -5
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +13 -5
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/GroupCard.d.ts.map +1 -1
- package/dist/components/GroupCard.js +2 -1
- package/dist/components/GroupCard.js.map +1 -1
- package/dist/components/KpiGrid.d.ts +70 -18
- package/dist/components/KpiGrid.d.ts.map +1 -1
- package/dist/components/KpiGrid.js +112 -23
- package/dist/components/KpiGrid.js.map +1 -1
- package/dist/components/ListFooter.d.ts +32 -4
- package/dist/components/ListFooter.d.ts.map +1 -1
- package/dist/components/ListFooter.js +35 -6
- package/dist/components/ListFooter.js.map +1 -1
- package/dist/components/PagedListFooter.d.ts +57 -0
- package/dist/components/PagedListFooter.d.ts.map +1 -0
- package/dist/components/PagedListFooter.js +27 -0
- package/dist/components/PagedListFooter.js.map +1 -0
- package/dist/components/Pills.d.ts +36 -12
- package/dist/components/Pills.d.ts.map +1 -1
- package/dist/components/Pills.js +29 -8
- package/dist/components/Pills.js.map +1 -1
- package/dist/components/SectionHeading.d.ts +3 -1
- package/dist/components/SectionHeading.d.ts.map +1 -1
- package/dist/components/SectionHeading.js +6 -2
- package/dist/components/SectionHeading.js.map +1 -1
- package/dist/components/Toast.d.ts +43 -0
- package/dist/components/Toast.d.ts.map +1 -0
- package/dist/components/Toast.js +106 -0
- package/dist/components/Toast.js.map +1 -0
- package/dist/components/WidgetHeader.d.ts +34 -10
- package/dist/components/WidgetHeader.d.ts.map +1 -1
- package/dist/components/WidgetHeader.js +11 -6
- package/dist/components/WidgetHeader.js.map +1 -1
- package/dist/hooks/index.d.ts +4 -4
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/tool-result-recovery-model.d.ts +155 -0
- package/dist/hooks/tool-result-recovery-model.d.ts.map +1 -0
- package/dist/hooks/tool-result-recovery-model.js +273 -0
- package/dist/hooks/tool-result-recovery-model.js.map +1 -0
- package/dist/hooks/use-tool-query.d.ts +56 -14
- package/dist/hooks/use-tool-query.d.ts.map +1 -1
- package/dist/hooks/use-tool-query.js +102 -25
- package/dist/hooks/use-tool-query.js.map +1 -1
- package/dist/hooks/use-tool-result-recovery.d.ts +61 -44
- package/dist/hooks/use-tool-result-recovery.d.ts.map +1 -1
- package/dist/hooks/use-tool-result-recovery.js +62 -110
- package/dist/hooks/use-tool-result-recovery.js.map +1 -1
- package/dist/hooks/use-view-data.d.ts +55 -7
- package/dist/hooks/use-view-data.d.ts.map +1 -1
- package/dist/hooks/use-view-data.js +81 -11
- package/dist/hooks/use-view-data.js.map +1 -1
- package/dist/hooks/use-view-tool-query.d.ts +12 -7
- package/dist/hooks/use-view-tool-query.d.ts.map +1 -1
- package/dist/hooks/use-view-tool-query.js +15 -14
- package/dist/hooks/use-view-tool-query.js.map +1 -1
- package/dist/index.d.ts +27 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -7
- package/dist/index.js.map +1 -1
- package/dist/lib/focus-return.d.ts +61 -0
- package/dist/lib/focus-return.d.ts.map +1 -0
- package/dist/lib/focus-return.js +46 -0
- package/dist/lib/focus-return.js.map +1 -0
- package/dist/lib/focus-ring.d.ts +18 -0
- package/dist/lib/focus-ring.d.ts.map +1 -0
- package/dist/lib/focus-ring.js +18 -0
- package/dist/lib/focus-ring.js.map +1 -0
- package/dist/lib/icon-stroke.d.ts +12 -0
- package/dist/lib/icon-stroke.d.ts.map +1 -0
- package/dist/lib/icon-stroke.js +12 -0
- package/dist/lib/icon-stroke.js.map +1 -0
- package/dist/lib/parse-tool-result.d.ts +23 -1
- package/dist/lib/parse-tool-result.d.ts.map +1 -1
- package/dist/lib/parse-tool-result.js +38 -2
- package/dist/lib/parse-tool-result.js.map +1 -1
- package/dist/lib/toast-model.d.ts +86 -0
- package/dist/lib/toast-model.d.ts.map +1 -0
- package/dist/lib/toast-model.js +102 -0
- package/dist/lib/toast-model.js.map +1 -0
- package/dist/lib/tone-utils.d.ts +95 -9
- package/dist/lib/tone-utils.d.ts.map +1 -1
- package/dist/lib/tone-utils.js +100 -9
- package/dist/lib/tone-utils.js.map +1 -1
- package/dist/lib/tool-query.d.ts +107 -0
- package/dist/lib/tool-query.d.ts.map +1 -0
- package/dist/lib/tool-query.js +182 -0
- package/dist/lib/tool-query.js.map +1 -0
- package/dist/lib/tool-result-observer.d.ts +108 -0
- package/dist/lib/tool-result-observer.d.ts.map +1 -0
- package/dist/lib/tool-result-observer.js +158 -0
- package/dist/lib/tool-result-observer.js.map +1 -0
- package/dist/lib/typography.d.ts +37 -0
- package/dist/lib/typography.d.ts.map +1 -0
- package/dist/lib/typography.js +41 -0
- package/dist/lib/typography.js.map +1 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +11 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/locale/index.d.ts +3 -1
- package/dist/locale/index.d.ts.map +1 -1
- package/dist/locale/index.js +2 -1
- package/dist/locale/index.js.map +1 -1
- package/dist/locale/locale-provider.d.ts +42 -1
- package/dist/locale/locale-provider.d.ts.map +1 -1
- package/dist/locale/locale-provider.js +44 -3
- package/dist/locale/locale-provider.js.map +1 -1
- package/dist/locale/message-types.d.ts +336 -0
- package/dist/locale/message-types.d.ts.map +1 -0
- package/dist/locale/message-types.js +7 -0
- package/dist/locale/message-types.js.map +1 -0
- package/dist/locale/messages-de.d.ts +9 -0
- package/dist/locale/messages-de.d.ts.map +1 -0
- package/dist/locale/messages-de.js +185 -0
- package/dist/locale/messages-de.js.map +1 -0
- package/dist/locale/messages-en.d.ts +8 -0
- package/dist/locale/messages-en.d.ts.map +1 -0
- package/dist/locale/messages-en.js +184 -0
- package/dist/locale/messages-en.js.map +1 -0
- package/dist/locale/toolkit-messages.d.ts +57 -0
- package/dist/locale/toolkit-messages.d.ts.map +1 -0
- package/dist/locale/toolkit-messages.js +103 -0
- package/dist/locale/toolkit-messages.js.map +1 -0
- package/dist/primitives/alert.d.ts +1 -1
- package/dist/primitives/alert.d.ts.map +1 -1
- package/dist/primitives/alert.js +6 -2
- package/dist/primitives/alert.js.map +1 -1
- package/dist/primitives/badge.d.ts +1 -1
- package/dist/primitives/badge.d.ts.map +1 -1
- package/dist/primitives/badge.js +19 -6
- package/dist/primitives/badge.js.map +1 -1
- package/dist/primitives/button.d.ts +1 -1
- package/dist/primitives/button.d.ts.map +1 -1
- package/dist/primitives/button.js +12 -8
- package/dist/primitives/button.js.map +1 -1
- package/dist/primitives/card.js +4 -4
- package/dist/primitives/card.js.map +1 -1
- package/dist/primitives/dialog.d.ts +7 -3
- package/dist/primitives/dialog.d.ts.map +1 -1
- package/dist/primitives/dialog.js +22 -8
- package/dist/primitives/dialog.js.map +1 -1
- package/dist/primitives/input.d.ts.map +1 -1
- package/dist/primitives/input.js +4 -1
- package/dist/primitives/input.js.map +1 -1
- package/dist/primitives/scroll-area.js +1 -1
- package/dist/primitives/scroll-area.js.map +1 -1
- package/dist/primitives/select.d.ts.map +1 -1
- package/dist/primitives/select.js +6 -3
- package/dist/primitives/select.js.map +1 -1
- package/dist/primitives/sheet.d.ts +3 -1
- package/dist/primitives/sheet.d.ts.map +1 -1
- package/dist/primitives/sheet.js +17 -7
- package/dist/primitives/sheet.js.map +1 -1
- package/dist/primitives/skeleton.js +1 -1
- package/dist/primitives/skeleton.js.map +1 -1
- package/dist/primitives/switch.d.ts.map +1 -1
- package/dist/primitives/switch.js +2 -1
- package/dist/primitives/switch.js.map +1 -1
- package/dist/primitives/tabs.d.ts.map +1 -1
- package/dist/primitives/tabs.js +5 -3
- package/dist/primitives/tabs.js.map +1 -1
- package/dist/providers/query-provider.d.ts +32 -1
- package/dist/providers/query-provider.d.ts.map +1 -1
- package/dist/providers/query-provider.js +53 -4
- package/dist/providers/query-provider.js.map +1 -1
- package/dist/render-cases-primitives.js +1 -1
- package/dist/render-cases-primitives.js.map +1 -1
- package/dist/render-cases.d.ts.map +1 -1
- package/dist/render-cases.js +48 -6
- package/dist/render-cases.js.map +1 -1
- package/dist/render-effects.d.ts +42 -0
- package/dist/render-effects.d.ts.map +1 -0
- package/dist/render-effects.js +81 -0
- package/dist/render-effects.js.map +1 -0
- package/dist/render-scan.d.ts +25 -0
- package/dist/render-scan.d.ts.map +1 -0
- package/dist/render-scan.js +66 -0
- package/dist/render-scan.js.map +1 -0
- package/dist/theme/cd-tokens.d.ts +66 -0
- package/dist/theme/cd-tokens.d.ts.map +1 -0
- package/dist/theme/cd-tokens.js +64 -0
- package/dist/theme/cd-tokens.js.map +1 -0
- package/dist/theme/create-theme.d.ts +214 -39
- package/dist/theme/create-theme.d.ts.map +1 -1
- package/dist/theme/create-theme.js +204 -13
- package/dist/theme/create-theme.js.map +1 -1
- package/dist/theme/fonts.d.ts +38 -0
- package/dist/theme/fonts.d.ts.map +1 -0
- package/dist/theme/fonts.js +56 -0
- package/dist/theme/fonts.js.map +1 -0
- package/dist/theme/host-fonts.d.ts +39 -0
- package/dist/theme/host-fonts.d.ts.map +1 -0
- package/dist/theme/host-fonts.js +44 -0
- package/dist/theme/host-fonts.js.map +1 -0
- package/dist/theme/index.d.ts +8 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +5 -1
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/portal-container.d.ts +16 -0
- package/dist/theme/portal-container.d.ts.map +1 -0
- package/dist/theme/portal-container.js +19 -0
- package/dist/theme/portal-container.js.map +1 -0
- package/dist/theme/presets.d.ts +24 -9
- package/dist/theme/presets.d.ts.map +1 -1
- package/dist/theme/presets.js +44 -11
- package/dist/theme/presets.js.map +1 -1
- package/dist/theme/theme-provider.d.ts +27 -9
- package/dist/theme/theme-provider.d.ts.map +1 -1
- package/dist/theme/theme-provider.js +42 -20
- package/dist/theme/theme-provider.js.map +1 -1
- package/package.json +11 -5
- package/src/app/adapt-data-widget.tsx +2 -42
- package/src/app/builder/BuilderBanners.tsx +26 -13
- package/src/app/builder/CanvasRow.tsx +79 -32
- package/src/app/builder/CatalogueSheet.tsx +58 -35
- package/src/app/builder/CellPropsSheet.tsx +17 -2
- package/src/app/builder/DiscardDialog.tsx +59 -0
- package/src/app/builder/EmptyHint.tsx +16 -11
- package/src/app/builder/LayoutSurface.tsx +207 -67
- package/src/app/builder/PipelineStrip.tsx +265 -156
- package/src/app/builder/SaveDialog.tsx +25 -14
- package/src/app/builder/Toolbar.tsx +154 -57
- package/src/app/builder/Workspace.tsx +226 -56
- package/src/app/builder/builder-feedback.test.tsx +75 -0
- package/src/app/builder/builder-model.test.ts +5 -0
- package/src/app/builder/builder-model.ts +346 -6
- package/src/app/builder/builder-model.ux.test.ts +456 -0
- package/src/app/builder/builder-ux.test.tsx +844 -0
- package/src/app/builder/labels.ts +15 -121
- package/src/app/builder/reveal.ts +10 -0
- package/src/app/builder/status-chip.tsx +8 -4
- package/src/app/builder/use-builder-catalogue.ts +62 -19
- package/src/app/builder/use-builder-session.ts +68 -0
- package/src/app/builder/use-display-resolver.ts +24 -0
- package/src/app/builder/use-save-dashboard.ts +5 -0
- package/src/app/index.ts +20 -3
- package/src/app/layout-builder.tsx +193 -186
- package/src/app/mcp-app-view-chrome.test.tsx +487 -14
- package/src/app/mcp-app-view-chrome.tsx +328 -100
- package/src/app/mcp-app-view-states.tsx +140 -0
- package/src/app/mcp-app-view.effects.test.tsx +292 -0
- package/src/app/mcp-app-view.test.tsx +478 -0
- package/src/app/mcp-app-view.tsx +447 -190
- package/src/app/mcp-toolkit-app.test.tsx +40 -0
- package/src/app/mcp-toolkit-app.tsx +39 -8
- package/src/app/mcp-use-host-bridge.test.tsx +180 -0
- package/src/app/mcp-use-host-bridge.tsx +67 -24
- package/src/app/model-context.test.tsx +116 -0
- package/src/app/model-context.tsx +125 -0
- package/src/app/use-build-mode-focus.ts +62 -0
- package/src/app/use-view-actions.ts +89 -0
- package/src/app/use-view-lifecycle.ts +122 -0
- package/src/app/view-lifecycle.test.ts +443 -0
- package/src/app/view-lifecycle.ts +334 -0
- package/src/app/widget-fixture.effects.test.tsx +51 -0
- package/src/app/widget-fixture.render.test.tsx +81 -0
- package/src/app/widget-fixture.tsx +34 -11
- package/src/app/widget-props-sheet.tsx +67 -39
- package/src/app/widget-renderer.render.test.tsx +131 -0
- package/src/app/widget-renderer.tsx +136 -38
- package/src/components/DrillButton.tsx +24 -10
- package/src/components/EmptyState.tsx +83 -0
- package/src/components/ErrorState.tsx +204 -0
- package/src/components/FilterBar.test.tsx +82 -0
- package/src/components/FilterBar.tsx +56 -27
- package/src/components/GroupCard.tsx +3 -2
- package/src/components/KpiGrid.test.tsx +279 -0
- package/src/components/KpiGrid.tsx +329 -91
- package/src/components/ListFooter.test.tsx +116 -0
- package/src/components/ListFooter.tsx +110 -12
- package/src/components/PagedListFooter.test.tsx +140 -0
- package/src/components/PagedListFooter.tsx +107 -0
- package/src/components/Pills.test.tsx +77 -0
- package/src/components/Pills.tsx +78 -16
- package/src/components/SectionHeading.tsx +9 -3
- package/src/components/Toast.tsx +206 -0
- package/src/components/WidgetHeader.test.tsx +78 -0
- package/src/components/WidgetHeader.tsx +63 -16
- package/src/components/feedback-states.test.tsx +314 -0
- package/src/components/tone-figures.test.tsx +58 -0
- package/src/fonts.css +19 -0
- package/src/globals.css +9 -165
- package/src/hooks/index.ts +6 -3
- package/src/hooks/tool-result-recovery-model.test.ts +744 -0
- package/src/hooks/tool-result-recovery-model.ts +418 -0
- package/src/hooks/use-tool-query.effects.test.tsx +205 -0
- package/src/hooks/use-tool-query.ts +156 -33
- package/src/hooks/use-tool-result-recovery.effects.test.tsx +141 -0
- package/src/hooks/use-tool-result-recovery.test.ts +28 -5
- package/src/hooks/use-tool-result-recovery.ts +101 -131
- package/src/hooks/use-view-data.test.tsx +169 -0
- package/src/hooks/use-view-data.ts +131 -10
- package/src/hooks/use-view-tool-query.ts +25 -19
- package/src/i18n-coverage.test.tsx +425 -0
- package/src/index.ts +102 -13
- package/src/lib/focus-return.test.ts +288 -0
- package/src/lib/focus-return.ts +96 -0
- package/src/lib/focus-ring.ts +20 -0
- package/src/lib/icon-stroke.test.ts +59 -0
- package/src/lib/icon-stroke.ts +13 -0
- package/src/lib/parse-tool-result.test.ts +46 -1
- package/src/lib/parse-tool-result.ts +40 -2
- package/src/lib/toast-model.test.ts +233 -0
- package/src/lib/toast-model.ts +165 -0
- package/src/lib/tone-utils.test.ts +125 -16
- package/src/lib/tone-utils.ts +144 -15
- package/src/lib/tool-query.test.ts +569 -0
- package/src/lib/tool-query.ts +253 -0
- package/src/lib/tool-result-observer.test.ts +296 -0
- package/src/lib/tool-result-observer.ts +211 -0
- package/src/lib/typography.test.ts +45 -0
- package/src/lib/typography.ts +47 -0
- package/src/lib/utils.ts +12 -1
- package/src/locale/index.ts +14 -1
- package/src/locale/locale-provider.test.tsx +87 -0
- package/src/locale/locale-provider.tsx +90 -3
- package/src/locale/message-types.ts +337 -0
- package/src/locale/messages-de.ts +198 -0
- package/src/locale/messages-en.ts +196 -0
- package/src/locale/toolkit-messages.test.ts +349 -0
- package/src/locale/toolkit-messages.ts +143 -0
- package/src/no-hardcoded-copy.test.ts +432 -0
- package/src/primitives/alert.tsx +7 -2
- package/src/primitives/badge.tsx +19 -7
- package/src/primitives/button.tsx +13 -8
- package/src/primitives/card.tsx +4 -4
- package/src/primitives/dialog.tsx +42 -8
- package/src/primitives/input.tsx +5 -3
- package/src/primitives/scroll-area.tsx +1 -1
- package/src/primitives/select.tsx +7 -4
- package/src/primitives/sheet.tsx +33 -6
- package/src/primitives/skeleton.tsx +1 -1
- package/src/primitives/switch.tsx +4 -2
- package/src/primitives/tabs.tsx +9 -6
- package/src/providers/query-provider.test.tsx +154 -0
- package/src/providers/query-provider.tsx +66 -5
- package/src/render-cases-primitives.tsx +1 -1
- package/src/render-cases.tsx +82 -6
- package/src/render-effects.tsx +96 -0
- package/src/render-scan.ts +75 -0
- package/src/theme/cd-tokens.generated.css +48 -0
- package/src/theme/cd-tokens.test.ts +109 -0
- package/src/theme/cd-tokens.ts +67 -0
- package/src/theme/create-theme.test.ts +253 -5
- package/src/theme/create-theme.ts +341 -41
- package/src/theme/fonts.test.ts +85 -0
- package/src/theme/fonts.ts +72 -0
- package/src/theme/host-fonts.test.ts +135 -0
- package/src/theme/host-fonts.ts +52 -0
- package/src/theme/index.ts +15 -1
- package/src/theme/portal-container.ts +20 -0
- package/src/theme/presets.ts +44 -11
- package/src/theme/theme-css.test.ts +619 -0
- package/src/theme/theme-provider.test.tsx +82 -0
- package/src/theme/theme-provider.tsx +60 -24
- package/src/theme.css +344 -0
- package/ui-catalog.json +783 -49
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { readFileSync } from "node:fs"
|
|
3
|
+
import { describe, expect, it } from "vitest"
|
|
4
|
+
import {
|
|
5
|
+
adoptHostFontVariables,
|
|
6
|
+
HOST_FONT_VARIABLES,
|
|
7
|
+
type InlineStyleTarget,
|
|
8
|
+
} from "./host-fonts.js"
|
|
9
|
+
|
|
10
|
+
/** `element.style` as a map: the inline custom properties of one element. */
|
|
11
|
+
function inlineStyle(initial: Record<string, string> = {}): InlineStyleTarget & {
|
|
12
|
+
props: Map<string, string>
|
|
13
|
+
} {
|
|
14
|
+
const props = new Map(Object.entries(initial))
|
|
15
|
+
return {
|
|
16
|
+
props,
|
|
17
|
+
getPropertyValue: (name) => props.get(name) ?? "",
|
|
18
|
+
setProperty: (name, value) => void props.set(name, value),
|
|
19
|
+
removeProperty: (name) => {
|
|
20
|
+
const old = props.get(name) ?? ""
|
|
21
|
+
props.delete(name)
|
|
22
|
+
return old
|
|
23
|
+
},
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** What mcp-use's ThemeProvider does with the host's style variables (ext-apps applyHostStyleVariables). */
|
|
28
|
+
function applyHostStyleVariables(
|
|
29
|
+
style: InlineStyleTarget,
|
|
30
|
+
variables: Record<string, string | undefined>,
|
|
31
|
+
): void {
|
|
32
|
+
for (const [name, value] of Object.entries(variables)) {
|
|
33
|
+
if (value !== undefined) style.setProperty(name, value)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const rootRole = (name: string): string => {
|
|
38
|
+
const css = readFileSync(new URL("../theme.css", import.meta.url), "utf8").replace(
|
|
39
|
+
/\/\*[\s\S]*?\*\//g,
|
|
40
|
+
"",
|
|
41
|
+
)
|
|
42
|
+
const root = /(?:^|\})\s*:root\s*\{([^{}]*)\}/.exec(css)?.[1] ?? ""
|
|
43
|
+
const decl = new RegExp(`${name}:([^;]+);`).exec(root)?.[1]
|
|
44
|
+
if (!decl) throw new Error(`theme.css :root has no ${name}`)
|
|
45
|
+
return decl.replace(/\s+/g, " ").trim()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The font stack <html> renders with: an inline value of the role wins over
|
|
50
|
+
* theme.css; otherwise the `:root` stack with `var(--host-font-*, fallback)`
|
|
51
|
+
* resolved against the inline style.
|
|
52
|
+
*/
|
|
53
|
+
function renderedStack(style: InlineStyleTarget, role: "--font-sans" | "--font-mono"): string {
|
|
54
|
+
const inline = style.getPropertyValue(role)
|
|
55
|
+
if (inline) return inline
|
|
56
|
+
return rootRole(role).replace(
|
|
57
|
+
/var\((--host-font-[a-z]+), ([^)]+)\)/,
|
|
58
|
+
(_all, slot: string, fallback: string) => style.getPropertyValue(slot) || fallback,
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
describe("adoptHostFontVariables (host font → fallback slot)", () => {
|
|
63
|
+
const HOST = { "--font-sans": '"Anthropic Sans", system-ui', "--font-mono": '"Host Mono"' }
|
|
64
|
+
|
|
65
|
+
it("keeps Geist first when a SEP-1865 host sends --font-sans/--font-mono", () => {
|
|
66
|
+
const html = inlineStyle()
|
|
67
|
+
applyHostStyleVariables(html, HOST)
|
|
68
|
+
// Without the toolkit's step the host replaces the whole stack:
|
|
69
|
+
expect(renderedStack(html, "--font-sans")).toBe('"Anthropic Sans", system-ui')
|
|
70
|
+
adoptHostFontVariables(html, HOST)
|
|
71
|
+
expect(renderedStack(html, "--font-sans")).toBe(
|
|
72
|
+
'"Geist", "Geist Variable", "Anthropic Sans", system-ui, system-ui, sans-serif',
|
|
73
|
+
)
|
|
74
|
+
expect(renderedStack(html, "--font-mono")).toBe(
|
|
75
|
+
'"Geist Mono", "Geist Mono Variable", "Host Mono", SFMono-Regular, Menlo, Consolas, monospace',
|
|
76
|
+
)
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
it("moves the host's values into the --host-font-* slots and clears the roles", () => {
|
|
80
|
+
const html = inlineStyle()
|
|
81
|
+
applyHostStyleVariables(html, HOST)
|
|
82
|
+
adoptHostFontVariables(html, HOST)
|
|
83
|
+
expect(Object.fromEntries(html.props)).toEqual({
|
|
84
|
+
"--host-font-sans": '"Anthropic Sans", system-ui',
|
|
85
|
+
"--host-font-mono": '"Host Mono"',
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
it("leaves an app's own inline brand font on the role alone", () => {
|
|
90
|
+
const html = inlineStyle({ "--font-sans": "Inter, sans-serif" })
|
|
91
|
+
adoptHostFontVariables(html, { "--font-sans": "HostSans" })
|
|
92
|
+
expect(html.props.get("--font-sans")).toBe("Inter, sans-serif")
|
|
93
|
+
expect(html.props.get("--host-font-sans")).toBe("HostSans")
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
it("compares the host's value and the inline role without surrounding whitespace", () => {
|
|
97
|
+
const html = inlineStyle({ "--font-sans": " HostSans " })
|
|
98
|
+
adoptHostFontVariables(html, { "--font-sans": "HostSans\n" })
|
|
99
|
+
expect(Object.fromEntries(html.props)).toEqual({ "--host-font-sans": "HostSans" })
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
it("is a no-op without host variables or with empty font values", () => {
|
|
103
|
+
const html = inlineStyle({ "--font-sans": "X" })
|
|
104
|
+
adoptHostFontVariables(html, undefined)
|
|
105
|
+
adoptHostFontVariables(html, null)
|
|
106
|
+
adoptHostFontVariables(html, { "--font-sans": " ", "--font-mono": undefined })
|
|
107
|
+
expect(Object.fromEntries(html.props)).toEqual({ "--font-sans": "X" })
|
|
108
|
+
expect(renderedStack(inlineStyle(), "--font-sans")).toBe(
|
|
109
|
+
'"Geist", "Geist Variable", ui-sans-serif, system-ui, sans-serif',
|
|
110
|
+
)
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
it("is idempotent (mcp-use re-applies on every host-context update)", () => {
|
|
114
|
+
const html = inlineStyle()
|
|
115
|
+
for (let i = 0; i < 2; i++) {
|
|
116
|
+
applyHostStyleVariables(html, HOST)
|
|
117
|
+
adoptHostFontVariables(html, HOST)
|
|
118
|
+
}
|
|
119
|
+
expect(html.props.has("--font-sans")).toBe(false)
|
|
120
|
+
expect(html.props.get("--host-font-sans")).toBe('"Anthropic Sans", system-ui')
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
it("names exactly the two SEP-1865 font variables", () => {
|
|
124
|
+
expect(HOST_FONT_VARIABLES).toEqual({
|
|
125
|
+
"--font-sans": "--host-font-sans",
|
|
126
|
+
"--font-mono": "--host-font-mono",
|
|
127
|
+
})
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
it("is wired ABOVE mcp-use's ThemeProvider in McpToolkitApp (its layout effect runs after)", () => {
|
|
131
|
+
const app = readFileSync(new URL("../app/mcp-toolkit-app.tsx", import.meta.url), "utf8")
|
|
132
|
+
expect(app).toMatch(/adoptHostFontVariables\(document\.documentElement\.style,/)
|
|
133
|
+
expect(app).toMatch(/<HostFontRoles>\s*<ThemeProvider>/)
|
|
134
|
+
})
|
|
135
|
+
})
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The host's font, demoted to the fallback slot of the font roles.
|
|
3
|
+
*
|
|
4
|
+
* SEP-1865 hosts send their fonts as the style variables `--font-sans` and
|
|
5
|
+
* `--font-mono`, the same names as the toolkit's font roles. mcp-use writes
|
|
6
|
+
* them inline on `<html>`, where they beat the role stacks in `theme.css` and
|
|
7
|
+
* replace them whole, so Geist never renders even when it is loaded. The
|
|
8
|
+
* toolkit's rule is Geist first, the host's font next, the system stack last:
|
|
9
|
+
* {@link adoptHostFontVariables} moves the host's value to
|
|
10
|
+
* `--host-font-sans` / `--host-font-mono`, which the role stacks name right
|
|
11
|
+
* after Geist. `McpToolkitApp` runs it after every host-context update; an app
|
|
12
|
+
* with its own document layer calls it after it applied the host variables.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** Each host font variable (SEP-1865 name) → where the toolkit keeps it. */
|
|
16
|
+
export const HOST_FONT_VARIABLES = {
|
|
17
|
+
"--font-sans": "--host-font-sans",
|
|
18
|
+
"--font-mono": "--host-font-mono",
|
|
19
|
+
} as const
|
|
20
|
+
|
|
21
|
+
/** The slice of `CSSStyleDeclaration` the helper touches (`element.style`). */
|
|
22
|
+
export interface InlineStyleTarget {
|
|
23
|
+
getPropertyValue(property: string): string
|
|
24
|
+
setProperty(property: string, value: string): void
|
|
25
|
+
removeProperty(property: string): string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Move the host's font variables off the role names on `style` (normally
|
|
30
|
+
* `document.documentElement.style`, where the host variables were applied):
|
|
31
|
+
* each non-empty `--font-sans` / `--font-mono` in `hostVariables` is written
|
|
32
|
+
* to its {@link HOST_FONT_VARIABLES} slot, and the role is cleared when it
|
|
33
|
+
* still holds exactly the host's value — an app's own inline brand font
|
|
34
|
+
* stays. Idempotent; a no-op without host variables.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* applyHostStyleVariables(vars) // the host layer writes --font-sans on <html>
|
|
38
|
+
* adoptHostFontVariables(document.documentElement.style, vars)
|
|
39
|
+
* // --font-sans: "Geist", "Geist Variable", <host font>, system-ui, sans-serif
|
|
40
|
+
*/
|
|
41
|
+
export function adoptHostFontVariables(
|
|
42
|
+
style: InlineStyleTarget,
|
|
43
|
+
hostVariables: Readonly<Record<string, string | undefined>> | null | undefined,
|
|
44
|
+
): void {
|
|
45
|
+
if (!hostVariables) return
|
|
46
|
+
for (const [role, slot] of Object.entries(HOST_FONT_VARIABLES)) {
|
|
47
|
+
const value = hostVariables[role]?.trim()
|
|
48
|
+
if (!value) continue
|
|
49
|
+
style.setProperty(slot, value)
|
|
50
|
+
if (style.getPropertyValue(role).trim() === value) style.removeProperty(role)
|
|
51
|
+
}
|
|
52
|
+
}
|
package/src/theme/index.ts
CHANGED
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
// White-label theming. Browser-safe (React + DOM only, no `mcp-use/react`), so
|
|
2
2
|
// it is re-exported from the root barrel — a consumer can theme the toolkit's
|
|
3
3
|
// primitives without pulling in the host runtime.
|
|
4
|
-
export {
|
|
4
|
+
export {
|
|
5
|
+
createTheme,
|
|
6
|
+
tokensToVars,
|
|
7
|
+
resolveThemeVars,
|
|
8
|
+
TOKEN_TO_CSS_VAR,
|
|
9
|
+
ROLE_TOKENS,
|
|
10
|
+
MODE_INVARIANT_VARS,
|
|
11
|
+
} from "./create-theme.js"
|
|
5
12
|
export type { ThemeTokens, ThemeDefinition, ThemeVars, CreateThemeOptions } from "./create-theme.js"
|
|
6
13
|
export { ThemeProvider, useTheme } from "./theme-provider.js"
|
|
7
14
|
export type { ThemeMode, ThemeContextValue, ThemeProviderProps } from "./theme-provider.js"
|
|
15
|
+
export { usePortalContainer } from "./portal-container.js"
|
|
8
16
|
export { themePresets } from "./presets.js"
|
|
9
17
|
export type { ThemePresetId } from "./presets.js"
|
|
18
|
+
export { CD_TOKENS, CD_TOKENS_VERSION } from "./cd-tokens.js"
|
|
19
|
+
export type { CdTokenName } from "./cd-tokens.js"
|
|
20
|
+
export { fontFaces, GEIST_FONT_FILES } from "./fonts.js"
|
|
21
|
+
export type { FontFacesOptions } from "./fonts.js"
|
|
22
|
+
export { adoptHostFontVariables, HOST_FONT_VARIABLES } from "./host-fonts.js"
|
|
23
|
+
export type { InlineStyleTarget } from "./host-fonts.js"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createContext, useContext } from "react"
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The element portaled overlays (Dialog, Sheet, Select) render into. A
|
|
5
|
+
* {@link ThemeProvider} provides a node INSIDE its scope, so overlays opened
|
|
6
|
+
* from a themed subtree keep the theme's variables and its light/dark mode
|
|
7
|
+
* instead of falling back to `document.body` and the `:root` defaults
|
|
8
|
+
* (mcp-toolkit#178 N36). `null` — no provider, or before it mounted — means
|
|
9
|
+
* the overlay library's default (`document.body`).
|
|
10
|
+
*/
|
|
11
|
+
export const PortalContainerContext = createContext<HTMLElement | null>(null)
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The portal container of the nearest {@link ThemeProvider}, or `null`. Pass it
|
|
15
|
+
* as `container` to a portal of your own so it stays inside the theme scope;
|
|
16
|
+
* the toolkit's Dialog, Sheet and Select already do.
|
|
17
|
+
*/
|
|
18
|
+
export function usePortalContainer(): HTMLElement | null {
|
|
19
|
+
return useContext(PortalContainerContext)
|
|
20
|
+
}
|
package/src/theme/presets.ts
CHANGED
|
@@ -2,23 +2,35 @@ import { createTheme, type ThemeDefinition } from "./create-theme.js"
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Ready-made white-label themes — a demonstration of {@link createTheme} and a
|
|
5
|
-
* starting point a client can fork. Each preset sets
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* `
|
|
5
|
+
* starting point a client can fork. Each preset sets its whole interactive
|
|
6
|
+
* family from one brand hue, in light AND dark: `primary` with its
|
|
7
|
+
* `primaryForeground` and `primaryHover`, `link`, `focus` (plus the legacy
|
|
8
|
+
* `ring`), a matching `accent`, and a `radius`. The dark side brightens the
|
|
9
|
+
* brand colour for legibility on dark surfaces. Every preset meets the same
|
|
10
|
+
* contrast bar as the default theme in both modes (`theme-css.test.ts`).
|
|
9
11
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
+
* The toolkit's DEFAULT is the Miragon theme (theme.css, built on the vendored
|
|
13
|
+
* corporate-design tokens); it needs no preset. A full customer brand may set
|
|
14
|
+
* more roles than these presets do (the status `*Ink` colours); see
|
|
15
|
+
* docs/guides/white-labeling.md. Apply one with
|
|
16
|
+
* `<ThemeProvider theme={themePresets.emerald}>`.
|
|
12
17
|
*/
|
|
13
18
|
export const themePresets = {
|
|
14
19
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
20
|
+
* An approximation of the Miragon blue from before the toolkit shipped the
|
|
21
|
+
* Miragon corporate design.
|
|
22
|
+
*
|
|
23
|
+
* @deprecated The Miragon theme is now the toolkit's default: render without
|
|
24
|
+
* a theme (or `<ThemeProvider>` without `theme`) to get the exact CI values.
|
|
25
|
+
* This preset is off-palette and will be removed in the next major.
|
|
17
26
|
*/
|
|
18
27
|
miragon: createTheme(
|
|
19
28
|
{
|
|
20
29
|
primary: "oklch(0.52 0.21 264)",
|
|
21
30
|
primaryForeground: "oklch(0.985 0 0)",
|
|
31
|
+
primaryHover: "oklch(0.46 0.2 264)",
|
|
32
|
+
link: "oklch(0.52 0.21 264)",
|
|
33
|
+
focus: "oklch(0.52 0.21 264)",
|
|
22
34
|
accent: "oklch(0.95 0.03 264)",
|
|
23
35
|
accentForeground: "oklch(0.32 0.12 264)",
|
|
24
36
|
ring: "oklch(0.52 0.21 264)",
|
|
@@ -28,6 +40,9 @@ export const themePresets = {
|
|
|
28
40
|
dark: {
|
|
29
41
|
primary: "oklch(0.7 0.16 264)",
|
|
30
42
|
primaryForeground: "oklch(0.18 0.02 264)",
|
|
43
|
+
primaryHover: "oklch(0.76 0.13 264)",
|
|
44
|
+
link: "oklch(0.7 0.16 264)",
|
|
45
|
+
focus: "oklch(0.7 0.16 264)",
|
|
31
46
|
accent: "oklch(0.32 0.06 264)",
|
|
32
47
|
accentForeground: "oklch(0.97 0 0)",
|
|
33
48
|
ring: "oklch(0.7 0.16 264)",
|
|
@@ -35,11 +50,20 @@ export const themePresets = {
|
|
|
35
50
|
},
|
|
36
51
|
),
|
|
37
52
|
|
|
38
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* A vivid violet brand with rounder corners — playful, consumer-facing.
|
|
55
|
+
*
|
|
56
|
+
* @deprecated The violet tech default is the look the Miragon design system
|
|
57
|
+
* rules out (anti-slop U9). Fork {@link createTheme} with your own brand
|
|
58
|
+
* values instead. Will be removed in the next major.
|
|
59
|
+
*/
|
|
39
60
|
violet: createTheme(
|
|
40
61
|
{
|
|
41
62
|
primary: "oklch(0.55 0.24 295)",
|
|
42
63
|
primaryForeground: "oklch(0.985 0 0)",
|
|
64
|
+
primaryHover: "oklch(0.49 0.23 295)",
|
|
65
|
+
link: "oklch(0.55 0.24 295)",
|
|
66
|
+
focus: "oklch(0.55 0.24 295)",
|
|
43
67
|
accent: "oklch(0.95 0.04 295)",
|
|
44
68
|
accentForeground: "oklch(0.34 0.14 295)",
|
|
45
69
|
ring: "oklch(0.55 0.24 295)",
|
|
@@ -49,6 +73,9 @@ export const themePresets = {
|
|
|
49
73
|
dark: {
|
|
50
74
|
primary: "oklch(0.72 0.18 295)",
|
|
51
75
|
primaryForeground: "oklch(0.18 0.03 295)",
|
|
76
|
+
primaryHover: "oklch(0.78 0.15 295)",
|
|
77
|
+
link: "oklch(0.72 0.18 295)",
|
|
78
|
+
focus: "oklch(0.72 0.18 295)",
|
|
52
79
|
accent: "oklch(0.33 0.08 295)",
|
|
53
80
|
accentForeground: "oklch(0.97 0 0)",
|
|
54
81
|
ring: "oklch(0.72 0.18 295)",
|
|
@@ -59,17 +86,23 @@ export const themePresets = {
|
|
|
59
86
|
/** A grounded emerald brand with a crisp, near-square radius — enterprise. */
|
|
60
87
|
emerald: createTheme(
|
|
61
88
|
{
|
|
62
|
-
primary: "oklch(0.
|
|
89
|
+
primary: "oklch(0.5 0.12 162)",
|
|
63
90
|
primaryForeground: "oklch(0.985 0 0)",
|
|
91
|
+
primaryHover: "oklch(0.44 0.11 162)",
|
|
92
|
+
link: "oklch(0.5 0.12 162)",
|
|
93
|
+
focus: "oklch(0.5 0.12 162)",
|
|
64
94
|
accent: "oklch(0.95 0.04 162)",
|
|
65
95
|
accentForeground: "oklch(0.34 0.1 162)",
|
|
66
|
-
ring: "oklch(0.
|
|
96
|
+
ring: "oklch(0.5 0.12 162)",
|
|
67
97
|
radius: "0.375rem",
|
|
68
98
|
},
|
|
69
99
|
{
|
|
70
100
|
dark: {
|
|
71
101
|
primary: "oklch(0.72 0.15 162)",
|
|
72
102
|
primaryForeground: "oklch(0.17 0.03 162)",
|
|
103
|
+
primaryHover: "oklch(0.78 0.14 162)",
|
|
104
|
+
link: "oklch(0.72 0.15 162)",
|
|
105
|
+
focus: "oklch(0.72 0.15 162)",
|
|
73
106
|
accent: "oklch(0.32 0.07 162)",
|
|
74
107
|
accentForeground: "oklch(0.97 0 0)",
|
|
75
108
|
ring: "oklch(0.72 0.15 162)",
|