@datalayer/agent-runtimes 0.0.2
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/LICENSE +32 -0
- package/README.md +56 -0
- package/lib/App.css +47 -0
- package/lib/App.d.ts +3 -0
- package/lib/App.js +18 -0
- package/lib/components/chat/components/AgentDetails.d.ts +19 -0
- package/lib/components/chat/components/AgentDetails.js +170 -0
- package/lib/components/chat/components/Chat.d.ts +105 -0
- package/lib/components/chat/components/Chat.js +275 -0
- package/lib/components/chat/components/ChatFloating.d.ts +146 -0
- package/lib/components/chat/components/ChatFloating.js +381 -0
- package/lib/components/chat/components/ChatInline.d.ts +42 -0
- package/lib/components/chat/components/ChatInline.js +327 -0
- package/lib/components/chat/components/ChatPopupStandalone.d.ts +110 -0
- package/lib/components/chat/components/ChatPopupStandalone.js +422 -0
- package/lib/components/chat/components/ChatSidebar.d.ts +78 -0
- package/lib/components/chat/components/ChatSidebar.js +224 -0
- package/lib/components/chat/components/ChatStandalone.d.ts +105 -0
- package/lib/components/chat/components/ChatStandalone.js +320 -0
- package/lib/components/chat/components/base/ChatBase.d.ts +285 -0
- package/lib/components/chat/components/base/ChatBase.js +1192 -0
- package/lib/components/chat/components/display/ToolCallDisplay.d.ts +26 -0
- package/lib/components/chat/components/display/ToolCallDisplay.js +225 -0
- package/lib/components/chat/components/display/index.d.ts +6 -0
- package/lib/components/chat/components/display/index.js +10 -0
- package/lib/components/chat/components/elements/ChatHeader.d.ts +43 -0
- package/lib/components/chat/components/elements/ChatHeader.js +67 -0
- package/lib/components/chat/components/elements/ChatInputPrompt.d.ts +26 -0
- package/lib/components/chat/components/elements/ChatInputPrompt.js +145 -0
- package/lib/components/chat/components/elements/ChatMessages.d.ts +36 -0
- package/lib/components/chat/components/elements/ChatMessages.js +195 -0
- package/lib/components/chat/components/elements/FloatingBrandButton.d.ts +34 -0
- package/lib/components/chat/components/elements/FloatingBrandButton.js +88 -0
- package/lib/components/chat/components/elements/MessagePart.d.ts +50 -0
- package/lib/components/chat/components/elements/MessagePart.js +48 -0
- package/lib/components/chat/components/elements/PoweredByTag.d.ts +26 -0
- package/lib/components/chat/components/elements/PoweredByTag.js +33 -0
- package/lib/components/chat/components/elements/ToolApprovalDialog.d.ts +42 -0
- package/lib/components/chat/components/elements/ToolApprovalDialog.js +96 -0
- package/lib/components/chat/components/index.d.ts +21 -0
- package/lib/components/chat/components/index.js +34 -0
- package/lib/components/chat/components/parts/DynamicToolPart.d.ts +20 -0
- package/lib/components/chat/components/parts/DynamicToolPart.js +13 -0
- package/lib/components/chat/components/parts/ReasoningPart.d.ts +17 -0
- package/lib/components/chat/components/parts/ReasoningPart.js +69 -0
- package/lib/components/chat/components/parts/TextPart.d.ts +28 -0
- package/lib/components/chat/components/parts/TextPart.js +103 -0
- package/lib/components/chat/components/parts/ToolPart.d.ts +17 -0
- package/lib/components/chat/components/parts/ToolPart.js +163 -0
- package/lib/components/chat/components/parts/index.d.ts +9 -0
- package/lib/components/chat/components/parts/index.js +13 -0
- package/lib/components/chat/extensions/A2UIExtension.d.ts +87 -0
- package/lib/components/chat/extensions/A2UIExtension.js +312 -0
- package/lib/components/chat/extensions/ExtensionRegistry.d.ts +66 -0
- package/lib/components/chat/extensions/ExtensionRegistry.js +128 -0
- package/lib/components/chat/extensions/MCPUIExtension.d.ts +77 -0
- package/lib/components/chat/extensions/MCPUIExtension.js +212 -0
- package/lib/components/chat/extensions/index.d.ts +9 -0
- package/lib/components/chat/extensions/index.js +12 -0
- package/lib/components/chat/handler.d.ts +20 -0
- package/lib/components/chat/handler.js +56 -0
- package/lib/components/chat/index.d.ts +61 -0
- package/lib/components/chat/index.js +76 -0
- package/lib/components/chat/inference/BaseInferenceProvider.d.ts +57 -0
- package/lib/components/chat/inference/BaseInferenceProvider.js +69 -0
- package/lib/components/chat/inference/DatalayerInferenceProvider.d.ts +83 -0
- package/lib/components/chat/inference/DatalayerInferenceProvider.js +305 -0
- package/lib/components/chat/inference/SelfHostedInferenceProvider.d.ts +54 -0
- package/lib/components/chat/inference/SelfHostedInferenceProvider.js +246 -0
- package/lib/components/chat/inference/index.d.ts +9 -0
- package/lib/components/chat/inference/index.js +12 -0
- package/lib/components/chat/middleware/MiddlewarePipeline.d.ts +118 -0
- package/lib/components/chat/middleware/MiddlewarePipeline.js +255 -0
- package/lib/components/chat/middleware/index.d.ts +7 -0
- package/lib/components/chat/middleware/index.js +10 -0
- package/lib/components/chat/protocols/A2AAdapter.d.ts +79 -0
- package/lib/components/chat/protocols/A2AAdapter.js +388 -0
- package/lib/components/chat/protocols/ACPAdapter.d.ts +161 -0
- package/lib/components/chat/protocols/ACPAdapter.js +504 -0
- package/lib/components/chat/protocols/AGUIAdapter.d.ts +82 -0
- package/lib/components/chat/protocols/AGUIAdapter.js +518 -0
- package/lib/components/chat/protocols/BaseProtocolAdapter.d.ts +75 -0
- package/lib/components/chat/protocols/BaseProtocolAdapter.js +119 -0
- package/lib/components/chat/protocols/VercelAIAdapter.d.ts +77 -0
- package/lib/components/chat/protocols/VercelAIAdapter.js +252 -0
- package/lib/components/chat/protocols/index.d.ts +11 -0
- package/lib/components/chat/protocols/index.js +14 -0
- package/lib/components/chat/store/chatStore.d.ts +158 -0
- package/lib/components/chat/store/chatStore.js +313 -0
- package/lib/components/chat/store/index.d.ts +6 -0
- package/lib/components/chat/store/index.js +10 -0
- package/lib/components/chat/tools/ToolExecutor.d.ts +49 -0
- package/lib/components/chat/tools/ToolExecutor.js +151 -0
- package/lib/components/chat/tools/index.d.ts +8 -0
- package/lib/components/chat/tools/index.js +11 -0
- package/lib/components/chat/types/extension.d.ts +181 -0
- package/lib/components/chat/types/extension.js +46 -0
- package/lib/components/chat/types/index.d.ts +11 -0
- package/lib/components/chat/types/index.js +16 -0
- package/lib/components/chat/types/inference.d.ts +117 -0
- package/lib/components/chat/types/inference.js +5 -0
- package/lib/components/chat/types/message.d.ts +117 -0
- package/lib/components/chat/types/message.js +50 -0
- package/lib/components/chat/types/middleware.d.ts +153 -0
- package/lib/components/chat/types/middleware.js +32 -0
- package/lib/components/chat/types/protocol.d.ts +209 -0
- package/lib/components/chat/types/protocol.js +5 -0
- package/lib/components/chat/types/tool.d.ts +140 -0
- package/lib/components/chat/types/tool.js +23 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +6 -0
- package/lib/components/sparklines/Sparklines.d.ts +16 -0
- package/lib/components/sparklines/Sparklines.js +65 -0
- package/lib/components/sparklines/SparklinesLine.d.ts +8 -0
- package/lib/components/sparklines/SparklinesLine.js +37 -0
- package/lib/components/sparklines/dataProcessing.d.ts +25 -0
- package/lib/components/sparklines/dataProcessing.js +35 -0
- package/lib/components/sparklines/index.d.ts +4 -0
- package/lib/components/sparklines/index.js +7 -0
- package/lib/components/sparklines/types.d.ts +36 -0
- package/lib/components/sparklines/types.js +5 -0
- package/lib/components/ui/accordion.d.ts +7 -0
- package/lib/components/ui/accordion.js +22 -0
- package/lib/components/ui/alert-dialog.d.ts +14 -0
- package/lib/components/ui/alert-dialog.js +43 -0
- package/lib/components/ui/alert.d.ts +9 -0
- package/lib/components/ui/alert.js +24 -0
- package/lib/components/ui/aspect-ratio.d.ts +3 -0
- package/lib/components/ui/aspect-ratio.js +11 -0
- package/lib/components/ui/avatar.d.ts +6 -0
- package/lib/components/ui/avatar.js +18 -0
- package/lib/components/ui/badge.d.ts +9 -0
- package/lib/components/ui/badge.js +22 -0
- package/lib/components/ui/breadcrumb.d.ts +11 -0
- package/lib/components/ui/breadcrumb.js +27 -0
- package/lib/components/ui/button-group.d.ts +11 -0
- package/lib/components/ui/button-group.js +31 -0
- package/lib/components/ui/button.d.ts +13 -0
- package/lib/components/ui/button.js +39 -0
- package/lib/components/ui/calendar.d.ts +8 -0
- package/lib/components/ui/calendar.js +80 -0
- package/lib/components/ui/card.d.ts +9 -0
- package/lib/components/ui/card.js +24 -0
- package/lib/components/ui/carousel.d.ts +19 -0
- package/lib/components/ui/carousel.js +95 -0
- package/lib/components/ui/chart.d.ts +53 -0
- package/lib/components/ui/chart.js +136 -0
- package/lib/components/ui/checkbox.d.ts +4 -0
- package/lib/components/ui/checkbox.js +13 -0
- package/lib/components/ui/collapsible.d.ts +5 -0
- package/lib/components/ui/collapsible.js +17 -0
- package/lib/components/ui/command.d.ts +18 -0
- package/lib/components/ui/command.js +38 -0
- package/lib/components/ui/context-menu.d.ts +25 -0
- package/lib/components/ui/context-menu.js +55 -0
- package/lib/components/ui/dialog.d.ts +15 -0
- package/lib/components/ui/dialog.js +40 -0
- package/lib/components/ui/drawer.d.ts +13 -0
- package/lib/components/ui/drawer.js +39 -0
- package/lib/components/ui/dropdown-menu.d.ts +25 -0
- package/lib/components/ui/dropdown-menu.js +55 -0
- package/lib/components/ui/empty.d.ts +11 -0
- package/lib/components/ui/empty.js +37 -0
- package/lib/components/ui/field.d.ts +24 -0
- package/lib/components/ui/field.js +80 -0
- package/lib/components/ui/form.d.ts +24 -0
- package/lib/components/ui/form.js +63 -0
- package/lib/components/ui/hover-card.d.ts +6 -0
- package/lib/components/ui/hover-card.js +18 -0
- package/lib/components/ui/input-group.d.ts +19 -0
- package/lib/components/ui/input-group.js +69 -0
- package/lib/components/ui/input-otp.d.ts +11 -0
- package/lib/components/ui/input-otp.js +25 -0
- package/lib/components/ui/input.d.ts +3 -0
- package/lib/components/ui/input.js +6 -0
- package/lib/components/ui/item.d.ts +23 -0
- package/lib/components/ui/item.js +66 -0
- package/lib/components/ui/kbd.d.ts +3 -0
- package/lib/components/ui/kbd.js +13 -0
- package/lib/components/ui/label.d.ts +4 -0
- package/lib/components/ui/label.js +12 -0
- package/lib/components/ui/menubar.d.ts +26 -0
- package/lib/components/ui/menubar.js +58 -0
- package/lib/components/ui/navigation-menu.d.ts +14 -0
- package/lib/components/ui/navigation-menu.js +31 -0
- package/lib/components/ui/pagination.d.ts +13 -0
- package/lib/components/ui/pagination.js +29 -0
- package/lib/components/ui/popover.d.ts +7 -0
- package/lib/components/ui/popover.js +21 -0
- package/lib/components/ui/progress.d.ts +4 -0
- package/lib/components/ui/progress.js +12 -0
- package/lib/components/ui/radio-group.d.ts +5 -0
- package/lib/components/ui/radio-group.js +16 -0
- package/lib/components/ui/resizable.d.ts +8 -0
- package/lib/components/ui/resizable.js +19 -0
- package/lib/components/ui/scroll-area.d.ts +5 -0
- package/lib/components/ui/scroll-area.js +17 -0
- package/lib/components/ui/select.d.ts +15 -0
- package/lib/components/ui/select.js +42 -0
- package/lib/components/ui/separator.d.ts +4 -0
- package/lib/components/ui/separator.js +12 -0
- package/lib/components/ui/sheet.d.ts +13 -0
- package/lib/components/ui/sheet.js +44 -0
- package/lib/components/ui/sidebar.d.ts +69 -0
- package/lib/components/ui/sidebar.js +216 -0
- package/lib/components/ui/skeleton.d.ts +2 -0
- package/lib/components/ui/skeleton.js +10 -0
- package/lib/components/ui/slider.d.ts +4 -0
- package/lib/components/ui/slider.js +18 -0
- package/lib/components/ui/sonner.d.ts +3 -0
- package/lib/components/ui/sonner.js +25 -0
- package/lib/components/ui/spinner.d.ts +2 -0
- package/lib/components/ui/spinner.js +11 -0
- package/lib/components/ui/switch.d.ts +4 -0
- package/lib/components/ui/switch.js +12 -0
- package/lib/components/ui/table.d.ts +10 -0
- package/lib/components/ui/table.js +32 -0
- package/lib/components/ui/tabs.d.ts +7 -0
- package/lib/components/ui/tabs.js +21 -0
- package/lib/components/ui/textarea.d.ts +3 -0
- package/lib/components/ui/textarea.js +6 -0
- package/lib/components/ui/toast.d.ts +15 -0
- package/lib/components/ui/toast.js +38 -0
- package/lib/components/ui/toaster.d.ts +1 -0
- package/lib/components/ui/toaster.js +14 -0
- package/lib/components/ui/toggle-group.d.ts +9 -0
- package/lib/components/ui/toggle-group.js +26 -0
- package/lib/components/ui/toggle.d.ts +9 -0
- package/lib/components/ui/toggle.js +30 -0
- package/lib/components/ui/tooltip.d.ts +7 -0
- package/lib/components/ui/tooltip.js +21 -0
- package/lib/components/vercel-ai-elements/artifact.d.ts +23 -0
- package/lib/components/vercel-ai-elements/artifact.js +24 -0
- package/lib/components/vercel-ai-elements/code-block.d.ts +17 -0
- package/lib/components/vercel-ai-elements/code-block.js +94 -0
- package/lib/components/vercel-ai-elements/conversation.d.ts +15 -0
- package/lib/components/vercel-ai-elements/conversation.js +21 -0
- package/lib/components/vercel-ai-elements/loader.d.ts +5 -0
- package/lib/components/vercel-ai-elements/loader.js +8 -0
- package/lib/components/vercel-ai-elements/message.d.ts +46 -0
- package/lib/components/vercel-ai-elements/message.js +109 -0
- package/lib/components/vercel-ai-elements/model-selector.d.ts +35 -0
- package/lib/components/vercel-ai-elements/model-selector.js +22 -0
- package/lib/components/vercel-ai-elements/prompt-input.d.ts +195 -0
- package/lib/components/vercel-ai-elements/prompt-input.js +589 -0
- package/lib/components/vercel-ai-elements/reasoning.d.ts +26 -0
- package/lib/components/vercel-ai-elements/reasoning.js +80 -0
- package/lib/components/vercel-ai-elements/shimmer.d.ts +9 -0
- package/lib/components/vercel-ai-elements/shimmer.js +22 -0
- package/lib/components/vercel-ai-elements/sources.d.ts +12 -0
- package/lib/components/vercel-ai-elements/sources.js +13 -0
- package/lib/components/vercel-ai-elements/suggestion.d.ts +10 -0
- package/lib/components/vercel-ai-elements/suggestion.js +16 -0
- package/lib/components/vercel-ai-elements/tool.d.ts +23 -0
- package/lib/components/vercel-ai-elements/tool.js +52 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +25 -0
- package/lib/examples/A2UiRestaurantExample.js +305 -0
- package/lib/examples/AgUiAgenticExample.d.ts +25 -0
- package/lib/examples/AgUiAgenticExample.js +63 -0
- package/lib/examples/AgUiBackendToolRenderingExample.d.ts +30 -0
- package/lib/examples/AgUiBackendToolRenderingExample.js +103 -0
- package/lib/examples/AgUiHaikuGenUIExample.d.ts +44 -0
- package/lib/examples/AgUiHaikuGenUIExample.js +151 -0
- package/lib/examples/AgUiHumanInTheLoopExample.d.ts +26 -0
- package/lib/examples/AgUiHumanInTheLoopExample.js +220 -0
- package/lib/examples/AgUiSharedStateExample.d.ts +25 -0
- package/lib/examples/AgUiSharedStateExample.js +181 -0
- package/lib/examples/AgUiToolsBasedGenUIExample.d.ts +25 -0
- package/lib/examples/AgUiToolsBasedGenUIExample.js +257 -0
- package/lib/examples/AgentRuntimeCustomExample.d.ts +9 -0
- package/lib/examples/AgentRuntimeCustomExample.js +68 -0
- package/lib/examples/AgentRuntimeLexical2Example.d.ts +42 -0
- package/lib/examples/AgentRuntimeLexical2Example.js +236 -0
- package/lib/examples/AgentRuntimeLexicalExample.d.ts +36 -0
- package/lib/examples/AgentRuntimeLexicalExample.js +260 -0
- package/lib/examples/AgentRuntimeLexicalSidebarExample.d.ts +41 -0
- package/lib/examples/AgentRuntimeLexicalSidebarExample.js +166 -0
- package/lib/examples/AgentRuntimeNotebookExample.d.ts +9 -0
- package/lib/examples/AgentRuntimeNotebookExample.js +148 -0
- package/lib/examples/AgentRuntimeNotebookSidebarExample.d.ts +13 -0
- package/lib/examples/AgentRuntimeNotebookSidebarExample.js +121 -0
- package/lib/examples/AgentRuntimeStandaloneExample.d.ts +21 -0
- package/lib/examples/AgentRuntimeStandaloneExample.js +158 -0
- package/lib/examples/AgentSpaceFormExample.d.ts +22 -0
- package/lib/examples/AgentSpaceFormExample.js +296 -0
- package/lib/examples/AgentSpaceHomeExample.d.ts +8 -0
- package/lib/examples/AgentSpaceHomeExample.js +171 -0
- package/lib/examples/CopilotKitLexicalExample.d.ts +38 -0
- package/lib/examples/CopilotKitLexicalExample.js +161 -0
- package/lib/examples/CopilotKitNotebookExample.d.ts +11 -0
- package/lib/examples/CopilotKitNotebookExample.js +70 -0
- package/lib/examples/DatalayerNotebookExample.d.ts +16 -0
- package/lib/examples/DatalayerNotebookExample.js +99 -0
- package/lib/examples/JupyterCellExample.d.ts +6 -0
- package/lib/examples/JupyterCellExample.js +19 -0
- package/lib/examples/JupyterNotebookExample.d.ts +6 -0
- package/lib/examples/JupyterNotebookExample.js +21 -0
- package/lib/examples/ag-ui/haiku/HaikuDisplay.d.ts +18 -0
- package/lib/examples/ag-ui/haiku/HaikuDisplay.js +110 -0
- package/lib/examples/ag-ui/haiku/InlineHaikuCard.d.ts +39 -0
- package/lib/examples/ag-ui/haiku/InlineHaikuCard.js +117 -0
- package/lib/examples/ag-ui/haiku/index.d.ts +11 -0
- package/lib/examples/ag-ui/haiku/index.js +15 -0
- package/lib/examples/ag-ui/index.d.ts +10 -0
- package/lib/examples/ag-ui/index.js +16 -0
- package/lib/examples/ag-ui/weather/InlineWeatherCard.d.ts +43 -0
- package/lib/examples/ag-ui/weather/InlineWeatherCard.js +180 -0
- package/lib/examples/ag-ui/weather/index.d.ts +9 -0
- package/lib/examples/ag-ui/weather/index.js +13 -0
- package/lib/examples/components/AgentConfiguration.d.ts +50 -0
- package/lib/examples/components/AgentConfiguration.js +115 -0
- package/lib/examples/components/AgentsDataTable.d.ts +13 -0
- package/lib/examples/components/AgentsDataTable.js +74 -0
- package/lib/examples/components/FooterMetrics.d.ts +12 -0
- package/lib/examples/components/FooterMetrics.js +17 -0
- package/lib/examples/components/Header.d.ts +27 -0
- package/lib/examples/components/Header.js +294 -0
- package/lib/examples/components/HeaderControls.d.ts +11 -0
- package/lib/examples/components/HeaderControls.js +24 -0
- package/lib/examples/components/LexicalEditor.d.ts +27 -0
- package/lib/examples/components/LexicalEditor.js +118 -0
- package/lib/examples/components/MainContent.d.ts +19 -0
- package/lib/examples/components/MainContent.js +68 -0
- package/lib/examples/components/MockFileBrowser.d.ts +12 -0
- package/lib/examples/components/MockFileBrowser.js +131 -0
- package/lib/examples/components/Rating.d.ts +14 -0
- package/lib/examples/components/Rating.js +12 -0
- package/lib/examples/components/SessionTabs.d.ts +21 -0
- package/lib/examples/components/SessionTabs.js +11 -0
- package/lib/examples/components/TimeTravel.d.ts +15 -0
- package/lib/examples/components/TimeTravel.js +23 -0
- package/lib/examples/components/index.d.ts +11 -0
- package/lib/examples/components/index.js +14 -0
- package/lib/examples/example-selector.d.ts +22 -0
- package/lib/examples/example-selector.js +62 -0
- package/lib/examples/index.d.ts +21 -0
- package/lib/examples/index.js +25 -0
- package/lib/examples/lexical/editorConfig.d.ts +76 -0
- package/lib/examples/lexical/editorConfig.js +55 -0
- package/lib/examples/lexical/lexical-theme.css +436 -0
- package/lib/examples/lexical/theme.d.ts +61 -0
- package/lib/examples/lexical/theme.js +72 -0
- package/lib/examples/main.d.ts +2 -0
- package/lib/examples/main.js +334 -0
- package/lib/examples/stores/agents/earthquake-detector.ipynb.json +111 -0
- package/lib/examples/stores/agents/earthquake-detector.json +13 -0
- package/lib/examples/stores/agents/earthquake-detector.lexical.json +2988 -0
- package/lib/examples/stores/agents/sales-forecaster.ipynb.json +111 -0
- package/lib/examples/stores/agents/sales-forecaster.json +13 -0
- package/lib/examples/stores/agents/sales-forecaster.lexical.json +2988 -0
- package/lib/examples/stores/agents/social-post-generator.ipynb.json +111 -0
- package/lib/examples/stores/agents/social-post-generator.json +13 -0
- package/lib/examples/stores/agents/social-post-generator.lexical.json +2988 -0
- package/lib/examples/stores/agents/stock-market.ipynb.json +56 -0
- package/lib/examples/stores/agents/stock-market.json +13 -0
- package/lib/examples/stores/agents/stock-market.lexical.json +1026 -0
- package/lib/examples/stores/examplesStore.d.ts +26 -0
- package/lib/examples/stores/examplesStore.js +60 -0
- package/lib/examples/stores/notebooks/Empty.ipynb.json +33 -0
- package/lib/examples/stores/notebooks/IPyWidgetsExample.ipynb.json +101 -0
- package/lib/examples/stores/notebooks/IPyWidgetsExampleWithState.ipynb.json +112 -0
- package/lib/examples/stores/notebooks/Lite.ipynb.json +128 -0
- package/lib/examples/stores/notebooks/Matplotlib.ipynb.json +137 -0
- package/lib/examples/stores/notebooks/NotebookExample1.ipynb.json +126 -0
- package/lib/examples/stores/notebooks/NotebookExample2.ipynb.json +48 -0
- package/lib/examples/stores/notebooks/NotebookOutputs.ipynb.json +49 -0
- package/lib/examples/stores/notebooks/NotebookToCExample.ipynb.json +102 -0
- package/lib/examples/stores/notebooks/OutputIPyWidgetsExample.d.ts +145 -0
- package/lib/examples/stores/notebooks/OutputIPyWidgetsExample.js +153 -0
- package/lib/examples/stores/notebooks/PyGWalker.ipynb.json +55 -0
- package/lib/examples/vercel-ai-elements/VercelAiElementsShowcase.d.ts +12 -0
- package/lib/examples/vercel-ai-elements/VercelAiElementsShowcase.js +69 -0
- package/lib/examples/vercel-ai-elements/components/ArtifactShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/ArtifactShowcase.js +85 -0
- package/lib/examples/vercel-ai-elements/components/CodeBlockShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/CodeBlockShowcase.js +62 -0
- package/lib/examples/vercel-ai-elements/components/ConversationShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/ConversationShowcase.js +51 -0
- package/lib/examples/vercel-ai-elements/components/LoaderShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/LoaderShowcase.js +9 -0
- package/lib/examples/vercel-ai-elements/components/MessageShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/MessageShowcase.js +56 -0
- package/lib/examples/vercel-ai-elements/components/ModelSelectorShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/ModelSelectorShowcase.js +50 -0
- package/lib/examples/vercel-ai-elements/components/PromptInputShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/PromptInputShowcase.js +16 -0
- package/lib/examples/vercel-ai-elements/components/ReasoningShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/ReasoningShowcase.js +72 -0
- package/lib/examples/vercel-ai-elements/components/ShimmerShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/ShimmerShowcase.js +9 -0
- package/lib/examples/vercel-ai-elements/components/SourcesShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/SourcesShowcase.js +43 -0
- package/lib/examples/vercel-ai-elements/components/SuggestionShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/SuggestionShowcase.js +31 -0
- package/lib/examples/vercel-ai-elements/components/ToolShowcase.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/components/ToolShowcase.js +54 -0
- package/lib/examples/vercel-ai-elements/index.d.ts +13 -0
- package/lib/examples/vercel-ai-elements/index.js +17 -0
- package/lib/examples/vercel-ai-elements/main.d.ts +1 -0
- package/lib/examples/vercel-ai-elements/main.js +9 -0
- package/lib/examples/vercel-ai-elements/showcase.css +128 -0
- package/lib/hooks/index.d.ts +68 -0
- package/lib/hooks/index.js +81 -0
- package/lib/hooks/useA2A.d.ts +75 -0
- package/lib/hooks/useA2A.js +368 -0
- package/lib/hooks/useAGUI.d.ts +63 -0
- package/lib/hooks/useAGUI.js +162 -0
- package/lib/hooks/useAcp.d.ts +121 -0
- package/lib/hooks/useAcp.js +459 -0
- package/lib/hooks/useAgents.d.ts +13 -0
- package/lib/hooks/useAgents.js +71 -0
- package/lib/hooks/useChat.d.ts +62 -0
- package/lib/hooks/useChat.js +363 -0
- package/lib/hooks/useKeyboardShortcuts.d.ts +47 -0
- package/lib/hooks/useKeyboardShortcuts.js +153 -0
- package/lib/hooks/useMobile.d.ts +1 -0
- package/lib/hooks/useMobile.js +19 -0
- package/lib/hooks/useNotebookAIAgent.d.ts +8 -0
- package/lib/hooks/useNotebookAIAgent.js +56 -0
- package/lib/hooks/useToast.d.ts +44 -0
- package/lib/hooks/useToast.js +128 -0
- package/lib/hooks/useTools.d.ts +107 -0
- package/lib/hooks/useTools.js +130 -0
- package/lib/hooks/useVercelChat.d.ts +45 -0
- package/lib/hooks/useVercelChat.js +62 -0
- package/lib/index.css +73 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +5 -0
- package/lib/lexical/ChatInlinePlugin.d.ts +21 -0
- package/lib/lexical/ChatInlinePlugin.js +379 -0
- package/lib/lexical/index.d.ts +6 -0
- package/lib/lexical/index.js +10 -0
- package/lib/lib/utils.d.ts +2 -0
- package/lib/lib/utils.js +9 -0
- package/lib/main.d.ts +1 -0
- package/lib/main.js +12 -0
- package/lib/models/AIAgent.d.ts +17 -0
- package/lib/models/AIAgent.js +5 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/index.js +5 -0
- package/lib/renderers/a2ui/components/A2UIRenderer.d.ts +7 -0
- package/lib/renderers/a2ui/components/A2UIRenderer.js +102 -0
- package/lib/renderers/a2ui/components/SurfaceRenderer.d.ts +7 -0
- package/lib/renderers/a2ui/components/SurfaceRenderer.js +101 -0
- package/lib/renderers/a2ui/components/content/AudioPlayer.d.ts +9 -0
- package/lib/renderers/a2ui/components/content/AudioPlayer.js +38 -0
- package/lib/renderers/a2ui/components/content/Divider.d.ts +9 -0
- package/lib/renderers/a2ui/components/content/Divider.js +35 -0
- package/lib/renderers/a2ui/components/content/Icon.d.ts +9 -0
- package/lib/renderers/a2ui/components/content/Icon.js +110 -0
- package/lib/renderers/a2ui/components/content/Image.d.ts +9 -0
- package/lib/renderers/a2ui/components/content/Image.js +61 -0
- package/lib/renderers/a2ui/components/content/Text.d.ts +9 -0
- package/lib/renderers/a2ui/components/content/Text.js +64 -0
- package/lib/renderers/a2ui/components/content/Video.d.ts +9 -0
- package/lib/renderers/a2ui/components/content/Video.js +37 -0
- package/lib/renderers/a2ui/components/content/index.d.ts +6 -0
- package/lib/renderers/a2ui/components/content/index.js +25 -0
- package/lib/renderers/a2ui/components/index.d.ts +5 -0
- package/lib/renderers/a2ui/components/index.js +24 -0
- package/lib/renderers/a2ui/components/interactive/Button.d.ts +11 -0
- package/lib/renderers/a2ui/components/interactive/Button.js +71 -0
- package/lib/renderers/a2ui/components/interactive/CheckBox.d.ts +9 -0
- package/lib/renderers/a2ui/components/interactive/CheckBox.js +48 -0
- package/lib/renderers/a2ui/components/interactive/DateTimeInput.d.ts +9 -0
- package/lib/renderers/a2ui/components/interactive/DateTimeInput.js +62 -0
- package/lib/renderers/a2ui/components/interactive/MultipleChoice.d.ts +9 -0
- package/lib/renderers/a2ui/components/interactive/MultipleChoice.js +73 -0
- package/lib/renderers/a2ui/components/interactive/Slider.d.ts +9 -0
- package/lib/renderers/a2ui/components/interactive/Slider.js +53 -0
- package/lib/renderers/a2ui/components/interactive/TextField.d.ts +9 -0
- package/lib/renderers/a2ui/components/interactive/TextField.js +72 -0
- package/lib/renderers/a2ui/components/interactive/index.d.ts +6 -0
- package/lib/renderers/a2ui/components/interactive/index.js +25 -0
- package/lib/renderers/a2ui/components/layout/Card.d.ts +11 -0
- package/lib/renderers/a2ui/components/layout/Card.js +30 -0
- package/lib/renderers/a2ui/components/layout/Column.d.ts +11 -0
- package/lib/renderers/a2ui/components/layout/Column.js +65 -0
- package/lib/renderers/a2ui/components/layout/List.d.ts +11 -0
- package/lib/renderers/a2ui/components/layout/List.js +55 -0
- package/lib/renderers/a2ui/components/layout/Modal.d.ts +11 -0
- package/lib/renderers/a2ui/components/layout/Modal.js +58 -0
- package/lib/renderers/a2ui/components/layout/Row.d.ts +11 -0
- package/lib/renderers/a2ui/components/layout/Row.js +65 -0
- package/lib/renderers/a2ui/components/layout/Tabs.d.ts +11 -0
- package/lib/renderers/a2ui/components/layout/Tabs.js +48 -0
- package/lib/renderers/a2ui/components/layout/index.d.ts +6 -0
- package/lib/renderers/a2ui/components/layout/index.js +25 -0
- package/lib/renderers/a2ui/context/A2UIContext.d.ts +17 -0
- package/lib/renderers/a2ui/context/A2UIContext.js +54 -0
- package/lib/renderers/a2ui/context/ThemeContext.d.ts +20 -0
- package/lib/renderers/a2ui/context/ThemeContext.js +333 -0
- package/lib/renderers/a2ui/hooks/useA2UI.d.ts +36 -0
- package/lib/renderers/a2ui/hooks/useA2UI.js +62 -0
- package/lib/renderers/a2ui/hooks/useDataBinding.d.ts +8 -0
- package/lib/renderers/a2ui/hooks/useDataBinding.js +83 -0
- package/lib/renderers/a2ui/index.d.ts +9 -0
- package/lib/renderers/a2ui/index.js +28 -0
- package/lib/renderers/a2ui/lib/utils.d.ts +11 -0
- package/lib/renderers/a2ui/lib/utils.js +38 -0
- package/lib/renderers/a2ui/types/index.d.ts +17 -0
- package/lib/renderers/a2ui/types/index.js +5 -0
- package/lib/renderers/index.d.ts +1 -0
- package/lib/renderers/index.js +5 -0
- package/lib/state/index.d.ts +1 -0
- package/lib/state/index.js +5 -0
- package/lib/state/substates/AIAgentState.d.ts +11 -0
- package/lib/state/substates/AIAgentState.js +42 -0
- package/lib/state/substates/index.d.ts +1 -0
- package/lib/state/substates/index.js +5 -0
- package/lib/stories/Button.d.ts +15 -0
- package/lib/stories/Button.js +13 -0
- package/lib/stories/Button.stories.d.ts +23 -0
- package/lib/stories/Button.stories.js +48 -0
- package/lib/stories/Cell.stories.d.ts +12 -0
- package/lib/stories/Cell.stories.js +123 -0
- package/lib/stories/Header.d.ts +12 -0
- package/lib/stories/Header.js +8 -0
- package/lib/stories/Header.stories.d.ts +18 -0
- package/lib/stories/Header.stories.js +30 -0
- package/lib/stories/Page.d.ts +3 -0
- package/lib/stories/Page.js +12 -0
- package/lib/stories/Page.stories.d.ts +12 -0
- package/lib/stories/Page.stories.js +28 -0
- package/lib/stories/assets/accessibility.png +0 -0
- package/lib/stories/assets/accessibility.svg +1 -0
- package/lib/stories/assets/addon-library.png +0 -0
- package/lib/stories/assets/assets.png +0 -0
- package/lib/stories/assets/context.png +0 -0
- package/lib/stories/assets/discord.svg +1 -0
- package/lib/stories/assets/docs.png +0 -0
- package/lib/stories/assets/figma-plugin.png +0 -0
- package/lib/stories/assets/github.svg +1 -0
- package/lib/stories/assets/share.png +0 -0
- package/lib/stories/assets/styling.png +0 -0
- package/lib/stories/assets/testing.png +0 -0
- package/lib/stories/assets/theming.png +0 -0
- package/lib/stories/assets/tutorials.svg +1 -0
- package/lib/stories/assets/youtube.svg +1 -0
- package/lib/stories/button.css +35 -0
- package/lib/stories/header.css +37 -0
- package/lib/stories/page.css +73 -0
- package/lib/test-setup.d.ts +1 -0
- package/lib/test-setup.js +80 -0
- package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.d.ts +40 -0
- package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.js +110 -0
- package/lib/tools/adapters/agent-runtimes/index.d.ts +9 -0
- package/lib/tools/adapters/agent-runtimes/index.js +13 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +24 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +50 -0
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +24 -0
- package/lib/tools/adapters/agent-runtimes/notebookHooks.js +51 -0
- package/lib/tools/adapters/copilotkit/CopilotKitToolAdapter.d.ts +73 -0
- package/lib/tools/adapters/copilotkit/CopilotKitToolAdapter.js +244 -0
- package/lib/tools/adapters/copilotkit/index.d.ts +10 -0
- package/lib/tools/adapters/copilotkit/index.js +14 -0
- package/lib/tools/adapters/copilotkit/lexicalHooks.d.ts +27 -0
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +59 -0
- package/lib/tools/adapters/copilotkit/notebookHooks.d.ts +27 -0
- package/lib/tools/adapters/copilotkit/notebookHooks.js +58 -0
- package/lib/tools/adapters/index.d.ts +1 -0
- package/lib/tools/adapters/index.js +5 -0
- package/lib/tools/index.d.ts +6 -0
- package/lib/tools/index.js +18 -0
- package/lib/types.d.ts +5 -0
- package/lib/types.js +5 -0
- package/package.json +327 -0
- package/style/animation/Animation.module.css +174 -0
- package/style/base.css +204 -0
- package/style/index.css +6 -0
- package/style/showcase-vercel-ai.css +137 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
8
|
+
import { cn } from '@/lib/utils';
|
|
9
|
+
function TooltipProvider({ delayDuration = 0, ...props }) {
|
|
10
|
+
return (_jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration: delayDuration, ...props }));
|
|
11
|
+
}
|
|
12
|
+
function Tooltip({ ...props }) {
|
|
13
|
+
return (_jsx(TooltipProvider, { children: _jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) }));
|
|
14
|
+
}
|
|
15
|
+
function TooltipTrigger({ ...props }) {
|
|
16
|
+
return _jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
17
|
+
}
|
|
18
|
+
function TooltipContent({ className, sideOffset = 0, children, ...props }) {
|
|
19
|
+
return (_jsx(TooltipPrimitive.Portal, { children: _jsxs(TooltipPrimitive.Content, { "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn('bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance', className), ...props, children: [children, _jsx(TooltipPrimitive.Arrow, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })] }) }));
|
|
20
|
+
}
|
|
21
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Button } from '@/components/ui/button';
|
|
2
|
+
import { type LucideIcon } from 'lucide-react';
|
|
3
|
+
import type { ComponentProps, HTMLAttributes } from 'react';
|
|
4
|
+
export type ArtifactProps = HTMLAttributes<HTMLDivElement>;
|
|
5
|
+
export declare const Artifact: ({ className, ...props }: ArtifactProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export type ArtifactHeaderProps = HTMLAttributes<HTMLDivElement>;
|
|
7
|
+
export declare const ArtifactHeader: ({ className, ...props }: ArtifactHeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export type ArtifactCloseProps = ComponentProps<typeof Button>;
|
|
9
|
+
export declare const ArtifactClose: ({ className, children, size, variant, ...props }: ArtifactCloseProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export type ArtifactTitleProps = HTMLAttributes<HTMLParagraphElement>;
|
|
11
|
+
export declare const ArtifactTitle: ({ className, ...props }: ArtifactTitleProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export type ArtifactDescriptionProps = HTMLAttributes<HTMLParagraphElement>;
|
|
13
|
+
export declare const ArtifactDescription: ({ className, ...props }: ArtifactDescriptionProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export type ArtifactActionsProps = HTMLAttributes<HTMLDivElement>;
|
|
15
|
+
export declare const ArtifactActions: ({ className, ...props }: ArtifactActionsProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export type ArtifactActionProps = ComponentProps<typeof Button> & {
|
|
17
|
+
tooltip?: string;
|
|
18
|
+
label?: string;
|
|
19
|
+
icon?: LucideIcon;
|
|
20
|
+
};
|
|
21
|
+
export declare const ArtifactAction: ({ tooltip, label, icon: Icon, children, className, size, variant, ...props }: ArtifactActionProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export type ArtifactContentProps = HTMLAttributes<HTMLDivElement>;
|
|
23
|
+
export declare const ArtifactContent: ({ className, ...props }: ArtifactContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { Button } from '@/components/ui/button';
|
|
8
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip';
|
|
9
|
+
import { cn } from '@/lib/utils';
|
|
10
|
+
import { XIcon } from 'lucide-react';
|
|
11
|
+
export const Artifact = ({ className, ...props }) => (_jsx("div", { className: cn('flex flex-col overflow-hidden rounded-lg border bg-background shadow-sm', className), ...props }));
|
|
12
|
+
export const ArtifactHeader = ({ className, ...props }) => (_jsx("div", { className: cn('flex items-center justify-between border-b bg-muted/50 px-4 py-3', className), ...props }));
|
|
13
|
+
export const ArtifactClose = ({ className, children, size = 'sm', variant = 'ghost', ...props }) => (_jsxs(Button, { className: cn('size-8 p-0 text-muted-foreground hover:text-foreground', className), size: size, type: "button", variant: variant, ...props, children: [children ?? _jsx(XIcon, { className: "size-4" }), _jsx("span", { className: "sr-only", children: "Close" })] }));
|
|
14
|
+
export const ArtifactTitle = ({ className, ...props }) => (_jsx("p", { className: cn('font-medium text-foreground text-sm', className), ...props }));
|
|
15
|
+
export const ArtifactDescription = ({ className, ...props }) => (_jsx("p", { className: cn('text-muted-foreground text-sm', className), ...props }));
|
|
16
|
+
export const ArtifactActions = ({ className, ...props }) => (_jsx("div", { className: cn('flex items-center gap-1', className), ...props }));
|
|
17
|
+
export const ArtifactAction = ({ tooltip, label, icon: Icon, children, className, size = 'sm', variant = 'ghost', ...props }) => {
|
|
18
|
+
const button = (_jsxs(Button, { className: cn('size-8 p-0 text-muted-foreground hover:text-foreground', className), size: size, type: "button", variant: variant, ...props, children: [Icon ? _jsx(Icon, { className: "size-4" }) : children, _jsx("span", { className: "sr-only", children: label || tooltip })] }));
|
|
19
|
+
if (tooltip) {
|
|
20
|
+
return (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: button }), _jsx(TooltipContent, { children: _jsx("p", { children: tooltip }) })] }) }));
|
|
21
|
+
}
|
|
22
|
+
return button;
|
|
23
|
+
};
|
|
24
|
+
export const ArtifactContent = ({ className, ...props }) => (_jsx("div", { className: cn('flex-1 overflow-auto p-4', className), ...props }));
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Button } from '@/components/ui/button';
|
|
2
|
+
import { type ComponentProps, type HTMLAttributes } from 'react';
|
|
3
|
+
import { type BundledLanguage } from 'shiki';
|
|
4
|
+
type CodeBlockProps = HTMLAttributes<HTMLDivElement> & {
|
|
5
|
+
code: string;
|
|
6
|
+
language: BundledLanguage;
|
|
7
|
+
showLineNumbers?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function highlightCode(code: string, language: BundledLanguage, showLineNumbers?: boolean): Promise<[string, string]>;
|
|
10
|
+
export declare const CodeBlock: ({ code, language, showLineNumbers, className, children, ...props }: CodeBlockProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {
|
|
12
|
+
onCopy?: () => void;
|
|
13
|
+
onError?: (error: Error) => void;
|
|
14
|
+
timeout?: number;
|
|
15
|
+
};
|
|
16
|
+
export declare const CodeBlockCopyButton: ({ onCopy, onError, timeout, children, className, ...props }: CodeBlockCopyButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { Button } from '@/components/ui/button';
|
|
8
|
+
import { cn } from '@/lib/utils';
|
|
9
|
+
import { CheckIcon, CopyIcon } from 'lucide-react';
|
|
10
|
+
import { createContext, useContext, useEffect, useRef, useState, } from 'react';
|
|
11
|
+
import { codeToHtml } from 'shiki';
|
|
12
|
+
const CodeBlockContext = createContext({
|
|
13
|
+
code: '',
|
|
14
|
+
});
|
|
15
|
+
const lineNumberTransformer = {
|
|
16
|
+
name: 'line-numbers',
|
|
17
|
+
line(node, line) {
|
|
18
|
+
node.children.unshift({
|
|
19
|
+
type: 'element',
|
|
20
|
+
tagName: 'span',
|
|
21
|
+
properties: {
|
|
22
|
+
className: [
|
|
23
|
+
'inline-block',
|
|
24
|
+
'min-w-10',
|
|
25
|
+
'mr-4',
|
|
26
|
+
'text-right',
|
|
27
|
+
'select-none',
|
|
28
|
+
'text-muted-foreground',
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
children: [{ type: 'text', value: String(line) }],
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
export async function highlightCode(code, language, showLineNumbers = false) {
|
|
36
|
+
const transformers = showLineNumbers
|
|
37
|
+
? [lineNumberTransformer]
|
|
38
|
+
: [];
|
|
39
|
+
return await Promise.all([
|
|
40
|
+
codeToHtml(code, {
|
|
41
|
+
lang: language,
|
|
42
|
+
theme: 'one-light',
|
|
43
|
+
transformers,
|
|
44
|
+
}),
|
|
45
|
+
codeToHtml(code, {
|
|
46
|
+
lang: language,
|
|
47
|
+
theme: 'one-dark-pro',
|
|
48
|
+
transformers,
|
|
49
|
+
}),
|
|
50
|
+
]);
|
|
51
|
+
}
|
|
52
|
+
export const CodeBlock = ({ code, language, showLineNumbers = false, className, children, ...props }) => {
|
|
53
|
+
const [html, setHtml] = useState('');
|
|
54
|
+
const [darkHtml, setDarkHtml] = useState('');
|
|
55
|
+
const mounted = useRef(false);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
highlightCode(code, language, showLineNumbers).then(([light, dark]) => {
|
|
58
|
+
if (!mounted.current) {
|
|
59
|
+
setHtml(light);
|
|
60
|
+
setDarkHtml(dark);
|
|
61
|
+
mounted.current = true;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return () => {
|
|
65
|
+
mounted.current = false;
|
|
66
|
+
};
|
|
67
|
+
}, [code, language, showLineNumbers]);
|
|
68
|
+
return (_jsx(CodeBlockContext.Provider, { value: { code }, children: _jsx("div", { className: cn('group relative w-full overflow-hidden rounded-md border bg-background text-foreground', className), ...props, children: _jsxs("div", { className: "relative", children: [_jsx("div", { className: "overflow-auto dark:hidden [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm",
|
|
69
|
+
// biome-ignore lint/security/noDangerouslySetInnerHtml: "this is needed."
|
|
70
|
+
dangerouslySetInnerHTML: { __html: html } }), _jsx("div", { className: "hidden overflow-auto dark:block [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm",
|
|
71
|
+
// biome-ignore lint/security/noDangerouslySetInnerHtml: "this is needed."
|
|
72
|
+
dangerouslySetInnerHTML: { __html: darkHtml } }), children && (_jsx("div", { className: "absolute top-2 right-2 flex items-center gap-2", children: children }))] }) }) }));
|
|
73
|
+
};
|
|
74
|
+
export const CodeBlockCopyButton = ({ onCopy, onError, timeout = 2000, children, className, ...props }) => {
|
|
75
|
+
const [isCopied, setIsCopied] = useState(false);
|
|
76
|
+
const { code } = useContext(CodeBlockContext);
|
|
77
|
+
const copyToClipboard = async () => {
|
|
78
|
+
if (typeof window === 'undefined' || !navigator?.clipboard?.writeText) {
|
|
79
|
+
onError?.(new Error('Clipboard API not available'));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
await navigator.clipboard.writeText(code);
|
|
84
|
+
setIsCopied(true);
|
|
85
|
+
onCopy?.();
|
|
86
|
+
setTimeout(() => setIsCopied(false), timeout);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
onError?.(error);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const Icon = isCopied ? CheckIcon : CopyIcon;
|
|
93
|
+
return (_jsx(Button, { className: cn('shrink-0', className), onClick: copyToClipboard, size: "icon", variant: "ghost", ...props, children: children ?? _jsx(Icon, { size: 14 }) }));
|
|
94
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Button } from '@/components/ui/button';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import { StickToBottom } from 'use-stick-to-bottom';
|
|
4
|
+
export type ConversationProps = ComponentProps<typeof StickToBottom>;
|
|
5
|
+
export declare const Conversation: ({ className, ...props }: ConversationProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export type ConversationContentProps = ComponentProps<typeof StickToBottom.Content>;
|
|
7
|
+
export declare const ConversationContent: ({ className, ...props }: ConversationContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export type ConversationEmptyStateProps = ComponentProps<'div'> & {
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
icon?: React.ReactNode;
|
|
12
|
+
};
|
|
13
|
+
export declare const ConversationEmptyState: ({ className, title, description, icon, children, ...props }: ConversationEmptyStateProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export type ConversationScrollButtonProps = ComponentProps<typeof Button>;
|
|
15
|
+
export declare const ConversationScrollButton: ({ className, ...props }: ConversationScrollButtonProps) => false | import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
7
|
+
import { Button } from '@/components/ui/button';
|
|
8
|
+
import { cn } from '@/lib/utils';
|
|
9
|
+
import { ArrowDownIcon } from 'lucide-react';
|
|
10
|
+
import { useCallback } from 'react';
|
|
11
|
+
import { StickToBottom, useStickToBottomContext } from 'use-stick-to-bottom';
|
|
12
|
+
export const Conversation = ({ className, ...props }) => (_jsx(StickToBottom, { className: cn('relative flex-1 overflow-y-hidden', className), initial: "smooth", resize: "smooth", role: "log", ...props }));
|
|
13
|
+
export const ConversationContent = ({ className, ...props }) => (_jsx(StickToBottom.Content, { className: cn('flex flex-col gap-8 p-4', className), ...props }));
|
|
14
|
+
export const ConversationEmptyState = ({ className, title = 'No messages yet', description = 'Start a conversation to see messages here', icon, children, ...props }) => (_jsx("div", { className: cn('flex size-full flex-col items-center justify-center gap-3 p-8 text-center', className), ...props, children: children ?? (_jsxs(_Fragment, { children: [icon && _jsx("div", { className: "text-muted-foreground", children: icon }), _jsxs("div", { className: "space-y-1", children: [_jsx("h3", { className: "font-medium text-sm", children: title }), description && (_jsx("p", { className: "text-muted-foreground text-sm", children: description }))] })] })) }));
|
|
15
|
+
export const ConversationScrollButton = ({ className, ...props }) => {
|
|
16
|
+
const { isAtBottom, scrollToBottom } = useStickToBottomContext();
|
|
17
|
+
const handleScrollToBottom = useCallback(() => {
|
|
18
|
+
scrollToBottom();
|
|
19
|
+
}, [scrollToBottom]);
|
|
20
|
+
return (!isAtBottom && (_jsx(Button, { className: cn('absolute bottom-4 left-[50%] translate-x-[-50%] rounded-full', className), onClick: handleScrollToBottom, size: "icon", type: "button", variant: "outline", ...props, children: _jsx(ArrowDownIcon, { className: "size-4" }) })));
|
|
21
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
import { cn } from '@/lib/utils';
|
|
7
|
+
const LoaderIcon = ({ size = 16 }) => (_jsxs("svg", { height: size, strokeLinejoin: "round", style: { color: 'currentcolor' }, viewBox: "0 0 16 16", width: size, children: [_jsx("title", { children: "Loader" }), _jsxs("g", { clipPath: "url(#clip0_2393_1490)", children: [_jsx("path", { d: "M8 0V4", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M8 16V12", opacity: "0.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M3.29773 1.52783L5.64887 4.7639", opacity: "0.9", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M12.7023 1.52783L10.3511 4.7639", opacity: "0.1", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M12.7023 14.472L10.3511 11.236", opacity: "0.4", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M3.29773 14.472L5.64887 11.236", opacity: "0.6", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M15.6085 5.52783L11.8043 6.7639", opacity: "0.2", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M0.391602 10.472L4.19583 9.23598", opacity: "0.7", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M15.6085 10.4722L11.8043 9.2361", opacity: "0.3", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M0.391602 5.52783L4.19583 6.7639", opacity: "0.8", stroke: "currentColor", strokeWidth: "1.5" })] }), _jsx("defs", { children: _jsx("clipPath", { id: "clip0_2393_1490", children: _jsx("rect", { fill: "white", height: "16", width: "16" }) }) })] }));
|
|
8
|
+
export const Loader = ({ className, size = 16, ...props }) => (_jsx("div", { className: cn('inline-flex animate-spin items-center justify-center', className), ...props, children: _jsx(LoaderIcon, { size: size }) }));
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Button } from '@/components/ui/button';
|
|
2
|
+
import type { FileUIPart, UIMessage } from 'ai';
|
|
3
|
+
import type { ComponentProps, HTMLAttributes } from 'react';
|
|
4
|
+
import { Streamdown } from 'streamdown';
|
|
5
|
+
export type MessageProps = HTMLAttributes<HTMLDivElement> & {
|
|
6
|
+
from: UIMessage['role'];
|
|
7
|
+
};
|
|
8
|
+
export declare const Message: ({ className, from, ...props }: MessageProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export type MessageContentProps = HTMLAttributes<HTMLDivElement>;
|
|
10
|
+
export declare const MessageContent: ({ children, className, ...props }: MessageContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export type MessageActionsProps = ComponentProps<'div'>;
|
|
12
|
+
export declare const MessageActions: ({ className, children, ...props }: MessageActionsProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export type MessageActionProps = ComponentProps<typeof Button> & {
|
|
14
|
+
tooltip?: string;
|
|
15
|
+
label?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const MessageAction: ({ tooltip, children, label, variant, size, ...props }: MessageActionProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export type MessageBranchProps = HTMLAttributes<HTMLDivElement> & {
|
|
19
|
+
defaultBranch?: number;
|
|
20
|
+
onBranchChange?: (branchIndex: number) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare const MessageBranch: ({ defaultBranch, onBranchChange, className, ...props }: MessageBranchProps) => import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export type MessageBranchContentProps = HTMLAttributes<HTMLDivElement>;
|
|
24
|
+
export declare const MessageBranchContent: ({ children, ...props }: MessageBranchContentProps) => import("react/jsx-runtime").JSX.Element[];
|
|
25
|
+
export type MessageBranchSelectorProps = HTMLAttributes<HTMLDivElement> & {
|
|
26
|
+
from: UIMessage['role'];
|
|
27
|
+
};
|
|
28
|
+
export declare const MessageBranchSelector: ({ className, from, ...props }: MessageBranchSelectorProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
29
|
+
export type MessageBranchPreviousProps = ComponentProps<typeof Button>;
|
|
30
|
+
export declare const MessageBranchPrevious: ({ children, ...props }: MessageBranchPreviousProps) => import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export type MessageBranchNextProps = ComponentProps<typeof Button>;
|
|
32
|
+
export declare const MessageBranchNext: ({ children, className, ...props }: MessageBranchNextProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export type MessageBranchPageProps = HTMLAttributes<HTMLSpanElement>;
|
|
34
|
+
export declare const MessageBranchPage: ({ className, ...props }: MessageBranchPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
export type MessageResponseProps = ComponentProps<typeof Streamdown>;
|
|
36
|
+
export declare const MessageResponse: import("react").MemoExoticComponent<({ className, ...props }: MessageResponseProps) => import("react/jsx-runtime").JSX.Element>;
|
|
37
|
+
export type MessageAttachmentProps = HTMLAttributes<HTMLDivElement> & {
|
|
38
|
+
data: FileUIPart;
|
|
39
|
+
className?: string;
|
|
40
|
+
onRemove?: () => void;
|
|
41
|
+
};
|
|
42
|
+
export declare function MessageAttachment({ data, className, onRemove, ...props }: MessageAttachmentProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
export type MessageAttachmentsProps = ComponentProps<'div'>;
|
|
44
|
+
export declare function MessageAttachments({ children, className, ...props }: MessageAttachmentsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
45
|
+
export type MessageToolbarProps = ComponentProps<'div'>;
|
|
46
|
+
export declare const MessageToolbar: ({ className, children, ...props }: MessageToolbarProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
7
|
+
import { Button } from '@/components/ui/button';
|
|
8
|
+
import { ButtonGroup, ButtonGroupText } from '@/components/ui/button-group';
|
|
9
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip';
|
|
10
|
+
import { cn } from '@/lib/utils';
|
|
11
|
+
import { ChevronLeftIcon, ChevronRightIcon, PaperclipIcon, XIcon, } from 'lucide-react';
|
|
12
|
+
import { createContext, memo, useContext, useEffect, useState } from 'react';
|
|
13
|
+
import { Streamdown } from 'streamdown';
|
|
14
|
+
export const Message = ({ className, from, ...props }) => (_jsx("div", { className: cn('group flex w-full max-w-[95%] flex-col gap-2', from === 'user' ? 'is-user ml-auto justify-end' : 'is-assistant', className), ...props }));
|
|
15
|
+
export const MessageContent = ({ children, className, ...props }) => (_jsx("div", { className: cn('is-user:dark flex w-fit max-w-full min-w-0 flex-col gap-2 overflow-hidden text-sm', 'group-[.is-user]:ml-auto group-[.is-user]:rounded-lg group-[.is-user]:bg-secondary group-[.is-user]:px-4 group-[.is-user]:py-3 group-[.is-user]:text-foreground', 'group-[.is-assistant]:text-foreground', className), ...props, children: children }));
|
|
16
|
+
export const MessageActions = ({ className, children, ...props }) => (_jsx("div", { className: cn('flex items-center gap-1', className), ...props, children: children }));
|
|
17
|
+
export const MessageAction = ({ tooltip, children, label, variant = 'ghost', size = 'icon-sm', ...props }) => {
|
|
18
|
+
const button = (_jsxs(Button, { size: size, type: "button", variant: variant, ...props, children: [children, _jsx("span", { className: "sr-only", children: label || tooltip })] }));
|
|
19
|
+
if (tooltip) {
|
|
20
|
+
return (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: button }), _jsx(TooltipContent, { children: _jsx("p", { children: tooltip }) })] }) }));
|
|
21
|
+
}
|
|
22
|
+
return button;
|
|
23
|
+
};
|
|
24
|
+
const MessageBranchContext = createContext(null);
|
|
25
|
+
const useMessageBranch = () => {
|
|
26
|
+
const context = useContext(MessageBranchContext);
|
|
27
|
+
if (!context) {
|
|
28
|
+
throw new Error('MessageBranch components must be used within MessageBranch');
|
|
29
|
+
}
|
|
30
|
+
return context;
|
|
31
|
+
};
|
|
32
|
+
export const MessageBranch = ({ defaultBranch = 0, onBranchChange, className, ...props }) => {
|
|
33
|
+
const [currentBranch, setCurrentBranch] = useState(defaultBranch);
|
|
34
|
+
const [branches, setBranches] = useState([]);
|
|
35
|
+
const handleBranchChange = (newBranch) => {
|
|
36
|
+
setCurrentBranch(newBranch);
|
|
37
|
+
onBranchChange?.(newBranch);
|
|
38
|
+
};
|
|
39
|
+
const goToPrevious = () => {
|
|
40
|
+
const newBranch = currentBranch > 0 ? currentBranch - 1 : branches.length - 1;
|
|
41
|
+
handleBranchChange(newBranch);
|
|
42
|
+
};
|
|
43
|
+
const goToNext = () => {
|
|
44
|
+
const newBranch = currentBranch < branches.length - 1 ? currentBranch + 1 : 0;
|
|
45
|
+
handleBranchChange(newBranch);
|
|
46
|
+
};
|
|
47
|
+
const contextValue = {
|
|
48
|
+
currentBranch,
|
|
49
|
+
totalBranches: branches.length,
|
|
50
|
+
goToPrevious,
|
|
51
|
+
goToNext,
|
|
52
|
+
branches,
|
|
53
|
+
setBranches,
|
|
54
|
+
};
|
|
55
|
+
return (_jsx(MessageBranchContext.Provider, { value: contextValue, children: _jsx("div", { className: cn('grid w-full gap-2 [&>div]:pb-0', className), ...props }) }));
|
|
56
|
+
};
|
|
57
|
+
export const MessageBranchContent = ({ children, ...props }) => {
|
|
58
|
+
const { currentBranch, setBranches, branches } = useMessageBranch();
|
|
59
|
+
const childrenArray = Array.isArray(children) ? children : [children];
|
|
60
|
+
// Use useEffect to update branches when they change
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (branches.length !== childrenArray.length) {
|
|
63
|
+
setBranches(childrenArray);
|
|
64
|
+
}
|
|
65
|
+
}, [childrenArray, branches, setBranches]);
|
|
66
|
+
return childrenArray.map((branch, index) => (_jsx("div", { className: cn('grid gap-2 overflow-hidden [&>div]:pb-0', index === currentBranch ? 'block' : 'hidden'), ...props, children: branch }, branch.key)));
|
|
67
|
+
};
|
|
68
|
+
export const MessageBranchSelector = ({ className, from, ...props }) => {
|
|
69
|
+
const { totalBranches } = useMessageBranch();
|
|
70
|
+
// Don't render if there's only one branch
|
|
71
|
+
if (totalBranches <= 1) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return (_jsx(ButtonGroup, { className: "[&>*:not(:first-child)]:rounded-l-md [&>*:not(:last-child)]:rounded-r-md", orientation: "horizontal", ...props }));
|
|
75
|
+
};
|
|
76
|
+
export const MessageBranchPrevious = ({ children, ...props }) => {
|
|
77
|
+
const { goToPrevious, totalBranches } = useMessageBranch();
|
|
78
|
+
return (_jsx(Button, { "aria-label": "Previous branch", disabled: totalBranches <= 1, onClick: goToPrevious, size: "icon-sm", type: "button", variant: "ghost", ...props, children: children ?? _jsx(ChevronLeftIcon, { size: 14 }) }));
|
|
79
|
+
};
|
|
80
|
+
export const MessageBranchNext = ({ children, className, ...props }) => {
|
|
81
|
+
const { goToNext, totalBranches } = useMessageBranch();
|
|
82
|
+
return (_jsx(Button, { "aria-label": "Next branch", disabled: totalBranches <= 1, onClick: goToNext, size: "icon-sm", type: "button", variant: "ghost", ...props, children: children ?? _jsx(ChevronRightIcon, { size: 14 }) }));
|
|
83
|
+
};
|
|
84
|
+
export const MessageBranchPage = ({ className, ...props }) => {
|
|
85
|
+
const { currentBranch, totalBranches } = useMessageBranch();
|
|
86
|
+
return (_jsxs(ButtonGroupText, { className: cn('border-none bg-transparent text-muted-foreground shadow-none', className), ...props, children: [currentBranch + 1, " of ", totalBranches] }));
|
|
87
|
+
};
|
|
88
|
+
export const MessageResponse = memo(({ className, ...props }) => (_jsx(Streamdown, { className: cn('size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0', className), ...props })), (prevProps, nextProps) => prevProps.children === nextProps.children);
|
|
89
|
+
MessageResponse.displayName = 'MessageResponse';
|
|
90
|
+
export function MessageAttachment({ data, className, onRemove, ...props }) {
|
|
91
|
+
const filename = data.filename || '';
|
|
92
|
+
const mediaType = data.mediaType?.startsWith('image/') && data.url ? 'image' : 'file';
|
|
93
|
+
const isImage = mediaType === 'image';
|
|
94
|
+
const attachmentLabel = filename || (isImage ? 'Image' : 'Attachment');
|
|
95
|
+
return (_jsx("div", { className: cn('group relative size-24 overflow-hidden rounded-lg', className), ...props, children: isImage ? (_jsxs(_Fragment, { children: [_jsx("img", { alt: filename || 'attachment', className: "size-full object-cover", height: 100, src: data.url, width: 100 }), onRemove && (_jsxs(Button, { "aria-label": "Remove attachment", className: "absolute top-2 right-2 size-6 rounded-full bg-background/80 p-0 opacity-0 backdrop-blur-sm transition-opacity hover:bg-background group-hover:opacity-100 [&>svg]:size-3", onClick: e => {
|
|
96
|
+
e.stopPropagation();
|
|
97
|
+
onRemove();
|
|
98
|
+
}, type: "button", variant: "ghost", children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: "Remove" })] }))] })) : (_jsxs(_Fragment, { children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: "flex size-full shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground", children: _jsx(PaperclipIcon, { className: "size-4" }) }) }), _jsx(TooltipContent, { children: _jsx("p", { children: attachmentLabel }) })] }), onRemove && (_jsxs(Button, { "aria-label": "Remove attachment", className: "size-6 shrink-0 rounded-full p-0 opacity-0 transition-opacity hover:bg-accent group-hover:opacity-100 [&>svg]:size-3", onClick: e => {
|
|
99
|
+
e.stopPropagation();
|
|
100
|
+
onRemove();
|
|
101
|
+
}, type: "button", variant: "ghost", children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: "Remove" })] }))] })) }));
|
|
102
|
+
}
|
|
103
|
+
export function MessageAttachments({ children, className, ...props }) {
|
|
104
|
+
if (!children) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
return (_jsx("div", { className: cn('ml-auto flex w-fit flex-wrap items-start gap-2', className), ...props, children: children }));
|
|
108
|
+
}
|
|
109
|
+
export const MessageToolbar = ({ className, children, ...props }) => (_jsx("div", { className: cn('mt-4 flex w-full items-center justify-between gap-4', className), ...props, children: children }));
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from '@/components/ui/command';
|
|
2
|
+
import { Dialog, DialogContent, DialogTrigger } from '@/components/ui/dialog';
|
|
3
|
+
import type { ComponentProps, ReactNode } from 'react';
|
|
4
|
+
export type ModelSelectorProps = ComponentProps<typeof Dialog>;
|
|
5
|
+
export declare const ModelSelector: (props: ModelSelectorProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export type ModelSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;
|
|
7
|
+
export declare const ModelSelectorTrigger: (props: ModelSelectorTriggerProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export type ModelSelectorContentProps = ComponentProps<typeof DialogContent> & {
|
|
9
|
+
title?: ReactNode;
|
|
10
|
+
};
|
|
11
|
+
export declare const ModelSelectorContent: ({ className, children, title, ...props }: ModelSelectorContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export type ModelSelectorDialogProps = ComponentProps<typeof CommandDialog>;
|
|
13
|
+
export declare const ModelSelectorDialog: (props: ModelSelectorDialogProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export type ModelSelectorInputProps = ComponentProps<typeof CommandInput>;
|
|
15
|
+
export declare const ModelSelectorInput: ({ className, ...props }: ModelSelectorInputProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export type ModelSelectorListProps = ComponentProps<typeof CommandList>;
|
|
17
|
+
export declare const ModelSelectorList: (props: ModelSelectorListProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export type ModelSelectorEmptyProps = ComponentProps<typeof CommandEmpty>;
|
|
19
|
+
export declare const ModelSelectorEmpty: (props: ModelSelectorEmptyProps) => import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export type ModelSelectorGroupProps = ComponentProps<typeof CommandGroup>;
|
|
21
|
+
export declare const ModelSelectorGroup: (props: ModelSelectorGroupProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export type ModelSelectorItemProps = ComponentProps<typeof CommandItem>;
|
|
23
|
+
export declare const ModelSelectorItem: (props: ModelSelectorItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export type ModelSelectorShortcutProps = ComponentProps<typeof CommandShortcut>;
|
|
25
|
+
export declare const ModelSelectorShortcut: (props: ModelSelectorShortcutProps) => import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export type ModelSelectorSeparatorProps = ComponentProps<typeof CommandSeparator>;
|
|
27
|
+
export declare const ModelSelectorSeparator: (props: ModelSelectorSeparatorProps) => import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export type ModelSelectorLogoProps = Omit<ComponentProps<'img'>, 'src' | 'alt'> & {
|
|
29
|
+
provider: 'moonshotai-cn' | 'lucidquery' | 'moonshotai' | 'zai-coding-plan' | 'alibaba' | 'xai' | 'vultr' | 'nvidia' | 'upstage' | 'groq' | 'github-copilot' | 'mistral' | 'vercel' | 'nebius' | 'deepseek' | 'alibaba-cn' | 'google-vertex-anthropic' | 'venice' | 'chutes' | 'cortecs' | 'github-models' | 'togetherai' | 'azure' | 'baseten' | 'huggingface' | 'opencode' | 'fastrouter' | 'google' | 'google-vertex' | 'cloudflare-workers-ai' | 'inception' | 'wandb' | 'openai' | 'zhipuai-coding-plan' | 'perplexity' | 'openrouter' | 'zenmux' | 'v0' | 'iflowcn' | 'synthetic' | 'deepinfra' | 'zhipuai' | 'submodel' | 'zai' | 'inference' | 'requesty' | 'morph' | 'lmstudio' | 'anthropic' | 'aihubmix' | 'fireworks-ai' | 'modelscope' | 'llama' | 'scaleway' | 'amazon-bedrock' | 'cerebras' | (string & {});
|
|
30
|
+
};
|
|
31
|
+
export declare const ModelSelectorLogo: ({ provider, className, ...props }: ModelSelectorLogoProps) => import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export type ModelSelectorLogoGroupProps = ComponentProps<'div'>;
|
|
33
|
+
export declare const ModelSelectorLogoGroup: ({ className, ...props }: ModelSelectorLogoGroupProps) => import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
export type ModelSelectorNameProps = ComponentProps<'span'>;
|
|
35
|
+
export declare const ModelSelectorName: ({ className, ...props }: ModelSelectorNameProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
import { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, } from '@/components/ui/command';
|
|
7
|
+
import { Dialog, DialogContent, DialogTitle, DialogTrigger, } from '@/components/ui/dialog';
|
|
8
|
+
import { cn } from '@/lib/utils';
|
|
9
|
+
export const ModelSelector = (props) => (_jsx(Dialog, { ...props }));
|
|
10
|
+
export const ModelSelectorTrigger = (props) => (_jsx(DialogTrigger, { ...props }));
|
|
11
|
+
export const ModelSelectorContent = ({ className, children, title = 'Model Selector', ...props }) => (_jsxs(DialogContent, { className: cn('p-0', className), ...props, children: [_jsx(DialogTitle, { className: "sr-only", children: title }), _jsx(Command, { className: "**:data-[slot=command-input-wrapper]:h-auto", children: children })] }));
|
|
12
|
+
export const ModelSelectorDialog = (props) => (_jsx(CommandDialog, { ...props }));
|
|
13
|
+
export const ModelSelectorInput = ({ className, ...props }) => (_jsx(CommandInput, { className: cn('h-auto py-3.5', className), ...props }));
|
|
14
|
+
export const ModelSelectorList = (props) => (_jsx(CommandList, { ...props }));
|
|
15
|
+
export const ModelSelectorEmpty = (props) => (_jsx(CommandEmpty, { ...props }));
|
|
16
|
+
export const ModelSelectorGroup = (props) => (_jsx(CommandGroup, { ...props }));
|
|
17
|
+
export const ModelSelectorItem = (props) => (_jsx(CommandItem, { ...props }));
|
|
18
|
+
export const ModelSelectorShortcut = (props) => (_jsx(CommandShortcut, { ...props }));
|
|
19
|
+
export const ModelSelectorSeparator = (props) => (_jsx(CommandSeparator, { ...props }));
|
|
20
|
+
export const ModelSelectorLogo = ({ provider, className, ...props }) => (_jsx("img", { ...props, alt: `${provider} logo`, className: cn('size-3 dark:invert', className), height: 12, src: `https://models.dev/logos/${provider}.svg`, width: 12 }));
|
|
21
|
+
export const ModelSelectorLogoGroup = ({ className, ...props }) => (_jsx("div", { className: cn('-space-x-1 flex shrink-0 items-center [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground', className), ...props }));
|
|
22
|
+
export const ModelSelectorName = ({ className, ...props }) => (_jsx("span", { className: cn('flex-1 truncate text-left', className), ...props }));
|