@seed-ship/mcp-ui-solid 6.3.1 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/components/GraphRenderer.cjs +30 -24
  3. package/dist/components/GraphRenderer.cjs.map +1 -1
  4. package/dist/components/GraphRenderer.d.ts.map +1 -1
  5. package/dist/components/GraphRenderer.js +30 -24
  6. package/dist/components/GraphRenderer.js.map +1 -1
  7. package/dist/components/PortalDropdownMenu.cjs +82 -0
  8. package/dist/components/PortalDropdownMenu.cjs.map +1 -0
  9. package/dist/components/PortalDropdownMenu.d.ts +56 -0
  10. package/dist/components/PortalDropdownMenu.d.ts.map +1 -0
  11. package/dist/components/PortalDropdownMenu.js +82 -0
  12. package/dist/components/PortalDropdownMenu.js.map +1 -0
  13. package/dist/components/UIResourceRenderer.cjs +260 -256
  14. package/dist/components/UIResourceRenderer.cjs.map +1 -1
  15. package/dist/components/UIResourceRenderer.d.ts.map +1 -1
  16. package/dist/components/UIResourceRenderer.js +260 -256
  17. package/dist/components/UIResourceRenderer.js.map +1 -1
  18. package/dist/components/index.d.ts +2 -0
  19. package/dist/components/index.d.ts.map +1 -1
  20. package/dist/components.cjs +2 -0
  21. package/dist/components.cjs.map +1 -1
  22. package/dist/components.d.cts +2 -0
  23. package/dist/components.d.ts +2 -0
  24. package/dist/components.js +2 -0
  25. package/dist/components.js.map +1 -1
  26. package/dist/index.cjs +2 -0
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +2 -0
  29. package/dist/index.d.ts +2 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -0
  32. package/dist/index.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/components/GraphRenderer.tsx +29 -20
  35. package/src/components/PortalDropdownMenu.test.tsx +113 -0
  36. package/src/components/PortalDropdownMenu.tsx +130 -0
  37. package/src/components/UIResourceRenderer.tsx +22 -13
  38. package/src/components/index.ts +4 -0
  39. package/src/index.ts +2 -0
  40. package/tsconfig.tsbuildinfo +1 -1
@@ -55,5 +55,7 @@ export { RenderContext, RenderProvider, useRenderContext } from './RenderContext
55
55
  export type { RenderContextValue, RenderComponentFn } from './RenderContext';
56
56
  export { ElicitationForm } from './ElicitationForm';
57
57
  export type { ElicitationFormProps } from './ElicitationForm';
58
+ export { PortalDropdownMenu } from './PortalDropdownMenu';
59
+ export type { PortalDropdownMenuProps } from './PortalDropdownMenu';
58
60
  export { UIResourceRenderer as default } from './UIResourceRenderer';
59
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAErE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAA;AAGjF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAG5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAGrE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACvE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACtF,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAGrD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAGnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACjF,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAG5E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAGnE,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA"}
@@ -26,6 +26,7 @@ const VerifiedText = require("./components/VerifiedText.cjs");
26
26
  const DataPreviewSection = require("./components/DataPreviewSection.cjs");
27
27
  const RenderContext = require("./components/RenderContext.cjs");
28
28
  const ElicitationForm = require("./components/ElicitationForm.cjs");
29
+ const PortalDropdownMenu = require("./components/PortalDropdownMenu.cjs");
29
30
  exports.UIResourceRenderer = UIResourceRenderer.UIResourceRenderer;
30
31
  exports.default = UIResourceRenderer.UIResourceRenderer;
31
32
  exports.StreamingUIRenderer = StreamingUIRenderer.StreamingUIRenderer;
@@ -59,4 +60,5 @@ exports.RenderContext = RenderContext.RenderContext;
59
60
  exports.RenderProvider = RenderContext.RenderProvider;
60
61
  exports.useRenderContext = RenderContext.useRenderContext;
61
62
  exports.ElicitationForm = ElicitationForm.ElicitationForm;
