@tetrascience-npm/tetrascience-react-ui 0.7.0-beta.129.1 → 0.7.0-beta.131.1
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 +49 -0
- 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.d.ts +2 -0
- package/dist/components/ai/streamdown-plugins.d.ts +2 -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.d.ts +8 -0
- package/dist/components/charts/AreaPlot/AreaPlot.cjs +1 -1
- package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
- package/dist/components/charts/AreaPlot/index.d.ts +2 -0
- package/dist/components/charts/BarChart/BarChart.cjs +1 -1
- package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
- package/dist/components/charts/BarChart/index.d.ts +2 -0
- package/dist/components/charts/BoxPlot/BoxPlot.cjs +1 -1
- package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
- package/dist/components/charts/BoxPlot/index.d.ts +2 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
- 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.d.ts +5 -0
- package/dist/components/charts/Chromatogram/annotations.cjs +1 -1
- package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +1 -1
- package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
- package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
- package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
- package/dist/components/charts/Chromatogram/index.d.ts +2 -0
- package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
- package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
- package/dist/components/charts/Chromatogram/regionOverlays.cjs +1 -1
- package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
- package/dist/components/charts/Chromatogram/types.d.ts +258 -0
- package/dist/components/charts/Electropherogram/Electropherogram.cjs +1 -1
- package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -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.d.ts +36 -0
- package/dist/components/charts/Histogram/index.d.ts +2 -0
- package/dist/components/charts/LinePlot/LinePlot.cjs +1 -1
- package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
- package/dist/components/charts/LinePlot/index.d.ts +2 -0
- package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
- 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 +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 +1 -1
- package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
- package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -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.d.ts +72 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
- package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
- package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
- package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
- package/dist/components/charts/plotly-loader.cjs +1 -1
- package/dist/components/charts/plotly-loader.cjs.map +1 -1
- package/dist/components/charts/plotly-loader.d.ts +29 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +1 -1
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -1
- package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.js +2 -2
- package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -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 +7 -7
- 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 +4 -4
- package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
- package/dist/components/composed/DataAppShell/CollapseButton.cjs +1 -1
- package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -1
- package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
- package/dist/components/composed/DataAppShell/CollapseButton.js +2 -2
- 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 +5 -5
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs +1 -1
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -1
- package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.js +2 -2
- package/dist/components/composed/DataAppShell/RightPanel.cjs +1 -1
- package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -1
- package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
- package/dist/components/composed/DataAppShell/RightPanel.js +2 -2
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs +1 -1
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -1
- package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.js +3 -3
- package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -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 +1 -1
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -1
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +1 -1
- package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +1 -1
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -1
- package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -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 +4 -4
- 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 +2 -2
- 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 +4 -4
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
- 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 +2 -2
- 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 +9 -9
- 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 +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.d.ts +25 -0
- package/dist/components/composed/TopBar/index.d.ts +2 -0
- package/dist/components/composed/UserMenu/UserMenu.cjs +1 -1
- package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -1
- package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
- package/dist/components/composed/UserMenu/UserMenu.js +2 -2
- 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 +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 +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +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.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.d.ts +49 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +102 -5448
- package/dist/index.js +72 -72
- 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 +1 -1
- package/dist/lib/shiki.cjs.map +1 -1
- package/dist/lib/shiki.d.ts +32 -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 +113 -10
- 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 -267
- 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 -776
- 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 -108
- 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 -101
- 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 -139
- package/dist/components/ai/tool.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.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 -324
- 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 -105
- 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 -285
- 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 -178
- 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/dropdown-menu.cjs +0 -2
- package/dist/components/ui/dropdown-menu.cjs.map +0 -1
- package/dist/components/ui/dropdown-menu.js +0 -260
- 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.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 -199
- 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 -61
- 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 -61
- 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 -52
- 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 -153
- 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/tetra-molecule-icon.cjs +0 -2
- package/dist/components/ui/tetra-molecule-icon.cjs.map +0 -1
- package/dist/components/ui/tetra-molecule-icon.js +0 -49
- package/dist/components/ui/tetra-molecule-icon.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 -81
- 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/composed → composed}/tdp-link.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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.js","sources":["../../src/components/ai/conversation.tsx"],"sourcesContent":["import { ArrowDownIcon, DownloadIcon } from \"lucide-react\";\nimport { useCallback } from \"react\";\nimport { StickToBottom, useStickToBottomContext } from \"use-stick-to-bottom\";\n\nimport type { UIMessage } from \"ai\";\nimport type { ComponentProps } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ConversationProps = ComponentProps<typeof StickToBottom>;\n\nexport const Conversation = ({ className, ...props }: ConversationProps) => (\n <StickToBottom\n className={cn(\"relative flex-1 overflow-y-hidden\", className)}\n initial=\"smooth\"\n resize=\"smooth\"\n role=\"log\"\n {...props}\n />\n);\n\nexport type ConversationContentProps = ComponentProps<\n typeof StickToBottom.Content\n>;\n\nexport const ConversationContent = ({\n className,\n ...props\n}: ConversationContentProps) => (\n <StickToBottom.Content\n className={cn(\"flex flex-col gap-8 p-4\", className)}\n {...props}\n />\n);\n\nexport type ConversationEmptyStateProps = ComponentProps<\"div\"> & {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n};\n\nexport const ConversationEmptyState = ({\n className,\n title = \"No messages yet\",\n description = \"Start a conversation to see messages here\",\n icon,\n children,\n ...props\n}: ConversationEmptyStateProps) => (\n <div\n className={cn(\n \"flex size-full flex-col items-center justify-center gap-3 p-8 text-center\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n {icon && <div className=\"text-muted-foreground\">{icon}</div>}\n <div className=\"space-y-1\">\n <h3 className=\"font-medium text-sm\">{title}</h3>\n {description && (\n <p className=\"text-muted-foreground text-sm\">{description}</p>\n )}\n </div>\n </>\n )}\n </div>\n);\n\nexport type ConversationScrollButtonProps = ComponentProps<typeof Button>;\n\nexport const ConversationScrollButton = ({\n className,\n ...props\n}: ConversationScrollButtonProps) => {\n const { isAtBottom, scrollToBottom } = useStickToBottomContext();\n\n const handleScrollToBottom = useCallback(() => {\n scrollToBottom();\n }, [scrollToBottom]);\n\n return (\n !isAtBottom && (\n <Button\n className={cn(\n \"absolute bottom-4 left-[50%] translate-x-[-50%] rounded-full dark:bg-background dark:hover:bg-accent\",\n className\n )}\n onClick={handleScrollToBottom}\n size=\"icon\"\n type=\"button\"\n variant=\"outline\"\n {...props}\n >\n <ArrowDownIcon className=\"size-4\" />\n </Button>\n )\n );\n};\n\nconst getMessageText = (message: UIMessage): string =>\n message.parts\n .filter((part) => part.type === \"text\")\n .map((part) => part.text)\n .join(\"\");\n\nexport type ConversationDownloadProps = Omit<\n ComponentProps<typeof Button>,\n \"onClick\"\n> & {\n messages: UIMessage[];\n filename?: string;\n formatMessage?: (message: UIMessage, index: number) => string;\n};\n\nconst defaultFormatMessage = (message: UIMessage): string => {\n const roleLabel =\n message.role.charAt(0).toUpperCase() + message.role.slice(1);\n return `**${roleLabel}:** ${getMessageText(message)}`;\n};\n\nexport const messagesToMarkdown = (\n messages: UIMessage[],\n formatMessage: (\n message: UIMessage,\n index: number\n ) => string = defaultFormatMessage\n): string => messages.map((msg, i) => formatMessage(msg, i)).join(\"\\n\\n\");\n\nexport const ConversationDownload = ({\n messages,\n filename = \"conversation.md\",\n formatMessage = defaultFormatMessage,\n className,\n children,\n ...props\n}: ConversationDownloadProps) => {\n const handleDownload = useCallback(() => {\n const markdown = messagesToMarkdown(messages, formatMessage);\n const blob = new Blob([markdown], { type: \"text/markdown\" });\n const url = URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = url;\n link.download = filename;\n document.body.append(link);\n link.click();\n link.remove();\n URL.revokeObjectURL(url);\n }, [messages, filename, formatMessage]);\n\n return (\n <Button\n className={cn(\n \"absolute top-4 right-4 rounded-full dark:bg-background dark:hover:bg-accent\",\n className\n )}\n onClick={handleDownload}\n size=\"icon\"\n type=\"button\"\n variant=\"outline\"\n {...props}\n >\n {children ?? <DownloadIcon className=\"size-4\" />}\n </Button>\n );\n};\n"],"names":["Conversation","className","props","jsx","StickToBottom","cn","ConversationContent","ConversationEmptyState","title","description","icon","children","jsxs","Fragment","ConversationScrollButton","isAtBottom","scrollToBottom","useStickToBottomContext","handleScrollToBottom","useCallback","Button","ArrowDownIcon","getMessageText","message","part","defaultFormatMessage","messagesToMarkdown","messages","formatMessage","msg","i","ConversationDownload","filename","handleDownload","markdown","blob","url","link","DownloadIcon"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),x=require("lucide-react"),o=require("react"),p=require("../ui/badge.cjs"),u=require("../ui/carousel.cjs"),C=require("../ui/hover-card.cjs"),s=require("../lib/utils.cjs"),h=({className:e,...t})=>n.jsx("span",{className:s.cn("group inline items-center gap-1",e),...t}),j=({className:e,...t})=>n.jsx("span",{className:s.cn("transition-colors group-hover:bg-accent",e),...t}),f=e=>{try{return new URL(e).hostname}catch{return e}},N=e=>n.jsx(C.HoverCard,{closeDelay:0,openDelay:0,...e}),b=({sources:e,className:t,...i})=>n.jsx(C.HoverCardTrigger,{asChild:!0,children:n.jsx(p.Badge,{className:s.cn("ml-1 rounded-full",t),variant:"secondary",...i,children:e[0]?n.jsxs(n.Fragment,{children:[f(e[0])," ",e.length>1&&`+${e.length-1}`]}):"unknown"})}),v=({className:e,...t})=>n.jsx(C.HoverCardContent,{className:s.cn("relative w-80 p-0",e),...t}),m=o.createContext(void 0),d=()=>o.useContext(m),y=({className:e,children:t,...i})=>{const[a,r]=o.useState();return n.jsx(m.Provider,{value:a,children:n.jsx(u.Carousel,{className:s.cn("w-full",e),setApi:r,...i,children:t})})},k=e=>n.jsx(u.CarouselContent,{...e}),S=({className:e,...t})=>n.jsx(u.CarouselItem,{className:s.cn("w-full space-y-2 p-4 pl-8",e),...t}),q=({className:e,...t})=>n.jsx("div",{className:s.cn("flex items-center justify-between gap-2 rounded-t-md bg-secondary p-2",e),...t}),w=({children:e,className:t,...i})=>{const a=d(),[r,c]=o.useState(0),[I,g]=o.useState(0),l=o.useCallback(()=>{a&&(g(a.scrollSnapList().length),c(a.selectedScrollSnap()+1))},[a]);return o.useEffect(()=>{if(a)return l(),a.on("select",l),()=>{a.off("select",l)}},[a,l]),n.jsx("div",{className:s.cn("flex flex-1 items-center justify-end px-3 py-1 text-muted-foreground text-xs",t),...i,children:e??`${r}/${I}`})},H=({className:e,...t})=>{const i=d(),a=o.useCallback(()=>{i&&i.scrollPrev()},[i]);return n.jsx("button",{"aria-label":"Previous",className:s.cn("shrink-0",e),onClick:a,type:"button",...t,children:n.jsx(x.ArrowLeftIcon,{className:"size-4 text-muted-foreground"})})},P=({className:e,...t})=>{const i=d(),a=o.useCallback(()=>{i&&i.scrollNext()},[i]);return n.jsx("button",{"aria-label":"Next",className:s.cn("shrink-0",e),onClick:a,type:"button",...t,children:n.jsx(x.ArrowRightIcon,{className:"size-4 text-muted-foreground"})})},T=({title:e,url:t,description:i,className:a,children:r,...c})=>n.jsxs("div",{className:s.cn("space-y-1",a),...c,children:[e&&n.jsx("h4",{className:"truncate font-medium text-sm leading-tight",children:e}),t&&n.jsx("p",{className:"truncate break-all text-muted-foreground text-xs",children:t}),i&&n.jsx("p",{className:"line-clamp-3 text-muted-foreground text-sm leading-relaxed",children:i}),r]}),A=({children:e,className:t,...i})=>n.jsx("blockquote",{className:s.cn("border-muted border-l-2 pl-3 text-muted-foreground text-sm italic",t),...i,children:e});exports.InlineCitation=h;exports.InlineCitationCard=N;exports.InlineCitationCardBody=v;exports.InlineCitationCardTrigger=b;exports.InlineCitationCarousel=y;exports.InlineCitationCarouselContent=k;exports.InlineCitationCarouselHeader=q;exports.InlineCitationCarouselIndex=w;exports.InlineCitationCarouselItem=S;exports.InlineCitationCarouselNext=P;exports.InlineCitationCarouselPrev=H;exports.InlineCitationQuote=A;exports.InlineCitationSource=T;exports.InlineCitationText=j;
|
|
2
|
+
//# sourceMappingURL=inline-citation.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-citation.cjs","sources":["../../src/components/ai/inline-citation.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\n\nimport type { CarouselApi } from \"@/components/ui/carousel\";\nimport type { ComponentProps } from \"react\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n} from \"@/components/ui/carousel\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport { cn } from \"@/lib/utils\";\n\n\n\n\nexport type InlineCitationProps = ComponentProps<\"span\">;\n\nexport const InlineCitation = ({\n className,\n ...props\n}: InlineCitationProps) => (\n <span\n className={cn(\"group inline items-center gap-1\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationTextProps = ComponentProps<\"span\">;\n\nexport const InlineCitationText = ({\n className,\n ...props\n}: InlineCitationTextProps) => (\n <span\n className={cn(\"transition-colors group-hover:bg-accent\", className)}\n {...props}\n />\n);\n\nconst getHostname = (source: string) => {\n try {\n return new URL(source).hostname;\n } catch {\n return source;\n }\n};\n\nexport type InlineCitationCardProps = ComponentProps<typeof HoverCard>;\n\nexport const InlineCitationCard = (props: InlineCitationCardProps) => (\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n);\n\nexport type InlineCitationCardTriggerProps = ComponentProps<typeof Badge> & {\n sources: string[];\n};\n\nexport const InlineCitationCardTrigger = ({\n sources,\n className,\n ...props\n}: InlineCitationCardTriggerProps) => (\n <HoverCardTrigger asChild>\n <Badge\n className={cn(\"ml-1 rounded-full\", className)}\n variant=\"secondary\"\n {...props}\n >\n {sources[0] ? (\n <>\n {getHostname(sources[0])}{\" \"}\n {sources.length > 1 && `+${sources.length - 1}`}\n </>\n ) : (\n \"unknown\"\n )}\n </Badge>\n </HoverCardTrigger>\n);\n\nexport type InlineCitationCardBodyProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCardBody = ({\n className,\n ...props\n}: InlineCitationCardBodyProps) => (\n <HoverCardContent className={cn(\"relative w-80 p-0\", className)} {...props} />\n);\n\nconst CarouselApiContext = createContext<CarouselApi | undefined>(undefined);\n\nconst useCarouselApi = () => {\n return useContext(CarouselApiContext);\n};\n\nexport type InlineCitationCarouselProps = ComponentProps<typeof Carousel>;\n\nexport const InlineCitationCarousel = ({\n className,\n children,\n ...props\n}: InlineCitationCarouselProps) => {\n const [api, setApi] = useState<CarouselApi>();\n\n return (\n <CarouselApiContext.Provider value={api}>\n <Carousel className={cn(\"w-full\", className)} setApi={setApi} {...props}>\n {children}\n </Carousel>\n </CarouselApiContext.Provider>\n );\n};\n\nexport type InlineCitationCarouselContentProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselContent = (\n props: InlineCitationCarouselContentProps\n) => <CarouselContent {...props} />;\n\nexport type InlineCitationCarouselItemProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselItem = ({\n className,\n ...props\n}: InlineCitationCarouselItemProps) => (\n <CarouselItem\n className={cn(\"w-full space-y-2 p-4 pl-8\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationCarouselHeaderProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselHeader = ({\n className,\n ...props\n}: InlineCitationCarouselHeaderProps) => (\n <div\n className={cn(\n \"flex items-center justify-between gap-2 rounded-t-md bg-secondary p-2\",\n className\n )}\n {...props}\n />\n);\n\nexport type InlineCitationCarouselIndexProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselIndex = ({\n children,\n className,\n ...props\n}: InlineCitationCarouselIndexProps) => {\n const api = useCarouselApi();\n const [current, setCurrent] = useState(0);\n const [count, setCount] = useState(0);\n\n const syncState = useCallback(() => {\n if (!api) {\n return;\n }\n setCount(api.scrollSnapList().length);\n setCurrent(api.selectedScrollSnap() + 1);\n }, [api]);\n\n useEffect(() => {\n if (!api) {\n return;\n }\n\n syncState();\n\n api.on(\"select\", syncState);\n\n return () => {\n api.off(\"select\", syncState);\n };\n }, [api, syncState]);\n\n return (\n <div\n className={cn(\n \"flex flex-1 items-center justify-end px-3 py-1 text-muted-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children ?? `${current}/${count}`}\n </div>\n );\n};\n\nexport type InlineCitationCarouselPrevProps = ComponentProps<\"button\">;\n\nexport const InlineCitationCarouselPrev = ({\n className,\n ...props\n}: InlineCitationCarouselPrevProps) => {\n const api = useCarouselApi();\n\n const handleClick = useCallback(() => {\n if (api) {\n api.scrollPrev();\n }\n }, [api]);\n\n return (\n <button\n aria-label=\"Previous\"\n className={cn(\"shrink-0\", className)}\n onClick={handleClick}\n type=\"button\"\n {...props}\n >\n <ArrowLeftIcon className=\"size-4 text-muted-foreground\" />\n </button>\n );\n};\n\nexport type InlineCitationCarouselNextProps = ComponentProps<\"button\">;\n\nexport const InlineCitationCarouselNext = ({\n className,\n ...props\n}: InlineCitationCarouselNextProps) => {\n const api = useCarouselApi();\n\n const handleClick = useCallback(() => {\n if (api) {\n api.scrollNext();\n }\n }, [api]);\n\n return (\n <button\n aria-label=\"Next\"\n className={cn(\"shrink-0\", className)}\n onClick={handleClick}\n type=\"button\"\n {...props}\n >\n <ArrowRightIcon className=\"size-4 text-muted-foreground\" />\n </button>\n );\n};\n\nexport type InlineCitationSourceProps = ComponentProps<\"div\"> & {\n title?: string;\n url?: string;\n description?: string;\n};\n\nexport const InlineCitationSource = ({\n title,\n url,\n description,\n className,\n children,\n ...props\n}: InlineCitationSourceProps) => (\n <div className={cn(\"space-y-1\", className)} {...props}>\n {title && (\n <h4 className=\"truncate font-medium text-sm leading-tight\">{title}</h4>\n )}\n {url && (\n <p className=\"truncate break-all text-muted-foreground text-xs\">{url}</p>\n )}\n {description && (\n <p className=\"line-clamp-3 text-muted-foreground text-sm leading-relaxed\">\n {description}\n </p>\n )}\n {children}\n </div>\n);\n\nexport type InlineCitationQuoteProps = ComponentProps<\"blockquote\">;\n\nexport const InlineCitationQuote = ({\n children,\n className,\n ...props\n}: InlineCitationQuoteProps) => (\n <blockquote\n className={cn(\n \"border-muted border-l-2 pl-3 text-muted-foreground text-sm italic\",\n className\n )}\n {...props}\n >\n {children}\n </blockquote>\n);\n"],"names":["InlineCitation","className","props","jsx","cn","InlineCitationText","getHostname","source","InlineCitationCard","HoverCard","InlineCitationCardTrigger","sources","HoverCardTrigger","Badge","jsxs","Fragment","InlineCitationCardBody","HoverCardContent","CarouselApiContext","createContext","useCarouselApi","useContext","InlineCitationCarousel","children","api","setApi","useState","Carousel","InlineCitationCarouselContent","CarouselContent","InlineCitationCarouselItem","CarouselItem","InlineCitationCarouselHeader","InlineCitationCarouselIndex","current","setCurrent","count","setCount","syncState","useCallback","useEffect","InlineCitationCarouselPrev","handleClick","ArrowLeftIcon","InlineCitationCarouselNext","ArrowRightIcon","InlineCitationSource","title","url","description","InlineCitationQuote"],"mappings":"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"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { jsx as n, jsxs as m, Fragment as x } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowRightIcon as g, ArrowLeftIcon as h } from "lucide-react";
|
|
3
|
+
import { createContext as N, useState as c, useCallback as u, useEffect as I, useContext as v } from "react";
|
|
4
|
+
import { Badge as b } from "../ui/badge.js";
|
|
5
|
+
import { Carousel as y, CarouselContent as k, CarouselItem as w } from "../ui/carousel.js";
|
|
6
|
+
import { HoverCard as S, HoverCardContent as A, HoverCardTrigger as H } from "../ui/hover-card.js";
|
|
7
|
+
import { cn as a } from "../lib/utils.js";
|
|
8
|
+
const R = ({
|
|
9
|
+
className: e,
|
|
10
|
+
...t
|
|
11
|
+
}) => /* @__PURE__ */ n(
|
|
12
|
+
"span",
|
|
13
|
+
{
|
|
14
|
+
className: a("group inline items-center gap-1", e),
|
|
15
|
+
...t
|
|
16
|
+
}
|
|
17
|
+
), q = ({
|
|
18
|
+
className: e,
|
|
19
|
+
...t
|
|
20
|
+
}) => /* @__PURE__ */ n(
|
|
21
|
+
"span",
|
|
22
|
+
{
|
|
23
|
+
className: a("transition-colors group-hover:bg-accent", e),
|
|
24
|
+
...t
|
|
25
|
+
}
|
|
26
|
+
), j = (e) => {
|
|
27
|
+
try {
|
|
28
|
+
return new URL(e).hostname;
|
|
29
|
+
} catch {
|
|
30
|
+
return e;
|
|
31
|
+
}
|
|
32
|
+
}, E = (e) => /* @__PURE__ */ n(S, { closeDelay: 0, openDelay: 0, ...e }), F = ({
|
|
33
|
+
sources: e,
|
|
34
|
+
className: t,
|
|
35
|
+
...o
|
|
36
|
+
}) => /* @__PURE__ */ n(H, { asChild: !0, children: /* @__PURE__ */ n(
|
|
37
|
+
b,
|
|
38
|
+
{
|
|
39
|
+
className: a("ml-1 rounded-full", t),
|
|
40
|
+
variant: "secondary",
|
|
41
|
+
...o,
|
|
42
|
+
children: e[0] ? /* @__PURE__ */ m(x, { children: [
|
|
43
|
+
j(e[0]),
|
|
44
|
+
" ",
|
|
45
|
+
e.length > 1 && `+${e.length - 1}`
|
|
46
|
+
] }) : "unknown"
|
|
47
|
+
}
|
|
48
|
+
) }), Q = ({
|
|
49
|
+
className: e,
|
|
50
|
+
...t
|
|
51
|
+
}) => /* @__PURE__ */ n(A, { className: a("relative w-80 p-0", e), ...t }), C = N(void 0), d = () => v(C), U = ({
|
|
52
|
+
className: e,
|
|
53
|
+
children: t,
|
|
54
|
+
...o
|
|
55
|
+
}) => {
|
|
56
|
+
const [r, s] = c();
|
|
57
|
+
return /* @__PURE__ */ n(C.Provider, { value: r, children: /* @__PURE__ */ n(y, { className: a("w-full", e), setApi: s, ...o, children: t }) });
|
|
58
|
+
}, G = (e) => /* @__PURE__ */ n(k, { ...e }), J = ({
|
|
59
|
+
className: e,
|
|
60
|
+
...t
|
|
61
|
+
}) => /* @__PURE__ */ n(
|
|
62
|
+
w,
|
|
63
|
+
{
|
|
64
|
+
className: a("w-full space-y-2 p-4 pl-8", e),
|
|
65
|
+
...t
|
|
66
|
+
}
|
|
67
|
+
), K = ({
|
|
68
|
+
className: e,
|
|
69
|
+
...t
|
|
70
|
+
}) => /* @__PURE__ */ n(
|
|
71
|
+
"div",
|
|
72
|
+
{
|
|
73
|
+
className: a(
|
|
74
|
+
"flex items-center justify-between gap-2 rounded-t-md bg-secondary p-2",
|
|
75
|
+
e
|
|
76
|
+
),
|
|
77
|
+
...t
|
|
78
|
+
}
|
|
79
|
+
), M = ({
|
|
80
|
+
children: e,
|
|
81
|
+
className: t,
|
|
82
|
+
...o
|
|
83
|
+
}) => {
|
|
84
|
+
const r = d(), [s, i] = c(0), [p, f] = c(0), l = u(() => {
|
|
85
|
+
r && (f(r.scrollSnapList().length), i(r.selectedScrollSnap() + 1));
|
|
86
|
+
}, [r]);
|
|
87
|
+
return I(() => {
|
|
88
|
+
if (r)
|
|
89
|
+
return l(), r.on("select", l), () => {
|
|
90
|
+
r.off("select", l);
|
|
91
|
+
};
|
|
92
|
+
}, [r, l]), /* @__PURE__ */ n(
|
|
93
|
+
"div",
|
|
94
|
+
{
|
|
95
|
+
className: a(
|
|
96
|
+
"flex flex-1 items-center justify-end px-3 py-1 text-muted-foreground text-xs",
|
|
97
|
+
t
|
|
98
|
+
),
|
|
99
|
+
...o,
|
|
100
|
+
children: e ?? `${s}/${p}`
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
}, O = ({
|
|
104
|
+
className: e,
|
|
105
|
+
...t
|
|
106
|
+
}) => {
|
|
107
|
+
const o = d(), r = u(() => {
|
|
108
|
+
o && o.scrollPrev();
|
|
109
|
+
}, [o]);
|
|
110
|
+
return /* @__PURE__ */ n(
|
|
111
|
+
"button",
|
|
112
|
+
{
|
|
113
|
+
"aria-label": "Previous",
|
|
114
|
+
className: a("shrink-0", e),
|
|
115
|
+
onClick: r,
|
|
116
|
+
type: "button",
|
|
117
|
+
...t,
|
|
118
|
+
children: /* @__PURE__ */ n(h, { className: "size-4 text-muted-foreground" })
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
}, V = ({
|
|
122
|
+
className: e,
|
|
123
|
+
...t
|
|
124
|
+
}) => {
|
|
125
|
+
const o = d(), r = u(() => {
|
|
126
|
+
o && o.scrollNext();
|
|
127
|
+
}, [o]);
|
|
128
|
+
return /* @__PURE__ */ n(
|
|
129
|
+
"button",
|
|
130
|
+
{
|
|
131
|
+
"aria-label": "Next",
|
|
132
|
+
className: a("shrink-0", e),
|
|
133
|
+
onClick: r,
|
|
134
|
+
type: "button",
|
|
135
|
+
...t,
|
|
136
|
+
children: /* @__PURE__ */ n(g, { className: "size-4 text-muted-foreground" })
|
|
137
|
+
}
|
|
138
|
+
);
|
|
139
|
+
}, W = ({
|
|
140
|
+
title: e,
|
|
141
|
+
url: t,
|
|
142
|
+
description: o,
|
|
143
|
+
className: r,
|
|
144
|
+
children: s,
|
|
145
|
+
...i
|
|
146
|
+
}) => /* @__PURE__ */ m("div", { className: a("space-y-1", r), ...i, children: [
|
|
147
|
+
e && /* @__PURE__ */ n("h4", { className: "truncate font-medium text-sm leading-tight", children: e }),
|
|
148
|
+
t && /* @__PURE__ */ n("p", { className: "truncate break-all text-muted-foreground text-xs", children: t }),
|
|
149
|
+
o && /* @__PURE__ */ n("p", { className: "line-clamp-3 text-muted-foreground text-sm leading-relaxed", children: o }),
|
|
150
|
+
s
|
|
151
|
+
] }), X = ({
|
|
152
|
+
children: e,
|
|
153
|
+
className: t,
|
|
154
|
+
...o
|
|
155
|
+
}) => /* @__PURE__ */ n(
|
|
156
|
+
"blockquote",
|
|
157
|
+
{
|
|
158
|
+
className: a(
|
|
159
|
+
"border-muted border-l-2 pl-3 text-muted-foreground text-sm italic",
|
|
160
|
+
t
|
|
161
|
+
),
|
|
162
|
+
...o,
|
|
163
|
+
children: e
|
|
164
|
+
}
|
|
165
|
+
);
|
|
166
|
+
export {
|
|
167
|
+
R as InlineCitation,
|
|
168
|
+
E as InlineCitationCard,
|
|
169
|
+
Q as InlineCitationCardBody,
|
|
170
|
+
F as InlineCitationCardTrigger,
|
|
171
|
+
U as InlineCitationCarousel,
|
|
172
|
+
G as InlineCitationCarouselContent,
|
|
173
|
+
K as InlineCitationCarouselHeader,
|
|
174
|
+
M as InlineCitationCarouselIndex,
|
|
175
|
+
J as InlineCitationCarouselItem,
|
|
176
|
+
V as InlineCitationCarouselNext,
|
|
177
|
+
O as InlineCitationCarouselPrev,
|
|
178
|
+
X as InlineCitationQuote,
|
|
179
|
+
W as InlineCitationSource,
|
|
180
|
+
q as InlineCitationText
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=inline-citation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-citation.js","sources":["../../src/components/ai/inline-citation.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\n\nimport type { CarouselApi } from \"@/components/ui/carousel\";\nimport type { ComponentProps } from \"react\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n} from \"@/components/ui/carousel\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport { cn } from \"@/lib/utils\";\n\n\n\n\nexport type InlineCitationProps = ComponentProps<\"span\">;\n\nexport const InlineCitation = ({\n className,\n ...props\n}: InlineCitationProps) => (\n <span\n className={cn(\"group inline items-center gap-1\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationTextProps = ComponentProps<\"span\">;\n\nexport const InlineCitationText = ({\n className,\n ...props\n}: InlineCitationTextProps) => (\n <span\n className={cn(\"transition-colors group-hover:bg-accent\", className)}\n {...props}\n />\n);\n\nconst getHostname = (source: string) => {\n try {\n return new URL(source).hostname;\n } catch {\n return source;\n }\n};\n\nexport type InlineCitationCardProps = ComponentProps<typeof HoverCard>;\n\nexport const InlineCitationCard = (props: InlineCitationCardProps) => (\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n);\n\nexport type InlineCitationCardTriggerProps = ComponentProps<typeof Badge> & {\n sources: string[];\n};\n\nexport const InlineCitationCardTrigger = ({\n sources,\n className,\n ...props\n}: InlineCitationCardTriggerProps) => (\n <HoverCardTrigger asChild>\n <Badge\n className={cn(\"ml-1 rounded-full\", className)}\n variant=\"secondary\"\n {...props}\n >\n {sources[0] ? (\n <>\n {getHostname(sources[0])}{\" \"}\n {sources.length > 1 && `+${sources.length - 1}`}\n </>\n ) : (\n \"unknown\"\n )}\n </Badge>\n </HoverCardTrigger>\n);\n\nexport type InlineCitationCardBodyProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCardBody = ({\n className,\n ...props\n}: InlineCitationCardBodyProps) => (\n <HoverCardContent className={cn(\"relative w-80 p-0\", className)} {...props} />\n);\n\nconst CarouselApiContext = createContext<CarouselApi | undefined>(undefined);\n\nconst useCarouselApi = () => {\n return useContext(CarouselApiContext);\n};\n\nexport type InlineCitationCarouselProps = ComponentProps<typeof Carousel>;\n\nexport const InlineCitationCarousel = ({\n className,\n children,\n ...props\n}: InlineCitationCarouselProps) => {\n const [api, setApi] = useState<CarouselApi>();\n\n return (\n <CarouselApiContext.Provider value={api}>\n <Carousel className={cn(\"w-full\", className)} setApi={setApi} {...props}>\n {children}\n </Carousel>\n </CarouselApiContext.Provider>\n );\n};\n\nexport type InlineCitationCarouselContentProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselContent = (\n props: InlineCitationCarouselContentProps\n) => <CarouselContent {...props} />;\n\nexport type InlineCitationCarouselItemProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselItem = ({\n className,\n ...props\n}: InlineCitationCarouselItemProps) => (\n <CarouselItem\n className={cn(\"w-full space-y-2 p-4 pl-8\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationCarouselHeaderProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselHeader = ({\n className,\n ...props\n}: InlineCitationCarouselHeaderProps) => (\n <div\n className={cn(\n \"flex items-center justify-between gap-2 rounded-t-md bg-secondary p-2\",\n className\n )}\n {...props}\n />\n);\n\nexport type InlineCitationCarouselIndexProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselIndex = ({\n children,\n className,\n ...props\n}: InlineCitationCarouselIndexProps) => {\n const api = useCarouselApi();\n const [current, setCurrent] = useState(0);\n const [count, setCount] = useState(0);\n\n const syncState = useCallback(() => {\n if (!api) {\n return;\n }\n setCount(api.scrollSnapList().length);\n setCurrent(api.selectedScrollSnap() + 1);\n }, [api]);\n\n useEffect(() => {\n if (!api) {\n return;\n }\n\n syncState();\n\n api.on(\"select\", syncState);\n\n return () => {\n api.off(\"select\", syncState);\n };\n }, [api, syncState]);\n\n return (\n <div\n className={cn(\n \"flex flex-1 items-center justify-end px-3 py-1 text-muted-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children ?? `${current}/${count}`}\n </div>\n );\n};\n\nexport type InlineCitationCarouselPrevProps = ComponentProps<\"button\">;\n\nexport const InlineCitationCarouselPrev = ({\n className,\n ...props\n}: InlineCitationCarouselPrevProps) => {\n const api = useCarouselApi();\n\n const handleClick = useCallback(() => {\n if (api) {\n api.scrollPrev();\n }\n }, [api]);\n\n return (\n <button\n aria-label=\"Previous\"\n className={cn(\"shrink-0\", className)}\n onClick={handleClick}\n type=\"button\"\n {...props}\n >\n <ArrowLeftIcon className=\"size-4 text-muted-foreground\" />\n </button>\n );\n};\n\nexport type InlineCitationCarouselNextProps = ComponentProps<\"button\">;\n\nexport const InlineCitationCarouselNext = ({\n className,\n ...props\n}: InlineCitationCarouselNextProps) => {\n const api = useCarouselApi();\n\n const handleClick = useCallback(() => {\n if (api) {\n api.scrollNext();\n }\n }, [api]);\n\n return (\n <button\n aria-label=\"Next\"\n className={cn(\"shrink-0\", className)}\n onClick={handleClick}\n type=\"button\"\n {...props}\n >\n <ArrowRightIcon className=\"size-4 text-muted-foreground\" />\n </button>\n );\n};\n\nexport type InlineCitationSourceProps = ComponentProps<\"div\"> & {\n title?: string;\n url?: string;\n description?: string;\n};\n\nexport const InlineCitationSource = ({\n title,\n url,\n description,\n className,\n children,\n ...props\n}: InlineCitationSourceProps) => (\n <div className={cn(\"space-y-1\", className)} {...props}>\n {title && (\n <h4 className=\"truncate font-medium text-sm leading-tight\">{title}</h4>\n )}\n {url && (\n <p className=\"truncate break-all text-muted-foreground text-xs\">{url}</p>\n )}\n {description && (\n <p className=\"line-clamp-3 text-muted-foreground text-sm leading-relaxed\">\n {description}\n </p>\n )}\n {children}\n </div>\n);\n\nexport type InlineCitationQuoteProps = ComponentProps<\"blockquote\">;\n\nexport const InlineCitationQuote = ({\n children,\n className,\n ...props\n}: InlineCitationQuoteProps) => (\n <blockquote\n className={cn(\n \"border-muted border-l-2 pl-3 text-muted-foreground text-sm italic\",\n className\n )}\n {...props}\n >\n {children}\n </blockquote>\n);\n"],"names":["InlineCitation","className","props","jsx","cn","InlineCitationText","getHostname","source","InlineCitationCard","HoverCard","InlineCitationCardTrigger","sources","HoverCardTrigger","Badge","jsxs","Fragment","InlineCitationCardBody","HoverCardContent","CarouselApiContext","createContext","useCarouselApi","useContext","InlineCitationCarousel","children","api","setApi","useState","Carousel","InlineCitationCarouselContent","CarouselContent","InlineCitationCarouselItem","CarouselItem","InlineCitationCarouselHeader","InlineCitationCarouselIndex","current","setCurrent","count","setCount","syncState","useCallback","useEffect","InlineCitationCarouselPrev","handleClick","ArrowLeftIcon","InlineCitationCarouselNext","ArrowRightIcon","InlineCitationSource","title","url","description","InlineCitationQuote"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),M=require("lucide-react"),c=require("react"),w=require("streamdown"),C=require("../components/ai/use-streamdown-plugins.cjs"),m=require("../ui/button.cjs"),f=require("../ui/button-group.cjs"),d=require("../ui/tooltip.cjs"),i=require("../lib/utils.cjs"),N=({className:e,from:s,...n})=>t.jsx("div",{className:i.cn("group flex w-full max-w-[95%] flex-col gap-2",s==="user"?"is-user ml-auto justify-end":"is-assistant",e),...n}),y=({children:e,className:s,...n})=>t.jsx("div",{className:i.cn("is-user:dark flex w-fit min-w-0 max-w-full flex-col gap-2 overflow-hidden text-sm","group-[.is-user]:ml-auto group-[.is-user]:rounded-lg group-[.is-user]:bg-secondary group-[.is-user]:px-4 group-[.is-user]:py-3 group-[.is-user]:text-foreground","group-[.is-assistant]:text-foreground",s),...n,children:e}),T=({className:e,children:s,...n})=>t.jsx("div",{className:i.cn("flex items-center gap-1",e),...n,children:s}),P=({tooltip:e,children:s,label:n,variant:a="ghost",size:r="icon-sm",...u})=>{const o=t.jsxs(m.Button,{size:r,type:"button",variant:a,...u,children:[s,t.jsx("span",{className:"sr-only",children:n||e})]});return e?t.jsx(d.TooltipProvider,{children:t.jsxs(d.Tooltip,{children:[t.jsx(d.TooltipTrigger,{asChild:!0,children:o}),t.jsx(d.TooltipContent,{children:t.jsx("p",{children:e})})]})}):o},b=c.createContext(null),g=()=>{const e=c.useContext(b);if(!e)throw new Error("MessageBranch components must be used within MessageBranch");return e},q=({defaultBranch:e=0,onBranchChange:s,className:n,...a})=>{const[r,u]=c.useState(e),[o,x]=c.useState([]),h=c.useCallback(l=>{u(l),s?.(l)},[s]),p=c.useCallback(()=>{const l=r>0?r-1:o.length-1;h(l)},[r,o.length,h]),B=c.useCallback(()=>{const l=r<o.length-1?r+1:0;h(l)},[r,o.length,h]),v=c.useMemo(()=>({branches:o,currentBranch:r,goToNext:B,goToPrevious:p,setBranches:x,totalBranches:o.length}),[o,r,B,p]);return t.jsx(b.Provider,{value:v,children:t.jsx("div",{className:i.cn("grid w-full gap-2 [&>div]:pb-0",n),...a})})},A=({children:e,...s})=>{const{currentBranch:n,setBranches:a,branches:r}=g(),u=c.useMemo(()=>Array.isArray(e)?e:[e],[e]);return c.useEffect(()=>{r.length!==u.length&&a(u)},[u,r,a]),u.map((o,x)=>t.jsx("div",{className:i.cn("grid gap-2 overflow-hidden [&>div]:pb-0",x===n?"block":"hidden"),...s,children:o},o.key))},S=({className:e,...s})=>{const{totalBranches:n}=g();return n<=1?null:t.jsx(f.ButtonGroup,{className:i.cn("[&>*:not(:first-child)]:rounded-l-md [&>*:not(:last-child)]:rounded-r-md",e),orientation:"horizontal",...s})},k=({children:e,...s})=>{const{goToPrevious:n,totalBranches:a}=g();return t.jsx(m.Button,{"aria-label":"Previous branch",disabled:a<=1,onClick:n,size:"icon-sm",type:"button",variant:"ghost",...s,children:e??t.jsx(M.ChevronLeftIcon,{size:14})})},R=({children:e,...s})=>{const{goToNext:n,totalBranches:a}=g();return t.jsx(m.Button,{"aria-label":"Next branch",disabled:a<=1,onClick:n,size:"icon-sm",type:"button",variant:"ghost",...s,children:e??t.jsx(M.ChevronRightIcon,{size:14})})},z=({className:e,...s})=>{const{currentBranch:n,totalBranches:a}=g();return t.jsx(f.ButtonGroupText,{className:i.cn("border-none bg-transparent text-muted-foreground shadow-none",e),...s,children:`${n+1} of ${a}`})},j=c.memo(({className:e,...s})=>{const n=C.useStreamdownPlugins();return t.jsx(w.Streamdown,{className:i.cn("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",e),plugins:n,...s})},(e,s)=>e.children===s.children&&s.isAnimating===e.isAnimating);j.displayName="MessageResponse";const G=({className:e,children:s,...n})=>t.jsx("div",{className:i.cn("mt-4 flex w-full items-center justify-between gap-4",e),...n,children:s});exports.Message=N;exports.MessageAction=P;exports.MessageActions=T;exports.MessageBranch=q;exports.MessageBranchContent=A;exports.MessageBranchNext=R;exports.MessageBranchPage=z;exports.MessageBranchPrevious=k;exports.MessageBranchSelector=S;exports.MessageContent=y;exports.MessageResponse=j;exports.MessageToolbar=G;
|
|
2
|
+
//# sourceMappingURL=message.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.cjs","sources":["../../src/components/ai/message.tsx"],"sourcesContent":["import { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport {\n createContext,\n memo,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Streamdown } from \"streamdown\";\n\nimport { useStreamdownPlugins } from \"./use-streamdown-plugins\";\n\nimport type { UIMessage } from \"ai\";\nimport type { ComponentProps, HTMLAttributes, ReactElement } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupText,\n} from \"@/components/ui/button-group\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\nexport type MessageProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage[\"role\"];\n};\n\nexport const Message = ({ className, from, ...props }: MessageProps) => (\n <div\n className={cn(\n \"group flex w-full max-w-[95%] flex-col gap-2\",\n from === \"user\" ? \"is-user ml-auto justify-end\" : \"is-assistant\",\n className\n )}\n {...props}\n />\n);\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageContent = ({\n children,\n className,\n ...props\n}: MessageContentProps) => (\n <div\n className={cn(\n \"is-user:dark flex w-fit min-w-0 max-w-full flex-col gap-2 overflow-hidden text-sm\",\n \"group-[.is-user]:ml-auto group-[.is-user]:rounded-lg group-[.is-user]:bg-secondary group-[.is-user]:px-4 group-[.is-user]:py-3 group-[.is-user]:text-foreground\",\n \"group-[.is-assistant]:text-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type MessageActionsProps = ComponentProps<\"div\">;\n\nexport const MessageActions = ({\n className,\n children,\n ...props\n}: MessageActionsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type MessageActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n};\n\nexport const MessageAction = ({\n tooltip,\n children,\n label,\n variant = \"ghost\",\n size = \"icon-sm\",\n ...props\n}: MessageActionProps) => {\n const button = (\n <Button size={size} type=\"button\" variant={variant} {...props}>\n {children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n\ninterface MessageBranchContextType {\n currentBranch: number;\n totalBranches: number;\n goToPrevious: () => void;\n goToNext: () => void;\n branches: ReactElement[];\n setBranches: (branches: ReactElement[]) => void;\n}\n\nconst MessageBranchContext = createContext<MessageBranchContextType | null>(\n null\n);\n\nconst useMessageBranch = () => {\n const context = useContext(MessageBranchContext);\n\n if (!context) {\n throw new Error(\n \"MessageBranch components must be used within MessageBranch\"\n );\n }\n\n return context;\n};\n\nexport type MessageBranchProps = HTMLAttributes<HTMLDivElement> & {\n defaultBranch?: number;\n onBranchChange?: (branchIndex: number) => void;\n};\n\nexport const MessageBranch = ({\n defaultBranch = 0,\n onBranchChange,\n className,\n ...props\n}: MessageBranchProps) => {\n const [currentBranch, setCurrentBranch] = useState(defaultBranch);\n const [branches, setBranches] = useState<ReactElement[]>([]);\n\n const handleBranchChange = useCallback(\n (newBranch: number) => {\n setCurrentBranch(newBranch);\n onBranchChange?.(newBranch);\n },\n [onBranchChange]\n );\n\n const goToPrevious = useCallback(() => {\n const newBranch =\n currentBranch > 0 ? currentBranch - 1 : branches.length - 1;\n handleBranchChange(newBranch);\n }, [currentBranch, branches.length, handleBranchChange]);\n\n const goToNext = useCallback(() => {\n const newBranch =\n currentBranch < branches.length - 1 ? currentBranch + 1 : 0;\n handleBranchChange(newBranch);\n }, [currentBranch, branches.length, handleBranchChange]);\n\n const contextValue = useMemo<MessageBranchContextType>(\n () => ({\n branches,\n currentBranch,\n goToNext,\n goToPrevious,\n setBranches,\n totalBranches: branches.length,\n }),\n [branches, currentBranch, goToNext, goToPrevious]\n );\n\n return (\n <MessageBranchContext.Provider value={contextValue}>\n <div\n className={cn(\"grid w-full gap-2 [&>div]:pb-0\", className)}\n {...props}\n />\n </MessageBranchContext.Provider>\n );\n};\n\nexport type MessageBranchContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageBranchContent = ({\n children,\n ...props\n}: MessageBranchContentProps) => {\n const { currentBranch, setBranches, branches } = useMessageBranch();\n const childrenArray = useMemo(\n () => (Array.isArray(children) ? children : [children]),\n [children]\n );\n\n // Use useEffect to update branches when they change\n useEffect(() => {\n if (branches.length !== childrenArray.length) {\n setBranches(childrenArray);\n }\n }, [childrenArray, branches, setBranches]);\n\n return childrenArray.map((branch, index) => (\n <div\n className={cn(\n \"grid gap-2 overflow-hidden [&>div]:pb-0\",\n index === currentBranch ? \"block\" : \"hidden\"\n )}\n key={branch.key}\n {...props}\n >\n {branch}\n </div>\n ));\n};\n\nexport type MessageBranchSelectorProps = ComponentProps<typeof ButtonGroup>;\n\nexport const MessageBranchSelector = ({\n className,\n ...props\n}: MessageBranchSelectorProps) => {\n const { totalBranches } = useMessageBranch();\n\n // Don't render if there's only one branch\n if (totalBranches <= 1) {\n return null;\n }\n\n return (\n <ButtonGroup\n className={cn(\n \"[&>*:not(:first-child)]:rounded-l-md [&>*:not(:last-child)]:rounded-r-md\",\n className\n )}\n orientation=\"horizontal\"\n {...props}\n />\n );\n};\n\nexport type MessageBranchPreviousProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchPrevious = ({\n children,\n ...props\n}: MessageBranchPreviousProps) => {\n const { goToPrevious, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Previous branch\"\n disabled={totalBranches <= 1}\n onClick={goToPrevious}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronLeftIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchNextProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchNext = ({\n children,\n ...props\n}: MessageBranchNextProps) => {\n const { goToNext, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Next branch\"\n disabled={totalBranches <= 1}\n onClick={goToNext}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronRightIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchPageProps = HTMLAttributes<HTMLSpanElement>;\n\nexport const MessageBranchPage = ({\n className,\n ...props\n}: MessageBranchPageProps) => {\n const { currentBranch, totalBranches } = useMessageBranch();\n\n return (\n <ButtonGroupText\n className={cn(\n \"border-none bg-transparent text-muted-foreground shadow-none\",\n className\n )}\n {...props}\n >\n {`${currentBranch + 1} of ${totalBranches}`}\n </ButtonGroupText>\n );\n};\n\nexport type MessageResponseProps = ComponentProps<typeof Streamdown>;\n\nexport const MessageResponse = memo(\n ({ className, ...props }: MessageResponseProps) => {\n // Plugins load lazily (SW-2007): markdown streams in immediately and\n // code/math/mermaid rendering upgrades in place once the chunk arrives.\n const plugins = useStreamdownPlugins();\n\n return (\n <Streamdown\n className={cn(\n \"size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\",\n className\n )}\n plugins={plugins}\n {...props}\n />\n );\n },\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children &&\n nextProps.isAnimating === prevProps.isAnimating\n);\n\nMessageResponse.displayName = \"MessageResponse\";\n\nexport type MessageToolbarProps = ComponentProps<\"div\">;\n\nexport const MessageToolbar = ({\n className,\n children,\n ...props\n}: MessageToolbarProps) => (\n <div\n className={cn(\n \"mt-4 flex w-full items-center justify-between gap-4\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n"],"names":["Message","className","from","props","jsx","cn","MessageContent","children","MessageActions","MessageAction","tooltip","label","variant","size","button","Button","TooltipProvider","jsxs","Tooltip","TooltipTrigger","TooltipContent","MessageBranchContext","createContext","useMessageBranch","context","useContext","MessageBranch","defaultBranch","onBranchChange","currentBranch","setCurrentBranch","useState","branches","setBranches","handleBranchChange","useCallback","newBranch","goToPrevious","goToNext","contextValue","useMemo","MessageBranchContent","childrenArray","useEffect","branch","index","MessageBranchSelector","totalBranches","ButtonGroup","MessageBranchPrevious","ChevronLeftIcon","MessageBranchNext","ChevronRightIcon","MessageBranchPage","ButtonGroupText","MessageResponse","memo","plugins","useStreamdownPlugins","Streamdown","prevProps","nextProps","MessageToolbar"],"mappings":"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"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { jsx as n, jsxs as x } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronRightIcon as w, ChevronLeftIcon as N } from "lucide-react";
|
|
3
|
+
import { createContext as y, memo as C, useState as B, useCallback as g, useMemo as b, useEffect as T, useContext as A } from "react";
|
|
4
|
+
import { Streamdown as k } from "streamdown";
|
|
5
|
+
import { useStreamdownPlugins as z } from "../components/ai/use-streamdown-plugins.js";
|
|
6
|
+
import { Button as m } from "../ui/button.js";
|
|
7
|
+
import { ButtonGroupText as P, ButtonGroup as j } from "../ui/button-group.js";
|
|
8
|
+
import { TooltipProvider as S, Tooltip as R, TooltipTrigger as E, TooltipContent as G } from "../ui/tooltip.js";
|
|
9
|
+
import { cn as c } from "../lib/utils.js";
|
|
10
|
+
const O = ({ className: e, from: s, ...t }) => /* @__PURE__ */ n(
|
|
11
|
+
"div",
|
|
12
|
+
{
|
|
13
|
+
className: c(
|
|
14
|
+
"group flex w-full max-w-[95%] flex-col gap-2",
|
|
15
|
+
s === "user" ? "is-user ml-auto justify-end" : "is-assistant",
|
|
16
|
+
e
|
|
17
|
+
),
|
|
18
|
+
...t
|
|
19
|
+
}
|
|
20
|
+
), Q = ({
|
|
21
|
+
children: e,
|
|
22
|
+
className: s,
|
|
23
|
+
...t
|
|
24
|
+
}) => /* @__PURE__ */ n(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
className: c(
|
|
28
|
+
"is-user:dark flex w-fit min-w-0 max-w-full flex-col gap-2 overflow-hidden text-sm",
|
|
29
|
+
"group-[.is-user]:ml-auto group-[.is-user]:rounded-lg group-[.is-user]:bg-secondary group-[.is-user]:px-4 group-[.is-user]:py-3 group-[.is-user]:text-foreground",
|
|
30
|
+
"group-[.is-assistant]:text-foreground",
|
|
31
|
+
s
|
|
32
|
+
),
|
|
33
|
+
...t,
|
|
34
|
+
children: e
|
|
35
|
+
}
|
|
36
|
+
), U = ({
|
|
37
|
+
className: e,
|
|
38
|
+
children: s,
|
|
39
|
+
...t
|
|
40
|
+
}) => /* @__PURE__ */ n("div", { className: c("flex items-center gap-1", e), ...t, children: s }), W = ({
|
|
41
|
+
tooltip: e,
|
|
42
|
+
children: s,
|
|
43
|
+
label: t,
|
|
44
|
+
variant: a = "ghost",
|
|
45
|
+
size: r = "icon-sm",
|
|
46
|
+
...i
|
|
47
|
+
}) => {
|
|
48
|
+
const o = /* @__PURE__ */ x(m, { size: r, type: "button", variant: a, ...i, children: [
|
|
49
|
+
s,
|
|
50
|
+
/* @__PURE__ */ n("span", { className: "sr-only", children: t || e })
|
|
51
|
+
] });
|
|
52
|
+
return e ? /* @__PURE__ */ n(S, { children: /* @__PURE__ */ x(R, { children: [
|
|
53
|
+
/* @__PURE__ */ n(E, { asChild: !0, children: o }),
|
|
54
|
+
/* @__PURE__ */ n(G, { children: /* @__PURE__ */ n("p", { children: e }) })
|
|
55
|
+
] }) }) : o;
|
|
56
|
+
}, v = y(
|
|
57
|
+
null
|
|
58
|
+
), u = () => {
|
|
59
|
+
const e = A(v);
|
|
60
|
+
if (!e)
|
|
61
|
+
throw new Error(
|
|
62
|
+
"MessageBranch components must be used within MessageBranch"
|
|
63
|
+
);
|
|
64
|
+
return e;
|
|
65
|
+
}, X = ({
|
|
66
|
+
defaultBranch: e = 0,
|
|
67
|
+
onBranchChange: s,
|
|
68
|
+
className: t,
|
|
69
|
+
...a
|
|
70
|
+
}) => {
|
|
71
|
+
const [r, i] = B(e), [o, d] = B([]), h = g(
|
|
72
|
+
(l) => {
|
|
73
|
+
i(l), s?.(l);
|
|
74
|
+
},
|
|
75
|
+
[s]
|
|
76
|
+
), p = g(() => {
|
|
77
|
+
const l = r > 0 ? r - 1 : o.length - 1;
|
|
78
|
+
h(l);
|
|
79
|
+
}, [r, o.length, h]), f = g(() => {
|
|
80
|
+
const l = r < o.length - 1 ? r + 1 : 0;
|
|
81
|
+
h(l);
|
|
82
|
+
}, [r, o.length, h]), M = b(
|
|
83
|
+
() => ({
|
|
84
|
+
branches: o,
|
|
85
|
+
currentBranch: r,
|
|
86
|
+
goToNext: f,
|
|
87
|
+
goToPrevious: p,
|
|
88
|
+
setBranches: d,
|
|
89
|
+
totalBranches: o.length
|
|
90
|
+
}),
|
|
91
|
+
[o, r, f, p]
|
|
92
|
+
);
|
|
93
|
+
return /* @__PURE__ */ n(v.Provider, { value: M, children: /* @__PURE__ */ n(
|
|
94
|
+
"div",
|
|
95
|
+
{
|
|
96
|
+
className: c("grid w-full gap-2 [&>div]:pb-0", t),
|
|
97
|
+
...a
|
|
98
|
+
}
|
|
99
|
+
) });
|
|
100
|
+
}, Y = ({
|
|
101
|
+
children: e,
|
|
102
|
+
...s
|
|
103
|
+
}) => {
|
|
104
|
+
const { currentBranch: t, setBranches: a, branches: r } = u(), i = b(
|
|
105
|
+
() => Array.isArray(e) ? e : [e],
|
|
106
|
+
[e]
|
|
107
|
+
);
|
|
108
|
+
return T(() => {
|
|
109
|
+
r.length !== i.length && a(i);
|
|
110
|
+
}, [i, r, a]), i.map((o, d) => /* @__PURE__ */ n(
|
|
111
|
+
"div",
|
|
112
|
+
{
|
|
113
|
+
className: c(
|
|
114
|
+
"grid gap-2 overflow-hidden [&>div]:pb-0",
|
|
115
|
+
d === t ? "block" : "hidden"
|
|
116
|
+
),
|
|
117
|
+
...s,
|
|
118
|
+
children: o
|
|
119
|
+
},
|
|
120
|
+
o.key
|
|
121
|
+
));
|
|
122
|
+
}, Z = ({
|
|
123
|
+
className: e,
|
|
124
|
+
...s
|
|
125
|
+
}) => {
|
|
126
|
+
const { totalBranches: t } = u();
|
|
127
|
+
return t <= 1 ? null : /* @__PURE__ */ n(
|
|
128
|
+
j,
|
|
129
|
+
{
|
|
130
|
+
className: c(
|
|
131
|
+
"[&>*:not(:first-child)]:rounded-l-md [&>*:not(:last-child)]:rounded-r-md",
|
|
132
|
+
e
|
|
133
|
+
),
|
|
134
|
+
orientation: "horizontal",
|
|
135
|
+
...s
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
}, _ = ({
|
|
139
|
+
children: e,
|
|
140
|
+
...s
|
|
141
|
+
}) => {
|
|
142
|
+
const { goToPrevious: t, totalBranches: a } = u();
|
|
143
|
+
return /* @__PURE__ */ n(
|
|
144
|
+
m,
|
|
145
|
+
{
|
|
146
|
+
"aria-label": "Previous branch",
|
|
147
|
+
disabled: a <= 1,
|
|
148
|
+
onClick: t,
|
|
149
|
+
size: "icon-sm",
|
|
150
|
+
type: "button",
|
|
151
|
+
variant: "ghost",
|
|
152
|
+
...s,
|
|
153
|
+
children: e ?? /* @__PURE__ */ n(N, { size: 14 })
|
|
154
|
+
}
|
|
155
|
+
);
|
|
156
|
+
}, ee = ({
|
|
157
|
+
children: e,
|
|
158
|
+
...s
|
|
159
|
+
}) => {
|
|
160
|
+
const { goToNext: t, totalBranches: a } = u();
|
|
161
|
+
return /* @__PURE__ */ n(
|
|
162
|
+
m,
|
|
163
|
+
{
|
|
164
|
+
"aria-label": "Next branch",
|
|
165
|
+
disabled: a <= 1,
|
|
166
|
+
onClick: t,
|
|
167
|
+
size: "icon-sm",
|
|
168
|
+
type: "button",
|
|
169
|
+
variant: "ghost",
|
|
170
|
+
...s,
|
|
171
|
+
children: e ?? /* @__PURE__ */ n(w, { size: 14 })
|
|
172
|
+
}
|
|
173
|
+
);
|
|
174
|
+
}, se = ({
|
|
175
|
+
className: e,
|
|
176
|
+
...s
|
|
177
|
+
}) => {
|
|
178
|
+
const { currentBranch: t, totalBranches: a } = u();
|
|
179
|
+
return /* @__PURE__ */ n(
|
|
180
|
+
P,
|
|
181
|
+
{
|
|
182
|
+
className: c(
|
|
183
|
+
"border-none bg-transparent text-muted-foreground shadow-none",
|
|
184
|
+
e
|
|
185
|
+
),
|
|
186
|
+
...s,
|
|
187
|
+
children: `${t + 1} of ${a}`
|
|
188
|
+
}
|
|
189
|
+
);
|
|
190
|
+
}, I = C(
|
|
191
|
+
({ className: e, ...s }) => {
|
|
192
|
+
const t = z();
|
|
193
|
+
return /* @__PURE__ */ n(
|
|
194
|
+
k,
|
|
195
|
+
{
|
|
196
|
+
className: c(
|
|
197
|
+
"size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",
|
|
198
|
+
e
|
|
199
|
+
),
|
|
200
|
+
plugins: t,
|
|
201
|
+
...s
|
|
202
|
+
}
|
|
203
|
+
);
|
|
204
|
+
},
|
|
205
|
+
(e, s) => e.children === s.children && s.isAnimating === e.isAnimating
|
|
206
|
+
);
|
|
207
|
+
I.displayName = "MessageResponse";
|
|
208
|
+
const te = ({
|
|
209
|
+
className: e,
|
|
210
|
+
children: s,
|
|
211
|
+
...t
|
|
212
|
+
}) => /* @__PURE__ */ n(
|
|
213
|
+
"div",
|
|
214
|
+
{
|
|
215
|
+
className: c(
|
|
216
|
+
"mt-4 flex w-full items-center justify-between gap-4",
|
|
217
|
+
e
|
|
218
|
+
),
|
|
219
|
+
...t,
|
|
220
|
+
children: s
|
|
221
|
+
}
|
|
222
|
+
);
|
|
223
|
+
export {
|
|
224
|
+
O as Message,
|
|
225
|
+
W as MessageAction,
|
|
226
|
+
U as MessageActions,
|
|
227
|
+
X as MessageBranch,
|
|
228
|
+
Y as MessageBranchContent,
|
|
229
|
+
ee as MessageBranchNext,
|
|
230
|
+
se as MessageBranchPage,
|
|
231
|
+
_ as MessageBranchPrevious,
|
|
232
|
+
Z as MessageBranchSelector,
|
|
233
|
+
Q as MessageContent,
|
|
234
|
+
I as MessageResponse,
|
|
235
|
+
te as MessageToolbar
|
|
236
|
+
};
|
|
237
|
+
//# sourceMappingURL=message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sources":["../../src/components/ai/message.tsx"],"sourcesContent":["import { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport {\n createContext,\n memo,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Streamdown } from \"streamdown\";\n\nimport { useStreamdownPlugins } from \"./use-streamdown-plugins\";\n\nimport type { UIMessage } from \"ai\";\nimport type { ComponentProps, HTMLAttributes, ReactElement } from \"react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupText,\n} from \"@/components/ui/button-group\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\nexport type MessageProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage[\"role\"];\n};\n\nexport const Message = ({ className, from, ...props }: MessageProps) => (\n <div\n className={cn(\n \"group flex w-full max-w-[95%] flex-col gap-2\",\n from === \"user\" ? \"is-user ml-auto justify-end\" : \"is-assistant\",\n className\n )}\n {...props}\n />\n);\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageContent = ({\n children,\n className,\n ...props\n}: MessageContentProps) => (\n <div\n className={cn(\n \"is-user:dark flex w-fit min-w-0 max-w-full flex-col gap-2 overflow-hidden text-sm\",\n \"group-[.is-user]:ml-auto group-[.is-user]:rounded-lg group-[.is-user]:bg-secondary group-[.is-user]:px-4 group-[.is-user]:py-3 group-[.is-user]:text-foreground\",\n \"group-[.is-assistant]:text-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type MessageActionsProps = ComponentProps<\"div\">;\n\nexport const MessageActions = ({\n className,\n children,\n ...props\n}: MessageActionsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type MessageActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n};\n\nexport const MessageAction = ({\n tooltip,\n children,\n label,\n variant = \"ghost\",\n size = \"icon-sm\",\n ...props\n}: MessageActionProps) => {\n const button = (\n <Button size={size} type=\"button\" variant={variant} {...props}>\n {children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n\ninterface MessageBranchContextType {\n currentBranch: number;\n totalBranches: number;\n goToPrevious: () => void;\n goToNext: () => void;\n branches: ReactElement[];\n setBranches: (branches: ReactElement[]) => void;\n}\n\nconst MessageBranchContext = createContext<MessageBranchContextType | null>(\n null\n);\n\nconst useMessageBranch = () => {\n const context = useContext(MessageBranchContext);\n\n if (!context) {\n throw new Error(\n \"MessageBranch components must be used within MessageBranch\"\n );\n }\n\n return context;\n};\n\nexport type MessageBranchProps = HTMLAttributes<HTMLDivElement> & {\n defaultBranch?: number;\n onBranchChange?: (branchIndex: number) => void;\n};\n\nexport const MessageBranch = ({\n defaultBranch = 0,\n onBranchChange,\n className,\n ...props\n}: MessageBranchProps) => {\n const [currentBranch, setCurrentBranch] = useState(defaultBranch);\n const [branches, setBranches] = useState<ReactElement[]>([]);\n\n const handleBranchChange = useCallback(\n (newBranch: number) => {\n setCurrentBranch(newBranch);\n onBranchChange?.(newBranch);\n },\n [onBranchChange]\n );\n\n const goToPrevious = useCallback(() => {\n const newBranch =\n currentBranch > 0 ? currentBranch - 1 : branches.length - 1;\n handleBranchChange(newBranch);\n }, [currentBranch, branches.length, handleBranchChange]);\n\n const goToNext = useCallback(() => {\n const newBranch =\n currentBranch < branches.length - 1 ? currentBranch + 1 : 0;\n handleBranchChange(newBranch);\n }, [currentBranch, branches.length, handleBranchChange]);\n\n const contextValue = useMemo<MessageBranchContextType>(\n () => ({\n branches,\n currentBranch,\n goToNext,\n goToPrevious,\n setBranches,\n totalBranches: branches.length,\n }),\n [branches, currentBranch, goToNext, goToPrevious]\n );\n\n return (\n <MessageBranchContext.Provider value={contextValue}>\n <div\n className={cn(\"grid w-full gap-2 [&>div]:pb-0\", className)}\n {...props}\n />\n </MessageBranchContext.Provider>\n );\n};\n\nexport type MessageBranchContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageBranchContent = ({\n children,\n ...props\n}: MessageBranchContentProps) => {\n const { currentBranch, setBranches, branches } = useMessageBranch();\n const childrenArray = useMemo(\n () => (Array.isArray(children) ? children : [children]),\n [children]\n );\n\n // Use useEffect to update branches when they change\n useEffect(() => {\n if (branches.length !== childrenArray.length) {\n setBranches(childrenArray);\n }\n }, [childrenArray, branches, setBranches]);\n\n return childrenArray.map((branch, index) => (\n <div\n className={cn(\n \"grid gap-2 overflow-hidden [&>div]:pb-0\",\n index === currentBranch ? \"block\" : \"hidden\"\n )}\n key={branch.key}\n {...props}\n >\n {branch}\n </div>\n ));\n};\n\nexport type MessageBranchSelectorProps = ComponentProps<typeof ButtonGroup>;\n\nexport const MessageBranchSelector = ({\n className,\n ...props\n}: MessageBranchSelectorProps) => {\n const { totalBranches } = useMessageBranch();\n\n // Don't render if there's only one branch\n if (totalBranches <= 1) {\n return null;\n }\n\n return (\n <ButtonGroup\n className={cn(\n \"[&>*:not(:first-child)]:rounded-l-md [&>*:not(:last-child)]:rounded-r-md\",\n className\n )}\n orientation=\"horizontal\"\n {...props}\n />\n );\n};\n\nexport type MessageBranchPreviousProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchPrevious = ({\n children,\n ...props\n}: MessageBranchPreviousProps) => {\n const { goToPrevious, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Previous branch\"\n disabled={totalBranches <= 1}\n onClick={goToPrevious}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronLeftIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchNextProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchNext = ({\n children,\n ...props\n}: MessageBranchNextProps) => {\n const { goToNext, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Next branch\"\n disabled={totalBranches <= 1}\n onClick={goToNext}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronRightIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchPageProps = HTMLAttributes<HTMLSpanElement>;\n\nexport const MessageBranchPage = ({\n className,\n ...props\n}: MessageBranchPageProps) => {\n const { currentBranch, totalBranches } = useMessageBranch();\n\n return (\n <ButtonGroupText\n className={cn(\n \"border-none bg-transparent text-muted-foreground shadow-none\",\n className\n )}\n {...props}\n >\n {`${currentBranch + 1} of ${totalBranches}`}\n </ButtonGroupText>\n );\n};\n\nexport type MessageResponseProps = ComponentProps<typeof Streamdown>;\n\nexport const MessageResponse = memo(\n ({ className, ...props }: MessageResponseProps) => {\n // Plugins load lazily (SW-2007): markdown streams in immediately and\n // code/math/mermaid rendering upgrades in place once the chunk arrives.\n const plugins = useStreamdownPlugins();\n\n return (\n <Streamdown\n className={cn(\n \"size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\",\n className\n )}\n plugins={plugins}\n {...props}\n />\n );\n },\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children &&\n nextProps.isAnimating === prevProps.isAnimating\n);\n\nMessageResponse.displayName = \"MessageResponse\";\n\nexport type MessageToolbarProps = ComponentProps<\"div\">;\n\nexport const MessageToolbar = ({\n className,\n children,\n ...props\n}: MessageToolbarProps) => (\n <div\n className={cn(\n \"mt-4 flex w-full items-center justify-between gap-4\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n"],"names":["Message","className","from","props","jsx","cn","MessageContent","children","MessageActions","MessageAction","tooltip","label","variant","size","button","Button","TooltipProvider","jsxs","Tooltip","TooltipTrigger","TooltipContent","MessageBranchContext","createContext","useMessageBranch","context","useContext","MessageBranch","defaultBranch","onBranchChange","currentBranch","setCurrentBranch","useState","branches","setBranches","handleBranchChange","useCallback","newBranch","goToPrevious","goToNext","contextValue","useMemo","MessageBranchContent","childrenArray","useEffect","branch","index","MessageBranchSelector","totalBranches","ButtonGroup","MessageBranchPrevious","ChevronLeftIcon","MessageBranchNext","ChevronRightIcon","MessageBranchPage","ButtonGroupText","MessageResponse","memo","plugins","useStreamdownPlugins","Streamdown","prevProps","nextProps","MessageToolbar"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),l=require("../ui/command.cjs"),c=require("../ui/dialog.cjs"),d=require("../ui/kbd.cjs"),r=require("../lib/utils.cjs"),a=e=>o.jsx(c.Dialog,{...e}),i=e=>o.jsx(c.DialogTrigger,{...e}),m=({className:e,children:t,title:s="Model Selector",...n})=>o.jsxs(c.DialogContent,{"aria-describedby":void 0,className:r.cn("outline! border-none! p-0 outline-border! outline-solid!",e),...n,children:[o.jsx(c.DialogTitle,{className:"sr-only",children:s}),o.jsx(l.Command,{className:"**:data-[slot=command-input-wrapper]:h-auto",children:t})]}),S=e=>o.jsx(l.CommandDialog,{...e}),g=({className:e,...t})=>o.jsx(l.CommandInput,{className:r.cn("h-auto py-3.5",e),...t}),u=e=>o.jsx(l.CommandList,{...e}),M=e=>o.jsx(l.CommandEmpty,{...e}),p=e=>o.jsx(l.CommandGroup,{...e}),x=e=>o.jsx(l.CommandItem,{...e}),j=({className:e,...t})=>o.jsx(d.Kbd,{className:r.cn("ml-auto",e),...t}),b=e=>o.jsx(l.CommandSeparator,{...e}),h=({provider:e,className:t,...s})=>o.jsx("img",{...s,alt:`${e} logo`,className:r.cn("size-3 dark:invert",t),height:12,src:`https://models.dev/logos/${e}.svg`,width:12}),C=({className:e,...t})=>o.jsx("div",{className:r.cn("flex shrink-0 items-center -space-x-1 [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground",e),...t}),N=({className:e,...t})=>o.jsx("span",{className:r.cn("flex-1 truncate text-left",e),...t});exports.ModelSelector=a;exports.ModelSelectorContent=m;exports.ModelSelectorDialog=S;exports.ModelSelectorEmpty=M;exports.ModelSelectorGroup=p;exports.ModelSelectorInput=g;exports.ModelSelectorItem=x;exports.ModelSelectorList=u;exports.ModelSelectorLogo=h;exports.ModelSelectorLogoGroup=C;exports.ModelSelectorName=N;exports.ModelSelectorSeparator=b;exports.ModelSelectorShortcut=j;exports.ModelSelectorTrigger=i;
|
|
2
|
+
//# sourceMappingURL=model-selector.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-selector.cjs","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":"2OAuBaA,EAAiBC,GAC5BC,EAAAA,IAACC,EAAAA,OAAA,CAAQ,GAAGF,CAAA,CAAO,EAKRG,EAAwBH,GACnCC,EAAAA,IAACG,EAAAA,cAAA,CAAe,GAAGJ,CAAA,CAAO,EAOfK,EAAuB,CAAC,CACnC,UAAAC,EACA,SAAAC,EACA,MAAAC,EAAQ,iBACR,GAAGR,CACL,IACES,EAAAA,KAACC,EAAAA,cAAA,CACC,mBAAkB,OAClB,UAAWC,EAAAA,GACT,2DACAL,CAAA,EAED,GAAGN,EAEJ,SAAA,CAAAC,EAAAA,IAACW,EAAAA,YAAA,CAAY,UAAU,UAAW,SAAAJ,EAAM,EACxCP,EAAAA,IAACY,EAAAA,QAAA,CAAQ,UAAU,8CAChB,SAAAN,CAAA,CACH,CAAA,CAAA,CACF,EAKWO,EAAuBd,GAClCC,EAAAA,IAACc,EAAAA,cAAA,CAAe,GAAGf,CAAA,CAAO,EAKfgB,EAAqB,CAAC,CACjC,UAAAV,EACA,GAAGN,CACL,IACEC,EAAAA,IAACgB,EAAAA,cAAa,UAAWN,EAAAA,GAAG,gBAAiBL,CAAS,EAAI,GAAGN,CAAA,CAAO,EAKzDkB,EAAqBlB,GAChCC,EAAAA,IAACkB,EAAAA,YAAA,CAAa,GAAGnB,CAAA,CAAO,EAKboB,EAAsBpB,GACjCC,EAAAA,IAACoB,EAAAA,aAAA,CAAc,GAAGrB,CAAA,CAAO,EAKdsB,EAAsBtB,GACjCC,EAAAA,IAACsB,EAAAA,aAAA,CAAc,GAAGvB,CAAA,CAAO,EAKdwB,EAAqBxB,GAChCC,EAAAA,IAACwB,EAAAA,YAAA,CAAa,GAAGzB,CAAA,CAAO,EAKb0B,EAAwB,CAAC,CACpC,UAAApB,EACA,GAAGN,CACL,IACEC,EAAAA,IAAC0B,EAAAA,KAAI,UAAWhB,EAAAA,GAAG,UAAWL,CAAS,EAAI,GAAGN,CAAA,CAAO,EAO1C4B,EAA0B5B,GACrCC,EAAAA,IAAC4B,EAAAA,iBAAA,CAAkB,GAAG7B,CAAA,CAAO,EAoElB8B,EAAoB,CAAC,CAChC,SAAAC,EACA,UAAAzB,EACA,GAAGN,CACL,IACEC,EAAAA,IAAC,MAAA,CACE,GAAGD,EACJ,IAAK,GAAG+B,CAAQ,QAChB,UAAWpB,EAAAA,GAAG,qBAAsBL,CAAS,EAC7C,OAAQ,GACR,IAAK,4BAA4ByB,CAAQ,OACzC,MAAO,EAAA,CACT,EAKWC,EAAyB,CAAC,CACrC,UAAA1B,EACA,GAAGN,CACL,IACEC,EAAAA,IAAC,MAAA,CACC,UAAWU,EAAAA,GACT,0IACAL,CAAA,EAED,GAAGN,CAAA,CACN,EAKWiC,EAAoB,CAAC,CAChC,UAAA3B,EACA,GAAGN,CACL,IACEC,EAAAA,IAAC,QAAK,UAAWU,EAAAA,GAAG,4BAA6BL,CAAS,EAAI,GAAGN,CAAA,CAAO"}
|