@miragon/mcp-toolkit-ui 2.5.0 → 2.7.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 +8 -2
- 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.map +1 -1
- package/dist/app/builder/CanvasRow.js +12 -14
- 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 +6 -5
- package/dist/app/builder/CatalogueSheet.js.map +1 -1
- 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.js +3 -3
- package/dist/app/builder/LayoutSurface.js.map +1 -1
- package/dist/app/builder/PipelineStrip.d.ts +3 -1
- package/dist/app/builder/PipelineStrip.d.ts.map +1 -1
- package/dist/app/builder/PipelineStrip.js +11 -6
- package/dist/app/builder/PipelineStrip.js.map +1 -1
- package/dist/app/builder/SaveDialog.d.ts.map +1 -1
- package/dist/app/builder/SaveDialog.js +2 -2
- package/dist/app/builder/SaveDialog.js.map +1 -1
- package/dist/app/builder/Toolbar.d.ts +3 -1
- package/dist/app/builder/Toolbar.d.ts.map +1 -1
- package/dist/app/builder/Toolbar.js +9 -3
- package/dist/app/builder/Toolbar.js.map +1 -1
- package/dist/app/builder/Workspace.js +2 -2
- package/dist/app/builder/Workspace.js.map +1 -1
- package/dist/app/builder/builder-model.d.ts +3 -2
- package/dist/app/builder/builder-model.d.ts.map +1 -1
- package/dist/app/builder/builder-model.js +5 -4
- 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/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 +1 -0
- package/dist/app/builder/use-builder-catalogue.d.ts.map +1 -1
- package/dist/app/builder/use-builder-catalogue.js +6 -0
- package/dist/app/builder/use-builder-catalogue.js.map +1 -1
- 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 +1 -1
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js.map +1 -1
- package/dist/app/layout-builder.d.ts +7 -2
- package/dist/app/layout-builder.d.ts.map +1 -1
- package/dist/app/layout-builder.js +17 -5
- package/dist/app/layout-builder.js.map +1 -1
- package/dist/app/mcp-app-view-chrome.d.ts +94 -20
- package/dist/app/mcp-app-view-chrome.d.ts.map +1 -1
- package/dist/app/mcp-app-view-chrome.js +109 -40
- package/dist/app/mcp-app-view-chrome.js.map +1 -1
- package/dist/app/mcp-app-view-states.d.ts +15 -0
- package/dist/app/mcp-app-view-states.d.ts.map +1 -0
- package/dist/app/mcp-app-view-states.js +34 -0
- package/dist/app/mcp-app-view-states.js.map +1 -0
- package/dist/app/mcp-app-view.d.ts +40 -5
- package/dist/app/mcp-app-view.d.ts.map +1 -1
- package/dist/app/mcp-app-view.js +174 -128
- package/dist/app/mcp-app-view.js.map +1 -1
- package/dist/app/mcp-toolkit-app.d.ts +2 -1
- package/dist/app/mcp-toolkit-app.d.ts.map +1 -1
- package/dist/app/mcp-toolkit-app.js +25 -3
- package/dist/app/mcp-toolkit-app.js.map +1 -1
- package/dist/app/use-view-lifecycle.d.ts +38 -0
- package/dist/app/use-view-lifecycle.d.ts.map +1 -0
- package/dist/app/use-view-lifecycle.js +79 -0
- package/dist/app/use-view-lifecycle.js.map +1 -0
- package/dist/app/view-lifecycle.d.ts +109 -0
- package/dist/app/view-lifecycle.d.ts.map +1 -0
- package/dist/app/view-lifecycle.js +120 -0
- package/dist/app/view-lifecycle.js.map +1 -0
- package/dist/app/widget-props-sheet.d.ts +3 -9
- package/dist/app/widget-props-sheet.d.ts.map +1 -1
- package/dist/app/widget-props-sheet.js +6 -13
- 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.map +1 -1
- package/dist/components/DrillButton.js +2 -1
- 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 +17 -0
- package/dist/components/EmptyState.js.map +1 -0
- package/dist/components/ErrorState.d.ts +50 -0
- package/dist/components/ErrorState.d.ts.map +1 -0
- package/dist/components/ErrorState.js +60 -0
- package/dist/components/ErrorState.js.map +1 -0
- package/dist/components/FilterBar.d.ts +1 -1
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +7 -4
- 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 +10 -3
- package/dist/components/KpiGrid.d.ts.map +1 -1
- package/dist/components/KpiGrid.js +31 -9
- package/dist/components/KpiGrid.js.map +1 -1
- package/dist/components/ListFooter.d.ts +3 -2
- package/dist/components/ListFooter.d.ts.map +1 -1
- package/dist/components/ListFooter.js +14 -4
- package/dist/components/ListFooter.js.map +1 -1
- package/dist/components/Pills.d.ts +10 -6
- package/dist/components/Pills.d.ts.map +1 -1
- package/dist/components/Pills.js +12 -6
- package/dist/components/Pills.js.map +1 -1
- package/dist/components/Toast.d.ts +37 -0
- package/dist/components/Toast.d.ts.map +1 -0
- package/dist/components/Toast.js +91 -0
- package/dist/components/Toast.js.map +1 -0
- package/dist/components/WidgetHeader.js +1 -1
- package/dist/hooks/use-tool-result-recovery.d.ts +23 -1
- package/dist/hooks/use-tool-result-recovery.d.ts.map +1 -1
- package/dist/hooks/use-tool-result-recovery.js +21 -7
- package/dist/hooks/use-tool-result-recovery.js.map +1 -1
- package/dist/hooks/use-view-data.d.ts +6 -0
- package/dist/hooks/use-view-data.d.ts.map +1 -1
- package/dist/hooks/use-view-data.js +6 -1
- package/dist/hooks/use-view-data.js.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -4
- package/dist/index.js.map +1 -1
- 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/toast-model.d.ts +46 -0
- package/dist/lib/toast-model.d.ts.map +1 -0
- package/dist/lib/toast-model.js +36 -0
- package/dist/lib/toast-model.js.map +1 -0
- package/dist/lib/tone-utils.d.ts +43 -9
- package/dist/lib/tone-utils.d.ts.map +1 -1
- package/dist/lib/tone-utils.js +36 -7
- package/dist/lib/tone-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 +223 -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 +151 -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 +150 -0
- package/dist/locale/messages-en.js.map +1 -0
- package/dist/locale/toolkit-messages.d.ts +39 -0
- package/dist/locale/toolkit-messages.d.ts.map +1 -0
- package/dist/locale/toolkit-messages.js +50 -0
- package/dist/locale/toolkit-messages.js.map +1 -0
- package/dist/primitives/alert.d.ts.map +1 -1
- package/dist/primitives/alert.js +4 -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 +14 -6
- package/dist/primitives/badge.js.map +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 +14 -7
- 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 +5 -2
- 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 +12 -6
- 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/render-cases.d.ts.map +1 -1
- package/dist/render-cases.js +20 -2
- package/dist/render-cases.js.map +1 -1
- 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 +196 -39
- package/dist/theme/create-theme.d.ts.map +1 -1
- package/dist/theme/create-theme.js +189 -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 +13 -8
- package/src/app/builder/BuilderBanners.tsx +26 -13
- package/src/app/builder/CanvasRow.tsx +22 -21
- package/src/app/builder/CatalogueSheet.tsx +16 -14
- package/src/app/builder/EmptyHint.tsx +16 -11
- package/src/app/builder/LayoutSurface.tsx +7 -7
- package/src/app/builder/PipelineStrip.tsx +26 -17
- package/src/app/builder/SaveDialog.tsx +11 -12
- package/src/app/builder/Toolbar.tsx +19 -7
- package/src/app/builder/Workspace.tsx +5 -3
- 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 +5 -4
- package/src/app/builder/labels.ts +15 -121
- package/src/app/builder/status-chip.tsx +8 -4
- package/src/app/builder/use-builder-catalogue.ts +6 -0
- package/src/app/builder/use-save-dashboard.ts +5 -0
- package/src/app/index.ts +8 -1
- package/src/app/layout-builder.tsx +23 -3
- package/src/app/mcp-app-view-chrome.test.tsx +347 -14
- package/src/app/mcp-app-view-chrome.tsx +278 -100
- package/src/app/mcp-app-view-states.tsx +100 -0
- package/src/app/mcp-app-view.test.tsx +258 -0
- package/src/app/mcp-app-view.tsx +292 -185
- package/src/app/mcp-toolkit-app.tsx +31 -7
- package/src/app/use-view-lifecycle.ts +116 -0
- package/src/app/view-lifecycle.test.ts +227 -0
- package/src/app/view-lifecycle.ts +174 -0
- package/src/app/widget-props-sheet.tsx +13 -26
- package/src/app/widget-renderer.render.test.tsx +131 -0
- package/src/app/widget-renderer.tsx +136 -38
- package/src/components/DrillButton.tsx +2 -1
- package/src/components/EmptyState.tsx +81 -0
- package/src/components/ErrorState.tsx +182 -0
- package/src/components/FilterBar.tsx +9 -6
- package/src/components/GroupCard.tsx +3 -2
- package/src/components/KpiGrid.tsx +75 -44
- package/src/components/ListFooter.tsx +17 -6
- package/src/components/Pills.tsx +20 -11
- package/src/components/Toast.tsx +188 -0
- package/src/components/WidgetHeader.tsx +1 -1
- package/src/components/feedback-states.test.tsx +225 -0
- package/src/components/tone-figures.test.tsx +54 -0
- package/src/fonts.css +19 -0
- package/src/globals.css +9 -165
- package/src/hooks/use-tool-result-recovery.test.ts +25 -1
- package/src/hooks/use-tool-result-recovery.ts +34 -6
- package/src/hooks/use-view-data.test.tsx +60 -0
- package/src/hooks/use-view-data.ts +12 -1
- package/src/i18n-coverage.test.tsx +323 -0
- package/src/index.ts +57 -5
- 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/toast-model.test.ts +68 -0
- package/src/lib/toast-model.ts +63 -0
- package/src/lib/tone-utils.test.ts +47 -14
- package/src/lib/tone-utils.ts +61 -13
- package/src/locale/index.ts +13 -1
- package/src/locale/locale-provider.test.tsx +87 -0
- package/src/locale/locale-provider.tsx +90 -3
- package/src/locale/message-types.ts +221 -0
- package/src/locale/messages-de.ts +159 -0
- package/src/locale/messages-en.ts +157 -0
- package/src/locale/toolkit-messages.test.ts +216 -0
- package/src/locale/toolkit-messages.ts +82 -0
- package/src/no-hardcoded-copy.test.ts +432 -0
- package/src/primitives/alert.tsx +4 -2
- package/src/primitives/badge.tsx +14 -7
- package/src/primitives/button.tsx +13 -8
- package/src/primitives/card.tsx +4 -4
- package/src/primitives/dialog.tsx +32 -7
- package/src/primitives/input.tsx +5 -3
- package/src/primitives/scroll-area.tsx +1 -1
- package/src/primitives/select.tsx +6 -3
- package/src/primitives/sheet.tsx +26 -6
- package/src/primitives/skeleton.tsx +1 -1
- package/src/primitives/switch.tsx +4 -2
- package/src/primitives/tabs.tsx +9 -6
- package/src/render-cases.tsx +45 -1
- package/src/render-scan.ts +75 -0
- package/src/theme/cd-tokens.generated.css +48 -0
- package/src/theme/cd-tokens.test.ts +107 -0
- package/src/theme/cd-tokens.ts +67 -0
- package/src/theme/create-theme.test.ts +243 -5
- package/src/theme/create-theme.ts +313 -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 +568 -0
- package/src/theme/theme-provider.test.tsx +82 -0
- package/src/theme/theme-provider.tsx +60 -24
- package/src/theme.css +314 -0
- package/ui-catalog.json +344 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KpiGrid.js","sourceRoot":"","sources":["../../src/components/KpiGrid.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"KpiGrid.js","sourceRoot":"","sources":["../../src/components/KpiGrid.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,14 +9,15 @@ export interface ListFooterProps {
|
|
|
9
9
|
loadingMore?: boolean;
|
|
10
10
|
/** Called when the user asks for the next page. */
|
|
11
11
|
onLoadMore: () => void;
|
|
12
|
-
/** Plural noun for the count, e.g. `"instances"`. Default
|
|
12
|
+
/** Plural noun for the count, e.g. `"instances"`. Default: the locale's word for rows. */
|
|
13
13
|
noun?: string;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Footer for a paginated list: an honest "Showing X of Y" total plus an
|
|
17
17
|
* explicit "Load more" control. Deliberately not infinite scroll — the user
|
|
18
18
|
* gets the total, a reachable footer, and control over fetching. Renders
|
|
19
|
-
* nothing when `total` is 0.
|
|
19
|
+
* nothing when `total` is 0. Text and number format follow the active locale
|
|
20
|
+
* (`LocaleProvider`, else the host's inside `McpAppView`).
|
|
20
21
|
*/
|
|
21
22
|
export declare function ListFooter({ shown, total, hasMore, loadingMore, onLoadMore, noun, }: ListFooterProps): import("react").JSX.Element | null;
|
|
22
23
|
//# sourceMappingURL=ListFooter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListFooter.d.ts","sourceRoot":"","sources":["../../src/components/ListFooter.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ListFooter.d.ts","sourceRoot":"","sources":["../../src/components/ListFooter.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,mDAAmD;IACnD,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,OAAO,EACP,WAAmB,EACnB,UAAU,EACV,IAAI,GACL,EAAE,eAAe,sCAyBjB"}
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { FOCUS_RING } from "../lib/focus-ring.js";
|
|
3
|
+
import { useToolkitLocale, useToolkitMessages } from "../locale/locale-provider.js";
|
|
4
|
+
import { formatCount } from "../locale/toolkit-messages.js";
|
|
2
5
|
/**
|
|
3
6
|
* Footer for a paginated list: an honest "Showing X of Y" total plus an
|
|
4
7
|
* explicit "Load more" control. Deliberately not infinite scroll — the user
|
|
5
8
|
* gets the total, a reachable footer, and control over fetching. Renders
|
|
6
|
-
* nothing when `total` is 0.
|
|
9
|
+
* nothing when `total` is 0. Text and number format follow the active locale
|
|
10
|
+
* (`LocaleProvider`, else the host's inside `McpAppView`).
|
|
7
11
|
*/
|
|
8
|
-
export function ListFooter({ shown, total, hasMore, loadingMore = false, onLoadMore, noun
|
|
12
|
+
export function ListFooter({ shown, total, hasMore, loadingMore = false, onLoadMore, noun, }) {
|
|
13
|
+
const locale = useToolkitLocale();
|
|
14
|
+
const { listFooter } = useToolkitMessages();
|
|
9
15
|
if (total <= 0)
|
|
10
16
|
return null;
|
|
11
|
-
return (_jsxs("div", { className: "text-muted-foreground flex items-center justify-between gap-3 px-1 py-2 text-xs", children: [
|
|
17
|
+
return (_jsxs("div", { className: "text-muted-foreground flex items-center justify-between gap-3 px-1 py-2 text-xs", children: [_jsx("span", { children: listFooter.showing({
|
|
18
|
+
shown: formatCount(shown, locale),
|
|
19
|
+
total: formatCount(total, locale),
|
|
20
|
+
noun: noun ?? listFooter.defaultNoun,
|
|
21
|
+
}) }), hasMore && (_jsx("button", { type: "button", onClick: onLoadMore, disabled: loadingMore, className: `border-border text-foreground hover:border-focus hover:bg-accent hover:text-accent-foreground inline-flex items-center gap-1 rounded-md border px-3 py-1.5 font-medium transition-colors disabled:opacity-50 ${FOCUS_RING}`, children: loadingMore ? listFooter.loadingMore : listFooter.loadMore }))] }));
|
|
12
22
|
}
|
|
13
23
|
//# sourceMappingURL=ListFooter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListFooter.js","sourceRoot":"","sources":["../../src/components/ListFooter.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ListFooter.js","sourceRoot":"","sources":["../../src/components/ListFooter.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAiB3D;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,OAAO,EACP,WAAW,GAAG,KAAK,EACnB,UAAU,EACV,IAAI,GACY;IAChB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;IACjC,MAAM,EAAE,UAAU,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAC3C,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3B,OAAO,CACL,eAAK,SAAS,EAAC,iFAAiF,aAC9F,yBACG,UAAU,CAAC,OAAO,CAAC;oBAClB,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;oBACjC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;oBACjC,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,WAAW;iBACrC,CAAC,GACG,EACN,OAAO,IAAI,CACV,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,gNAAgN,UAAU,EAAE,YAEtO,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,GACpD,CACV,IACG,CACP,CAAA;AACH,CAAC"}
|
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import { type ToneVariant } from "../lib/tone-utils.js";
|
|
3
3
|
export interface LivePillProps {
|
|
4
|
-
/** Status tone driving the dot
|
|
4
|
+
/** Status tone driving the dot, tint and border. Default `"info"`. */
|
|
5
5
|
tone?: ToneVariant;
|
|
6
|
-
/** Pill label. Defaults to
|
|
6
|
+
/** Pill label. Defaults to the locale's "Live". */
|
|
7
7
|
children?: ReactNode;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Small tinted pill with a pulsing dot. Use in a widget header to signal that
|
|
11
|
-
* the data is live/real-time. Tone-based,
|
|
11
|
+
* the data is live/real-time. Tone-based (tint, border and dot in the tone,
|
|
12
|
+
* text in the foreground), so it inherits the active theme. The pulse stops
|
|
13
|
+
* under `prefers-reduced-motion`.
|
|
12
14
|
*/
|
|
13
15
|
export declare function LivePill({ tone, children }: LivePillProps): import("react").JSX.Element;
|
|
14
16
|
export interface CountPillProps {
|
|
15
|
-
/** Status tone driving the tint. Default `"neutral"`. */
|
|
17
|
+
/** Status tone driving the tint and border. Default `"neutral"`. */
|
|
16
18
|
tone?: ToneVariant;
|
|
17
19
|
/** The count/value to display (tabular numbers). */
|
|
18
20
|
children: ReactNode;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
|
-
* Compact count badge — tabular numbers on a tinted background
|
|
22
|
-
* right-aligned indicator on a list/group row (e.g. a
|
|
23
|
+
* Compact count badge — tabular numbers on a tinted background with a border
|
|
24
|
+
* in the tone. Use as the right-aligned indicator on a list/group row (e.g. a
|
|
25
|
+
* per-group item count). The number stays in the foreground in every tone
|
|
26
|
+
* (no coloured digits): the tint and the border carry the tone.
|
|
23
27
|
*/
|
|
24
28
|
export declare function CountPill({ tone, children }: CountPillProps): import("react").JSX.Element;
|
|
25
29
|
//# sourceMappingURL=Pills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pills.d.ts","sourceRoot":"","sources":["../../src/components/Pills.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Pills.d.ts","sourceRoot":"","sources":["../../src/components/Pills.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEzF,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAa,EAAE,QAAQ,EAAE,EAAE,aAAa,+BAalE;AAED,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,oDAAoD;IACpD,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,IAAgB,EAAE,QAAQ,EAAE,EAAE,cAAc,+BAQvE"}
|
package/dist/components/Pills.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useToolkitMessages } from "../locale/locale-provider.js";
|
|
3
|
+
import { TONE_BORDER, TONE_DOT, TONE_SOFT } from "../lib/tone-utils.js";
|
|
3
4
|
/**
|
|
4
5
|
* Small tinted pill with a pulsing dot. Use in a widget header to signal that
|
|
5
|
-
* the data is live/real-time. Tone-based,
|
|
6
|
+
* the data is live/real-time. Tone-based (tint, border and dot in the tone,
|
|
7
|
+
* text in the foreground), so it inherits the active theme. The pulse stops
|
|
8
|
+
* under `prefers-reduced-motion`.
|
|
6
9
|
*/
|
|
7
10
|
export function LivePill({ tone = "info", children }) {
|
|
8
|
-
|
|
11
|
+
const messages = useToolkitMessages();
|
|
12
|
+
return (_jsxs("span", { className: `inline-flex items-center gap-1.5 rounded-sm border px-2 py-0.5 text-xs font-semibold ${TONE_SOFT[tone]} ${TONE_BORDER[tone]}`, children: [_jsx("span", { "aria-hidden": "true", className: `size-1.5 animate-pulse rounded-full ${TONE_DOT[tone]}` }), children ?? messages.pills.live] }));
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
11
|
-
* Compact count badge — tabular numbers on a tinted background
|
|
12
|
-
* right-aligned indicator on a list/group row (e.g. a
|
|
15
|
+
* Compact count badge — tabular numbers on a tinted background with a border
|
|
16
|
+
* in the tone. Use as the right-aligned indicator on a list/group row (e.g. a
|
|
17
|
+
* per-group item count). The number stays in the foreground in every tone
|
|
18
|
+
* (no coloured digits): the tint and the border carry the tone.
|
|
13
19
|
*/
|
|
14
20
|
export function CountPill({ tone = "neutral", children }) {
|
|
15
|
-
return (_jsx("span", { className: `inline-flex min-w-[2.5rem] items-center justify-center rounded-
|
|
21
|
+
return (_jsx("span", { className: `inline-flex min-w-[2.5rem] items-center justify-center rounded-sm border px-2.5 py-0.5 text-sm font-semibold tabular-nums ${TONE_SOFT[tone]} ${TONE_BORDER[tone]}`, children: children }));
|
|
16
22
|
}
|
|
17
23
|
//# sourceMappingURL=Pills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pills.js","sourceRoot":"","sources":["../../src/components/Pills.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"Pills.js","sourceRoot":"","sources":["../../src/components/Pills.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAA;AASzF;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAiB;IACjE,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAA;IACrC,OAAO,CACL,gBACE,SAAS,EAAE,wFAAwF,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,aAEzI,8BACc,MAAM,EAClB,SAAS,EAAE,uCAAuC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAClE,EACD,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,IAC3B,CACR,CAAA;AACH,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAkB;IACtE,OAAO,CACL,eACE,SAAS,EAAE,6HAA6H,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,YAE7K,QAAQ,GACJ,CACR,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type ToastItem, type ToastOptions } from "../lib/toast-model.js";
|
|
3
|
+
export type { ToastOptions, ToastTone } from "../lib/toast-model.js";
|
|
4
|
+
/** What {@link useToast} returns. */
|
|
5
|
+
export interface ToastApi {
|
|
6
|
+
/** Show a toast; returns its id (for an early {@link ToastApi.dismiss}). */
|
|
7
|
+
show: (options: ToastOptions) => number;
|
|
8
|
+
/** Remove a toast before its timer runs out. */
|
|
9
|
+
dismiss: (id: number) => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Raise toasts from anywhere below a {@link ToastProvider}: `show({ tone,
|
|
13
|
+
* title })` after a write succeeded or failed, never a silent `console` line.
|
|
14
|
+
* Outside a provider it returns a no-op API, so a widget rendered in a bare
|
|
15
|
+
* fixture never crashes on feedback.
|
|
16
|
+
*/
|
|
17
|
+
export declare function useToast(): ToastApi;
|
|
18
|
+
/**
|
|
19
|
+
* The stack of toasts — a presentational view over a list (the provider owns
|
|
20
|
+
* the state). The container is ONE persistent live region (`role="status"`,
|
|
21
|
+
* `aria-live="polite"`), so a newly added toast is announced without stealing
|
|
22
|
+
* focus. Bottom centre, above dialogs (z 60), per CI §5/§8.
|
|
23
|
+
*/
|
|
24
|
+
export declare function ToastViewport({ toasts, onDismiss, }: {
|
|
25
|
+
toasts: readonly ToastItem[];
|
|
26
|
+
onDismiss: (id: number) => void;
|
|
27
|
+
}): import("react").JSX.Element;
|
|
28
|
+
/**
|
|
29
|
+
* Provide toasts to a subtree and render their stack. Idempotent: nested
|
|
30
|
+
* inside another `ToastProvider` it adds nothing, so the app shell and an
|
|
31
|
+
* embedded builder share one stack and one live region. `McpAppView` mounts
|
|
32
|
+
* one for you.
|
|
33
|
+
*/
|
|
34
|
+
export declare function ToastProvider({ children }: {
|
|
35
|
+
children: ReactNode;
|
|
36
|
+
}): string | number | bigint | boolean | import("react").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
|
|
37
|
+
//# sourceMappingURL=Toast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/components/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAMd,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEpE,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,4EAA4E;IAC5E,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAA;IACvC,gDAAgD;IAChD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B;AAOD;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,QAAQ,CAEnC;AA0BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,SAAS,SAAS,EAAE,CAAA;IAC5B,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC,+BAoBA;AAyED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+TAGlE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState, } from "react";
|
|
3
|
+
import { CircleAlert, CircleCheck, Info, TriangleAlert, X } from "lucide-react";
|
|
4
|
+
import { useToolkitMessages } from "../locale/locale-provider.js";
|
|
5
|
+
import { FOCUS_RING } from "../lib/focus-ring.js";
|
|
6
|
+
import { TONE_ICON } from "../lib/tone-utils.js";
|
|
7
|
+
import { cn } from "../lib/utils.js";
|
|
8
|
+
import { createToast, toastReducer, } from "../lib/toast-model.js";
|
|
9
|
+
const ToastContext = createContext(null);
|
|
10
|
+
/** Outside a provider `useToast()` degrades to a no-op instead of throwing. */
|
|
11
|
+
const NOOP_TOASTS = { show: () => -1, dismiss: () => { } };
|
|
12
|
+
/**
|
|
13
|
+
* Raise toasts from anywhere below a {@link ToastProvider}: `show({ tone,
|
|
14
|
+
* title })` after a write succeeded or failed, never a silent `console` line.
|
|
15
|
+
* Outside a provider it returns a no-op API, so a widget rendered in a bare
|
|
16
|
+
* fixture never crashes on feedback.
|
|
17
|
+
*/
|
|
18
|
+
export function useToast() {
|
|
19
|
+
return useContext(ToastContext) ?? NOOP_TOASTS;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Status edge per tone — the status colour as border, never as text. Repeated
|
|
23
|
+
* under `dark:` so the card's dark 3:1 rim (`dark:border-input`, a later rule)
|
|
24
|
+
* does not paint over it.
|
|
25
|
+
*/
|
|
26
|
+
const TONE_EDGE = {
|
|
27
|
+
success: "border-l-success dark:border-l-success",
|
|
28
|
+
warning: "border-l-warning dark:border-l-warning",
|
|
29
|
+
danger: "border-l-danger dark:border-l-danger",
|
|
30
|
+
info: "border-l-info dark:border-l-info",
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Lucide icon per tone, drawn in the tone colour (`TONE_ICON`, CI §3.3: status
|
|
34
|
+
* as edge and icon). The title next to it carries the message, so success and
|
|
35
|
+
* warning stay CI-exempt from 3:1 on light like every other status icon.
|
|
36
|
+
*/
|
|
37
|
+
const TOAST_ICON = {
|
|
38
|
+
success: CircleCheck,
|
|
39
|
+
warning: TriangleAlert,
|
|
40
|
+
danger: CircleAlert,
|
|
41
|
+
info: Info,
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* The stack of toasts — a presentational view over a list (the provider owns
|
|
45
|
+
* the state). The container is ONE persistent live region (`role="status"`,
|
|
46
|
+
* `aria-live="polite"`), so a newly added toast is announced without stealing
|
|
47
|
+
* focus. Bottom centre, above dialogs (z 60), per CI §5/§8.
|
|
48
|
+
*/
|
|
49
|
+
export function ToastViewport({ toasts, onDismiss, }) {
|
|
50
|
+
const messages = useToolkitMessages();
|
|
51
|
+
return (_jsx("div", { "data-slot": "toast-viewport", role: "status", "aria-live": "polite", "aria-label": messages.common.notifications, className: "pointer-events-none fixed inset-x-0 bottom-4 z-60 flex flex-col items-center gap-2 px-4", children: toasts.map((toast) => (_jsx(ToastCard, { toast: toast, dismissLabel: messages.common.dismiss, onDismiss: onDismiss }, toast.id))) }));
|
|
52
|
+
}
|
|
53
|
+
function ToastCard({ toast, dismissLabel, onDismiss, }) {
|
|
54
|
+
// Hover or keyboard focus holds the toast: the timer restarts on leave.
|
|
55
|
+
const [held, setHeld] = useState(false);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (held)
|
|
58
|
+
return;
|
|
59
|
+
const timer = setTimeout(() => onDismiss(toast.id), toast.duration);
|
|
60
|
+
return () => clearTimeout(timer);
|
|
61
|
+
}, [held, onDismiss, toast.id, toast.duration]);
|
|
62
|
+
const Icon = TOAST_ICON[toast.tone];
|
|
63
|
+
return (_jsxs("div", { "data-slot": "toast", "data-tone": toast.tone, onMouseEnter: () => setHeld(true), onMouseLeave: () => setHeld(false), onFocus: () => setHeld(true), onBlur: () => setHeld(false), className: cn(
|
|
64
|
+
// An overlay like Dialog/Sheet: shadow-2 on light, the 3:1 input rim on
|
|
65
|
+
// dark (shadows vanish on the ground).
|
|
66
|
+
"bg-popover text-popover-foreground dark:border-input shadow-2 pointer-events-auto flex w-full max-w-sm items-start gap-3 rounded-md border border-l-4 px-4 py-3 text-sm", "motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-bottom-2 motion-safe:duration-(--motion-base) motion-safe:ease-(--ease)", TONE_EDGE[toast.tone]), children: [_jsx(Icon, { "aria-hidden": "true", className: cn("mt-0.5 size-4 shrink-0", TONE_ICON[toast.tone]) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "font-medium break-words", children: toast.title }), toast.description && (_jsx("p", { className: "text-muted-foreground mt-0.5 break-words", children: toast.description }))] }), _jsx("button", { type: "button", "aria-label": dismissLabel, onClick: () => onDismiss(toast.id), className: `text-muted-foreground hover:text-foreground -mr-1 inline-flex size-6 shrink-0 items-center justify-center rounded-sm ${FOCUS_RING}`, children: _jsx(X, { "aria-hidden": "true", className: "size-4" }) })] }));
|
|
67
|
+
}
|
|
68
|
+
function ToastRoot({ children }) {
|
|
69
|
+
const [toasts, dispatch] = useReducer(toastReducer, []);
|
|
70
|
+
const nextId = useRef(0);
|
|
71
|
+
const dismiss = useCallback((id) => dispatch({ type: "dismiss", id }), []);
|
|
72
|
+
const show = useCallback((options) => {
|
|
73
|
+
nextId.current += 1;
|
|
74
|
+
const id = nextId.current;
|
|
75
|
+
dispatch({ type: "add", toast: createToast(id, options) });
|
|
76
|
+
return id;
|
|
77
|
+
}, []);
|
|
78
|
+
const api = useMemo(() => ({ show, dismiss }), [show, dismiss]);
|
|
79
|
+
return (_jsxs(ToastContext.Provider, { value: api, children: [children, _jsx(ToastViewport, { toasts: toasts, onDismiss: dismiss })] }));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Provide toasts to a subtree and render their stack. Idempotent: nested
|
|
83
|
+
* inside another `ToastProvider` it adds nothing, so the app shell and an
|
|
84
|
+
* embedded builder share one stack and one live region. `McpAppView` mounts
|
|
85
|
+
* one for you.
|
|
86
|
+
*/
|
|
87
|
+
export function ToastProvider({ children }) {
|
|
88
|
+
const parent = useContext(ToastContext);
|
|
89
|
+
return parent ? children : _jsx(ToastRoot, { children: children });
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=Toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/components/Toast.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,6 @@ import { TONE_SOFT } from "../lib/tone-utils.js";
|
|
|
6
6
|
* Use once per widget surface to anchor it.
|
|
7
7
|
*/
|
|
8
8
|
export function WidgetHeader({ icon, iconTone = "neutral", title, sub, actions, }) {
|
|
9
|
-
return (_jsxs("header", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "min-w-0", children: [icon && (_jsx("div", { className: `mb-3.5 grid size-11 place-items-center rounded-
|
|
9
|
+
return (_jsxs("header", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "min-w-0", children: [icon && (_jsx("div", { className: `mb-3.5 grid size-11 place-items-center rounded-md text-xl ${TONE_SOFT[iconTone]}`, children: icon })), _jsx("h1", { className: "text-foreground mb-1.5 text-3xl leading-tight font-bold tracking-tight", children: title }), sub && (_jsx("div", { className: "text-muted-foreground flex flex-wrap items-center gap-2 text-sm", children: sub }))] }), actions && _jsx("div", { className: "flex flex-wrap items-center gap-2", children: actions })] }));
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=WidgetHeader.js.map
|
|
@@ -20,7 +20,10 @@
|
|
|
20
20
|
* A call the host cancelled is never recovered: since mcp-use 2.7.1 the
|
|
21
21
|
* cancellation latches as `status: "error"` (a `ToolCancelledError`), which
|
|
22
22
|
* would otherwise count as a ready-but-invalid result — re-executing it would
|
|
23
|
-
* override the user's decision to stop the call.
|
|
23
|
+
* override the user's decision to stop the call. Neither is a call that
|
|
24
|
+
* failed (`isError` or a transport error, {@link ToolResultRecoveryOptions.errored}):
|
|
25
|
+
* re-running it only repeats the failure, so the shell renders the error and
|
|
26
|
+
* offers an explicit retry instead (toolkit#176).
|
|
24
27
|
*
|
|
25
28
|
* Assumes the originating tool is a read-only render pipeline (true for all
|
|
26
29
|
* toolkit `render-view`/`show_*` tools) — the re-execution must be safe to
|
|
@@ -48,6 +51,14 @@ export interface ToolResultRecoveryOptions {
|
|
|
48
51
|
* attempt already in flight is dropped. Defaults to `false`.
|
|
49
52
|
*/
|
|
50
53
|
cancelled?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* The originating call latched a tool error (`useToolContext().status ===
|
|
56
|
+
* "error"` without a cancellation): an `isError` result or a failed call.
|
|
57
|
+
* Suppresses the recovery exactly like {@link cancelled} — the shell shows
|
|
58
|
+
* the error instead of silently re-running a call that just failed
|
|
59
|
+
* (toolkit#176). Defaults to `false`.
|
|
60
|
+
*/
|
|
61
|
+
errored?: boolean;
|
|
51
62
|
/** The payload the host delivered (`useToolContext().toolOutput`). */
|
|
52
63
|
props: unknown;
|
|
53
64
|
/**
|
|
@@ -87,5 +98,16 @@ export declare function resolveRecoveryToolName(hostContext: unknown): string |
|
|
|
87
98
|
* the hook uses it on the `callTool` response.
|
|
88
99
|
*/
|
|
89
100
|
export declare function decodeRecoveredResult<T>(result: unknown, isValid: (value: unknown) => boolean): T | null;
|
|
101
|
+
/**
|
|
102
|
+
* Whether the recovery may fire: the result latched (or is assumed stripped)
|
|
103
|
+
* and the call was neither cancelled nor failed. Exported for tests — this is
|
|
104
|
+
* the #176 rule "never recover on an error status".
|
|
105
|
+
*/
|
|
106
|
+
export declare function isRecoveryReady(state: {
|
|
107
|
+
resultReady: boolean;
|
|
108
|
+
assumedReady: boolean;
|
|
109
|
+
cancelled: boolean;
|
|
110
|
+
errored: boolean;
|
|
111
|
+
}): boolean;
|
|
90
112
|
export declare function useToolResultRecovery<T>(options: ToolResultRecoveryOptions): ToolResultRecoveryState<T>;
|
|
91
113
|
//# sourceMappingURL=use-tool-result-recovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tool-result-recovery.d.ts","sourceRoot":"","sources":["../../src/hooks/use-tool-result-recovery.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"use-tool-result-recovery.d.ts","sourceRoot":"","sources":["../../src/hooks/use-tool-result-recovery.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,OAAO,CAAA;AAEpD,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,sEAAsE;IACtE,KAAK,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;IACpC,4FAA4F;IAC5F,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAA;IACrD,gGAAgG;IAChG,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAA;IACvD,oCAAoC;IACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3E;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,yFAAyF;IACzF,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACd,oGAAoG;IACpG,MAAM,EAAE,OAAO,CAAA;CAChB;AAID;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAehF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GACnC,CAAC,GAAG,IAAI,CAQV;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,OAAO,CAGV;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,yBAAyB,GACjC,uBAAuB,CAAC,CAAC,CAAC,CAwF5B"}
|
|
@@ -22,7 +22,10 @@ import { parseToolResult } from "../lib/parse-tool-result.js";
|
|
|
22
22
|
* A call the host cancelled is never recovered: since mcp-use 2.7.1 the
|
|
23
23
|
* cancellation latches as `status: "error"` (a `ToolCancelledError`), which
|
|
24
24
|
* would otherwise count as a ready-but-invalid result — re-executing it would
|
|
25
|
-
* override the user's decision to stop the call.
|
|
25
|
+
* override the user's decision to stop the call. Neither is a call that
|
|
26
|
+
* failed (`isError` or a transport error, {@link ToolResultRecoveryOptions.errored}):
|
|
27
|
+
* re-running it only repeats the failure, so the shell renders the error and
|
|
28
|
+
* offers an explicit retry instead (toolkit#176).
|
|
26
29
|
*
|
|
27
30
|
* Assumes the originating tool is a read-only render pipeline (true for all
|
|
28
31
|
* toolkit `render-view`/`show_*` tools) — the re-execution must be safe to
|
|
@@ -75,8 +78,18 @@ export function decodeRecoveredResult(result, isValid) {
|
|
|
75
78
|
}
|
|
76
79
|
return decoded !== null && isValid(decoded) ? decoded : null;
|
|
77
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Whether the recovery may fire: the result latched (or is assumed stripped)
|
|
83
|
+
* and the call was neither cancelled nor failed. Exported for tests — this is
|
|
84
|
+
* the #176 rule "never recover on an error status".
|
|
85
|
+
*/
|
|
86
|
+
export function isRecoveryReady(state) {
|
|
87
|
+
if (state.cancelled || state.errored)
|
|
88
|
+
return false;
|
|
89
|
+
return state.resultReady || state.assumedReady;
|
|
90
|
+
}
|
|
78
91
|
export function useToolResultRecovery(options) {
|
|
79
|
-
const { resultReady, cancelled = false, props, isValid, toolInput, hostContext, callTool, assumeStrippedAfterMs = DEFAULT_ASSUME_STRIPPED_AFTER_MS, } = options;
|
|
92
|
+
const { resultReady, cancelled = false, errored = false, props, isValid, toolInput, hostContext, callTool, assumeStrippedAfterMs = DEFAULT_ASSUME_STRIPPED_AFTER_MS, } = options;
|
|
80
93
|
const [state, setState] = useState(IDLE);
|
|
81
94
|
// Single-flight: the promise ref survives StrictMode's dev-mode
|
|
82
95
|
// effect re-run (cleanup + setup on the same instance), so the re-run
|
|
@@ -99,15 +112,16 @@ export function useToolResultRecovery(options) {
|
|
|
99
112
|
if (assumedReady)
|
|
100
113
|
setAssumedReady(false);
|
|
101
114
|
}
|
|
115
|
+
const suppressed = cancelled || errored;
|
|
102
116
|
useEffect(() => {
|
|
103
|
-
if (resultReady ||
|
|
117
|
+
if (resultReady || suppressed || toolName === undefined)
|
|
104
118
|
return;
|
|
105
119
|
const timer = setTimeout(() => setAssumedReady(true), assumeStrippedAfterMs);
|
|
106
120
|
return () => clearTimeout(timer);
|
|
107
|
-
}, [resultReady,
|
|
108
|
-
// A cancelled call never counts as ready, so the effect below
|
|
109
|
-
// any in-flight attempt the same way it does for a superseded run.
|
|
110
|
-
const ready =
|
|
121
|
+
}, [resultReady, suppressed, toolName, toolInput, assumeStrippedAfterMs]);
|
|
122
|
+
// A cancelled or failed call never counts as ready, so the effect below
|
|
123
|
+
// invalidates any in-flight attempt the same way it does for a superseded run.
|
|
124
|
+
const ready = isRecoveryReady({ resultReady, assumedReady, cancelled, errored });
|
|
111
125
|
useEffect(() => {
|
|
112
126
|
// A new tool run (result no longer ready, or fresh tool-input identity)
|
|
113
127
|
// invalidates any previous recovery attempt and re-arms the single-flight.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tool-result-recovery.js","sourceRoot":"","sources":["../../src/hooks/use-tool-result-recovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D
|
|
1
|
+
{"version":3,"file":"use-tool-result-recovery.js","sourceRoot":"","sources":["../../src/hooks/use-tool-result-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,12 @@ export interface ViewDataResult<T> {
|
|
|
3
3
|
/** True while self-fetching with no data yet — the first paint of a cockpit cell. */
|
|
4
4
|
loading: boolean;
|
|
5
5
|
error: Error | null;
|
|
6
|
+
/**
|
|
7
|
+
* Fetch `tool` again: the retry of an error state
|
|
8
|
+
* (`<ErrorState onRetry={refetch} … />`). Host-pushed data, when present,
|
|
9
|
+
* stays what `data` returns.
|
|
10
|
+
*/
|
|
11
|
+
refetch: () => void;
|
|
6
12
|
}
|
|
7
13
|
/**
|
|
8
14
|
* The seam that lets one widget component serve both modes without a duplicate UI.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-view-data.d.ts","sourceRoot":"","sources":["../../src/hooks/use-view-data.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-view-data.d.ts","sourceRoot":"","sources":["../../src/hooks/use-view-data.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACd,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB;;;;OAIG;IACH,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACjC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,OAAO,GACb,cAAc,CAAC,CAAC,CAAC,CAQnB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
1
2
|
import { useToolQuery } from "./use-tool-query.js";
|
|
2
3
|
/**
|
|
3
4
|
* The seam that lets one widget component serve both modes without a duplicate UI.
|
|
@@ -13,6 +14,10 @@ import { useToolQuery } from "./use-tool-query.js";
|
|
|
13
14
|
export function useViewData(initialData, key, tool, args, ready) {
|
|
14
15
|
const query = useToolQuery([...key], tool, args, { enabled: !initialData && ready });
|
|
15
16
|
const data = initialData ?? query.data ?? null;
|
|
16
|
-
|
|
17
|
+
const { refetch: refetchQuery } = query;
|
|
18
|
+
const refetch = useCallback(() => {
|
|
19
|
+
void refetchQuery();
|
|
20
|
+
}, [refetchQuery]);
|
|
21
|
+
return { data, loading: !data && ready && !query.isError, error: query.error ?? null, refetch };
|
|
17
22
|
}
|
|
18
23
|
//# sourceMappingURL=use-view-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-view-data.js","sourceRoot":"","sources":["../../src/hooks/use-view-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"use-view-data.js","sourceRoot":"","sources":["../../src/hooks/use-view-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAelD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACzB,WAAiC,EACjC,GAA2B,EAC3B,IAAY,EACZ,IAA6B,EAC7B,KAAc;IAEd,MAAM,KAAK,GAAG,YAAY,CAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,WAAW,IAAI,KAAK,EAAE,CAAC,CAAA;IACvF,MAAM,IAAI,GAAG,WAAW,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAA;IAC9C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IACvC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,KAAK,YAAY,EAAE,CAAA;IACrB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,OAAO,EAAE,CAAA;AACjG,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,8 +16,9 @@ export { useIsMobile } from "./hooks/use-mobile.js";
|
|
|
16
16
|
export { useToolQuery, useToolMutation } from "./hooks/use-tool-query.js";
|
|
17
17
|
export type { UseToolQueryOptions } from "./hooks/use-tool-query.js";
|
|
18
18
|
export { useDebouncedValue } from "./hooks/use-debounced-value.js";
|
|
19
|
-
export { TONE_SOFT, TONE_DOT, TONE_TEXT } from "./lib/tone-utils.js";
|
|
19
|
+
export { TONE_SOFT, TONE_DOT, TONE_TEXT, TONE_BORDER, TONE_ICON } from "./lib/tone-utils.js";
|
|
20
20
|
export type { ToneVariant } from "./lib/tone-utils.js";
|
|
21
|
+
export { FOCUS_RING, FOCUS_RING_INSET } from "./lib/focus-ring.js";
|
|
21
22
|
export { GridLayout, GridItem } from "./components/GridLayout.js";
|
|
22
23
|
export type { GridLayoutProps, GridItemProps } from "./components/GridLayout.js";
|
|
23
24
|
export { KpiGrid } from "./components/KpiGrid.js";
|
|
@@ -36,11 +37,17 @@ export { DrillButton } from "./components/DrillButton.js";
|
|
|
36
37
|
export type { DrillButtonProps } from "./components/DrillButton.js";
|
|
37
38
|
export { ListFooter } from "./components/ListFooter.js";
|
|
38
39
|
export type { ListFooterProps } from "./components/ListFooter.js";
|
|
40
|
+
export { ToastProvider, useToast } from "./components/Toast.js";
|
|
41
|
+
export type { ToastApi, ToastOptions, ToastTone } from "./components/Toast.js";
|
|
42
|
+
export { EmptyState } from "./components/EmptyState.js";
|
|
43
|
+
export type { EmptyStateProps, StateHeadingLevel } from "./components/EmptyState.js";
|
|
44
|
+
export { ErrorState } from "./components/ErrorState.js";
|
|
45
|
+
export type { ErrorStateProps, ErrorStateTone } from "./components/ErrorState.js";
|
|
39
46
|
export { AppQueryProvider, useCallTool, queryClient } from "./providers/query-provider.js";
|
|
40
|
-
export { createTheme, ThemeProvider, useTheme, themePresets } from "./theme/index.js";
|
|
41
|
-
export type { ThemeTokens, ThemeDefinition, ThemeVars, CreateThemeOptions, ThemeMode, ThemeContextValue, ThemeProviderProps, ThemePresetId, } from "./theme/index.js";
|
|
42
|
-
export { LocaleProvider, useLocale, useTranslate } from "./locale/index.js";
|
|
43
|
-
export type { LocaleContextValue, LocaleProviderProps, BoundTranslate } from "./locale/index.js";
|
|
47
|
+
export { createTheme, resolveThemeVars, ROLE_TOKENS, ThemeProvider, useTheme, usePortalContainer, themePresets, CD_TOKENS, CD_TOKENS_VERSION, fontFaces, GEIST_FONT_FILES, adoptHostFontVariables, HOST_FONT_VARIABLES, } from "./theme/index.js";
|
|
48
|
+
export type { ThemeTokens, ThemeDefinition, ThemeVars, CreateThemeOptions, ThemeMode, ThemeContextValue, ThemeProviderProps, ThemePresetId, CdTokenName, FontFacesOptions, InlineStyleTarget, } from "./theme/index.js";
|
|
49
|
+
export { LocaleProvider, useLocale, useTranslate, useToolkitMessages, TOOLKIT_MESSAGES, formatCount, resolveToolkitMessages, } from "./locale/index.js";
|
|
50
|
+
export type { LocaleContextValue, LocaleProviderProps, BoundTranslate, BuilderMessages, CommonMessages, ListFooterMessages, PropsSheetMessages, RendererMessages, ToolkitLocale, ToolkitMessages, ToolkitMessagesOverride, ViewMessages, } from "./locale/index.js";
|
|
44
51
|
export { cn } from "./lib/utils.js";
|
|
45
52
|
export { parseToolResult, parseViewToolResult } from "./lib/parse-tool-result.js";
|
|
46
53
|
export type { ParseToolResultOptions } from "./lib/parse-tool-result.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,SAAS,EACT,YAAY,GACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EACL,KAAK,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,uBAAuB,CAAA;AAK9B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,8 +20,12 @@ export { useIsMobile } from "./hooks/use-mobile.js";
|
|
|
20
20
|
export { useToolQuery, useToolMutation } from "./hooks/use-tool-query.js";
|
|
21
21
|
export { useDebouncedValue } from "./hooks/use-debounced-value.js";
|
|
22
22
|
// Tone token system — the semantic status tones (ToneVariant + TONE_* maps)
|
|
23
|
-
// behind the tone-aware components below. Pure data + class strings.
|
|
24
|
-
|
|
23
|
+
// behind the tone-aware components below. Pure data + class strings. Three
|
|
24
|
+
// roles per tone: colour (TONE_DOT/TONE_BORDER/TONE_ICON), tint (TONE_SOFT,
|
|
25
|
+
// foreground text on it), text on a plain surface (TONE_TEXT, the -ink role).
|
|
26
|
+
export { TONE_SOFT, TONE_DOT, TONE_TEXT, TONE_BORDER, TONE_ICON } from "./lib/tone-utils.js";
|
|
27
|
+
// The kit's opaque focus ring as class strings, for custom controls.
|
|
28
|
+
export { FOCUS_RING, FOCUS_RING_INSET } from "./lib/focus-ring.js";
|
|
25
29
|
// Composed components — focused widget building blocks assembled from the
|
|
26
30
|
// primitives. Pure (React + primitives + cn), so they live in the root barrel.
|
|
27
31
|
export { GridLayout, GridItem } from "./components/GridLayout.js";
|
|
@@ -33,19 +37,25 @@ export { GroupCard } from "./components/GroupCard.js";
|
|
|
33
37
|
export { FilterBar } from "./components/FilterBar.js";
|
|
34
38
|
export { DrillButton } from "./components/DrillButton.js";
|
|
35
39
|
export { ListFooter } from "./components/ListFooter.js";
|
|
40
|
+
// Feedback and states — one pattern each for toasts, empty and error states.
|
|
41
|
+
export { ToastProvider, useToast } from "./components/Toast.js";
|
|
42
|
+
export { EmptyState } from "./components/EmptyState.js";
|
|
43
|
+
export { ErrorState } from "./components/ErrorState.js";
|
|
36
44
|
// Providers
|
|
37
45
|
export { AppQueryProvider, useCallTool, queryClient } from "./providers/query-provider.js";
|
|
38
46
|
// Theming / white-label token system. Browser-safe (React + DOM only, no
|
|
39
47
|
// `mcp-use/react`), so it belongs in this root barrel: a consumer can re-skin
|
|
40
48
|
// the toolkit's primitives from a single switch without pulling in the host
|
|
41
49
|
// runtime. See packages/ui/src/theme/ and docs/guides/white-labeling.md.
|
|
42
|
-
|
|
50
|
+
// The defaults are the Miragon theme (theme.css over the vendored --cd-*
|
|
51
|
+
// corporate-design tokens); a brand overrides the ROLE_TOKENS only.
|
|
52
|
+
export { createTheme, resolveThemeVars, ROLE_TOKENS, ThemeProvider, useTheme, usePortalContainer, themePresets, CD_TOKENS, CD_TOKENS_VERSION, fontFaces, GEIST_FONT_FILES, adoptHostFontVariables, HOST_FONT_VARIABLES, } from "./theme/index.js";
|
|
43
53
|
// i18n / localization. Browser-safe (React only, no `mcp-use/react`), so it
|
|
44
54
|
// belongs in this root barrel: a consumer wraps its widget tree in
|
|
45
55
|
// <LocaleProvider locale=… translator=…> and reads the active locale with
|
|
46
56
|
// useLocale/useTranslate. Pairs with `createTranslator` from
|
|
47
57
|
// `@miragon/mcp-toolkit-core`. See packages/ui/src/locale/.
|
|
48
|
-
export { LocaleProvider, useLocale, useTranslate } from "./locale/index.js";
|
|
58
|
+
export { LocaleProvider, useLocale, useTranslate, useToolkitMessages, TOOLKIT_MESSAGES, formatCount, resolveToolkitMessages, } from "./locale/index.js";
|
|
49
59
|
// NOTE: MCP App shell (McpAppView, WidgetRenderer) is exported from the
|
|
50
60
|
// `./app` subpath only. Keeping it out of the main barrel prevents consumers
|
|
51
61
|
// that only need primitives (e.g. an admin portal) from pulling `mcp-use/react`
|