63
+ exports.PortalDropdownMenu = PortalDropdownMenu.PortalDropdownMenu;
62
64
  //# sourceMappingURL=components.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"components.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -55,5 +55,7 @@ export { RenderContext, RenderProvider, useRenderContext } from './RenderContext
55
55
  export type { RenderContextValue, RenderComponentFn } from './RenderContext';
56
56
  export { ElicitationForm } from './ElicitationForm';
57
57
  export type { ElicitationFormProps } from './ElicitationForm';
58
+ export { PortalDropdownMenu } from './PortalDropdownMenu';
59
+ export type { PortalDropdownMenuProps } from './PortalDropdownMenu';
58
60
  export { UIResourceRenderer as default } from './UIResourceRenderer';
59
61
  //# sourceMappingURL=index.d.ts.map
@@ -55,5 +55,7 @@ export { RenderContext, RenderProvider, useRenderContext } from './RenderContext
55
55
  export type { RenderContextValue, RenderComponentFn } from './RenderContext';
56
56
  export { ElicitationForm } from './ElicitationForm';
57
57
  export type { ElicitationFormProps } from './ElicitationForm';
58
+ export { PortalDropdownMenu } from './PortalDropdownMenu';
59
+ export type { PortalDropdownMenuProps } from './PortalDropdownMenu';
58
60
  export { UIResourceRenderer as default } from './UIResourceRenderer';
59
61
  //# sourceMappingURL=index.d.ts.map
@@ -24,6 +24,7 @@ import { VerifiedText } from "./components/VerifiedText.js";
24
24
  import { DataPreviewSection } from "./components/DataPreviewSection.js";
25
25
  import { RenderContext, RenderProvider, useRenderContext } from "./components/RenderContext.js";
26
26
  import { ElicitationForm } from "./components/ElicitationForm.js";
