@tetrascience-npm/tetrascience-react-ui 0.7.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -4
- package/dist/ai/attachments.cjs +2 -0
- package/dist/ai/attachments.cjs.map +1 -0
- package/dist/ai/attachments.js +224 -0
- package/dist/ai/attachments.js.map +1 -0
- package/dist/ai/chain-of-thought.cjs +2 -0
- package/dist/ai/chain-of-thought.cjs.map +1 -0
- package/dist/ai/chain-of-thought.js +145 -0
- package/dist/ai/chain-of-thought.js.map +1 -0
- package/dist/ai/confirmation.cjs +2 -0
- package/dist/ai/confirmation.cjs.map +1 -0
- package/dist/ai/confirmation.js +109 -0
- package/dist/ai/confirmation.js.map +1 -0
- package/dist/ai/context.cjs +2 -0
- package/dist/ai/context.cjs.map +1 -0
- package/dist/ai/context.js +267 -0
- package/dist/ai/context.js.map +1 -0
- package/dist/ai/conversation.cjs +4 -0
- package/dist/ai/conversation.cjs.map +1 -0
- package/dist/ai/conversation.js +108 -0
- package/dist/ai/conversation.js.map +1 -0
- package/dist/ai/inline-citation.cjs +2 -0
- package/dist/ai/inline-citation.cjs.map +1 -0
- package/dist/ai/inline-citation.js +182 -0
- package/dist/ai/inline-citation.js.map +1 -0
- package/dist/ai/message.cjs +2 -0
- package/dist/ai/message.cjs.map +1 -0
- package/dist/ai/message.js +237 -0
- package/dist/ai/message.js.map +1 -0
- package/dist/ai/model-selector.cjs +2 -0
- package/dist/ai/model-selector.cjs.map +1 -0
- package/dist/ai/model-selector.js +77 -0
- package/dist/ai/model-selector.js.map +1 -0
- package/dist/ai/prompt-input.cjs +2 -0
- package/dist/ai/prompt-input.cjs.map +1 -0
- package/dist/ai/prompt-input.js +776 -0
- package/dist/ai/prompt-input.js.map +1 -0
- package/dist/ai/queue.cjs +2 -0
- package/dist/ai/queue.cjs.map +1 -0
- package/dist/ai/queue.js +209 -0
- package/dist/ai/queue.js.map +1 -0
- package/dist/ai/reasoning.cjs +2 -0
- package/dist/ai/reasoning.cjs.map +1 -0
- package/dist/ai/reasoning.js +129 -0
- package/dist/ai/reasoning.js.map +1 -0
- package/dist/ai/shimmer.cjs +2 -0
- package/dist/ai/shimmer.cjs.map +1 -0
- package/dist/ai/shimmer.js +49 -0
- package/dist/ai/shimmer.js.map +1 -0
- package/dist/ai/sources.cjs +2 -0
- package/dist/ai/sources.cjs.map +1 -0
- package/dist/ai/sources.js +54 -0
- package/dist/ai/sources.js.map +1 -0
- package/dist/ai/speech-input.cjs +2 -0
- package/dist/ai/speech-input.cjs.map +1 -0
- package/dist/ai/speech-input.js +123 -0
- package/dist/ai/speech-input.js.map +1 -0
- package/dist/ai/stream-status.cjs +2 -0
- package/dist/ai/stream-status.cjs.map +1 -0
- package/dist/ai/stream-status.js +108 -0
- package/dist/ai/stream-status.js.map +1 -0
- package/dist/ai/suggestion.cjs +2 -0
- package/dist/ai/suggestion.cjs.map +1 -0
- package/dist/ai/suggestion.js +38 -0
- package/dist/ai/suggestion.js.map +1 -0
- package/dist/ai/task.cjs +2 -0
- package/dist/ai/task.cjs.map +1 -0
- package/dist/ai/task.js +101 -0
- package/dist/ai/task.js.map +1 -0
- package/dist/ai/tool.cjs +2 -0
- package/dist/ai/tool.cjs.map +1 -0
- package/dist/ai/tool.js +139 -0
- package/dist/ai/tool.js.map +1 -0
- package/dist/charts/AreaPlot.cjs +2 -0
- package/dist/charts/AreaPlot.cjs.map +1 -0
- package/dist/charts/AreaPlot.js +5 -0
- package/dist/charts/AreaPlot.js.map +1 -0
- package/dist/charts/BarChart.cjs +2 -0
- package/dist/charts/BarChart.cjs.map +1 -0
- package/dist/charts/BarChart.js +5 -0
- package/dist/charts/BarChart.js.map +1 -0
- package/dist/charts/BoxPlot.cjs +2 -0
- package/dist/charts/BoxPlot.cjs.map +1 -0
- package/dist/charts/BoxPlot.js +5 -0
- package/dist/charts/BoxPlot.js.map +1 -0
- package/dist/charts/ChartTooltip.cjs +2 -0
- package/dist/charts/ChartTooltip.cjs.map +1 -0
- package/dist/charts/ChartTooltip.js +8 -0
- package/dist/charts/ChartTooltip.js.map +1 -0
- package/dist/charts/Chromatogram.cjs +2 -0
- package/dist/charts/Chromatogram.cjs.map +1 -0
- package/dist/charts/Chromatogram.js +5 -0
- package/dist/charts/Chromatogram.js.map +1 -0
- package/dist/charts/Electropherogram.cjs +2 -0
- package/dist/charts/Electropherogram.cjs.map +1 -0
- package/dist/charts/Electropherogram.js +5 -0
- package/dist/charts/Electropherogram.js.map +1 -0
- package/dist/charts/Histogram.cjs +2 -0
- package/dist/charts/Histogram.cjs.map +1 -0
- package/dist/charts/Histogram.js +5 -0
- package/dist/charts/Histogram.js.map +1 -0
- package/dist/charts/LinePlot.cjs +2 -0
- package/dist/charts/LinePlot.cjs.map +1 -0
- package/dist/charts/LinePlot.js +5 -0
- package/dist/charts/LinePlot.js.map +1 -0
- package/dist/charts/PieChart.cjs +2 -0
- package/dist/charts/PieChart.cjs.map +1 -0
- package/dist/charts/PieChart.js +5 -0
- package/dist/charts/PieChart.js.map +1 -0
- package/dist/charts/PlateMap.cjs +2 -0
- package/dist/charts/PlateMap.cjs.map +1 -0
- package/dist/charts/PlateMap.js +5 -0
- package/dist/charts/PlateMap.js.map +1 -0
- package/dist/charts/ScatterPlot.cjs +2 -0
- package/dist/charts/ScatterPlot.cjs.map +1 -0
- package/dist/charts/ScatterPlot.js +5 -0
- package/dist/charts/ScatterPlot.js.map +1 -0
- package/dist/charts/ScatterPlotInteractive.cjs +2 -0
- package/dist/charts/ScatterPlotInteractive.cjs.map +1 -0
- package/dist/charts/ScatterPlotInteractive.js +14 -0
- package/dist/charts/ScatterPlotInteractive.js.map +1 -0
- package/dist/charts/StackedChromatogram.cjs +2 -0
- package/dist/charts/StackedChromatogram.cjs.map +1 -0
- package/dist/charts/StackedChromatogram.js +7 -0
- package/dist/charts/StackedChromatogram.js.map +1 -0
- package/dist/components/ai/attachments.d.ts +54 -0
- package/dist/components/ai/chain-of-thought.d.ts +56 -0
- package/dist/components/ai/confirmation.d.ts +47 -0
- package/dist/components/ai/context.d.ts +40 -0
- package/dist/components/ai/conversation.d.ts +23 -0
- package/dist/components/ai/inline-citation.d.ts +38 -0
- package/dist/components/ai/message.d.ts +37 -0
- package/dist/components/ai/model-selector.d.ts +36 -0
- package/dist/components/ai/prompt-input.d.ts +158 -0
- package/dist/components/ai/queue.d.ts +72 -0
- package/dist/components/ai/reasoning.d.ts +26 -0
- package/dist/components/ai/shimmer.d.ts +17 -0
- package/dist/components/ai/sources.d.ts +12 -0
- package/dist/components/ai/speech-input.d.ts +54 -0
- package/dist/components/ai/stream-status.d.ts +66 -0
- package/dist/components/ai/streamdown-code-plugin.cjs +2 -0
- package/dist/components/ai/streamdown-code-plugin.cjs.map +1 -0
- package/dist/components/ai/streamdown-code-plugin.d.ts +2 -0
- package/dist/components/ai/streamdown-code-plugin.js +42 -0
- package/dist/components/ai/streamdown-code-plugin.js.map +1 -0
- package/dist/components/ai/streamdown-plugins.cjs +2 -0
- package/dist/components/ai/streamdown-plugins.cjs.map +1 -0
- package/dist/components/ai/streamdown-plugins.d.ts +2 -0
- package/dist/components/ai/streamdown-plugins.js +14 -0
- package/dist/components/ai/streamdown-plugins.js.map +1 -0
- package/dist/components/ai/suggestion.d.ts +9 -0
- package/dist/components/ai/task.d.ts +16 -0
- package/dist/components/ai/tool.d.ts +33 -0
- package/dist/components/ai/use-streamdown-plugins.cjs +2 -0
- package/dist/components/ai/use-streamdown-plugins.cjs.map +1 -0
- package/dist/components/ai/use-streamdown-plugins.d.ts +8 -0
- package/dist/components/ai/use-streamdown-plugins.js +25 -0
- package/dist/components/ai/use-streamdown-plugins.js.map +1 -0
- package/dist/components/charts/AreaPlot/AreaPlot.cjs +2 -0
- package/dist/components/charts/AreaPlot/AreaPlot.cjs.map +1 -0
- package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
- package/dist/components/charts/AreaPlot/AreaPlot.js +270 -0
- package/dist/components/charts/AreaPlot/AreaPlot.js.map +1 -0
- package/dist/components/charts/AreaPlot/index.d.ts +2 -0
- package/dist/components/charts/BarChart/BarChart.cjs +2 -0
- package/dist/components/charts/BarChart/BarChart.cjs.map +1 -0
- package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
- package/dist/components/charts/BarChart/BarChart.js +219 -0
- package/dist/components/charts/BarChart/BarChart.js.map +1 -0
- package/dist/components/charts/BarChart/index.d.ts +2 -0
- package/dist/components/charts/BoxPlot/BoxPlot.cjs +2 -0
- package/dist/components/charts/BoxPlot/BoxPlot.cjs.map +1 -0
- package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
- package/dist/components/charts/BoxPlot/BoxPlot.js +208 -0
- package/dist/components/charts/BoxPlot/BoxPlot.js.map +1 -0
- package/dist/components/charts/BoxPlot/index.d.ts +2 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.js +22 -22
- package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
- package/dist/components/charts/ChartTooltip/index.d.ts +2 -0
- package/dist/components/charts/ChartTooltip/lines.d.ts +54 -0
- package/dist/components/charts/Chromatogram/Chromatogram.cjs +1 -1
- package/dist/components/charts/Chromatogram/Chromatogram.cjs.map +1 -1
- package/dist/components/charts/Chromatogram/Chromatogram.d.ts +5 -0
- package/dist/components/charts/Chromatogram/Chromatogram.js +232 -170
- package/dist/components/charts/Chromatogram/Chromatogram.js.map +1 -1
- package/dist/components/charts/Chromatogram/annotations.cjs +2 -0
- package/dist/components/charts/Chromatogram/annotations.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
- package/dist/components/charts/Chromatogram/annotations.js +137 -0
- package/dist/components/charts/Chromatogram/annotations.js.map +1 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +2 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.js +34 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.js.map +1 -0
- package/dist/components/charts/Chromatogram/constants.cjs +2 -0
- package/dist/components/charts/Chromatogram/constants.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
- package/dist/components/charts/Chromatogram/constants.js +36 -0
- package/dist/components/charts/Chromatogram/constants.js.map +1 -0
- package/dist/components/charts/Chromatogram/dataProcessing.cjs +2 -0
- package/dist/components/charts/Chromatogram/dataProcessing.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
- package/dist/components/charts/Chromatogram/dataProcessing.js +90 -0
- package/dist/components/charts/Chromatogram/dataProcessing.js.map +1 -0
- package/dist/components/charts/Chromatogram/index.d.ts +2 -0
- package/dist/components/charts/Chromatogram/peakDetection.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
- package/dist/components/charts/Chromatogram/peakDetection.js.map +1 -0
- package/dist/components/charts/Chromatogram/plotBuilder.cjs +2 -0
- package/dist/components/charts/Chromatogram/plotBuilder.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
- package/dist/components/charts/Chromatogram/plotBuilder.js +216 -0
- package/dist/components/charts/Chromatogram/plotBuilder.js.map +1 -0
- package/dist/components/charts/Chromatogram/regionOverlays.cjs +2 -0
- package/dist/components/charts/Chromatogram/regionOverlays.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
- package/dist/components/charts/Chromatogram/regionOverlays.js +26 -0
- package/dist/components/charts/Chromatogram/regionOverlays.js.map +1 -0
- package/dist/components/charts/Chromatogram/types.d.ts +258 -0
- package/dist/components/charts/Electropherogram/Electropherogram.cjs +2 -0
- package/dist/components/charts/Electropherogram/Electropherogram.cjs.map +1 -0
- package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -0
- package/dist/components/charts/Electropherogram/Electropherogram.js +180 -0
- package/dist/components/charts/Electropherogram/Electropherogram.js.map +1 -0
- package/dist/components/charts/Electropherogram/index.d.ts +2 -0
- package/dist/components/charts/Histogram/Histogram.cjs +1 -1
- package/dist/components/charts/Histogram/Histogram.cjs.map +1 -1
- package/dist/components/charts/Histogram/Histogram.d.ts +36 -0
- package/dist/components/charts/Histogram/Histogram.js +107 -108
- package/dist/components/charts/Histogram/Histogram.js.map +1 -1
- package/dist/components/charts/Histogram/index.d.ts +2 -0
- package/dist/components/charts/LinePlot/LinePlot.cjs +2 -0
- package/dist/components/charts/LinePlot/LinePlot.cjs.map +1 -0
- package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
- package/dist/components/charts/LinePlot/LinePlot.js +224 -0
- package/dist/components/charts/LinePlot/LinePlot.js.map +1 -0
- package/dist/components/charts/LinePlot/index.d.ts +2 -0
- package/dist/components/charts/PieChart/PieChart.cjs +1 -1
- package/dist/components/charts/PieChart/PieChart.cjs.map +1 -1
- package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
- package/dist/components/charts/PieChart/PieChart.js +62 -61
- package/dist/components/charts/PieChart/PieChart.js.map +1 -1
- package/dist/components/charts/PieChart/index.d.ts +2 -0
- package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
- package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
- package/dist/components/charts/PlateMap/PlateMap.d.ts +29 -0
- package/dist/components/charts/PlateMap/PlateMap.js +246 -242
- package/dist/components/charts/PlateMap/PlateMap.js.map +1 -1
- package/dist/components/charts/PlateMap/constants.d.ts +75 -0
- package/dist/components/charts/PlateMap/index.d.ts +2 -0
- package/dist/components/charts/PlateMap/types.d.ts +322 -0
- package/dist/components/charts/PlateMap/utils.d.ts +133 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +2 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.cjs.map +1 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +252 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js.map +1 -0
- package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js +215 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.js +38 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.js.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/index.d.ts +3 -0
- package/dist/components/charts/ScatterPlotInteractive/types.d.ts +226 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.d.ts +72 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.js +261 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs +2 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs.map +1 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.js +40 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
- package/dist/components/charts/StackedChromatogram/transforms.cjs +2 -0
- package/dist/components/charts/StackedChromatogram/transforms.cjs.map +1 -0
- package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
- package/dist/components/charts/StackedChromatogram/transforms.js +31 -0
- package/dist/components/charts/StackedChromatogram/transforms.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
- package/dist/components/charts/plotly-loader.cjs +2 -0
- package/dist/components/charts/plotly-loader.cjs.map +1 -0
- package/dist/components/charts/plotly-loader.d.ts +29 -0
- package/dist/components/charts/plotly-loader.js +22 -0
- package/dist/components/charts/plotly-loader.js.map +1 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +2 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.js +142 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.js.map +1 -0
- package/dist/components/composed/AssistantLayout/dockLayout.cjs +2 -0
- package/dist/components/composed/AssistantLayout/dockLayout.cjs.map +1 -0
- package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -0
- package/dist/components/composed/AssistantLayout/dockLayout.js +10 -0
- package/dist/components/composed/AssistantLayout/dockLayout.js.map +1 -0
- package/dist/components/composed/AssistantLayout/index.d.ts +3 -0
- package/dist/components/composed/Chat/Chat.cjs +1 -1
- package/dist/components/composed/Chat/Chat.cjs.map +1 -1
- package/dist/components/composed/Chat/Chat.d.ts +35 -0
- package/dist/components/composed/Chat/Chat.js +28 -28
- package/dist/components/composed/Chat/Chat.js.map +1 -1
- package/dist/components/composed/Chat/index.d.ts +2 -0
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.d.ts +23 -0
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +33 -29
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.js.map +1 -1
- package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
- package/dist/components/composed/DataAppShell/CollapseButton.cjs +2 -0
- package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
- package/dist/components/composed/DataAppShell/CollapseButton.js +42 -0
- package/dist/components/composed/DataAppShell/CollapseButton.js.map +1 -0
- package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
- package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
- package/dist/components/composed/DataAppShell/DataAppShell.d.ts +88 -0
- package/dist/components/composed/DataAppShell/DataAppShell.js +350 -328
- package/dist/components/composed/DataAppShell/DataAppShell.js.map +1 -1
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs +2 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.js +268 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.js.map +1 -0
- package/dist/components/composed/DataAppShell/RightPanel.cjs +2 -0
- package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
- package/dist/components/composed/DataAppShell/RightPanel.js +282 -0
- package/dist/components/composed/DataAppShell/RightPanel.js.map +1 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs +2 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.js +364 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.js.map +1 -0
- package/dist/components/composed/DataAppShell/ShellContext.cjs +2 -0
- package/dist/components/composed/DataAppShell/ShellContext.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -0
- package/dist/components/composed/DataAppShell/ShellContext.js +23 -0
- package/dist/components/composed/DataAppShell/ShellContext.js.map +1 -0
- package/dist/components/composed/DataAppShell/index.d.ts +12 -0
- package/dist/components/composed/EmptyState/EmptyState.d.ts +12 -0
- package/dist/components/composed/EmptyState/index.d.ts +2 -0
- package/dist/components/composed/FormPatterns/FormSection.cjs +1 -1
- package/dist/components/composed/FormPatterns/FormSection.cjs.map +1 -1
- package/dist/components/composed/FormPatterns/FormSection.d.ts +7 -0
- package/dist/components/composed/FormPatterns/FormSection.js +2 -2
- package/dist/components/composed/FormPatterns/index.d.ts +1 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +87 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.js.map +1 -0
- package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.js +89 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.js.map +1 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.js +19 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.d.ts +12 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +21 -21
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.d.ts +22 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +34 -34
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.d.ts +106 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +2 -2
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapForm.d.ts +30 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.d.ts +64 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.d.ts +29 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.d.ts +19 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +11 -11
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.d.ts +12 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +2 -2
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.d.ts +13 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +4 -4
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellLegend.d.ts +21 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js +24 -12
- package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.d.ts +46 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js +10 -10
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.d.ts +17 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +7 -7
- package/dist/components/composed/PlateMapEditor/autoFill.d.ts +26 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.d.ts +4 -0
- package/dist/components/composed/PlateMapEditor/helpers.d.ts +2 -0
- package/dist/components/composed/PlateMapEditor/index.d.ts +31 -0
- package/dist/components/composed/PlateMapEditor/types.d.ts +137 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.d.ts +12 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.d.ts +32 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.d.ts +86 -0
- package/dist/components/composed/ProcessFlow/index.d.ts +1 -0
- package/dist/components/composed/RichListItem/RichListItem.cjs +1 -1
- package/dist/components/composed/RichListItem/RichListItem.cjs.map +1 -1
- package/dist/components/composed/RichListItem/RichListItem.d.ts +22 -0
- package/dist/components/composed/RichListItem/RichListItem.js +2 -2
- package/dist/components/composed/RichListItem/index.d.ts +2 -0
- package/dist/components/composed/StatCard/StatCard.cjs +1 -1
- package/dist/components/composed/StatCard/StatCard.cjs.map +1 -1
- package/dist/components/composed/StatCard/StatCard.d.ts +11 -0
- package/dist/components/composed/StatCard/StatCard.js +1 -1
- package/dist/components/composed/StatCard/index.d.ts +1 -0
- package/dist/components/composed/TdpSearch/TdpSearch.cjs +1 -1
- package/dist/components/composed/TdpSearch/TdpSearch.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/TdpSearch.d.ts +21 -0
- package/dist/components/composed/TdpSearch/TdpSearch.js +14 -13
- package/dist/components/composed/TdpSearch/TdpSearch.mocks.d.ts +5 -0
- package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultFilters.d.ts +3 -0
- package/dist/components/composed/TdpSearch/components/DefaultFilters.js +4 -4
- package/dist/components/composed/TdpSearch/components/DefaultFilters.js.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultResults.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultResults.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultResults.d.ts +3 -0
- package/dist/components/composed/TdpSearch/components/DefaultResults.js +2 -2
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.d.ts +3 -0
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.js +2 -2
- package/dist/components/composed/TdpSearch/constants.d.ts +3 -0
- package/dist/components/composed/TdpSearch/hooks/useSearch.d.ts +2 -0
- package/dist/components/composed/TdpSearch/hooks/useTdpCredentials.d.ts +14 -0
- package/dist/components/composed/TdpSearch/index.d.ts +3 -0
- package/dist/components/composed/TdpSearch/types.d.ts +128 -0
- package/dist/components/composed/TdpSearch/utils.d.ts +3 -0
- package/dist/components/composed/TopBar/TopBar.cjs +2 -0
- package/dist/components/composed/TopBar/TopBar.cjs.map +1 -0
- package/dist/components/composed/TopBar/TopBar.d.ts +25 -0
- package/dist/components/composed/TopBar/TopBar.js +56 -0
- package/dist/components/composed/TopBar/TopBar.js.map +1 -0
- package/dist/components/composed/TopBar/index.d.ts +2 -0
- package/dist/components/composed/UserMenu/UserMenu.cjs +2 -0
- package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -0
- package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
- package/dist/components/composed/UserMenu/UserMenu.js +99 -0
- package/dist/components/composed/UserMenu/UserMenu.js.map +1 -0
- package/dist/components/composed/UserMenu/index.d.ts +2 -0
- package/dist/components/composed/tdp-link.d.ts +110 -0
- package/dist/components/composed/tdp-url.d.ts +68 -0
- package/dist/components/ui/accordion.d.ts +7 -0
- package/dist/components/ui/alert-dialog.d.ts +18 -0
- package/dist/components/ui/alert.d.ts +10 -0
- package/dist/components/ui/aspect-ratio.d.ts +3 -0
- package/dist/components/ui/avatar.d.ts +11 -0
- package/dist/components/ui/badge.d.ts +9 -0
- package/dist/components/ui/banner.d.ts +19 -0
- package/dist/components/ui/breadcrumb.d.ts +11 -0
- package/dist/components/ui/button-group.d.ts +11 -0
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/calendar.d.ts +10 -0
- package/dist/components/ui/card.d.ts +11 -0
- package/dist/components/ui/carousel.d.ts +28 -0
- package/dist/components/ui/checkbox.d.ts +4 -0
- package/dist/components/ui/code-block.d.ts +45 -0
- package/dist/components/ui/code-editor.d.ts +18 -0
- package/dist/components/ui/collapsible.d.ts +5 -0
- package/dist/components/ui/combobox.d.ts +24 -0
- package/dist/components/ui/command.d.ts +18 -0
- package/dist/components/ui/context-menu.d.ts +31 -0
- package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
- package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-column-toggle.d.ts +6 -0
- package/dist/components/ui/data-table/data-table-column-toggle.js +71 -63
- package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -1
- package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
- package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-filter.d.ts +9 -0
- package/dist/components/ui/data-table/data-table-filter.js +26 -25
- package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-group.d.ts +9 -0
- package/dist/components/ui/data-table/data-table-group.js +18 -17
- package/dist/components/ui/data-table/data-table-group.js.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.d.ts +7 -0
- package/dist/components/ui/data-table/data-table-pagination.js +16 -16
- package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/ui/data-table/data-table.cjs +1 -1
- package/dist/components/ui/data-table/data-table.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table.d.ts +82 -0
- package/dist/components/ui/data-table/data-table.js +191 -190
- package/dist/components/ui/data-table/data-table.js.map +1 -1
- package/dist/components/ui/data-table/index.d.ts +5 -0
- package/dist/components/ui/dialog.d.ts +18 -0
- package/dist/components/ui/dropdown-menu.d.ts +29 -0
- package/dist/components/ui/field.d.ts +24 -0
- package/dist/components/ui/hover-card.d.ts +6 -0
- package/dist/components/ui/input-group.d.ts +16 -0
- package/dist/components/ui/input.d.ts +3 -0
- package/dist/components/ui/item.d.ts +23 -0
- package/dist/components/ui/kbd.d.ts +3 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/components/ui/menubar.d.ts +30 -0
- package/dist/components/ui/navigation-menu.d.ts +14 -0
- package/dist/components/ui/popover.d.ts +7 -0
- package/dist/components/ui/progress.d.ts +4 -0
- package/dist/components/ui/radio-group.d.ts +5 -0
- package/dist/components/ui/resizable.d.ts +25 -0
- package/dist/components/ui/scroll-area.d.ts +5 -0
- package/dist/components/ui/select.d.ts +15 -0
- package/dist/components/ui/separator.d.ts +4 -0
- package/dist/components/ui/sheet.d.ts +14 -0
- package/dist/components/ui/sidebar.d.ts +69 -0
- package/dist/components/ui/skeleton.d.ts +2 -0
- package/dist/components/ui/slider.d.ts +4 -0
- package/dist/components/ui/snippet.d.ts +18 -0
- package/dist/components/ui/sonner.d.ts +3 -0
- package/dist/components/ui/spinner.d.ts +6 -0
- package/dist/components/ui/switch.d.ts +6 -0
- package/dist/components/ui/table.d.ts +22 -0
- package/dist/components/ui/tabs.d.ts +11 -0
- package/dist/components/ui/tetra-molecule-icon.d.ts +11 -0
- package/dist/components/ui/tetrascience-icon.d.ts +7 -0
- package/dist/components/ui/textarea.d.ts +3 -0
- package/dist/components/ui/toggle-group.d.ts +10 -0
- package/dist/components/ui/toggle.d.ts +9 -0
- package/dist/components/ui/tooltip.d.ts +7 -0
- package/dist/composed/AssistantLayout.cjs +2 -0
- package/dist/composed/AssistantLayout.cjs.map +1 -0
- package/dist/composed/AssistantLayout.js +10 -0
- package/dist/composed/AssistantLayout.js.map +1 -0
- package/dist/composed/Chat.cjs +2 -0
- package/dist/composed/Chat.cjs.map +1 -0
- package/dist/composed/Chat.js +5 -0
- package/dist/composed/Chat.js.map +1 -0
- package/dist/composed/ConfirmDialog.cjs +2 -0
- package/dist/composed/ConfirmDialog.cjs.map +1 -0
- package/dist/composed/ConfirmDialog.js +5 -0
- package/dist/composed/ConfirmDialog.js.map +1 -0
- package/dist/composed/DataAppShell.cjs +2 -0
- package/dist/composed/DataAppShell.cjs.map +1 -0
- package/dist/composed/DataAppShell.js +22 -0
- package/dist/composed/DataAppShell.js.map +1 -0
- package/dist/composed/EmptyState.cjs +2 -0
- package/dist/composed/EmptyState.cjs.map +1 -0
- package/dist/composed/EmptyState.js +5 -0
- package/dist/composed/EmptyState.js.map +1 -0
- package/dist/composed/FormPatterns.cjs +2 -0
- package/dist/composed/FormPatterns.cjs.map +1 -0
- package/dist/composed/FormPatterns.js +5 -0
- package/dist/composed/FormPatterns.js.map +1 -0
- package/dist/composed/MoleculeStructure.cjs +2 -0
- package/dist/composed/MoleculeStructure.cjs.map +1 -0
- package/dist/composed/MoleculeStructure.js +11 -0
- package/dist/composed/MoleculeStructure.js.map +1 -0
- package/dist/composed/PlateMapEditor.cjs +2 -0
- package/dist/composed/PlateMapEditor.cjs.map +1 -0
- package/dist/composed/PlateMapEditor.js +45 -0
- package/dist/composed/PlateMapEditor.js.map +1 -0
- package/dist/composed/ProcessFlow.cjs +2 -0
- package/dist/composed/ProcessFlow.cjs.map +1 -0
- package/dist/composed/ProcessFlow.js +7 -0
- package/dist/composed/ProcessFlow.js.map +1 -0
- package/dist/composed/RichListItem.cjs +2 -0
- package/dist/composed/RichListItem.cjs.map +1 -0
- package/dist/composed/RichListItem.js +6 -0
- package/dist/composed/RichListItem.js.map +1 -0
- package/dist/composed/StatCard.cjs +2 -0
- package/dist/composed/StatCard.cjs.map +1 -0
- package/dist/composed/StatCard.js +5 -0
- package/dist/composed/StatCard.js.map +1 -0
- package/dist/composed/TdpSearch.cjs +2 -0
- package/dist/composed/TdpSearch.cjs.map +1 -0
- package/dist/composed/TdpSearch.js +8 -0
- package/dist/composed/TdpSearch.js.map +1 -0
- package/dist/composed/TopBar.cjs +2 -0
- package/dist/composed/TopBar.cjs.map +1 -0
- package/dist/composed/TopBar.js +6 -0
- package/dist/composed/TopBar.js.map +1 -0
- package/dist/composed/UserMenu.cjs +2 -0
- package/dist/composed/UserMenu.cjs.map +1 -0
- package/dist/composed/UserMenu.js +7 -0
- package/dist/composed/UserMenu.js.map +1 -0
- package/dist/composed/tdp-link.cjs +2 -0
- package/dist/composed/tdp-link.cjs.map +1 -0
- package/dist/composed/tdp-link.js +84 -0
- package/dist/composed/tdp-link.js.map +1 -0
- package/dist/composed/tdp-url.cjs.map +1 -0
- package/dist/composed/tdp-url.js.map +1 -0
- package/dist/hooks/use-code-editor-theme.d.ts +34 -0
- package/dist/hooks/use-element-size.d.ts +25 -0
- package/dist/hooks/use-is-dark.d.ts +12 -0
- package/dist/hooks/use-mobile.d.ts +1 -0
- package/dist/hooks/use-plotly-theme.cjs +1 -1
- package/dist/hooks/use-plotly-theme.cjs.map +1 -1
- package/dist/hooks/use-plotly-theme.d.ts +49 -0
- package/dist/hooks/use-plotly-theme.js +4 -3
- package/dist/hooks/use-plotly-theme.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +102 -4404
- package/dist/index.js +698 -659
- package/dist/index.js.map +1 -1
- package/dist/index.tailwind.css +1 -1
- package/dist/jest-setup.cjs +4 -0
- package/dist/jest-setup.cjs.map +1 -0
- package/dist/jest-setup.d.ts +106 -0
- package/dist/jest-setup.js +218 -0
- package/dist/jest-setup.js.map +1 -0
- package/dist/lib/shiki.cjs +2 -0
- package/dist/lib/shiki.cjs.map +1 -0
- package/dist/lib/shiki.d.ts +32 -0
- package/dist/lib/shiki.js +72 -0
- package/dist/lib/shiki.js.map +1 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/server/auth/JwtTokenManager.cjs +1 -1
- package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
- package/dist/server/auth/JwtTokenManager.d.ts +113 -0
- package/dist/server/auth/JwtTokenManager.js +44 -21
- package/dist/server/auth/JwtTokenManager.js.map +1 -1
- package/dist/server/auth/index.d.ts +5 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/providers/AthenaProvider.cjs +1 -1
- package/dist/server/providers/AthenaProvider.cjs.map +1 -1
- package/dist/server/providers/AthenaProvider.d.ts +75 -0
- package/dist/server/providers/DatabricksProvider.cjs +1 -1
- package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
- package/dist/server/providers/DatabricksProvider.d.ts +38 -0
- package/dist/server/providers/SnowflakeProvider.cjs +1 -1
- package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
- package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
- package/dist/server/providers/buildProvider.d.ts +39 -0
- package/dist/server/providers/entries/athena.d.ts +24 -0
- package/dist/server/providers/entries/databricks.d.ts +25 -0
- package/dist/server/providers/entries/snowflake.d.ts +25 -0
- package/dist/server/providers/exceptions.d.ts +36 -0
- package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
- package/dist/server/providers/index.d.ts +31 -0
- package/dist/server/providers/providerDiscovery.d.ts +81 -0
- package/dist/server/providers/types.d.ts +145 -0
- package/dist/server/search/TdpSearchManager.d.ts +40 -0
- package/dist/server/search/index.d.ts +5 -0
- package/dist/server.d.ts +17 -540
- package/dist/ui/accordion.cjs +2 -0
- package/dist/ui/accordion.cjs.map +1 -0
- package/dist/ui/accordion.js +83 -0
- package/dist/ui/accordion.js.map +1 -0
- package/dist/ui/alert-dialog.cjs +2 -0
- package/dist/ui/alert-dialog.cjs.map +1 -0
- package/dist/ui/alert-dialog.js +181 -0
- package/dist/ui/alert-dialog.js.map +1 -0
- package/dist/ui/alert.cjs +2 -0
- package/dist/ui/alert.cjs.map +1 -0
- package/dist/ui/alert.js +81 -0
- package/dist/ui/alert.js.map +1 -0
- package/dist/ui/aspect-ratio.cjs.map +1 -0
- package/dist/ui/aspect-ratio.js.map +1 -0
- package/dist/ui/avatar.cjs +2 -0
- package/dist/ui/avatar.cjs.map +1 -0
- package/dist/ui/avatar.js +107 -0
- package/dist/ui/avatar.js.map +1 -0
- package/dist/ui/badge.cjs +2 -0
- package/dist/ui/badge.cjs.map +1 -0
- package/dist/ui/badge.js +47 -0
- package/dist/ui/badge.js.map +1 -0
- package/dist/ui/banner.cjs +2 -0
- package/dist/ui/banner.cjs.map +1 -0
- package/dist/ui/banner.js +80 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/ui/breadcrumb.cjs +2 -0
- package/dist/ui/breadcrumb.cjs.map +1 -0
- package/dist/ui/breadcrumb.js +118 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/button-group.cjs +2 -0
- package/dist/ui/button-group.cjs.map +1 -0
- package/dist/ui/button-group.js +77 -0
- package/dist/ui/button-group.js.map +1 -0
- package/dist/ui/button.cjs +2 -0
- package/dist/ui/button.cjs.map +1 -0
- package/dist/ui/button.js +57 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/calendar.cjs +2 -0
- package/dist/ui/calendar.cjs.map +1 -0
- package/dist/ui/calendar.js +174 -0
- package/dist/ui/calendar.js.map +1 -0
- package/dist/ui/card.cjs +2 -0
- package/dist/ui/card.cjs.map +1 -0
- package/dist/ui/card.js +102 -0
- package/dist/ui/card.js.map +1 -0
- package/dist/ui/carousel.cjs +2 -0
- package/dist/ui/carousel.cjs.map +1 -0
- package/dist/ui/carousel.js +179 -0
- package/dist/ui/carousel.js.map +1 -0
- package/dist/ui/checkbox.cjs +2 -0
- package/dist/ui/checkbox.cjs.map +1 -0
- package/dist/ui/checkbox.js +35 -0
- package/dist/ui/checkbox.js.map +1 -0
- package/dist/ui/code-block.cjs +4 -0
- package/dist/ui/code-block.cjs.map +1 -0
- package/dist/ui/code-block.js +324 -0
- package/dist/ui/code-block.js.map +1 -0
- package/dist/ui/code-editor.cjs +2 -0
- package/dist/ui/code-editor.cjs.map +1 -0
- package/dist/ui/code-editor.js +106 -0
- package/dist/ui/code-editor.js.map +1 -0
- package/dist/ui/collapsible.cjs.map +1 -0
- package/dist/ui/collapsible.js.map +1 -0
- package/dist/ui/combobox.cjs +2 -0
- package/dist/ui/combobox.cjs.map +1 -0
- package/dist/ui/combobox.js +285 -0
- package/dist/ui/combobox.js.map +1 -0
- package/dist/ui/command.cjs +2 -0
- package/dist/ui/command.cjs.map +1 -0
- package/dist/ui/command.js +178 -0
- package/dist/ui/command.js.map +1 -0
- package/dist/ui/context-menu.cjs +2 -0
- package/dist/ui/context-menu.cjs.map +1 -0
- package/dist/ui/context-menu.js +236 -0
- package/dist/ui/context-menu.js.map +1 -0
- package/dist/ui/data-table.cjs +2 -0
- package/dist/ui/data-table.cjs.map +1 -0
- package/dist/ui/data-table.js +16 -0
- package/dist/ui/data-table.js.map +1 -0
- package/dist/ui/dialog.cjs +2 -0
- package/dist/ui/dialog.cjs.map +1 -0
- package/dist/ui/dialog.js +165 -0
- package/dist/ui/dialog.js.map +1 -0
- package/dist/ui/dropdown-menu.cjs +2 -0
- package/dist/ui/dropdown-menu.cjs.map +1 -0
- package/dist/ui/dropdown-menu.js +260 -0
- package/dist/ui/dropdown-menu.js.map +1 -0
- package/dist/ui/field.cjs +2 -0
- package/dist/ui/field.cjs.map +1 -0
- package/dist/ui/field.js +210 -0
- package/dist/ui/field.js.map +1 -0
- package/dist/ui/hover-card.cjs +2 -0
- package/dist/ui/hover-card.cjs.map +1 -0
- package/dist/ui/hover-card.js +39 -0
- package/dist/ui/hover-card.js.map +1 -0
- package/dist/ui/input-group.cjs +2 -0
- package/dist/ui/input-group.cjs.map +1 -0
- package/dist/ui/input-group.js +145 -0
- package/dist/ui/input-group.js.map +1 -0
- package/dist/ui/input.cjs +2 -0
- package/dist/ui/input.cjs.map +1 -0
- package/dist/ui/input.js +20 -0
- package/dist/ui/input.js.map +1 -0
- package/dist/ui/item.cjs +2 -0
- package/dist/ui/item.cjs.map +1 -0
- package/dist/ui/item.js +199 -0
- package/dist/ui/item.js.map +1 -0
- package/dist/ui/kbd.cjs +2 -0
- package/dist/ui/kbd.cjs.map +1 -0
- package/dist/ui/kbd.js +30 -0
- package/dist/ui/kbd.js.map +1 -0
- package/dist/ui/label.cjs +2 -0
- package/dist/ui/label.cjs.map +1 -0
- package/dist/ui/label.js +23 -0
- package/dist/ui/label.js.map +1 -0
- package/dist/ui/menubar.cjs +2 -0
- package/dist/ui/menubar.cjs.map +1 -0
- package/dist/ui/menubar.js +256 -0
- package/dist/ui/menubar.js.map +1 -0
- package/dist/ui/navigation-menu.cjs +2 -0
- package/dist/ui/navigation-menu.cjs.map +1 -0
- package/dist/ui/navigation-menu.js +164 -0
- package/dist/ui/navigation-menu.js.map +1 -0
- package/dist/ui/popover.cjs +2 -0
- package/dist/ui/popover.cjs.map +1 -0
- package/dist/ui/popover.js +45 -0
- package/dist/ui/popover.js.map +1 -0
- package/dist/ui/radio-group.cjs +2 -0
- package/dist/ui/radio-group.cjs.map +1 -0
- package/dist/ui/radio-group.js +45 -0
- package/dist/ui/radio-group.js.map +1 -0
- package/dist/ui/resizable.cjs +2 -0
- package/dist/ui/resizable.cjs.map +1 -0
- package/dist/ui/resizable.js +58 -0
- package/dist/ui/resizable.js.map +1 -0
- package/dist/ui/scroll-area.cjs +2 -0
- package/dist/ui/scroll-area.cjs.map +1 -0
- package/dist/ui/scroll-area.js +61 -0
- package/dist/ui/scroll-area.js.map +1 -0
- package/dist/ui/select.cjs +2 -0
- package/dist/ui/select.cjs.map +1 -0
- package/dist/ui/select.js +184 -0
- package/dist/ui/select.js.map +1 -0
- package/dist/ui/separator.cjs +2 -0
- package/dist/ui/separator.cjs.map +1 -0
- package/dist/ui/separator.js +27 -0
- package/dist/ui/separator.js.map +1 -0
- package/dist/ui/sheet.cjs +2 -0
- package/dist/ui/sheet.cjs.map +1 -0
- package/dist/ui/sheet.js +137 -0
- package/dist/ui/sheet.js.map +1 -0
- package/dist/ui/sidebar.cjs +2 -0
- package/dist/ui/sidebar.cjs.map +1 -0
- package/dist/ui/sidebar.js +579 -0
- package/dist/ui/sidebar.js.map +1 -0
- package/dist/ui/skeleton.cjs +2 -0
- package/dist/ui/skeleton.cjs.map +1 -0
- package/dist/ui/skeleton.js +24 -0
- package/dist/ui/skeleton.js.map +1 -0
- package/dist/ui/slider.cjs +2 -0
- package/dist/ui/slider.cjs.map +1 -0
- package/dist/ui/slider.js +61 -0
- package/dist/ui/slider.js.map +1 -0
- package/dist/ui/sonner.cjs +2 -0
- package/dist/ui/sonner.cjs.map +1 -0
- package/dist/ui/sonner.js +52 -0
- package/dist/ui/sonner.js.map +1 -0
- package/dist/ui/spinner.cjs +2 -0
- package/dist/ui/spinner.cjs.map +1 -0
- package/dist/ui/spinner.js +39 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/ui/switch.cjs +2 -0
- package/dist/ui/switch.cjs.map +1 -0
- package/dist/ui/switch.js +32 -0
- package/dist/ui/switch.js.map +1 -0
- package/dist/ui/table.cjs +2 -0
- package/dist/ui/table.cjs.map +1 -0
- package/dist/ui/table.js +153 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/tabs.cjs +2 -0
- package/dist/ui/tabs.cjs.map +1 -0
- package/dist/ui/tabs.js +92 -0
- package/dist/ui/tabs.js.map +1 -0
- package/dist/ui/tetra-molecule-icon.cjs +2 -0
- package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
- package/dist/ui/tetra-molecule-icon.js +50 -0
- package/dist/ui/tetra-molecule-icon.js.map +1 -0
- package/dist/ui/tetrascience-icon.cjs +2 -0
- package/dist/ui/tetrascience-icon.cjs.map +1 -0
- package/dist/ui/tetrascience-icon.js +47 -0
- package/dist/ui/tetrascience-icon.js.map +1 -0
- package/dist/ui/textarea.cjs +2 -0
- package/dist/ui/textarea.cjs.map +1 -0
- package/dist/ui/textarea.js +19 -0
- package/dist/ui/textarea.js.map +1 -0
- package/dist/ui/toggle-group.cjs +2 -0
- package/dist/ui/toggle-group.cjs.map +1 -0
- package/dist/ui/toggle-group.js +81 -0
- package/dist/ui/toggle-group.js.map +1 -0
- package/dist/ui/toggle.cjs +2 -0
- package/dist/ui/toggle.cjs.map +1 -0
- package/dist/ui/toggle.js +44 -0
- package/dist/ui/toggle.js.map +1 -0
- package/dist/ui/tooltip.cjs +2 -0
- package/dist/ui/tooltip.cjs.map +1 -0
- package/dist/ui/tooltip.js +56 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/utils/colors.d.ts +50 -0
- package/package.json +137 -24
- package/dist/athena.d.ts +0 -167
- package/dist/components/ai/attachments.cjs +0 -2
- package/dist/components/ai/attachments.cjs.map +0 -1
- package/dist/components/ai/attachments.js +0 -224
- package/dist/components/ai/attachments.js.map +0 -1
- package/dist/components/ai/chain-of-thought.cjs +0 -2
- package/dist/components/ai/chain-of-thought.cjs.map +0 -1
- package/dist/components/ai/chain-of-thought.js +0 -145
- package/dist/components/ai/chain-of-thought.js.map +0 -1
- package/dist/components/ai/confirmation.cjs +0 -2
- package/dist/components/ai/confirmation.cjs.map +0 -1
- package/dist/components/ai/confirmation.js +0 -109
- package/dist/components/ai/confirmation.js.map +0 -1
- package/dist/components/ai/context.cjs +0 -2
- package/dist/components/ai/context.cjs.map +0 -1
- package/dist/components/ai/context.js +0 -266
- package/dist/components/ai/context.js.map +0 -1
- package/dist/components/ai/conversation.cjs +0 -4
- package/dist/components/ai/conversation.cjs.map +0 -1
- package/dist/components/ai/conversation.js +0 -108
- package/dist/components/ai/conversation.js.map +0 -1
- package/dist/components/ai/inline-citation.cjs +0 -2
- package/dist/components/ai/inline-citation.cjs.map +0 -1
- package/dist/components/ai/inline-citation.js +0 -182
- package/dist/components/ai/inline-citation.js.map +0 -1
- package/dist/components/ai/message.cjs +0 -2
- package/dist/components/ai/message.cjs.map +0 -1
- package/dist/components/ai/message.js +0 -237
- package/dist/components/ai/message.js.map +0 -1
- package/dist/components/ai/model-selector.cjs +0 -2
- package/dist/components/ai/model-selector.cjs.map +0 -1
- package/dist/components/ai/model-selector.js +0 -77
- package/dist/components/ai/model-selector.js.map +0 -1
- package/dist/components/ai/prompt-input.cjs +0 -2
- package/dist/components/ai/prompt-input.cjs.map +0 -1
- package/dist/components/ai/prompt-input.js +0 -774
- package/dist/components/ai/prompt-input.js.map +0 -1
- package/dist/components/ai/queue.cjs +0 -2
- package/dist/components/ai/queue.cjs.map +0 -1
- package/dist/components/ai/queue.js +0 -209
- package/dist/components/ai/queue.js.map +0 -1
- package/dist/components/ai/reasoning.cjs +0 -2
- package/dist/components/ai/reasoning.cjs.map +0 -1
- package/dist/components/ai/reasoning.js +0 -129
- package/dist/components/ai/reasoning.js.map +0 -1
- package/dist/components/ai/shimmer.cjs +0 -2
- package/dist/components/ai/shimmer.cjs.map +0 -1
- package/dist/components/ai/shimmer.js +0 -49
- package/dist/components/ai/shimmer.js.map +0 -1
- package/dist/components/ai/sources.cjs +0 -2
- package/dist/components/ai/sources.cjs.map +0 -1
- package/dist/components/ai/sources.js +0 -54
- package/dist/components/ai/sources.js.map +0 -1
- package/dist/components/ai/speech-input.cjs +0 -2
- package/dist/components/ai/speech-input.cjs.map +0 -1
- package/dist/components/ai/speech-input.js +0 -123
- package/dist/components/ai/speech-input.js.map +0 -1
- package/dist/components/ai/stream-status.cjs +0 -2
- package/dist/components/ai/stream-status.cjs.map +0 -1
- package/dist/components/ai/stream-status.js +0 -106
- package/dist/components/ai/stream-status.js.map +0 -1
- package/dist/components/ai/suggestion.cjs +0 -2
- package/dist/components/ai/suggestion.cjs.map +0 -1
- package/dist/components/ai/suggestion.js +0 -38
- package/dist/components/ai/suggestion.js.map +0 -1
- package/dist/components/ai/task.cjs +0 -2
- package/dist/components/ai/task.cjs.map +0 -1
- package/dist/components/ai/task.js +0 -94
- package/dist/components/ai/task.js.map +0 -1
- package/dist/components/ai/tool.cjs +0 -2
- package/dist/components/ai/tool.cjs.map +0 -1
- package/dist/components/ai/tool.js +0 -143
- package/dist/components/ai/tool.js.map +0 -1
- package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
- package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
- package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
- package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
- package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
- package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
- package/dist/components/charts/BarGraph/BarGraph.js +0 -220
- package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
- package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
- package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
- package/dist/components/charts/Boxplot/Boxplot.js +0 -209
- package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -227
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/annotations.js +0 -73
- package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.js +0 -34
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/constants.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/constants.js +0 -30
- package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/dataProcessing.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/dataProcessing.js +0 -79
- package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
- package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
- package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
- package/dist/components/charts/DotPlot/DotPlot.js +0 -208
- package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
- package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
- package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
- package/dist/components/charts/Heatmap/Heatmap.js +0 -67
- package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
- package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
- package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
- package/dist/components/charts/LineGraph/LineGraph.js +0 -225
- package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
- package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
- package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
- package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
- package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
- package/dist/components/composed/tdp-link.cjs +0 -2
- package/dist/components/composed/tdp-link.cjs.map +0 -1
- package/dist/components/composed/tdp-link.js +0 -84
- package/dist/components/composed/tdp-link.js.map +0 -1
- package/dist/components/composed/tdp-url.cjs.map +0 -1
- package/dist/components/composed/tdp-url.js.map +0 -1
- package/dist/components/ui/accordion.cjs +0 -2
- package/dist/components/ui/accordion.cjs.map +0 -1
- package/dist/components/ui/accordion.js +0 -83
- package/dist/components/ui/accordion.js.map +0 -1
- package/dist/components/ui/alert-dialog.cjs +0 -2
- package/dist/components/ui/alert-dialog.cjs.map +0 -1
- package/dist/components/ui/alert-dialog.js +0 -181
- package/dist/components/ui/alert-dialog.js.map +0 -1
- package/dist/components/ui/alert.cjs +0 -2
- package/dist/components/ui/alert.cjs.map +0 -1
- package/dist/components/ui/alert.js +0 -81
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/aspect-ratio.cjs.map +0 -1
- package/dist/components/ui/aspect-ratio.js.map +0 -1
- package/dist/components/ui/avatar.cjs +0 -2
- package/dist/components/ui/avatar.cjs.map +0 -1
- package/dist/components/ui/avatar.js +0 -107
- package/dist/components/ui/avatar.js.map +0 -1
- package/dist/components/ui/badge.cjs +0 -2
- package/dist/components/ui/badge.cjs.map +0 -1
- package/dist/components/ui/badge.js +0 -47
- package/dist/components/ui/badge.js.map +0 -1
- package/dist/components/ui/banner.cjs +0 -2
- package/dist/components/ui/banner.cjs.map +0 -1
- package/dist/components/ui/banner.js +0 -80
- package/dist/components/ui/banner.js.map +0 -1
- package/dist/components/ui/breadcrumb.cjs +0 -2
- package/dist/components/ui/breadcrumb.cjs.map +0 -1
- package/dist/components/ui/breadcrumb.js +0 -118
- package/dist/components/ui/breadcrumb.js.map +0 -1
- package/dist/components/ui/button-group.cjs +0 -2
- package/dist/components/ui/button-group.cjs.map +0 -1
- package/dist/components/ui/button-group.js +0 -77
- package/dist/components/ui/button-group.js.map +0 -1
- package/dist/components/ui/button.cjs +0 -2
- package/dist/components/ui/button.cjs.map +0 -1
- package/dist/components/ui/button.js +0 -57
- package/dist/components/ui/button.js.map +0 -1
- package/dist/components/ui/calendar.cjs +0 -2
- package/dist/components/ui/calendar.cjs.map +0 -1
- package/dist/components/ui/calendar.js +0 -174
- package/dist/components/ui/calendar.js.map +0 -1
- package/dist/components/ui/card.cjs +0 -2
- package/dist/components/ui/card.cjs.map +0 -1
- package/dist/components/ui/card.js +0 -102
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/carousel.cjs +0 -2
- package/dist/components/ui/carousel.cjs.map +0 -1
- package/dist/components/ui/carousel.js +0 -179
- package/dist/components/ui/carousel.js.map +0 -1
- package/dist/components/ui/checkbox.cjs +0 -2
- package/dist/components/ui/checkbox.cjs.map +0 -1
- package/dist/components/ui/checkbox.js +0 -35
- package/dist/components/ui/checkbox.js.map +0 -1
- package/dist/components/ui/code-block.cjs +0 -4
- package/dist/components/ui/code-block.cjs.map +0 -1
- package/dist/components/ui/code-block.js +0 -306
- package/dist/components/ui/code-block.js.map +0 -1
- package/dist/components/ui/code-editor.cjs +0 -2
- package/dist/components/ui/code-editor.cjs.map +0 -1
- package/dist/components/ui/code-editor.js +0 -103
- package/dist/components/ui/code-editor.js.map +0 -1
- package/dist/components/ui/collapsible.cjs.map +0 -1
- package/dist/components/ui/collapsible.js.map +0 -1
- package/dist/components/ui/combobox.cjs +0 -2
- package/dist/components/ui/combobox.cjs.map +0 -1
- package/dist/components/ui/combobox.js +0 -281
- package/dist/components/ui/combobox.js.map +0 -1
- package/dist/components/ui/command.cjs +0 -2
- package/dist/components/ui/command.cjs.map +0 -1
- package/dist/components/ui/command.js +0 -174
- package/dist/components/ui/command.js.map +0 -1
- package/dist/components/ui/context-menu.cjs +0 -2
- package/dist/components/ui/context-menu.cjs.map +0 -1
- package/dist/components/ui/context-menu.js +0 -236
- package/dist/components/ui/context-menu.js.map +0 -1
- package/dist/components/ui/dialog.cjs +0 -2
- package/dist/components/ui/dialog.cjs.map +0 -1
- package/dist/components/ui/dialog.js +0 -165
- package/dist/components/ui/dialog.js.map +0 -1
- package/dist/components/ui/drawer.cjs +0 -2
- package/dist/components/ui/drawer.cjs.map +0 -1
- package/dist/components/ui/drawer.js +0 -125
- package/dist/components/ui/drawer.js.map +0 -1
- package/dist/components/ui/dropdown-menu.cjs +0 -2
- package/dist/components/ui/dropdown-menu.cjs.map +0 -1
- package/dist/components/ui/dropdown-menu.js +0 -252
- package/dist/components/ui/dropdown-menu.js.map +0 -1
- package/dist/components/ui/field.cjs +0 -2
- package/dist/components/ui/field.cjs.map +0 -1
- package/dist/components/ui/field.js +0 -210
- package/dist/components/ui/field.js.map +0 -1
- package/dist/components/ui/hover-card.cjs +0 -2
- package/dist/components/ui/hover-card.cjs.map +0 -1
- package/dist/components/ui/hover-card.js +0 -39
- package/dist/components/ui/hover-card.js.map +0 -1
- package/dist/components/ui/input-group.cjs +0 -2
- package/dist/components/ui/input-group.cjs.map +0 -1
- package/dist/components/ui/input-group.js +0 -145
- package/dist/components/ui/input-group.js.map +0 -1
- package/dist/components/ui/input-otp.cjs +0 -2
- package/dist/components/ui/input-otp.cjs.map +0 -1
- package/dist/components/ui/input-otp.js +0 -82
- package/dist/components/ui/input-otp.js.map +0 -1
- package/dist/components/ui/input.cjs +0 -2
- package/dist/components/ui/input.cjs.map +0 -1
- package/dist/components/ui/input.js +0 -20
- package/dist/components/ui/input.js.map +0 -1
- package/dist/components/ui/item.cjs +0 -2
- package/dist/components/ui/item.cjs.map +0 -1
- package/dist/components/ui/item.js +0 -191
- package/dist/components/ui/item.js.map +0 -1
- package/dist/components/ui/kbd.cjs +0 -2
- package/dist/components/ui/kbd.cjs.map +0 -1
- package/dist/components/ui/kbd.js +0 -30
- package/dist/components/ui/kbd.js.map +0 -1
- package/dist/components/ui/label.cjs +0 -2
- package/dist/components/ui/label.cjs.map +0 -1
- package/dist/components/ui/label.js +0 -23
- package/dist/components/ui/label.js.map +0 -1
- package/dist/components/ui/menubar.cjs +0 -2
- package/dist/components/ui/menubar.cjs.map +0 -1
- package/dist/components/ui/menubar.js +0 -256
- package/dist/components/ui/menubar.js.map +0 -1
- package/dist/components/ui/navigation-menu.cjs +0 -2
- package/dist/components/ui/navigation-menu.cjs.map +0 -1
- package/dist/components/ui/navigation-menu.js +0 -164
- package/dist/components/ui/navigation-menu.js.map +0 -1
- package/dist/components/ui/popover.cjs +0 -2
- package/dist/components/ui/popover.cjs.map +0 -1
- package/dist/components/ui/popover.js +0 -45
- package/dist/components/ui/popover.js.map +0 -1
- package/dist/components/ui/radio-group.cjs +0 -2
- package/dist/components/ui/radio-group.cjs.map +0 -1
- package/dist/components/ui/radio-group.js +0 -45
- package/dist/components/ui/radio-group.js.map +0 -1
- package/dist/components/ui/resizable.cjs +0 -2
- package/dist/components/ui/resizable.cjs.map +0 -1
- package/dist/components/ui/resizable.js +0 -58
- package/dist/components/ui/resizable.js.map +0 -1
- package/dist/components/ui/scroll-area.cjs +0 -2
- package/dist/components/ui/scroll-area.cjs.map +0 -1
- package/dist/components/ui/scroll-area.js +0 -60
- package/dist/components/ui/scroll-area.js.map +0 -1
- package/dist/components/ui/select.cjs +0 -2
- package/dist/components/ui/select.cjs.map +0 -1
- package/dist/components/ui/select.js +0 -184
- package/dist/components/ui/select.js.map +0 -1
- package/dist/components/ui/separator.cjs +0 -2
- package/dist/components/ui/separator.cjs.map +0 -1
- package/dist/components/ui/separator.js +0 -27
- package/dist/components/ui/separator.js.map +0 -1
- package/dist/components/ui/sheet.cjs +0 -2
- package/dist/components/ui/sheet.cjs.map +0 -1
- package/dist/components/ui/sheet.js +0 -137
- package/dist/components/ui/sheet.js.map +0 -1
- package/dist/components/ui/sidebar.cjs +0 -2
- package/dist/components/ui/sidebar.cjs.map +0 -1
- package/dist/components/ui/sidebar.js +0 -579
- package/dist/components/ui/sidebar.js.map +0 -1
- package/dist/components/ui/skeleton.cjs +0 -2
- package/dist/components/ui/skeleton.cjs.map +0 -1
- package/dist/components/ui/skeleton.js +0 -24
- package/dist/components/ui/skeleton.js.map +0 -1
- package/dist/components/ui/slider.cjs +0 -2
- package/dist/components/ui/slider.cjs.map +0 -1
- package/dist/components/ui/slider.js +0 -60
- package/dist/components/ui/slider.js.map +0 -1
- package/dist/components/ui/sonner.cjs +0 -2
- package/dist/components/ui/sonner.cjs.map +0 -1
- package/dist/components/ui/sonner.js +0 -37
- package/dist/components/ui/sonner.js.map +0 -1
- package/dist/components/ui/spinner.cjs +0 -2
- package/dist/components/ui/spinner.cjs.map +0 -1
- package/dist/components/ui/spinner.js +0 -39
- package/dist/components/ui/spinner.js.map +0 -1
- package/dist/components/ui/switch.cjs +0 -2
- package/dist/components/ui/switch.cjs.map +0 -1
- package/dist/components/ui/switch.js +0 -32
- package/dist/components/ui/switch.js.map +0 -1
- package/dist/components/ui/table.cjs +0 -2
- package/dist/components/ui/table.cjs.map +0 -1
- package/dist/components/ui/table.js +0 -152
- package/dist/components/ui/table.js.map +0 -1
- package/dist/components/ui/tabs.cjs +0 -2
- package/dist/components/ui/tabs.cjs.map +0 -1
- package/dist/components/ui/tabs.js +0 -92
- package/dist/components/ui/tabs.js.map +0 -1
- package/dist/components/ui/tetrascience-icon.cjs +0 -2
- package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
- package/dist/components/ui/tetrascience-icon.js +0 -46
- package/dist/components/ui/tetrascience-icon.js.map +0 -1
- package/dist/components/ui/textarea.cjs +0 -2
- package/dist/components/ui/textarea.cjs.map +0 -1
- package/dist/components/ui/textarea.js +0 -19
- package/dist/components/ui/textarea.js.map +0 -1
- package/dist/components/ui/toggle-group.cjs +0 -2
- package/dist/components/ui/toggle-group.cjs.map +0 -1
- package/dist/components/ui/toggle-group.js +0 -77
- package/dist/components/ui/toggle-group.js.map +0 -1
- package/dist/components/ui/toggle.cjs +0 -2
- package/dist/components/ui/toggle.cjs.map +0 -1
- package/dist/components/ui/toggle.js +0 -44
- package/dist/components/ui/toggle.js.map +0 -1
- package/dist/components/ui/tooltip.cjs +0 -2
- package/dist/components/ui/tooltip.cjs.map +0 -1
- package/dist/components/ui/tooltip.js +0 -56
- package/dist/components/ui/tooltip.js.map +0 -1
- package/dist/databricks.d.ts +0 -129
- package/dist/providers/athena.d.ts +0 -9
- package/dist/providers/databricks.d.ts +0 -9
- package/dist/providers/snowflake.d.ts +0 -9
- package/dist/snowflake.d.ts +0 -125
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
- /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
- /package/dist/{components/composed → composed}/tdp-url.js +0 -0
- /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
- /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
- /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
- /package/dist/{components/ui → ui}/collapsible.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-selector.js","sources":["../../../src/components/ai/model-selector.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\n\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\";\nimport { Kbd } from \"@/components/ui/kbd\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ModelSelectorProps = ComponentProps<typeof Dialog>;\n\nexport const ModelSelector = (props: ModelSelectorProps) => (\n <Dialog {...props} />\n);\n\nexport type ModelSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;\n\nexport const ModelSelectorTrigger = (props: ModelSelectorTriggerProps) => (\n <DialogTrigger {...props} />\n);\n\nexport type ModelSelectorContentProps = ComponentProps<typeof DialogContent> & {\n title?: ReactNode;\n};\n\nexport const ModelSelectorContent = ({\n className,\n children,\n title = \"Model Selector\",\n ...props\n}: ModelSelectorContentProps) => (\n <DialogContent\n aria-describedby={undefined}\n className={cn(\n \"outline! border-none! p-0 outline-border! outline-solid!\",\n className\n )}\n {...props}\n >\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <Command className=\"**:data-[slot=command-input-wrapper]:h-auto\">\n {children}\n </Command>\n </DialogContent>\n);\n\nexport type ModelSelectorDialogProps = ComponentProps<typeof CommandDialog>;\n\nexport const ModelSelectorDialog = (props: ModelSelectorDialogProps) => (\n <CommandDialog {...props} />\n);\n\nexport type ModelSelectorInputProps = ComponentProps<typeof CommandInput>;\n\nexport const ModelSelectorInput = ({\n className,\n ...props\n}: ModelSelectorInputProps) => (\n <CommandInput className={cn(\"h-auto py-3.5\", className)} {...props} />\n);\n\nexport type ModelSelectorListProps = ComponentProps<typeof CommandList>;\n\nexport const ModelSelectorList = (props: ModelSelectorListProps) => (\n <CommandList {...props} />\n);\n\nexport type ModelSelectorEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const ModelSelectorEmpty = (props: ModelSelectorEmptyProps) => (\n <CommandEmpty {...props} />\n);\n\nexport type ModelSelectorGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const ModelSelectorGroup = (props: ModelSelectorGroupProps) => (\n <CommandGroup {...props} />\n);\n\nexport type ModelSelectorItemProps = ComponentProps<typeof CommandItem>;\n\nexport const ModelSelectorItem = (props: ModelSelectorItemProps) => (\n <CommandItem {...props} />\n);\n\nexport type ModelSelectorShortcutProps = ComponentProps<typeof Kbd>;\n\nexport const ModelSelectorShortcut = ({\n className,\n ...props\n}: ModelSelectorShortcutProps) => (\n <Kbd className={cn(\"ml-auto\", className)} {...props} />\n);\n\nexport type ModelSelectorSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const ModelSelectorSeparator = (props: ModelSelectorSeparatorProps) => (\n <CommandSeparator {...props} />\n);\n\nexport type ModelSelectorLogoProps = Omit<\n ComponentProps<\"img\">,\n \"src\" | \"alt\"\n> & {\n provider:\n | \"moonshotai-cn\"\n | \"lucidquery\"\n | \"moonshotai\"\n | \"zai-coding-plan\"\n | \"alibaba\"\n | \"xai\"\n | \"vultr\"\n | \"nvidia\"\n | \"upstage\"\n | \"groq\"\n | \"github-copilot\"\n | \"mistral\"\n | \"vercel\"\n | \"nebius\"\n | \"deepseek\"\n | \"alibaba-cn\"\n | \"google-vertex-anthropic\"\n | \"venice\"\n | \"chutes\"\n | \"cortecs\"\n | \"github-models\"\n | \"togetherai\"\n | \"azure\"\n | \"baseten\"\n | \"huggingface\"\n | \"opencode\"\n | \"fastrouter\"\n | \"google\"\n | \"google-vertex\"\n | \"cloudflare-workers-ai\"\n | \"inception\"\n | \"wandb\"\n | \"openai\"\n | \"zhipuai-coding-plan\"\n | \"perplexity\"\n | \"openrouter\"\n | \"zenmux\"\n | \"v0\"\n | \"iflowcn\"\n | \"synthetic\"\n | \"deepinfra\"\n | \"zhipuai\"\n | \"submodel\"\n | \"zai\"\n | \"inference\"\n | \"requesty\"\n | \"morph\"\n | \"lmstudio\"\n | \"anthropic\"\n | \"aihubmix\"\n | \"fireworks-ai\"\n | \"modelscope\"\n | \"llama\"\n | \"scaleway\"\n | \"amazon-bedrock\"\n | \"cerebras\"\n // oxlint-disable-next-line typescript-eslint(ban-types) -- intentional pattern for autocomplete-friendly string union\n | (string & {});\n};\n\nexport const ModelSelectorLogo = ({\n provider,\n className,\n ...props\n}: ModelSelectorLogoProps) => (\n <img\n {...props}\n alt={`${provider} logo`}\n className={cn(\"size-3 dark:invert\", className)}\n height={12}\n src={`https://models.dev/logos/${provider}.svg`}\n width={12}\n />\n);\n\nexport type ModelSelectorLogoGroupProps = ComponentProps<\"div\">;\n\nexport const ModelSelectorLogoGroup = ({\n className,\n ...props\n}: ModelSelectorLogoGroupProps) => (\n <div\n className={cn(\n \"flex shrink-0 items-center -space-x-1 [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type ModelSelectorNameProps = ComponentProps<\"span\">;\n\nexport const ModelSelectorName = ({\n className,\n ...props\n}: ModelSelectorNameProps) => (\n <span className={cn(\"flex-1 truncate text-left\", className)} {...props} />\n);\n"],"names":["ModelSelector","props","jsx","Dialog","ModelSelectorTrigger","DialogTrigger","ModelSelectorContent","className","children","title","jsxs","DialogContent","cn","DialogTitle","Command","ModelSelectorDialog","CommandDialog","ModelSelectorInput","CommandInput","ModelSelectorList","CommandList","ModelSelectorEmpty","CommandEmpty","ModelSelectorGroup","CommandGroup","ModelSelectorItem","CommandItem","ModelSelectorShortcut","Kbd","ModelSelectorSeparator","CommandSeparator","ModelSelectorLogo","provider","ModelSelectorLogoGroup","ModelSelectorName"],"mappings":";;;;;AAuBO,MAAMA,IAAgB,CAACC,MAC5B,gBAAAC,EAACC,GAAA,EAAQ,GAAGF,EAAA,CAAO,GAKRG,IAAuB,CAACH,MACnC,gBAAAC,EAACG,GAAA,EAAe,GAAGJ,EAAA,CAAO,GAOfK,IAAuB,CAAC;AAAA,EACnC,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,GAAGR;AACL,MACE,gBAAAS;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,oBAAkB;AAAA,IAClB,WAAWC;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGN;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAC,EAACW,GAAA,EAAY,WAAU,WAAW,UAAAJ,GAAM;AAAA,MACxC,gBAAAP,EAACY,GAAA,EAAQ,WAAU,+CAChB,UAAAN,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AACF,GAKWO,IAAsB,CAACd,MAClC,gBAAAC,EAACc,GAAA,EAAe,GAAGf,EAAA,CAAO,GAKfgB,IAAqB,CAAC;AAAA,EACjC,WAAAV;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC,EAACgB,KAAa,WAAWN,EAAG,iBAAiBL,CAAS,GAAI,GAAGN,EAAA,CAAO,GAKzDkB,IAAoB,CAAClB,MAChC,gBAAAC,EAACkB,GAAA,EAAa,GAAGnB,EAAA,CAAO,GAKboB,IAAqB,CAACpB,MACjC,gBAAAC,EAACoB,GAAA,EAAc,GAAGrB,EAAA,CAAO,GAKdsB,IAAqB,CAACtB,MACjC,gBAAAC,EAACsB,GAAA,EAAc,GAAGvB,EAAA,CAAO,GAKdwB,IAAoB,CAACxB,MAChC,gBAAAC,EAACwB,GAAA,EAAa,GAAGzB,EAAA,CAAO,GAKb0B,IAAwB,CAAC;AAAA,EACpC,WAAApB;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC,EAAC0B,KAAI,WAAWhB,EAAG,WAAWL,CAAS,GAAI,GAAGN,EAAA,CAAO,GAO1C4B,IAAyB,CAAC5B,MACrC,gBAAAC,EAAC4B,GAAA,EAAkB,GAAG7B,EAAA,CAAO,GAoElB8B,IAAoB,CAAC;AAAA,EAChC,UAAAC;AAAA,EACA,WAAAzB;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,GAAGD;AAAA,IACJ,KAAK,GAAG+B,CAAQ;AAAA,IAChB,WAAWpB,EAAG,sBAAsBL,CAAS;AAAA,IAC7C,QAAQ;AAAA,IACR,KAAK,4BAA4ByB,CAAQ;AAAA,IACzC,OAAO;AAAA,EAAA;AACT,GAKWC,IAAyB,CAAC;AAAA,EACrC,WAAA1B;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWU;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGN;AAAA,EAAA;AACN,GAKWiC,IAAoB,CAAC;AAAA,EAChC,WAAA3B;AAAA,EACA,GAAGN;AACL,MACE,gBAAAC,EAAC,UAAK,WAAWU,EAAG,6BAA6BL,CAAS,GAAI,GAAGN,EAAA,CAAO;"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),M=require("lucide-react"),n=require("react"),D=require("../ui/command.cjs"),E=require("../ui/dropdown-menu.cjs"),K=require("../ui/hover-card.cjs"),O=require("../ui/input-group.cjs"),q=require("../ui/select.cjs"),pe=require("../ui/spinner.cjs"),V=require("../ui/tooltip.cjs"),l=require("../../lib/utils.cjs"),de=async e=>{try{const o=await(await fetch(e)).blob();return new Promise(s=>{const u=new FileReader;u.onloadend=()=>s(u.result),u.onerror=()=>s(null),u.readAsDataURL(o)})}catch{return null}},fe=async()=>{if(typeof navigator>"u"||!navigator.mediaDevices?.getDisplayMedia)return null;let e=null;const t=document.createElement("video");t.muted=!0,t.playsInline=!0;try{e=await navigator.mediaDevices.getDisplayMedia({audio:!1,video:!0}),t.srcObject=e,await new Promise((g,b)=>{t.onloadedmetadata=()=>g(),t.onerror=()=>b(new Error("Failed to load screen stream"))}),await t.play();const o=t.videoWidth,s=t.videoHeight;if(!o||!s)return null;const u=document.createElement("canvas");u.width=o,u.height=s;const i=u.getContext("2d");if(!i)return null;i.drawImage(t,0,0,o,s);const a=await new Promise(g=>{u.toBlob(g,"image/png")});if(!a)return null;const h=new Date().toISOString().replace(/[:.]/g,"-").replace("T","_").replace("Z","");return new File([a],`screenshot-${h}.png`,{lastModified:Date.now(),type:"image/png"})}finally{if(e)for(const o of e.getTracks())o.stop();t.pause(),t.srcObject=null}},X=n.createContext(null),Z=n.createContext(null),Ie=()=>{const e=n.useContext(X);if(!e)throw new Error("Wrap your component inside <PromptInputProvider> to use usePromptInputController().");return e},$=()=>n.useContext(X),he=()=>{const e=n.useContext(Z);if(!e)throw new Error("Wrap your component inside <PromptInputProvider> to use useProviderAttachments().");return e},ge=()=>n.useContext(Z),Pe=({initialInput:e="",children:t})=>{const[o,s]=n.useState(e),u=n.useCallback(()=>s(""),[]),[i,a]=n.useState([]),h=n.useRef(null),g=n.useRef(()=>{}),b=n.useCallback(m=>{const v=[...m];v.length!==0&&a(A=>[...A,...v.map(k=>({filename:k.name,id:crypto.randomUUID(),mediaType:k.type,type:"file",url:URL.createObjectURL(k)}))])},[]),R=n.useCallback(m=>{a(v=>{const A=v.find(k=>k.id===m);return A?.url&&URL.revokeObjectURL(A.url),v.filter(k=>k.id!==m)})},[]),f=n.useCallback(()=>{a(m=>{for(const v of m)v.url&&URL.revokeObjectURL(v.url);return[]})},[]),P=n.useRef(i);n.useEffect(()=>{P.current=i},[i]),n.useEffect(()=>()=>{for(const m of P.current)m.url&&URL.revokeObjectURL(m.url)},[]);const S=n.useCallback(()=>{g.current?.()},[]),d=n.useMemo(()=>({add:b,clear:f,fileInputRef:h,files:i,openFileDialog:S,remove:R}),[i,b,R,f,S]),w=n.useCallback((m,v)=>{h.current=m.current,g.current=v},[]),T=n.useMemo(()=>({__registerFileInput:w,attachments:d,textInput:{clear:u,setInput:s,value:o}}),[o,u,d,w]);return r.jsx(X.Provider,{value:T,children:r.jsx(Z.Provider,{value:d,children:t})})},ee=n.createContext(null),G=()=>{const e=ge(),o=n.useContext(ee)??e;if(!o)throw new Error("usePromptInputAttachments must be used within a PromptInput or PromptInputProvider");return o},J=n.createContext(null),xe=()=>{const e=n.useContext(J);if(!e)throw new Error("usePromptInputReferencedSources must be used within a LocalReferencedSourcesContext.Provider");return e},Ce=({label:e="Add photos or files",...t})=>{const o=G(),s=n.useCallback(u=>{u.preventDefault(),o.openFileDialog()},[o]);return r.jsxs(E.DropdownMenuItem,{...t,onSelect:s,children:[r.jsx(M.ImageIcon,{className:"mr-2 size-4"})," ",e]})},ve=({label:e="Take screenshot",onSelect:t,...o})=>{const s=G(),u=n.useCallback(async i=>{if(t?.(i),!i.defaultPrevented)try{const a=await fe();a&&s.add([a])}catch(a){if(a instanceof DOMException&&(a.name==="NotAllowedError"||a.name==="AbortError"))return;throw a}},[t,s]);return r.jsxs(E.DropdownMenuItem,{...o,onSelect:u,children:[r.jsx(M.Monitor,{className:"mr-2 size-4"}),e]})},be=({className:e,accept:t,multiple:o,globalDrop:s,syncHiddenInput:u,maxFiles:i,maxFileSize:a,onError:h,onSubmit:g,children:b,...R})=>{const f=$(),P=!!f,S=n.useRef(null),d=n.useRef(null),[w,T]=n.useState([]),m=P?f.attachments.files:w,[v,A]=n.useState([]),k=n.useRef(m);n.useEffect(()=>{k.current=m},[m]);const ne=n.useCallback(()=>{S.current?.click()},[]),z=n.useCallback(c=>!t||t.trim()===""?!0:t.split(",").map(p=>p.trim()).filter(Boolean).some(p=>{if(p.endsWith("/*")){const C=p.slice(0,-1);return c.type.startsWith(C)}return c.type===p}),[t]),re=n.useCallback(c=>{const I=[...c],p=I.filter(y=>z(y));if(I.length&&p.length===0){h?.({code:"accept",message:"No files match the accepted types."});return}const C=y=>a?y.size<=a:!0,x=p.filter(C);if(p.length>0&&x.length===0){h?.({code:"max_file_size",message:"All files exceed the maximum size."});return}T(y=>{const j=typeof i=="number"?Math.max(0,i-y.length):void 0,L=typeof j=="number"?x.slice(0,j):x;typeof j=="number"&&x.length>j&&h?.({code:"max_files",message:"Too many files. Some were not added."});const U=[];for(const W of L)U.push({filename:W.name,id:crypto.randomUUID(),mediaType:W.type,type:"file",url:URL.createObjectURL(W)});return[...y,...U]})},[z,i,a,h]),oe=n.useCallback(c=>T(I=>{const p=I.find(C=>C.id===c);return p?.url&&URL.revokeObjectURL(p.url),I.filter(C=>C.id!==c)}),[]),se=n.useCallback(c=>{const I=[...c],p=I.filter(U=>z(U));if(I.length&&p.length===0){h?.({code:"accept",message:"No files match the accepted types."});return}const C=U=>a?U.size<=a:!0,x=p.filter(C);if(p.length>0&&x.length===0){h?.({code:"max_file_size",message:"All files exceed the maximum size."});return}const y=m.length,j=typeof i=="number"?Math.max(0,i-y):void 0,L=typeof j=="number"?x.slice(0,j):x;typeof j=="number"&&x.length>j&&h?.({code:"max_files",message:"Too many files. Some were not added."}),L.length>0&&f?.attachments.add(L)},[z,a,i,h,m.length,f]),B=n.useCallback(()=>P?f?.attachments.clear():T(c=>{for(const I of c)I.url&&URL.revokeObjectURL(I.url);return[]}),[P,f]),H=n.useCallback(()=>A([]),[]),N=P?se:re,Q=P?f.attachments.remove:oe,Y=P?f.attachments.openFileDialog:ne,F=n.useCallback(()=>{B(),H()},[B,H]);n.useEffect(()=>{P&&f.__registerFileInput(S,()=>S.current?.click())},[P,f]),n.useEffect(()=>{u&&S.current&&m.length===0&&(S.current.value="")},[m,u]);const _=n.useCallback((c,I)=>{const p=x=>{x.dataTransfer?.types?.includes("Files")&&x.preventDefault()},C=x=>{const y=x;y.dataTransfer?.types?.includes("Files")&&x.preventDefault(),y.dataTransfer?.files&&y.dataTransfer.files.length>0&&I(y.dataTransfer.files)};return c.addEventListener("dragover",p),c.addEventListener("drop",C),()=>{c.removeEventListener("dragover",p),c.removeEventListener("drop",C)}},[]);n.useEffect(()=>{const c=d.current;if(c&&!s)return _(c,N)},[N,s,_]),n.useEffect(()=>{if(s)return _(document,N)},[N,s,_]),n.useEffect(()=>()=>{if(!P)for(const c of k.current)c.url&&URL.revokeObjectURL(c.url)},[P]);const ce=n.useCallback(c=>{c.currentTarget.files&&N(c.currentTarget.files),c.currentTarget.value=""},[N]),ae=n.useMemo(()=>({add:N,clear:B,fileInputRef:S,files:m.map(c=>({...c,id:c.id})),openFileDialog:Y,remove:Q}),[m,N,Q,B,Y]),ue=n.useMemo(()=>({add:c=>{const I=Array.isArray(c)?c:[c];A(p=>[...p,...I.map(C=>({...C,id:crypto.randomUUID()}))])},clear:H,remove:c=>{A(I=>I.filter(p=>p.id!==c))},sources:v}),[v,H]),ie=n.useCallback(async c=>{c.preventDefault();const I=c.currentTarget,p=P?f.textInput.value:new FormData(I).get("message")||"";P||I.reset();try{const C=await Promise.all(m.map(async({id:y,...j})=>{if(j.url?.startsWith("blob:")){const L=await de(j.url);return{...j,url:L??j.url}}return j})),x=g({files:C,text:p},c);if(x instanceof Promise)try{await x,F(),P&&f.textInput.clear()}catch{}else F(),P&&f.textInput.clear()}catch{}},[P,f,m,g,F]),le=r.jsxs(r.Fragment,{children:[r.jsx("input",{accept:t,"aria-label":"Upload files",className:"hidden",multiple:o,onChange:ce,ref:S,title:"Upload files",type:"file"}),r.jsx("form",{className:l.cn("w-full",e),onSubmit:ie,ref:d,...R,children:r.jsx(O.InputGroup,{className:"border-border overflow-hidden has-[[data-slot=input-group-control]:focus-visible]:ring-0",children:b})})]}),me=r.jsx(J.Provider,{value:ue,children:le});return r.jsx(ee.Provider,{value:ae,children:me})},ye=({className:e,...t})=>r.jsx("div",{className:l.cn("contents",e),...t}),je=({onChange:e,onKeyDown:t,className:o,placeholder:s="What would you like to know?",...u})=>{const i=$(),a=G(),[h,g]=n.useState(!1),b=n.useCallback(d=>{if(t?.(d),!d.defaultPrevented){if(d.key==="Enter"){if(h||d.nativeEvent.isComposing||d.shiftKey)return;d.preventDefault();const{form:w}=d.currentTarget;if(w?.querySelector('button[type="submit"]')?.disabled)return;w?.requestSubmit()}if(d.key==="Backspace"&&d.currentTarget.value===""&&a.files.length>0){d.preventDefault();const w=a.files[a.files.length-1];w&&a.remove(w.id)}}},[t,h,a]),R=n.useCallback(d=>{const w=d.clipboardData?.items;if(!w)return;const T=[];for(const m of w)if(m.kind==="file"){const v=m.getAsFile();v&&T.push(v)}T.length>0&&(d.preventDefault(),a.add(T))},[a]),f=n.useCallback(()=>g(!1),[]),P=n.useCallback(()=>g(!0),[]),S=i?{onChange:d=>{i.textInput.setInput(d.currentTarget.value),e?.(d)},value:i.textInput.value}:{onChange:e};return r.jsx(O.InputGroupTextarea,{className:l.cn("field-sizing-content max-h-48 min-h-16",o),name:"message",onCompositionEnd:f,onCompositionStart:P,onKeyDown:b,onPaste:R,placeholder:s,...u,...S})},we=({className:e,...t})=>r.jsx(O.InputGroupAddon,{align:"block-end",className:l.cn("order-first flex-wrap gap-1",e),...t}),Se=({className:e,...t})=>r.jsx(O.InputGroupAddon,{align:"block-end",className:l.cn("justify-between gap-1",e),...t}),Te=({className:e,...t})=>r.jsx("div",{className:l.cn("flex min-w-0 items-center gap-1",e),...t}),te=({variant:e="ghost",className:t,size:o,tooltip:s,...u})=>{const i=o??(n.Children.count(u.children)>1?"sm":"icon-sm"),a=r.jsx(O.InputGroupButton,{className:l.cn(t),size:i,type:"button",variant:e,...u});if(!s)return a;const h=typeof s=="string"?s:s.content,g=typeof s=="string"?void 0:s.shortcut,b=typeof s=="string"?"top":s.side??"top";return r.jsxs(V.Tooltip,{children:[r.jsx(V.TooltipTrigger,{asChild:!0,children:a}),r.jsxs(V.TooltipContent,{side:b,children:[h,g&&r.jsx("span",{className:"ml-2 text-muted-foreground",children:g})]})]})},ke=e=>r.jsx(E.DropdownMenu,{...e}),Re=({className:e,children:t,tooltip:o,"aria-label":s,...u})=>{const i=s??(typeof o=="string"?o:typeof o?.content=="string"?o.content:void 0);return r.jsx(E.DropdownMenuTrigger,{asChild:!0,children:r.jsx(te,{"aria-label":i,className:e,tooltip:o,...u,children:t??r.jsx(M.PlusIcon,{className:"size-4"})})})},Ae=({className:e,...t})=>r.jsx(E.DropdownMenuContent,{align:"start",className:l.cn(e),...t}),Ne=({className:e,...t})=>r.jsx(E.DropdownMenuItem,{className:l.cn(e),...t}),De=({className:e,variant:t="default",size:o="icon-sm",status:s,onStop:u,onClick:i,children:a,...h})=>{const g=s==="submitted"||s==="streaming";let b=r.jsx(M.CornerDownLeftIcon,{className:"size-4"});s==="submitted"?b=r.jsx(pe.Spinner,{}):s==="streaming"?b=r.jsx(M.SquareIcon,{className:"size-4"}):s==="error"&&(b=r.jsx(M.XIcon,{className:"size-4"}));const R=n.useCallback(f=>{if(g&&u){f.preventDefault(),u();return}i?.(f)},[g,u,i]);return r.jsx(O.InputGroupButton,{"aria-label":g?"Stop":"Submit",className:l.cn(e),onClick:R,size:o,type:g&&u?"button":"submit",variant:t,...h,children:a??b})},Le=e=>r.jsx(q.Select,{...e}),Ue=({className:e,...t})=>r.jsx(q.SelectTrigger,{className:l.cn("border-none bg-transparent font-medium text-muted-foreground shadow-none transition-colors","hover:bg-accent hover:text-foreground aria-expanded:bg-accent aria-expanded:text-foreground",e),...t}),Me=({className:e,...t})=>r.jsx(q.SelectContent,{className:l.cn(e),...t}),Ee=({className:e,...t})=>r.jsx(q.SelectItem,{className:l.cn(e),...t}),Oe=({className:e,...t})=>r.jsx(q.SelectValue,{className:l.cn(e),...t}),qe=({openDelay:e=0,closeDelay:t=0,...o})=>r.jsx(K.HoverCard,{closeDelay:t,openDelay:e,...o}),ze=e=>r.jsx(K.HoverCardTrigger,{...e}),Be=({align:e="start",...t})=>r.jsx(K.HoverCardContent,{align:e,...t}),He=({a:e,b:t,show:o,className:s})=>r.jsxs("div",{className:l.cn("relative inline-flex items-center justify-center",s),children:[r.jsx("div",{"aria-hidden":o,className:l.cn("transition-all duration-200 ease-out",o?"pointer-events-none scale-75 opacity-0":"scale-100 opacity-100"),children:e}),r.jsx("div",{"aria-hidden":!o,className:l.cn("absolute transition-all duration-200 ease-out",o?"scale-100 opacity-100":"pointer-events-none scale-75 opacity-0"),children:t})]}),_e=({className:e,...t})=>r.jsx("div",{className:l.cn(e),...t}),Ge=({className:e,...t})=>r.jsx("div",{className:l.cn(e),...t}),Fe=({className:e,children:t,...o})=>r.jsx("h3",{className:l.cn("mb-2 px-3 font-medium text-muted-foreground text-xs",e),...o,children:t}),We=({className:e,...t})=>r.jsx("div",{className:l.cn("space-y-1",e),...t}),Ve=({className:e,...t})=>r.jsx("div",{className:l.cn("flex items-center gap-2 px-3 py-2 text-xs hover:bg-accent",e),...t}),Ke=({className:e,...t})=>r.jsx(D.Command,{className:l.cn(e),...t}),Xe=({className:e,...t})=>r.jsx(D.CommandInput,{className:l.cn(e),...t}),Ze=({className:e,...t})=>r.jsx(D.CommandList,{className:l.cn(e),...t}),Je=({className:e,...t})=>r.jsx(D.CommandEmpty,{className:l.cn(e),...t}),Qe=({className:e,...t})=>r.jsx(D.CommandGroup,{className:l.cn(e),...t}),Ye=({className:e,...t})=>r.jsx(D.CommandItem,{className:l.cn(e),...t}),$e=({className:e,...t})=>r.jsx(D.CommandSeparator,{className:l.cn(e),...t});exports.LocalReferencedSourcesContext=J;exports.PromptInput=be;exports.PromptInputActionAddAttachments=Ce;exports.PromptInputActionAddScreenshot=ve;exports.PromptInputActionMenu=ke;exports.PromptInputActionMenuContent=Ae;exports.PromptInputActionMenuItem=Ne;exports.PromptInputActionMenuTrigger=Re;exports.PromptInputBody=ye;exports.PromptInputButton=te;exports.PromptInputCommand=Ke;exports.PromptInputCommandEmpty=Je;exports.PromptInputCommandGroup=Qe;exports.PromptInputCommandInput=Xe;exports.PromptInputCommandItem=Ye;exports.PromptInputCommandList=Ze;exports.PromptInputCommandSeparator=$e;exports.PromptInputFooter=Se;exports.PromptInputHeader=we;exports.PromptInputHoverCard=qe;exports.PromptInputHoverCardContent=Be;exports.PromptInputHoverCardTrigger=ze;exports.PromptInputProvider=Pe;exports.PromptInputSelect=Le;exports.PromptInputSelectContent=Me;exports.PromptInputSelectItem=Ee;exports.PromptInputSelectTrigger=Ue;exports.PromptInputSelectValue=Oe;exports.PromptInputSlotSwap=He;exports.PromptInputSubmit=De;exports.PromptInputTab=Ge;exports.PromptInputTabBody=We;exports.PromptInputTabItem=Ve;exports.PromptInputTabLabel=Fe;exports.PromptInputTabsList=_e;exports.PromptInputTextarea=je;exports.PromptInputTools=Te;exports.usePromptInputAttachments=G;exports.usePromptInputController=Ie;exports.usePromptInputReferencedSources=xe;exports.useProviderAttachments=he;
|
|
2
|
-
//# sourceMappingURL=prompt-input.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-input.cjs","sources":["../../../src/components/ai/prompt-input.tsx"],"sourcesContent":["import {\n CornerDownLeftIcon,\n ImageIcon,\n Monitor,\n PlusIcon,\n SquareIcon,\n XIcon,\n} from \"lucide-react\";\nimport {\n Children,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport type { ChatStatus, FileUIPart, SourceDocumentUIPart } from \"ai\";\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n ClipboardEventHandler,\n ComponentProps,\n FormEvent,\n FormEventHandler,\n HTMLAttributes,\n KeyboardEventHandler,\n PropsWithChildren,\n ReactNode,\n RefObject,\n} from \"react\";\n\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupTextarea,\n} from \"@/components/ui/input-group\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Spinner } from \"@/components/ui/spinner\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\n\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst convertBlobUrlToDataUrl = async (url: string): Promise<string | null> => {\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n // FileReader uses callback-based API, wrapping in Promise is necessary\n // oxlint-disable-next-line eslint-plugin-promise(avoid-new)\n return new Promise((resolve) => {\n const reader = new FileReader();\n // oxlint-disable-next-line eslint-plugin-unicorn(prefer-add-event-listener)\n reader.onloadend = () => resolve(reader.result as string);\n // oxlint-disable-next-line eslint-plugin-unicorn(prefer-add-event-listener)\n reader.onerror = () => resolve(null);\n reader.readAsDataURL(blob);\n });\n } catch {\n return null;\n }\n};\n\nconst captureScreenshot = async (): Promise<File | null> => {\n if (\n typeof navigator === \"undefined\" ||\n !navigator.mediaDevices?.getDisplayMedia\n ) {\n return null;\n }\n\n let stream: MediaStream | null = null;\n const video = document.createElement(\"video\");\n video.muted = true;\n video.playsInline = true;\n\n try {\n stream = await navigator.mediaDevices.getDisplayMedia({\n audio: false,\n video: true,\n });\n\n video.srcObject = stream;\n\n // Video element uses callback-based API, wrapping in Promise is necessary\n // oxlint-disable-next-line eslint-plugin-promise(avoid-new)\n await new Promise<void>((resolve, reject) => {\n // oxlint-disable-next-line eslint-plugin-unicorn(prefer-add-event-listener)\n video.onloadedmetadata = () => resolve();\n // oxlint-disable-next-line eslint-plugin-unicorn(prefer-add-event-listener)\n video.onerror = () => reject(new Error(\"Failed to load screen stream\"));\n });\n\n await video.play();\n\n const width = video.videoWidth;\n const height = video.videoHeight;\n if (!width || !height) {\n return null;\n }\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext(\"2d\");\n if (!context) {\n return null;\n }\n\n context.drawImage(video, 0, 0, width, height);\n // canvas.toBlob uses callback-based API, wrapping in Promise is necessary\n // oxlint-disable-next-line eslint-plugin-promise(avoid-new)\n const blob = await new Promise<Blob | null>((resolve) => {\n canvas.toBlob(resolve, \"image/png\");\n });\n if (!blob) {\n return null;\n }\n\n const timestamp = new Date()\n .toISOString()\n .replace(/[:.]/g, \"-\")\n .replace(\"T\", \"_\")\n .replace(\"Z\", \"\");\n\n return new File([blob], `screenshot-${timestamp}.png`, {\n lastModified: Date.now(),\n type: \"image/png\",\n });\n } finally {\n if (stream) {\n for (const track of stream.getTracks()) {\n track.stop();\n }\n }\n video.pause();\n video.srcObject = null;\n }\n};\n\n// ============================================================================\n// Provider Context & Types\n// ============================================================================\n\nexport interface AttachmentsContext {\n files: (FileUIPart & { id: string })[];\n add: (files: File[] | FileList) => void;\n remove: (id: string) => void;\n clear: () => void;\n openFileDialog: () => void;\n fileInputRef: RefObject<HTMLInputElement | null>;\n}\n\nexport interface TextInputContext {\n value: string;\n setInput: (v: string) => void;\n clear: () => void;\n}\n\nexport interface PromptInputControllerProps {\n textInput: TextInputContext;\n attachments: AttachmentsContext;\n /** INTERNAL: Allows PromptInput to register its file textInput + \"open\" callback */\n __registerFileInput: (\n ref: RefObject<HTMLInputElement | null>,\n open: () => void\n ) => void;\n}\n\nconst PromptInputController = createContext<PromptInputControllerProps | null>(\n null\n);\nconst ProviderAttachmentsContext = createContext<AttachmentsContext | null>(\n null\n);\n\nexport const usePromptInputController = () => {\n const ctx = useContext(PromptInputController);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use usePromptInputController().\"\n );\n }\n return ctx;\n};\n\n// Optional variants (do NOT throw). Useful for dual-mode components.\nconst useOptionalPromptInputController = () =>\n useContext(PromptInputController);\n\nexport const useProviderAttachments = () => {\n const ctx = useContext(ProviderAttachmentsContext);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use useProviderAttachments().\"\n );\n }\n return ctx;\n};\n\nconst useOptionalProviderAttachments = () =>\n useContext(ProviderAttachmentsContext);\n\nexport type PromptInputProviderProps = PropsWithChildren<{\n initialInput?: string;\n}>;\n\n/**\n * Optional global provider that lifts PromptInput state outside of PromptInput.\n * If you don't use it, PromptInput stays fully self-managed.\n */\nexport const PromptInputProvider = ({\n initialInput: initialTextInput = \"\",\n children,\n}: PromptInputProviderProps) => {\n // ----- textInput state\n const [textInput, setTextInput] = useState(initialTextInput);\n const clearInput = useCallback(() => setTextInput(\"\"), []);\n\n // ----- attachments state (global when wrapped)\n const [attachmentFiles, setAttachmentFiles] = useState<\n (FileUIPart & { id: string })[]\n >([]);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n // oxlint-disable-next-line eslint(no-empty-function)\n const openRef = useRef<() => void>(() => {});\n\n const add = useCallback((files: File[] | FileList) => {\n const incoming = [...files];\n if (incoming.length === 0) {\n return;\n }\n\n setAttachmentFiles((prev) => [\n ...prev,\n ...incoming.map((file) => ({\n filename: file.name,\n id: crypto.randomUUID(),\n mediaType: file.type,\n type: \"file\" as const,\n url: URL.createObjectURL(file),\n })),\n ]);\n }, []);\n\n const remove = useCallback((id: string) => {\n setAttachmentFiles((prev) => {\n const found = prev.find((f) => f.id === id);\n if (found?.url) {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((f) => f.id !== id);\n });\n }, []);\n\n const clear = useCallback(() => {\n setAttachmentFiles((prev) => {\n for (const f of prev) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n return [];\n });\n }, []);\n\n // Keep a ref to attachments for cleanup on unmount (avoids stale closure)\n const attachmentsRef = useRef(attachmentFiles);\n\n useEffect(() => {\n attachmentsRef.current = attachmentFiles;\n }, [attachmentFiles]);\n\n // Cleanup blob URLs on unmount to prevent memory leaks\n useEffect(\n () => () => {\n for (const f of attachmentsRef.current) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n },\n []\n );\n\n const openFileDialog = useCallback(() => {\n openRef.current?.();\n }, []);\n\n const attachments = useMemo<AttachmentsContext>(\n () => ({\n add,\n clear,\n fileInputRef,\n files: attachmentFiles,\n openFileDialog,\n remove,\n }),\n [attachmentFiles, add, remove, clear, openFileDialog]\n );\n\n const __registerFileInput = useCallback(\n (ref: RefObject<HTMLInputElement | null>, open: () => void) => {\n fileInputRef.current = ref.current;\n openRef.current = open;\n },\n []\n );\n\n const controller = useMemo<PromptInputControllerProps>(\n () => ({\n __registerFileInput,\n attachments,\n textInput: {\n clear: clearInput,\n setInput: setTextInput,\n value: textInput,\n },\n }),\n [textInput, clearInput, attachments, __registerFileInput]\n );\n\n return (\n <PromptInputController.Provider value={controller}>\n <ProviderAttachmentsContext.Provider value={attachments}>\n {children}\n </ProviderAttachmentsContext.Provider>\n </PromptInputController.Provider>\n );\n};\n\n// ============================================================================\n// Component Context & Hooks\n// ============================================================================\n\nconst LocalAttachmentsContext = createContext<AttachmentsContext | null>(null);\n\nexport const usePromptInputAttachments = () => {\n // Prefer local context (inside PromptInput) as it has validation, fall back to provider\n const provider = useOptionalProviderAttachments();\n const local = useContext(LocalAttachmentsContext);\n const context = local ?? provider;\n if (!context) {\n throw new Error(\n \"usePromptInputAttachments must be used within a PromptInput or PromptInputProvider\"\n );\n }\n return context;\n};\n\n// ============================================================================\n// Referenced Sources (Local to PromptInput)\n// ============================================================================\n\nexport interface ReferencedSourcesContext {\n sources: (SourceDocumentUIPart & { id: string })[];\n add: (sources: SourceDocumentUIPart[] | SourceDocumentUIPart) => void;\n remove: (id: string) => void;\n clear: () => void;\n}\n\nexport const LocalReferencedSourcesContext =\n createContext<ReferencedSourcesContext | null>(null);\n\nexport const usePromptInputReferencedSources = () => {\n const ctx = useContext(LocalReferencedSourcesContext);\n if (!ctx) {\n throw new Error(\n \"usePromptInputReferencedSources must be used within a LocalReferencedSourcesContext.Provider\"\n );\n }\n return ctx;\n};\n\nexport type PromptInputActionAddAttachmentsProps = ComponentProps<\n typeof DropdownMenuItem\n> & {\n label?: string;\n};\n\nexport const PromptInputActionAddAttachments = ({\n label = \"Add photos or files\",\n ...props\n}: PromptInputActionAddAttachmentsProps) => {\n const attachments = usePromptInputAttachments();\n\n const handleSelect = useCallback(\n (e: Event) => {\n e.preventDefault();\n attachments.openFileDialog();\n },\n [attachments]\n );\n\n return (\n <DropdownMenuItem {...props} onSelect={handleSelect}>\n <ImageIcon className=\"mr-2 size-4\" /> {label}\n </DropdownMenuItem>\n );\n};\n\nexport type PromptInputActionAddScreenshotProps = ComponentProps<\n typeof DropdownMenuItem\n> & {\n label?: string;\n};\n\nexport const PromptInputActionAddScreenshot = ({\n label = \"Take screenshot\",\n onSelect,\n ...props\n}: PromptInputActionAddScreenshotProps) => {\n const attachments = usePromptInputAttachments();\n\n const handleSelect = useCallback(\n async (event: Event) => {\n onSelect?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n try {\n const screenshot = await captureScreenshot();\n if (screenshot) {\n attachments.add([screenshot]);\n }\n } catch (error) {\n if (\n error instanceof DOMException &&\n (error.name === \"NotAllowedError\" || error.name === \"AbortError\")\n ) {\n return;\n }\n throw error;\n }\n },\n [onSelect, attachments]\n );\n\n return (\n <DropdownMenuItem {...props} onSelect={handleSelect}>\n <Monitor className=\"mr-2 size-4\" />\n {label}\n </DropdownMenuItem>\n );\n};\n\nexport interface PromptInputMessage {\n text: string;\n files: FileUIPart[];\n}\n\nexport type PromptInputProps = Omit<\n HTMLAttributes<HTMLFormElement>,\n \"onSubmit\" | \"onError\"\n> & {\n // e.g., \"image/*\" or leave undefined for any\n accept?: string;\n multiple?: boolean;\n // When true, accepts drops anywhere on document. Default false (opt-in).\n globalDrop?: boolean;\n // Render a hidden input with given name and keep it in sync for native form posts. Default false.\n syncHiddenInput?: boolean;\n // Minimal constraints\n maxFiles?: number;\n // bytes\n maxFileSize?: number;\n onError?: (err: {\n code: \"max_files\" | \"max_file_size\" | \"accept\";\n message: string;\n }) => void;\n onSubmit: (\n message: PromptInputMessage,\n event: FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n};\n\nexport const PromptInput = ({\n className,\n accept,\n multiple,\n globalDrop,\n syncHiddenInput,\n maxFiles,\n maxFileSize,\n onError,\n onSubmit,\n children,\n ...props\n}: PromptInputProps) => {\n // Try to use a provider controller if present\n const controller = useOptionalPromptInputController();\n const usingProvider = !!controller;\n\n // Refs\n const inputRef = useRef<HTMLInputElement | null>(null);\n const formRef = useRef<HTMLFormElement | null>(null);\n\n // ----- Local attachments (only used when no provider)\n const [items, setItems] = useState<(FileUIPart & { id: string })[]>([]);\n const files = usingProvider ? controller.attachments.files : items;\n\n // ----- Local referenced sources (always local to PromptInput)\n const [referencedSources, setReferencedSources] = useState<\n (SourceDocumentUIPart & { id: string })[]\n >([]);\n\n // Keep a ref to files for cleanup on unmount (avoids stale closure)\n const filesRef = useRef(files);\n\n useEffect(() => {\n filesRef.current = files;\n }, [files]);\n\n const openFileDialogLocal = useCallback(() => {\n inputRef.current?.click();\n }, []);\n\n const matchesAccept = useCallback(\n (f: File) => {\n if (!accept || accept.trim() === \"\") {\n return true;\n }\n\n const patterns = accept\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n\n return patterns.some((pattern) => {\n if (pattern.endsWith(\"/*\")) {\n // e.g: image/* -> image/\n const prefix = pattern.slice(0, -1);\n return f.type.startsWith(prefix);\n }\n return f.type === pattern;\n });\n },\n [accept]\n );\n\n const addLocal = useCallback(\n (fileList: File[] | FileList) => {\n const incoming = [...fileList];\n const accepted = incoming.filter((f) => matchesAccept(f));\n if (incoming.length && accepted.length === 0) {\n onError?.({\n code: \"accept\",\n message: \"No files match the accepted types.\",\n });\n return;\n }\n const withinSize = (f: File) =>\n maxFileSize ? f.size <= maxFileSize : true;\n const sized = accepted.filter(withinSize);\n if (accepted.length > 0 && sized.length === 0) {\n onError?.({\n code: \"max_file_size\",\n message: \"All files exceed the maximum size.\",\n });\n return;\n }\n\n setItems((prev) => {\n const capacity =\n typeof maxFiles === \"number\"\n ? Math.max(0, maxFiles - prev.length)\n : undefined;\n const capped =\n typeof capacity === \"number\" ? sized.slice(0, capacity) : sized;\n if (typeof capacity === \"number\" && sized.length > capacity) {\n onError?.({\n code: \"max_files\",\n message: \"Too many files. Some were not added.\",\n });\n }\n const next: (FileUIPart & { id: string })[] = [];\n for (const file of capped) {\n next.push({\n filename: file.name,\n id: crypto.randomUUID(),\n mediaType: file.type,\n type: \"file\",\n url: URL.createObjectURL(file),\n });\n }\n return [...prev, ...next];\n });\n },\n [matchesAccept, maxFiles, maxFileSize, onError]\n );\n\n const removeLocal = useCallback(\n (id: string) =>\n setItems((prev) => {\n const found = prev.find((file) => file.id === id);\n if (found?.url) {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((file) => file.id !== id);\n }),\n []\n );\n\n // Wrapper that validates files before calling provider's add\n const addWithProviderValidation = useCallback(\n (fileList: File[] | FileList) => {\n const incoming = [...fileList];\n const accepted = incoming.filter((f) => matchesAccept(f));\n if (incoming.length && accepted.length === 0) {\n onError?.({\n code: \"accept\",\n message: \"No files match the accepted types.\",\n });\n return;\n }\n const withinSize = (f: File) =>\n maxFileSize ? f.size <= maxFileSize : true;\n const sized = accepted.filter(withinSize);\n if (accepted.length > 0 && sized.length === 0) {\n onError?.({\n code: \"max_file_size\",\n message: \"All files exceed the maximum size.\",\n });\n return;\n }\n\n const currentCount = files.length;\n const capacity =\n typeof maxFiles === \"number\"\n ? Math.max(0, maxFiles - currentCount)\n : undefined;\n const capped =\n typeof capacity === \"number\" ? sized.slice(0, capacity) : sized;\n if (typeof capacity === \"number\" && sized.length > capacity) {\n onError?.({\n code: \"max_files\",\n message: \"Too many files. Some were not added.\",\n });\n }\n\n if (capped.length > 0) {\n controller?.attachments.add(capped);\n }\n },\n [matchesAccept, maxFileSize, maxFiles, onError, files.length, controller]\n );\n\n const clearAttachments = useCallback(\n () =>\n usingProvider\n ? controller?.attachments.clear()\n : setItems((prev) => {\n for (const file of prev) {\n if (file.url) {\n URL.revokeObjectURL(file.url);\n }\n }\n return [];\n }),\n [usingProvider, controller]\n );\n\n const clearReferencedSources = useCallback(\n () => setReferencedSources([]),\n []\n );\n\n const add = usingProvider ? addWithProviderValidation : addLocal;\n const remove = usingProvider ? controller.attachments.remove : removeLocal;\n const openFileDialog = usingProvider\n ? controller.attachments.openFileDialog\n : openFileDialogLocal;\n\n const clear = useCallback(() => {\n clearAttachments();\n clearReferencedSources();\n }, [clearAttachments, clearReferencedSources]);\n\n // Let provider know about our hidden file input so external menus can call openFileDialog()\n useEffect(() => {\n if (!usingProvider) {\n return;\n }\n controller.__registerFileInput(inputRef, () => inputRef.current?.click());\n }, [usingProvider, controller]);\n\n // Note: File input cannot be programmatically set for security reasons\n // The syncHiddenInput prop is no longer functional\n useEffect(() => {\n if (syncHiddenInput && inputRef.current && files.length === 0) {\n inputRef.current.value = \"\";\n }\n }, [files, syncHiddenInput]);\n\n // Shared drag-and-drop handlers used by both form-level and document-level effects\n const makeDragHandlers = useCallback(\n (target: HTMLElement | Document, onAddFiles: (files: FileList) => void) => {\n const onDragOver = (e: Event) => {\n const drag = e as DragEvent;\n if (drag.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n };\n const onDrop = (e: Event) => {\n const drag = e as DragEvent;\n if (drag.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n if (drag.dataTransfer?.files && drag.dataTransfer.files.length > 0) {\n onAddFiles(drag.dataTransfer.files);\n }\n };\n target.addEventListener(\"dragover\", onDragOver);\n target.addEventListener(\"drop\", onDrop);\n return () => {\n target.removeEventListener(\"dragover\", onDragOver);\n target.removeEventListener(\"drop\", onDrop);\n };\n },\n []\n );\n\n // Attach drop handlers on nearest form and document (opt-in)\n useEffect(() => {\n const form = formRef.current;\n if (!form) {\n return;\n }\n if (globalDrop) {\n // when global drop is on, let the document-level handler own drops\n return;\n }\n return makeDragHandlers(form, add);\n }, [add, globalDrop, makeDragHandlers]);\n\n useEffect(() => {\n if (!globalDrop) {\n return;\n }\n return makeDragHandlers(document, add);\n }, [add, globalDrop, makeDragHandlers]);\n\n useEffect(\n () => () => {\n if (!usingProvider) {\n for (const f of filesRef.current) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n }\n },\n [usingProvider]\n );\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n if (event.currentTarget.files) {\n add(event.currentTarget.files);\n }\n // Reset input value to allow selecting files that were previously removed\n event.currentTarget.value = \"\";\n },\n [add]\n );\n\n const attachmentsCtx = useMemo<AttachmentsContext>(\n () => ({\n add,\n clear: clearAttachments,\n fileInputRef: inputRef,\n files: files.map((item) => ({ ...item, id: item.id })),\n openFileDialog,\n remove,\n }),\n [files, add, remove, clearAttachments, openFileDialog]\n );\n\n const refsCtx = useMemo<ReferencedSourcesContext>(\n () => ({\n add: (incoming: SourceDocumentUIPart[] | SourceDocumentUIPart) => {\n const array = Array.isArray(incoming) ? incoming : [incoming];\n setReferencedSources((prev) => [\n ...prev,\n ...array.map((s) => ({ ...s, id: crypto.randomUUID() })),\n ]);\n },\n clear: clearReferencedSources,\n remove: (id: string) => {\n setReferencedSources((prev) => prev.filter((s) => s.id !== id));\n },\n sources: referencedSources,\n }),\n [referencedSources, clearReferencedSources]\n );\n\n const handleSubmit: FormEventHandler<HTMLFormElement> = useCallback(\n async (event) => {\n event.preventDefault();\n\n const form = event.currentTarget;\n const text = usingProvider\n ? controller.textInput.value\n : (() => {\n const formData = new FormData(form);\n return (formData.get(\"message\") as string) || \"\";\n })();\n\n // Reset form immediately after capturing text to avoid race condition\n // where user input during async blob conversion would be lost\n if (!usingProvider) {\n form.reset();\n }\n\n try {\n // Convert blob URLs to data URLs asynchronously\n const convertedFiles: FileUIPart[] = await Promise.all(\n files.map(async ({ id: _id, ...item }) => {\n if (item.url?.startsWith(\"blob:\")) {\n const dataUrl = await convertBlobUrlToDataUrl(item.url);\n // If conversion failed, keep the original blob URL\n return {\n ...item,\n url: dataUrl ?? item.url,\n };\n }\n return item;\n })\n );\n\n const result = onSubmit({ files: convertedFiles, text }, event);\n\n // Handle both sync and async onSubmit\n if (result instanceof Promise) {\n try {\n await result;\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n } catch {\n // Don't clear on error - user may want to retry\n }\n } else {\n // Sync function completed without throwing, clear inputs\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n }\n } catch {\n // Don't clear on error - user may want to retry\n }\n },\n [usingProvider, controller, files, onSubmit, clear]\n );\n\n // Render with or without local provider\n const inner = (\n <>\n <input\n accept={accept}\n aria-label=\"Upload files\"\n className=\"hidden\"\n multiple={multiple}\n onChange={handleChange}\n ref={inputRef}\n title=\"Upload files\"\n type=\"file\"\n />\n <form\n className={cn(\"w-full\", className)}\n onSubmit={handleSubmit}\n ref={formRef}\n {...props}\n >\n <InputGroup className=\"border-border overflow-hidden has-[[data-slot=input-group-control]:focus-visible]:ring-0\">{children}</InputGroup>\n </form>\n </>\n );\n\n const withReferencedSources = (\n <LocalReferencedSourcesContext.Provider value={refsCtx}>\n {inner}\n </LocalReferencedSourcesContext.Provider>\n );\n\n // Always provide LocalAttachmentsContext so children get validated add function\n return (\n <LocalAttachmentsContext.Provider value={attachmentsCtx}>\n {withReferencedSources}\n </LocalAttachmentsContext.Provider>\n );\n};\n\nexport type PromptInputBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputBody = ({\n className,\n ...props\n}: PromptInputBodyProps) => (\n <div className={cn(\"contents\", className)} {...props} />\n);\n\nexport type PromptInputTextareaProps = ComponentProps<\n typeof InputGroupTextarea\n>;\n\nexport const PromptInputTextarea = ({\n onChange,\n onKeyDown,\n className,\n placeholder = \"What would you like to know?\",\n ...props\n}: PromptInputTextareaProps) => {\n const controller = useOptionalPromptInputController();\n const attachments = usePromptInputAttachments();\n const [isComposing, setIsComposing] = useState(false);\n\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = useCallback(\n (e) => {\n // Call the external onKeyDown handler first\n onKeyDown?.(e);\n\n // If the external handler prevented default, don't run internal logic\n if (e.defaultPrevented) {\n return;\n }\n\n if (e.key === \"Enter\") {\n if (isComposing || e.nativeEvent.isComposing) {\n return;\n }\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n\n // Check if the submit button is disabled before submitting\n const { form } = e.currentTarget;\n const submitButton = form?.querySelector(\n 'button[type=\"submit\"]'\n ) as HTMLButtonElement | null;\n if (submitButton?.disabled) {\n return;\n }\n\n form?.requestSubmit();\n }\n\n // Remove last attachment when Backspace is pressed and textarea is empty\n if (\n e.key === \"Backspace\" &&\n e.currentTarget.value === \"\" &&\n attachments.files.length > 0\n ) {\n e.preventDefault();\n const lastAttachment = attachments.files[attachments.files.length - 1];\n if (lastAttachment) {\n attachments.remove(lastAttachment.id);\n }\n }\n },\n [onKeyDown, isComposing, attachments]\n );\n\n const handlePaste: ClipboardEventHandler<HTMLTextAreaElement> = useCallback(\n (event) => {\n const items = event.clipboardData?.items;\n\n if (!items) {\n return;\n }\n\n const files: File[] = [];\n\n for (const item of items) {\n if (item.kind === \"file\") {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n event.preventDefault();\n attachments.add(files);\n }\n },\n [attachments]\n );\n\n const handleCompositionEnd = useCallback(() => setIsComposing(false), []);\n const handleCompositionStart = useCallback(() => setIsComposing(true), []);\n\n const controlledProps = controller\n ? {\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => {\n controller.textInput.setInput(e.currentTarget.value);\n onChange?.(e);\n },\n value: controller.textInput.value,\n }\n : {\n onChange,\n };\n\n return (\n <InputGroupTextarea\n className={cn(\"field-sizing-content max-h-48 min-h-16\", className)}\n name=\"message\"\n onCompositionEnd={handleCompositionEnd}\n onCompositionStart={handleCompositionStart}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n {...props}\n {...controlledProps}\n />\n );\n};\n\nexport type PromptInputHeaderProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputHeader = ({\n className,\n ...props\n}: PromptInputHeaderProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"order-first flex-wrap gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputFooterProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputFooter = ({\n className,\n ...props\n}: PromptInputFooterProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"justify-between gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputToolsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTools = ({\n className,\n ...props\n}: PromptInputToolsProps) => (\n <div\n className={cn(\"flex min-w-0 items-center gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputButtonTooltip =\n | string\n | {\n content: ReactNode;\n shortcut?: string;\n side?: ComponentProps<typeof TooltipContent>[\"side\"];\n };\n\nexport type PromptInputButtonProps = ComponentProps<typeof InputGroupButton> & {\n tooltip?: PromptInputButtonTooltip;\n};\n\nexport const PromptInputButton = ({\n variant = \"ghost\",\n className,\n size,\n tooltip,\n ...props\n}: PromptInputButtonProps) => {\n const newSize =\n size ?? (Children.count(props.children) > 1 ? \"sm\" : \"icon-sm\");\n\n const button = (\n <InputGroupButton\n className={cn(className)}\n size={newSize}\n type=\"button\"\n variant={variant}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n const tooltipContent =\n typeof tooltip === \"string\" ? tooltip : tooltip.content;\n const shortcut = typeof tooltip === \"string\" ? undefined : tooltip.shortcut;\n const side = typeof tooltip === \"string\" ? \"top\" : (tooltip.side ?? \"top\");\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side={side}>\n {tooltipContent}\n {shortcut && (\n <span className=\"ml-2 text-muted-foreground\">{shortcut}</span>\n )}\n </TooltipContent>\n </Tooltip>\n );\n};\n\nexport type PromptInputActionMenuProps = ComponentProps<typeof DropdownMenu>;\nexport const PromptInputActionMenu = (props: PromptInputActionMenuProps) => (\n <DropdownMenu {...props} />\n);\n\nexport type PromptInputActionMenuTriggerProps = PromptInputButtonProps;\n\nexport const PromptInputActionMenuTrigger = ({\n className,\n children,\n tooltip,\n \"aria-label\": ariaLabel,\n ...props\n}: PromptInputActionMenuTriggerProps) => {\n const derivedLabel =\n ariaLabel ??\n (typeof tooltip === \"string\"\n ? tooltip\n : typeof tooltip?.content === \"string\"\n ? tooltip.content\n : undefined);\n\n return (\n <DropdownMenuTrigger asChild>\n <PromptInputButton\n aria-label={derivedLabel}\n className={className}\n tooltip={tooltip}\n {...props}\n >\n {children ?? <PlusIcon className=\"size-4\" />}\n </PromptInputButton>\n </DropdownMenuTrigger>\n );\n};\n\nexport type PromptInputActionMenuContentProps = ComponentProps<\n typeof DropdownMenuContent\n>;\nexport const PromptInputActionMenuContent = ({\n className,\n ...props\n}: PromptInputActionMenuContentProps) => (\n <DropdownMenuContent align=\"start\" className={cn(className)} {...props} />\n);\n\nexport type PromptInputActionMenuItemProps = ComponentProps<\n typeof DropdownMenuItem\n>;\nexport const PromptInputActionMenuItem = ({\n className,\n ...props\n}: PromptInputActionMenuItemProps) => (\n <DropdownMenuItem className={cn(className)} {...props} />\n);\n\n// Note: Actions that perform side-effects (like opening a file dialog)\n// are provided in opt-in modules (e.g., prompt-input-attachments).\n\nexport type PromptInputSubmitProps = ComponentProps<typeof InputGroupButton> & {\n status?: ChatStatus;\n onStop?: () => void;\n};\n\nexport const PromptInputSubmit = ({\n className,\n variant = \"default\",\n size = \"icon-sm\",\n status,\n onStop,\n onClick,\n children,\n ...props\n}: PromptInputSubmitProps) => {\n const isGenerating = status === \"submitted\" || status === \"streaming\";\n\n let Icon = <CornerDownLeftIcon className=\"size-4\" />;\n\n if (status === \"submitted\") {\n Icon = <Spinner />;\n } else if (status === \"streaming\") {\n Icon = <SquareIcon className=\"size-4\" />;\n } else if (status === \"error\") {\n Icon = <XIcon className=\"size-4\" />;\n }\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isGenerating && onStop) {\n e.preventDefault();\n onStop();\n return;\n }\n onClick?.(e);\n },\n [isGenerating, onStop, onClick]\n );\n\n return (\n <InputGroupButton\n aria-label={isGenerating ? \"Stop\" : \"Submit\"}\n className={cn(className)}\n onClick={handleClick}\n size={size}\n type={isGenerating && onStop ? \"button\" : \"submit\"}\n variant={variant}\n {...props}\n >\n {children ?? Icon}\n </InputGroupButton>\n );\n};\n\nexport type PromptInputSelectProps = ComponentProps<typeof Select>;\n\nexport const PromptInputSelect = (props: PromptInputSelectProps) => (\n <Select {...props} />\n);\n\nexport type PromptInputSelectTriggerProps = ComponentProps<\n typeof SelectTrigger\n>;\n\nexport const PromptInputSelectTrigger = ({\n className,\n ...props\n}: PromptInputSelectTriggerProps) => (\n <SelectTrigger\n className={cn(\n \"border-none bg-transparent font-medium text-muted-foreground shadow-none transition-colors\",\n \"hover:bg-accent hover:text-foreground aria-expanded:bg-accent aria-expanded:text-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputSelectContentProps = ComponentProps<\n typeof SelectContent\n>;\n\nexport const PromptInputSelectContent = ({\n className,\n ...props\n}: PromptInputSelectContentProps) => (\n <SelectContent className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectItemProps = ComponentProps<typeof SelectItem>;\n\nexport const PromptInputSelectItem = ({\n className,\n ...props\n}: PromptInputSelectItemProps) => (\n <SelectItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectValueProps = ComponentProps<typeof SelectValue>;\n\nexport const PromptInputSelectValue = ({\n className,\n ...props\n}: PromptInputSelectValueProps) => (\n <SelectValue className={cn(className)} {...props} />\n);\n\nexport type PromptInputHoverCardProps = ComponentProps<typeof HoverCard>;\n\nexport const PromptInputHoverCard = ({\n openDelay = 0,\n closeDelay = 0,\n ...props\n}: PromptInputHoverCardProps) => (\n <HoverCard closeDelay={closeDelay} openDelay={openDelay} {...props} />\n);\n\nexport type PromptInputHoverCardTriggerProps = ComponentProps<\n typeof HoverCardTrigger\n>;\n\nexport const PromptInputHoverCardTrigger = (\n props: PromptInputHoverCardTriggerProps\n) => <HoverCardTrigger {...props} />;\n\nexport type PromptInputHoverCardContentProps = ComponentProps<\n typeof HoverCardContent\n>;\n\nexport const PromptInputHoverCardContent = ({\n align = \"start\",\n ...props\n}: PromptInputHoverCardContentProps) => (\n <HoverCardContent align={align} {...props} />\n);\n\n// ============================================================================\n// PromptInputSlotSwap\n// ============================================================================\n\nexport type PromptInputSlotSwapProps = {\n /** Shown when show=false (e.g. mic button). */\n a: ReactNode;\n /** Shown when show=true (e.g. submit button). */\n b: ReactNode;\n /** When true, b is visible; when false, a is visible. */\n show: boolean;\n className?: string;\n};\n\nexport const PromptInputSlotSwap = ({\n a,\n b,\n show,\n className,\n}: PromptInputSlotSwapProps) => (\n <div\n className={cn(\"relative inline-flex items-center justify-center\", className)}\n >\n <div\n aria-hidden={show}\n className={cn(\n \"transition-all duration-200 ease-out\",\n show ? \"pointer-events-none scale-75 opacity-0\" : \"scale-100 opacity-100\"\n )}\n >\n {a}\n </div>\n <div\n aria-hidden={!show}\n className={cn(\n \"absolute transition-all duration-200 ease-out\",\n show ? \"scale-100 opacity-100\" : \"pointer-events-none scale-75 opacity-0\"\n )}\n >\n {b}\n </div>\n </div>\n);\n\nexport type PromptInputTabsListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabsList = ({\n className,\n ...props\n}: PromptInputTabsListProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTab = ({\n className,\n ...props\n}: PromptInputTabProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabLabelProps = HTMLAttributes<HTMLHeadingElement>;\n\nexport const PromptInputTabLabel = ({\n className,\n children,\n ...props\n}: PromptInputTabLabelProps) => (\n <h3\n className={cn(\n \"mb-2 px-3 font-medium text-muted-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children}\n </h3>\n);\n\nexport type PromptInputTabBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabBody = ({\n className,\n ...props\n}: PromptInputTabBodyProps) => (\n <div className={cn(\"space-y-1\", className)} {...props} />\n);\n\nexport type PromptInputTabItemProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabItem = ({\n className,\n ...props\n}: PromptInputTabItemProps) => (\n <div\n className={cn(\n \"flex items-center gap-2 px-3 py-2 text-xs hover:bg-accent\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputCommandProps = ComponentProps<typeof Command>;\n\nexport const PromptInputCommand = ({\n className,\n ...props\n}: PromptInputCommandProps) => <Command className={cn(className)} {...props} />;\n\nexport type PromptInputCommandInputProps = ComponentProps<typeof CommandInput>;\n\nexport const PromptInputCommandInput = ({\n className,\n ...props\n}: PromptInputCommandInputProps) => (\n <CommandInput className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandListProps = ComponentProps<typeof CommandList>;\n\nexport const PromptInputCommandList = ({\n className,\n ...props\n}: PromptInputCommandListProps) => (\n <CommandList className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const PromptInputCommandEmpty = ({\n className,\n ...props\n}: PromptInputCommandEmptyProps) => (\n <CommandEmpty className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const PromptInputCommandGroup = ({\n className,\n ...props\n}: PromptInputCommandGroupProps) => (\n <CommandGroup className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandItemProps = ComponentProps<typeof CommandItem>;\n\nexport const PromptInputCommandItem = ({\n className,\n ...props\n}: PromptInputCommandItemProps) => (\n <CommandItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const PromptInputCommandSeparator = ({\n className,\n ...props\n}: PromptInputCommandSeparatorProps) => (\n <CommandSeparator className={cn(className)} {...props} />\n);\n"],"names":["convertBlobUrlToDataUrl","url","blob","resolve","reader","captureScreenshot","stream","video","reject","width","height","canvas","context","timestamp","track","PromptInputController","createContext","ProviderAttachmentsContext","usePromptInputController","ctx","useContext","useOptionalPromptInputController","useProviderAttachments","useOptionalProviderAttachments","PromptInputProvider","initialTextInput","children","textInput","setTextInput","useState","clearInput","useCallback","attachmentFiles","setAttachmentFiles","fileInputRef","useRef","openRef","add","files","incoming","prev","file","remove","id","found","f","clear","attachmentsRef","useEffect","openFileDialog","attachments","useMemo","__registerFileInput","ref","open","controller","jsx","LocalAttachmentsContext","usePromptInputAttachments","provider","LocalReferencedSourcesContext","usePromptInputReferencedSources","PromptInputActionAddAttachments","label","props","handleSelect","e","jsxs","DropdownMenuItem","ImageIcon","PromptInputActionAddScreenshot","onSelect","event","screenshot","error","Monitor","PromptInput","className","accept","multiple","globalDrop","syncHiddenInput","maxFiles","maxFileSize","onError","onSubmit","usingProvider","inputRef","formRef","items","setItems","referencedSources","setReferencedSources","filesRef","openFileDialogLocal","matchesAccept","s","pattern","prefix","addLocal","fileList","accepted","withinSize","sized","capacity","capped","next","removeLocal","addWithProviderValidation","currentCount","clearAttachments","clearReferencedSources","makeDragHandlers","target","onAddFiles","onDragOver","onDrop","drag","form","handleChange","attachmentsCtx","item","refsCtx","array","handleSubmit","text","convertedFiles","_id","dataUrl","result","inner","Fragment","cn","InputGroup","withReferencedSources","PromptInputBody","PromptInputTextarea","onChange","onKeyDown","placeholder","isComposing","setIsComposing","handleKeyDown","lastAttachment","handlePaste","handleCompositionEnd","handleCompositionStart","controlledProps","InputGroupTextarea","PromptInputHeader","InputGroupAddon","PromptInputFooter","PromptInputTools","PromptInputButton","variant","size","tooltip","newSize","Children","button","InputGroupButton","tooltipContent","shortcut","side","Tooltip","TooltipTrigger","TooltipContent","PromptInputActionMenu","DropdownMenu","PromptInputActionMenuTrigger","ariaLabel","derivedLabel","DropdownMenuTrigger","PlusIcon","PromptInputActionMenuContent","DropdownMenuContent","PromptInputActionMenuItem","PromptInputSubmit","status","onStop","onClick","isGenerating","Icon","CornerDownLeftIcon","Spinner","SquareIcon","XIcon","handleClick","PromptInputSelect","Select","PromptInputSelectTrigger","SelectTrigger","PromptInputSelectContent","SelectContent","PromptInputSelectItem","SelectItem","PromptInputSelectValue","SelectValue","PromptInputHoverCard","openDelay","closeDelay","HoverCard","PromptInputHoverCardTrigger","HoverCardTrigger","PromptInputHoverCardContent","align","HoverCardContent","PromptInputSlotSwap","a","b","show","PromptInputTabsList","PromptInputTab","PromptInputTabLabel","PromptInputTabBody","PromptInputTabItem","PromptInputCommand","Command","PromptInputCommandInput","CommandInput","PromptInputCommandList","CommandList","PromptInputCommandEmpty","CommandEmpty","PromptInputCommandGroup","CommandGroup","PromptInputCommandItem","CommandItem","PromptInputCommandSeparator","CommandSeparator"],"mappings":"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"}
|