27
+ import { PortalDropdownMenu } from "./components/PortalDropdownMenu.js";
27
28
  export {
28
29
  ActionGroupRenderer,
29
30
  ActionRenderer,
@@ -46,6 +47,7 @@ export {
46
47
  LightboxOverlay,
47
48
  MapRenderer,
48
49
  ModalRenderer,
50
+ PortalDropdownMenu,
49
51
  RenderContext,
50
52
  RenderProvider,
51
53
  SplitStepper,
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.cjs CHANGED
@@ -24,6 +24,7 @@ const BriefingDiff = require("./components/BriefingDiff.cjs");
24
24
  const VerifiedText = require("./components/VerifiedText.cjs");
25
25
  const DataPreviewSection = require("./components/DataPreviewSection.cjs");
26
26
  const ElicitationForm = require("./components/ElicitationForm.cjs");
27
+ const PortalDropdownMenu = require("./components/PortalDropdownMenu.cjs");
27
28
  const DraggableGridItem = require("./components/DraggableGridItem.cjs");
28
29
  const ResizeHandle = require("./components/ResizeHandle.cjs");
29
30
  const EditableUIResourceRenderer = require("./components/EditableUIResourceRenderer.cjs");
@@ -76,6 +77,7 @@ exports.BriefingDiff = BriefingDiff.BriefingDiff;
76
77
  exports.VerifiedText = VerifiedText.VerifiedText;
77
78
  exports.DataPreviewSection = DataPreviewSection.DataPreviewSection;
78
79
  exports.ElicitationForm = ElicitationForm.ElicitationForm;
80
+ exports.PortalDropdownMenu = PortalDropdownMenu.PortalDropdownMenu;
79
81
  exports.DraggableGridItem = DraggableGridItem.DraggableGridItem;
80
82
  exports.ResizeHandle = ResizeHandle.ResizeHandle;
81
83
  exports.EditableUIResourceRenderer = EditableUIResourceRenderer.EditableUIResourceRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.cts CHANGED
@@ -38,6 +38,7 @@ export type { FeedbackInlineProps, FeedbackInlineContext } from './components/Fe
38
38
  export { ChatBusProvider, useChatBus } from './hooks/useChatBus';
39
39
  export { ChatPrompt } from './components/ChatPrompt';
40
40
  export { ElicitationForm } from './components/ElicitationForm';
41
+ export { PortalDropdownMenu } from './components/PortalDropdownMenu';
41
42
  export { ScratchpadPanel } from './components/ScratchpadPanel';
42
43
  export { dispatchScratchpad, useScratchpadState, createScratchpadStore, ScratchpadStoreContext, ScratchpadStoreProvider, } from './stores/scratchpad-store';
43
44
  export type { ScratchpadStoreHandle } from './stores/scratchpad-store';
@@ -71,6 +72,7 @@ export type { ExpandableWrapperProps } from './components/ExpandableWrapper';
71
72
  export type { ComponentToolbarProps, ToolbarAction, ToolbarIcon } from './components/ComponentToolbar';
72
73
  export type { ChatPromptProps } from './components/ChatPrompt';
73
74
  export type { ElicitationFormProps } from './components/ElicitationForm';
75
+ export type { PortalDropdownMenuProps } from './components/PortalDropdownMenu';
74
76
  export type { ScratchpadPanelProps } from './components/ScratchpadPanel';
75
77
  export type { VerifiedTextProps } from './components/VerifiedText';
76
78
  export type { DataPreviewSectionProps } from './components/DataPreviewSection';
package/dist/index.d.ts CHANGED
@@ -38,6 +38,7 @@ export type { FeedbackInlineProps, FeedbackInlineContext } from './components/Fe
38
38
  export { ChatBusProvider, useChatBus } from './hooks/useChatBus';
39
39
  export { ChatPrompt } from './components/ChatPrompt';
40
40
  export { ElicitationForm } from './components/ElicitationForm';
41
+ export { PortalDropdownMenu } from './components/PortalDropdownMenu';
41
42
  export { ScratchpadPanel } from './components/ScratchpadPanel';
42
43
  export { dispatchScratchpad, useScratchpadState, createScratchpadStore, ScratchpadStoreContext, ScratchpadStoreProvider, } from './stores/scratchpad-store';
43
44
  export type { ScratchpadStoreHandle } from './stores/scratchpad-store';
@@ -71,6 +72,7 @@ export type { ExpandableWrapperProps } from './components/ExpandableWrapper';
71
72
  export type { ComponentToolbarProps, ToolbarAction, ToolbarIcon } from './components/ComponentToolbar';
72
73
  export type { ChatPromptProps } from './components/ChatPrompt';
73
74
  export type { ElicitationFormProps } from './components/ElicitationForm';
75
+ export type { PortalDropdownMenuProps } from './components/PortalDropdownMenu';
74
76
  export type { ScratchpadPanelProps } from './components/ScratchpadPanel';
75
77
  export type { VerifiedTextProps } from './components/VerifiedText';
76
78
  export type { DataPreviewSectionProps } from './components/DataPreviewSection';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22,6 +22,7 @@ import { BriefingDiff } from "./components/BriefingDiff.js";
22
22
  import { VerifiedText } from "./components/VerifiedText.js";
23
23
  import { DataPreviewSection } from "./components/DataPreviewSection.js";
24
24
  import { ElicitationForm } from "./components/ElicitationForm.js";
25
+ import { PortalDropdownMenu } from "./components/PortalDropdownMenu.js";
25
26
  import { DraggableGridItem } from "./components/DraggableGridItem.js";
26
27
  import { ResizeHandle } from "./components/ResizeHandle.js";
27
28
  import { EditableUIResourceRenderer } from "./components/EditableUIResourceRenderer.js";
@@ -89,6 +90,7 @@ export {
89
90
  MCPUITelemetryContext,
90
91
  MCPUITelemetryProvider,
91
92
  PERF_PREFIX,
93
+ PortalDropdownMenu,
92
94
  PromptReplacedError,
93
95
  ResizeHandle,
94
96
  ScratchpadPanel,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seed-ship/mcp-ui-solid",
3
- "version": "6.3.1",
3
+ "version": "6.4.0",
4
4
  "description": "SolidJS components for rendering MCP-generated UI resources",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -22,6 +22,7 @@ import { Component, createSignal, onCleanup, onMount, Show, For } from 'solid-js
22
22
  import type { UIComponent } from '../types'
23
23
  import type { GraphComponentParams, GraphLayout, GraphNode, GraphEdge } from '@seed-ship/mcp-ui-spec'
24
24
  import { ExpandableWrapper, useExpanded } from './ExpandableWrapper'
25
+ import { PortalDropdownMenu } from './PortalDropdownMenu'
25
26
 
26
27
  // Module-scoped lazy import promise — first call triggers the dynamic
27
28
  // import, subsequent calls reuse the resolved module.
@@ -153,6 +154,8 @@ export const GraphRenderer: Component<GraphRendererProps> = (props) => {
153
154
  const [error, setError] = createSignal<string | undefined>()
154
155
  const [exportMenuOpen, setExportMenuOpen] = createSignal(false)
155
156
  let containerRef: HTMLDivElement | undefined
157
+ // v6.4.0 — trigger ref consumed by <PortalDropdownMenu> for positioning
158
+ let exportTriggerRef: HTMLButtonElement | undefined
156
159
  // Loosely typed because G6 is a peer-optional — we don't pull its
157
160
  // types into the bundle just to type a transient local handle.
158
161
  let graphInstance: any | undefined
@@ -281,35 +284,41 @@ export const GraphRenderer: Component<GraphRendererProps> = (props) => {
281
284
  {/* Export menu — top-right, mirrors TableRenderer's pattern */}
282
285
  <div class="absolute right-2 top-2 z-10">
283
286
  <button
287
+ ref={exportTriggerRef}
284
288
  type="button"
285
289
  onClick={() => setExportMenuOpen((v) => !v)}
286
290
  class="px-2 py-1 text-xs bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded shadow-sm hover:bg-gray-50 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300"
287
291
  title="Export graph"
288
292
  aria-label="Export graph"
293
+ aria-haspopup="menu"
289
294
  aria-expanded={exportMenuOpen()}
290
295
  >
291
296
  Export ▾
292
297
  </button>
293
- <Show when={exportMenuOpen()}>
294
- <div class="absolute right-0 mt-1 w-44 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded shadow-lg text-xs">
295
- <For each={[
296
- { label: 'Download PNG', onClick: handleExportPNG, hint: 'visual snapshot' },
297
- { label: 'Download Mermaid', onClick: handleExportMermaid, hint: 'markdown / GitHub' },
298
- { label: 'Download JSON', onClick: handleExportJSON, hint: 'raw data' },
299
- ]}>
300
- {(item) => (
301
- <button
302
- type="button"
303
- onClick={item.onClick}
304
- class="w-full text-left px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300 border-b border-gray-100 dark:border-gray-700 last:border-b-0"
305
- >
306
- <div class="font-medium">{item.label}</div>
307
- <div class="text-[10px] text-gray-500 dark:text-gray-400">{item.hint}</div>
308
- </button>
309
- )}
310
- </For>
311
- </div>
312
- </Show>
298
+ <PortalDropdownMenu
299
+ open={exportMenuOpen()}
300
+ onClose={() => setExportMenuOpen(false)}
301
+ trigger={exportTriggerRef}
302
+ width={176}
303
+ class="text-xs"
304
+ >
305
+ <For each={[
306
+ { label: 'Download PNG', onClick: handleExportPNG, hint: 'visual snapshot' },
307
+ { label: 'Download Mermaid', onClick: handleExportMermaid, hint: 'markdown / GitHub' },
308
+ { label: 'Download JSON', onClick: handleExportJSON, hint: 'raw data' },
309
+ ]}>
310
+ {(item) => (
311
+ <button
312
+ type="button"
313
+ onClick={item.onClick}
314
+ class="w-full text-left px-3 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300 border-b border-gray-100 dark:border-gray-700 last:border-b-0"
315
+ >
316
+ <div class="font-medium">{item.label}</div>
317
+ <div class="text-[10px] text-gray-500 dark:text-gray-400">{item.hint}</div>
318
+ </button>
319
+ )}
320
+ </For>
321
+ </PortalDropdownMenu>
313
322
  </div>
314
323
 
315
324
  <div
@@ -0,0 +1,113 @@
1
+ /**
2
+ * v6.4.0 — Portal-mounted dropdown for table + graph Export menus.
3
+ *
4
+ * Coverage targets :
5
+ * 1. Menu mounts via <Portal> on document.body (not in trigger's parent)
6
+ * 2. Menu position is computed from the trigger's getBoundingClientRect
7
+ * 3. Click outside the menu closes it
8
+ * 4. Escape key closes it
9
+ * 5. Click on the trigger itself does not close (parent owns toggle)
10
+ */
11
+
12
+ import { describe, it, expect, beforeEach, vi } from 'vitest'
13
+ import { render, fireEvent, cleanup } from '@solidjs/testing-library'
14
+ import { createSignal } from 'solid-js'
15
+ import { PortalDropdownMenu } from './PortalDropdownMenu'
16
+
17
+ describe('PortalDropdownMenu (v6.4.0)', () => {
18
+ beforeEach(() => {
19
+ cleanup()
20
+ })
21
+
22
+ function harness(initiallyOpen = true) {
23
+ const [open, setOpen] = createSignal(initiallyOpen)
24
+ let triggerRef: HTMLButtonElement | undefined
25
+ const result = render(() => (
26
+ <div id="harness-root">
27
+ <button ref={triggerRef} onClick={() => setOpen((v) => !v)}>
28
+ Open
29
+ </button>
30
+ <PortalDropdownMenu
31
+ open={open()}
32
+ onClose={() => setOpen(false)}
33
+ trigger={triggerRef}
34
+ width={144}
35
+ >
36
+ <button data-testid="menu-item">Item 1</button>
37
+ </PortalDropdownMenu>
38
+ </div>
39
+ ))
40
+ return { ...result, getOpen: open, setOpen, getTrigger: () => triggerRef }
41
+ }
42
+
43
+ it('mounts the menu on document.body, NOT inside the trigger parent', () => {
44
+ const { container } = harness(true)
45
+ // Menu should NOT be inside the harness root (it's portaled to body)
46
+ const harnessRoot = container.querySelector('#harness-root')
47
+ expect(harnessRoot).toBeTruthy()
48
+ expect(harnessRoot!.querySelector('[data-testid="menu-item"]')).toBeNull()
49
+ // But it IS in document.body
50
+ const menuItem = document.body.querySelector('[data-testid="menu-item"]')
51
+ expect(menuItem).toBeTruthy()
52
+ })
53
+
54
+ it('does not render the menu when open=false', () => {
55
+ harness(false)
56
+ expect(document.body.querySelector('[data-testid="menu-item"]')).toBeNull()
57
+ })
58
+
59
+ it('positions the menu using the trigger getBoundingClientRect (right-aligned, 4px below)', () => {
60
+ // Stub the trigger rect so we get deterministic coords in jsdom
61
+ const fakeRect = {
62
+ top: 100, bottom: 130, left: 200, right: 350,
63
+ width: 150, height: 30, x: 200, y: 100, toJSON: () => ({}),
64
+ } as DOMRect
65
+ // Patch getBoundingClientRect on HTMLElement.prototype just for this test
66
+ const orig = HTMLElement.prototype.getBoundingClientRect
67
+ HTMLElement.prototype.getBoundingClientRect = vi.fn(() => fakeRect)
68
+ try {
69
+ harness(true)
70
+ const menu = document.body.querySelector('[role="menu"]') as HTMLElement
71
+ expect(menu).toBeTruthy()
72
+ // Position: top = bottom + 4 = 134, left = right - width = 350 - 144 = 206
73
+ expect(menu.style.top).toBe('134px')
74
+ expect(menu.style.left).toBe('206px')
75
+ expect(menu.style.position).toBe('fixed')
76
+ } finally {
77
+ HTMLElement.prototype.getBoundingClientRect = orig
78
+ }
79
+ })
80
+
81
+ it('closes on outside click (mousedown on document.body outside menu)', () => {
82
+ const { getOpen } = harness(true)
83
+ expect(getOpen()).toBe(true)
84
+ // Click on a brand-new element appended to body, outside the menu
85
+ const stranger = document.createElement('div')
86
+ document.body.appendChild(stranger)
87
+ fireEvent.mouseDown(stranger)
88
+ expect(getOpen()).toBe(false)
89
+ document.body.removeChild(stranger)
90
+ })
91
+
92
+ it('closes on Escape', () => {
93
+ const { getOpen } = harness(true)
94
+ expect(getOpen()).toBe(true)
95
+ fireEvent.keyDown(document, { key: 'Escape' })
96
+ expect(getOpen()).toBe(false)
97
+ })
98
+
99
+ it('does not close when mousedown lands on the trigger (parent owns toggle)', () => {
100
+ const { getOpen, getTrigger } = harness(true)
101
+ expect(getOpen()).toBe(true)
102
+ fireEvent.mouseDown(getTrigger()!)
103
+ // Menu should still be open — trigger toggle is parent's responsibility
104
+ expect(getOpen()).toBe(true)
105
+ })
106
+
107
+ it('does not close when mousedown lands inside the menu', () => {
108
+ const { getOpen } = harness(true)
109
+ const item = document.body.querySelector('[data-testid="menu-item"]') as HTMLElement
110
+ fireEvent.mouseDown(item)
111
+ expect(getOpen()).toBe(true)
112
+ })
113
+ })
@@ -0,0 +1,130 @@
1
+ /**
2
+ * PortalDropdownMenu (v6.4.0) — generic dropdown that mounts via
3
+ * `<Portal>` on `document.body` instead of an in-tree `position: absolute`
4
+ * sibling. Eliminates two pain points around the legacy in-tree pattern :
5
+ *
6
+ * 1. **`overflow: hidden` clipping** — when the trigger lives inside a
7
+ * chat bubble or a card with `overflow: hidden`, an absolutely
8
+ * positioned menu sibling gets clipped at the ancestor's boundary.
9
+ * Mounting on `document.body` escapes the clip stack entirely.
10
+ * 2. **`z-index` wars** — chat surfaces stack composer / message rails
11
+ * above the message list, and ancestor `z-index` creates a new
12
+ * stacking context that captures the in-tree menu. A portal is a
13
+ * sibling of the document, so a single `z-index: 9999` wins.
14
+ *
15
+ * The menu is positioned with `position: fixed` from the trigger's
16
+ * `getBoundingClientRect()`. We re-measure on `scroll` (capture phase, so
17
+ * nested scrollables also fire) and `resize` to keep the menu pinned
18
+ * while the user interacts with surrounding chrome.
19
+ *
20
+ * Close affordances : click outside, Escape, programmatic via `onClose`.
21
+ */
22
+
23
+ import { Component, JSX, Show, createSignal, createEffect, onCleanup } from 'solid-js'
24
+ import { Portal } from 'solid-js/web'
25
+
26
+ export interface PortalDropdownMenuProps {
27
+ /**
28
+ * Whether the menu is currently open. Controlled by the parent.
29
+ */
30
+ open: boolean
31
+
32
+ /**
33
+ * Called when the menu wants to close (outside click / Escape / item
34
+ * click — it's the parent's job to actually flip `open` to false).
35
+ */
36
+ onClose: () => void
37
+
38
+ /**
39
+ * Trigger element used as the positioning anchor. The menu's right
40
+ * edge is aligned to the trigger's right edge, top to its bottom + 4px.
41
+ */
42
+ trigger: HTMLElement | undefined
43
+
44
+ /**
45
+ * Menu width in pixels. Used to compute the left coordinate so the menu's
46
+ * right edge aligns with the trigger's right edge. Default : `144` (the
47
+ * legacy table menu width — `w-36`).
48
+ */
49
+ width?: number
50
+
51
+ /**
52
+ * Menu content. Wrapped in the rounded / shadowed container — keep
53
+ * children minimal (just the items).
54
+ */
55
+ children: JSX.Element
56
+
57
+ /**
58
+ * Optional additional class names for the menu container, appended after
59
+ * the default Tailwind classes. Useful to override width or padding.
60
+ */
61
+ class?: string
62
+ }
63
+
64
+ export const PortalDropdownMenu: Component<PortalDropdownMenuProps> = (props) => {
65
+ const [position, setPosition] = createSignal({ top: 0, left: 0 })
66
+ let menuRef: HTMLDivElement | undefined
67
+
68
+ const updatePosition = () => {
69
+ const t = props.trigger
70
+ if (!t) return
71
+ const rect = t.getBoundingClientRect()
72
+ const w = props.width ?? 144
73
+ setPosition({
74
+ top: rect.bottom + 4,
75
+ left: rect.right - w,
76
+ })
77
+ }
78
+
79
+ // Measure once when the menu opens, then react to viewport changes.
80
+ createEffect(() => {
81
+ if (!props.open) return
82
+ updatePosition()
83
+
84
+ const onDown = (e: MouseEvent) => {
85
+ const target = e.target as Node
86
+ if (menuRef?.contains(target) || props.trigger?.contains(target)) return
87
+ props.onClose()
88
+ }
89
+ const onKey = (e: KeyboardEvent) => {
90
+ if (e.key === 'Escape') props.onClose()
91
+ }
92
+ const onScrollOrResize = () => updatePosition()
93
+
94
+ document.addEventListener('mousedown', onDown)
95
+ document.addEventListener('keydown', onKey)
96
+ // Capture phase so scrolls inside nested containers (e.g. chat virtual
97
+ // list) also re-position the menu. `passive: true` because we never
98
+ // preventDefault here.
99
+ window.addEventListener('scroll', onScrollOrResize, { capture: true, passive: true })
100
+ window.addEventListener('resize', onScrollOrResize)
101
+
102
+ onCleanup(() => {
103
+ document.removeEventListener('mousedown', onDown)
104
+ document.removeEventListener('keydown', onKey)
105
+ window.removeEventListener('scroll', onScrollOrResize, { capture: true })
106
+ window.removeEventListener('resize', onScrollOrResize)
107
+ })
108
+ })
109
+
110
+ return (
111
+ <Show when={props.open}>
112
+ <Portal>
113
+ <div
114
+ ref={menuRef}
115
+ role="menu"
116
+ style={{
117
+ position: 'fixed',
118
+ top: `${position().top}px`,
119
+ left: `${position().left}px`,
120
+ 'z-index': 9999,
121
+ width: `${props.width ?? 144}px`,
122
+ }}
123
+ class={`bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg py-1 text-sm ${props.class ?? ''}`}
124
+ >
125
+ {props.children}
126
+ </div>
127
+ </Portal>
128
+ </Show>
129
+ )
130
+ }
@@ -41,6 +41,7 @@ import { CodeBlockRenderer } from './CodeBlockRenderer'
41
41
  import { MapRenderer } from './MapRenderer'
42
42
  import { GraphRenderer } from './GraphRenderer'
43
43
  import { ExpandableWrapper, useExpanded } from './ExpandableWrapper'
44
+ import { PortalDropdownMenu } from './PortalDropdownMenu'
44
45
  import { RenderProvider } from './RenderContext'
45
46
  import { useAction } from '../hooks/useAction'
46
47
  import { marked } from 'marked'
@@ -755,6 +756,8 @@ function TableRenderer(props: {
755
756
 
756
757
  // Export dropdown state
757
758
  const [showExportMenu, setShowExportMenu] = createSignal(false)
759
+ // v6.4.0 — trigger ref consumed by <PortalDropdownMenu> for positioning
760
+ let exportTriggerRef: HTMLButtonElement | undefined
758
761
 
759
762
  const handleExport = (format: string) => {
760
763
  setShowExportMenu(false)
@@ -841,28 +844,34 @@ function TableRenderer(props: {
841
844
  <Show when={exportable} fallback={<CopyButton getText={getTableCSV} title="Copy table (CSV)" position="top-right" />}>
842
845
  <div class="absolute right-10 top-2 z-10">
843
846
  <button
847
+ ref={exportTriggerRef}
844
848
  onClick={() => setShowExportMenu(!showExportMenu())}
845
849
  class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"
846
850
  title="Export table"
847
851
  aria-label="Export table"
852
+ aria-haspopup="menu"
853
+ aria-expanded={showExportMenu()}
848
854
  >
849
855
  <svg class="w-3 h-3 text-gray-500 dark:text-gray-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
850
856
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
851
857
  </svg>
852
858
  </button>
853
- <Show when={showExportMenu()}>
854
- <div class="absolute right-0 mt-1 w-36 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg py-1 text-sm">
855
- <Show when={(exportFormats as string[]).includes('tsv')}>
856
- <button onClick={() => handleExport('tsv')} class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Copy TSV</button>
857
- </Show>
858
- <Show when={(exportFormats as string[]).includes('csv')}>
859
- <button onClick={() => handleExport('csv')} class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download CSV</button>
860
- </Show>
861
- <Show when={(exportFormats as string[]).includes('json')}>
862
- <button onClick={() => handleExport('json')} class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download JSON</button>
863
- </Show>
864
- </div>
865
- </Show>
859
+ <PortalDropdownMenu
860
+ open={showExportMenu()}
861
+ onClose={() => setShowExportMenu(false)}
862
+ trigger={exportTriggerRef}
863
+ width={144}
864
+ >
865
+ <Show when={(exportFormats as string[]).includes('tsv')}>
866
+ <button onClick={() => handleExport('tsv')} class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Copy TSV</button>
867
+ </Show>
868
+ <Show when={(exportFormats as string[]).includes('csv')}>
869
+ <button onClick={() => handleExport('csv')} class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download CSV</button>
870
+ </Show>
871
+ <Show when={(exportFormats as string[]).includes('json')}>
872
+ <button onClick={() => handleExport('json')} class="w-full text-left px-3 py-1.5 hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300">Download JSON</button>
873
+ </Show>
874
+ </PortalDropdownMenu>
866
875
  </div>
867
876
  </Show>
868
877
  <div class={`p-4 ${isExpanded() ? 'flex-1 min-h-0 flex flex-col' : ''}`}>
@@ -92,5 +92,9 @@ export type { RenderContextValue, RenderComponentFn } from './RenderContext'
92
92
  export { ElicitationForm } from './ElicitationForm'
93
93
  export type { ElicitationFormProps } from './ElicitationForm'
94
94
 
95
+ // v6.4.0 — Portal-mounted dropdown (used by table + graph Export menus)
96
+ export { PortalDropdownMenu } from './PortalDropdownMenu'
97
+ export type { PortalDropdownMenuProps } from './PortalDropdownMenu'
98
+
95
99
  // Default exports for lazy loading compatibility
96
100
  export { UIResourceRenderer as default } from './UIResourceRenderer'
package/src/index.ts CHANGED
@@ -44,6 +44,7 @@ export type { FeedbackInlineProps, FeedbackInlineContext } from './components/Fe
44
44
  export { ChatBusProvider, useChatBus } from './hooks/useChatBus'
45
45
  export { ChatPrompt } from './components/ChatPrompt'
46
46
  export { ElicitationForm } from './components/ElicitationForm'
47
+ export { PortalDropdownMenu } from './components/PortalDropdownMenu'
47
48
  export { ScratchpadPanel } from './components/ScratchpadPanel'
48
49
  export {
49
50
  dispatchScratchpad,
@@ -126,6 +127,7 @@ export type { ExpandableWrapperProps } from './components/ExpandableWrapper'
126
127
  export type { ComponentToolbarProps, ToolbarAction, ToolbarIcon } from './components/ComponentToolbar'
127
128
  export type { ChatPromptProps } from './components/ChatPrompt'
128
129
  export type { ElicitationFormProps } from './components/ElicitationForm'
130
+ export type { PortalDropdownMenuProps } from './components/PortalDropdownMenu'
129
131
  export type { ScratchpadPanelProps } from './components/ScratchpadPanel'
130
132
  export type { VerifiedTextProps } from './components/VerifiedText'
131
133
  export type { DataPreviewSectionProps } from './components/DataPreviewSection'