@tetrascience-npm/tetrascience-react-ui 0.7.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -4
- package/dist/ai/attachments.cjs +2 -0
- package/dist/ai/attachments.cjs.map +1 -0
- package/dist/ai/attachments.js +224 -0
- package/dist/ai/attachments.js.map +1 -0
- package/dist/ai/chain-of-thought.cjs +2 -0
- package/dist/ai/chain-of-thought.cjs.map +1 -0
- package/dist/ai/chain-of-thought.js +145 -0
- package/dist/ai/chain-of-thought.js.map +1 -0
- package/dist/ai/confirmation.cjs +2 -0
- package/dist/ai/confirmation.cjs.map +1 -0
- package/dist/ai/confirmation.js +109 -0
- package/dist/ai/confirmation.js.map +1 -0
- package/dist/ai/context.cjs +2 -0
- package/dist/ai/context.cjs.map +1 -0
- package/dist/ai/context.js +267 -0
- package/dist/ai/context.js.map +1 -0
- package/dist/ai/conversation.cjs +4 -0
- package/dist/ai/conversation.cjs.map +1 -0
- package/dist/ai/conversation.js +108 -0
- package/dist/ai/conversation.js.map +1 -0
- package/dist/ai/inline-citation.cjs +2 -0
- package/dist/ai/inline-citation.cjs.map +1 -0
- package/dist/ai/inline-citation.js +182 -0
- package/dist/ai/inline-citation.js.map +1 -0
- package/dist/ai/message.cjs +2 -0
- package/dist/ai/message.cjs.map +1 -0
- package/dist/ai/message.js +237 -0
- package/dist/ai/message.js.map +1 -0
- package/dist/ai/model-selector.cjs +2 -0
- package/dist/ai/model-selector.cjs.map +1 -0
- package/dist/ai/model-selector.js +77 -0
- package/dist/ai/model-selector.js.map +1 -0
- package/dist/ai/prompt-input.cjs +2 -0
- package/dist/ai/prompt-input.cjs.map +1 -0
- package/dist/ai/prompt-input.js +776 -0
- package/dist/ai/prompt-input.js.map +1 -0
- package/dist/ai/queue.cjs +2 -0
- package/dist/ai/queue.cjs.map +1 -0
- package/dist/ai/queue.js +209 -0
- package/dist/ai/queue.js.map +1 -0
- package/dist/ai/reasoning.cjs +2 -0
- package/dist/ai/reasoning.cjs.map +1 -0
- package/dist/ai/reasoning.js +129 -0
- package/dist/ai/reasoning.js.map +1 -0
- package/dist/ai/shimmer.cjs +2 -0
- package/dist/ai/shimmer.cjs.map +1 -0
- package/dist/ai/shimmer.js +49 -0
- package/dist/ai/shimmer.js.map +1 -0
- package/dist/ai/sources.cjs +2 -0
- package/dist/ai/sources.cjs.map +1 -0
- package/dist/ai/sources.js +54 -0
- package/dist/ai/sources.js.map +1 -0
- package/dist/ai/speech-input.cjs +2 -0
- package/dist/ai/speech-input.cjs.map +1 -0
- package/dist/ai/speech-input.js +123 -0
- package/dist/ai/speech-input.js.map +1 -0
- package/dist/ai/stream-status.cjs +2 -0
- package/dist/ai/stream-status.cjs.map +1 -0
- package/dist/ai/stream-status.js +108 -0
- package/dist/ai/stream-status.js.map +1 -0
- package/dist/ai/suggestion.cjs +2 -0
- package/dist/ai/suggestion.cjs.map +1 -0
- package/dist/ai/suggestion.js +38 -0
- package/dist/ai/suggestion.js.map +1 -0
- package/dist/ai/task.cjs +2 -0
- package/dist/ai/task.cjs.map +1 -0
- package/dist/ai/task.js +101 -0
- package/dist/ai/task.js.map +1 -0
- package/dist/ai/tool.cjs +2 -0
- package/dist/ai/tool.cjs.map +1 -0
- package/dist/ai/tool.js +139 -0
- package/dist/ai/tool.js.map +1 -0
- package/dist/charts/AreaPlot.cjs +2 -0
- package/dist/charts/AreaPlot.cjs.map +1 -0
- package/dist/charts/AreaPlot.js +5 -0
- package/dist/charts/AreaPlot.js.map +1 -0
- package/dist/charts/BarChart.cjs +2 -0
- package/dist/charts/BarChart.cjs.map +1 -0
- package/dist/charts/BarChart.js +5 -0
- package/dist/charts/BarChart.js.map +1 -0
- package/dist/charts/BoxPlot.cjs +2 -0
- package/dist/charts/BoxPlot.cjs.map +1 -0
- package/dist/charts/BoxPlot.js +5 -0
- package/dist/charts/BoxPlot.js.map +1 -0
- package/dist/charts/ChartTooltip.cjs +2 -0
- package/dist/charts/ChartTooltip.cjs.map +1 -0
- package/dist/charts/ChartTooltip.js +8 -0
- package/dist/charts/ChartTooltip.js.map +1 -0
- package/dist/charts/Chromatogram.cjs +2 -0
- package/dist/charts/Chromatogram.cjs.map +1 -0
- package/dist/charts/Chromatogram.js +5 -0
- package/dist/charts/Chromatogram.js.map +1 -0
- package/dist/charts/Electropherogram.cjs +2 -0
- package/dist/charts/Electropherogram.cjs.map +1 -0
- package/dist/charts/Electropherogram.js +5 -0
- package/dist/charts/Electropherogram.js.map +1 -0
- package/dist/charts/Histogram.cjs +2 -0
- package/dist/charts/Histogram.cjs.map +1 -0
- package/dist/charts/Histogram.js +5 -0
- package/dist/charts/Histogram.js.map +1 -0
- package/dist/charts/LinePlot.cjs +2 -0
- package/dist/charts/LinePlot.cjs.map +1 -0
- package/dist/charts/LinePlot.js +5 -0
- package/dist/charts/LinePlot.js.map +1 -0
- package/dist/charts/PieChart.cjs +2 -0
- package/dist/charts/PieChart.cjs.map +1 -0
- package/dist/charts/PieChart.js +5 -0
- package/dist/charts/PieChart.js.map +1 -0
- package/dist/charts/PlateMap.cjs +2 -0
- package/dist/charts/PlateMap.cjs.map +1 -0
- package/dist/charts/PlateMap.js +5 -0
- package/dist/charts/PlateMap.js.map +1 -0
- package/dist/charts/ScatterPlot.cjs +2 -0
- package/dist/charts/ScatterPlot.cjs.map +1 -0
- package/dist/charts/ScatterPlot.js +5 -0
- package/dist/charts/ScatterPlot.js.map +1 -0
- package/dist/charts/ScatterPlotInteractive.cjs +2 -0
- package/dist/charts/ScatterPlotInteractive.cjs.map +1 -0
- package/dist/charts/ScatterPlotInteractive.js +14 -0
- package/dist/charts/ScatterPlotInteractive.js.map +1 -0
- package/dist/charts/StackedChromatogram.cjs +2 -0
- package/dist/charts/StackedChromatogram.cjs.map +1 -0
- package/dist/charts/StackedChromatogram.js +7 -0
- package/dist/charts/StackedChromatogram.js.map +1 -0
- package/dist/components/ai/attachments.d.ts +54 -0
- package/dist/components/ai/chain-of-thought.d.ts +56 -0
- package/dist/components/ai/confirmation.d.ts +47 -0
- package/dist/components/ai/context.d.ts +40 -0
- package/dist/components/ai/conversation.d.ts +23 -0
- package/dist/components/ai/inline-citation.d.ts +38 -0
- package/dist/components/ai/message.d.ts +37 -0
- package/dist/components/ai/model-selector.d.ts +36 -0
- package/dist/components/ai/prompt-input.d.ts +158 -0
- package/dist/components/ai/queue.d.ts +72 -0
- package/dist/components/ai/reasoning.d.ts +26 -0
- package/dist/components/ai/shimmer.d.ts +17 -0
- package/dist/components/ai/sources.d.ts +12 -0
- package/dist/components/ai/speech-input.d.ts +54 -0
- package/dist/components/ai/stream-status.d.ts +66 -0
- package/dist/components/ai/streamdown-code-plugin.cjs +2 -0
- package/dist/components/ai/streamdown-code-plugin.cjs.map +1 -0
- package/dist/components/ai/streamdown-code-plugin.d.ts +2 -0
- package/dist/components/ai/streamdown-code-plugin.js +42 -0
- package/dist/components/ai/streamdown-code-plugin.js.map +1 -0
- package/dist/components/ai/streamdown-plugins.cjs +2 -0
- package/dist/components/ai/streamdown-plugins.cjs.map +1 -0
- package/dist/components/ai/streamdown-plugins.d.ts +2 -0
- package/dist/components/ai/streamdown-plugins.js +14 -0
- package/dist/components/ai/streamdown-plugins.js.map +1 -0
- package/dist/components/ai/suggestion.d.ts +9 -0
- package/dist/components/ai/task.d.ts +16 -0
- package/dist/components/ai/tool.d.ts +33 -0
- package/dist/components/ai/use-streamdown-plugins.cjs +2 -0
- package/dist/components/ai/use-streamdown-plugins.cjs.map +1 -0
- package/dist/components/ai/use-streamdown-plugins.d.ts +8 -0
- package/dist/components/ai/use-streamdown-plugins.js +25 -0
- package/dist/components/ai/use-streamdown-plugins.js.map +1 -0
- package/dist/components/charts/AreaPlot/AreaPlot.cjs +2 -0
- package/dist/components/charts/AreaPlot/AreaPlot.cjs.map +1 -0
- package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
- package/dist/components/charts/AreaPlot/AreaPlot.js +270 -0
- package/dist/components/charts/AreaPlot/AreaPlot.js.map +1 -0
- package/dist/components/charts/AreaPlot/index.d.ts +2 -0
- package/dist/components/charts/BarChart/BarChart.cjs +2 -0
- package/dist/components/charts/BarChart/BarChart.cjs.map +1 -0
- package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
- package/dist/components/charts/BarChart/BarChart.js +219 -0
- package/dist/components/charts/BarChart/BarChart.js.map +1 -0
- package/dist/components/charts/BarChart/index.d.ts +2 -0
- package/dist/components/charts/BoxPlot/BoxPlot.cjs +2 -0
- package/dist/components/charts/BoxPlot/BoxPlot.cjs.map +1 -0
- package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
- package/dist/components/charts/BoxPlot/BoxPlot.js +208 -0
- package/dist/components/charts/BoxPlot/BoxPlot.js.map +1 -0
- package/dist/components/charts/BoxPlot/index.d.ts +2 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.js +22 -22
- package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
- package/dist/components/charts/ChartTooltip/index.d.ts +2 -0
- package/dist/components/charts/ChartTooltip/lines.d.ts +54 -0
- package/dist/components/charts/Chromatogram/Chromatogram.cjs +1 -1
- package/dist/components/charts/Chromatogram/Chromatogram.cjs.map +1 -1
- package/dist/components/charts/Chromatogram/Chromatogram.d.ts +5 -0
- package/dist/components/charts/Chromatogram/Chromatogram.js +232 -170
- package/dist/components/charts/Chromatogram/Chromatogram.js.map +1 -1
- package/dist/components/charts/Chromatogram/annotations.cjs +2 -0
- package/dist/components/charts/Chromatogram/annotations.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
- package/dist/components/charts/Chromatogram/annotations.js +137 -0
- package/dist/components/charts/Chromatogram/annotations.js.map +1 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +2 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.js +34 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.js.map +1 -0
- package/dist/components/charts/Chromatogram/constants.cjs +2 -0
- package/dist/components/charts/Chromatogram/constants.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
- package/dist/components/charts/Chromatogram/constants.js +36 -0
- package/dist/components/charts/Chromatogram/constants.js.map +1 -0
- package/dist/components/charts/Chromatogram/dataProcessing.cjs +2 -0
- package/dist/components/charts/Chromatogram/dataProcessing.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
- package/dist/components/charts/Chromatogram/dataProcessing.js +90 -0
- package/dist/components/charts/Chromatogram/dataProcessing.js.map +1 -0
- package/dist/components/charts/Chromatogram/index.d.ts +2 -0
- package/dist/components/charts/Chromatogram/peakDetection.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
- package/dist/components/charts/Chromatogram/peakDetection.js.map +1 -0
- package/dist/components/charts/Chromatogram/plotBuilder.cjs +2 -0
- package/dist/components/charts/Chromatogram/plotBuilder.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
- package/dist/components/charts/Chromatogram/plotBuilder.js +216 -0
- package/dist/components/charts/Chromatogram/plotBuilder.js.map +1 -0
- package/dist/components/charts/Chromatogram/regionOverlays.cjs +2 -0
- package/dist/components/charts/Chromatogram/regionOverlays.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
- package/dist/components/charts/Chromatogram/regionOverlays.js +26 -0
- package/dist/components/charts/Chromatogram/regionOverlays.js.map +1 -0
- package/dist/components/charts/Chromatogram/types.d.ts +258 -0
- package/dist/components/charts/Electropherogram/Electropherogram.cjs +2 -0
- package/dist/components/charts/Electropherogram/Electropherogram.cjs.map +1 -0
- package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -0
- package/dist/components/charts/Electropherogram/Electropherogram.js +180 -0
- package/dist/components/charts/Electropherogram/Electropherogram.js.map +1 -0
- package/dist/components/charts/Electropherogram/index.d.ts +2 -0
- package/dist/components/charts/Histogram/Histogram.cjs +1 -1
- package/dist/components/charts/Histogram/Histogram.cjs.map +1 -1
- package/dist/components/charts/Histogram/Histogram.d.ts +36 -0
- package/dist/components/charts/Histogram/Histogram.js +107 -108
- package/dist/components/charts/Histogram/Histogram.js.map +1 -1
- package/dist/components/charts/Histogram/index.d.ts +2 -0
- package/dist/components/charts/LinePlot/LinePlot.cjs +2 -0
- package/dist/components/charts/LinePlot/LinePlot.cjs.map +1 -0
- package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
- package/dist/components/charts/LinePlot/LinePlot.js +224 -0
- package/dist/components/charts/LinePlot/LinePlot.js.map +1 -0
- package/dist/components/charts/LinePlot/index.d.ts +2 -0
- package/dist/components/charts/PieChart/PieChart.cjs +1 -1
- package/dist/components/charts/PieChart/PieChart.cjs.map +1 -1
- package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
- package/dist/components/charts/PieChart/PieChart.js +62 -61
- package/dist/components/charts/PieChart/PieChart.js.map +1 -1
- package/dist/components/charts/PieChart/index.d.ts +2 -0
- package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
- package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
- package/dist/components/charts/PlateMap/PlateMap.d.ts +29 -0
- package/dist/components/charts/PlateMap/PlateMap.js +246 -242
- package/dist/components/charts/PlateMap/PlateMap.js.map +1 -1
- package/dist/components/charts/PlateMap/constants.d.ts +75 -0
- package/dist/components/charts/PlateMap/index.d.ts +2 -0
- package/dist/components/charts/PlateMap/types.d.ts +322 -0
- package/dist/components/charts/PlateMap/utils.d.ts +133 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +2 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.cjs.map +1 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +252 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js.map +1 -0
- package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js +215 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.js +38 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.js.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/index.d.ts +3 -0
- package/dist/components/charts/ScatterPlotInteractive/types.d.ts +226 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.d.ts +72 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.js +261 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs +2 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs.map +1 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.js +40 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
- package/dist/components/charts/StackedChromatogram/transforms.cjs +2 -0
- package/dist/components/charts/StackedChromatogram/transforms.cjs.map +1 -0
- package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
- package/dist/components/charts/StackedChromatogram/transforms.js +31 -0
- package/dist/components/charts/StackedChromatogram/transforms.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
- package/dist/components/charts/plotly-loader.cjs +2 -0
- package/dist/components/charts/plotly-loader.cjs.map +1 -0
- package/dist/components/charts/plotly-loader.d.ts +29 -0
- package/dist/components/charts/plotly-loader.js +22 -0
- package/dist/components/charts/plotly-loader.js.map +1 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +2 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.js +142 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.js.map +1 -0
- package/dist/components/composed/AssistantLayout/dockLayout.cjs +2 -0
- package/dist/components/composed/AssistantLayout/dockLayout.cjs.map +1 -0
- package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -0
- package/dist/components/composed/AssistantLayout/dockLayout.js +10 -0
- package/dist/components/composed/AssistantLayout/dockLayout.js.map +1 -0
- package/dist/components/composed/AssistantLayout/index.d.ts +3 -0
- package/dist/components/composed/Chat/Chat.cjs +1 -1
- package/dist/components/composed/Chat/Chat.cjs.map +1 -1
- package/dist/components/composed/Chat/Chat.d.ts +35 -0
- package/dist/components/composed/Chat/Chat.js +28 -28
- package/dist/components/composed/Chat/Chat.js.map +1 -1
- package/dist/components/composed/Chat/index.d.ts +2 -0
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.d.ts +23 -0
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +33 -29
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.js.map +1 -1
- package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
- package/dist/components/composed/DataAppShell/CollapseButton.cjs +2 -0
- package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
- package/dist/components/composed/DataAppShell/CollapseButton.js +42 -0
- package/dist/components/composed/DataAppShell/CollapseButton.js.map +1 -0
- package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
- package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
- package/dist/components/composed/DataAppShell/DataAppShell.d.ts +88 -0
- package/dist/components/composed/DataAppShell/DataAppShell.js +350 -328
- package/dist/components/composed/DataAppShell/DataAppShell.js.map +1 -1
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs +2 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.js +268 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.js.map +1 -0
- package/dist/components/composed/DataAppShell/RightPanel.cjs +2 -0
- package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
- package/dist/components/composed/DataAppShell/RightPanel.js +282 -0
- package/dist/components/composed/DataAppShell/RightPanel.js.map +1 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs +2 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.js +364 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.js.map +1 -0
- package/dist/components/composed/DataAppShell/ShellContext.cjs +2 -0
- package/dist/components/composed/DataAppShell/ShellContext.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -0
- package/dist/components/composed/DataAppShell/ShellContext.js +23 -0
- package/dist/components/composed/DataAppShell/ShellContext.js.map +1 -0
- package/dist/components/composed/DataAppShell/index.d.ts +12 -0
- package/dist/components/composed/EmptyState/EmptyState.d.ts +12 -0
- package/dist/components/composed/EmptyState/index.d.ts +2 -0
- package/dist/components/composed/FormPatterns/FormSection.cjs +1 -1
- package/dist/components/composed/FormPatterns/FormSection.cjs.map +1 -1
- package/dist/components/composed/FormPatterns/FormSection.d.ts +7 -0
- package/dist/components/composed/FormPatterns/FormSection.js +2 -2
- package/dist/components/composed/FormPatterns/index.d.ts +1 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +87 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.js.map +1 -0
- package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.js +89 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.js.map +1 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.js +19 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.d.ts +12 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +21 -21
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.d.ts +22 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +34 -34
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.d.ts +106 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +2 -2
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapForm.d.ts +30 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.d.ts +64 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.d.ts +29 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.d.ts +19 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +11 -11
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.d.ts +12 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +2 -2
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.d.ts +13 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +4 -4
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellLegend.d.ts +21 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js +24 -12
- package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.d.ts +46 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js +10 -10
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.d.ts +17 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +7 -7
- package/dist/components/composed/PlateMapEditor/autoFill.d.ts +26 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.d.ts +4 -0
- package/dist/components/composed/PlateMapEditor/helpers.d.ts +2 -0
- package/dist/components/composed/PlateMapEditor/index.d.ts +31 -0
- package/dist/components/composed/PlateMapEditor/types.d.ts +137 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.d.ts +12 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.d.ts +32 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.d.ts +86 -0
- package/dist/components/composed/ProcessFlow/index.d.ts +1 -0
- package/dist/components/composed/RichListItem/RichListItem.cjs +1 -1
- package/dist/components/composed/RichListItem/RichListItem.cjs.map +1 -1
- package/dist/components/composed/RichListItem/RichListItem.d.ts +22 -0
- package/dist/components/composed/RichListItem/RichListItem.js +2 -2
- package/dist/components/composed/RichListItem/index.d.ts +2 -0
- package/dist/components/composed/StatCard/StatCard.cjs +1 -1
- package/dist/components/composed/StatCard/StatCard.cjs.map +1 -1
- package/dist/components/composed/StatCard/StatCard.d.ts +11 -0
- package/dist/components/composed/StatCard/StatCard.js +1 -1
- package/dist/components/composed/StatCard/index.d.ts +1 -0
- package/dist/components/composed/TdpSearch/TdpSearch.cjs +1 -1
- package/dist/components/composed/TdpSearch/TdpSearch.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/TdpSearch.d.ts +21 -0
- package/dist/components/composed/TdpSearch/TdpSearch.js +14 -13
- package/dist/components/composed/TdpSearch/TdpSearch.mocks.d.ts +5 -0
- package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultFilters.d.ts +3 -0
- package/dist/components/composed/TdpSearch/components/DefaultFilters.js +4 -4
- package/dist/components/composed/TdpSearch/components/DefaultFilters.js.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultResults.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultResults.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultResults.d.ts +3 -0
- package/dist/components/composed/TdpSearch/components/DefaultResults.js +2 -2
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.d.ts +3 -0
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.js +2 -2
- package/dist/components/composed/TdpSearch/constants.d.ts +3 -0
- package/dist/components/composed/TdpSearch/hooks/useSearch.d.ts +2 -0
- package/dist/components/composed/TdpSearch/hooks/useTdpCredentials.d.ts +14 -0
- package/dist/components/composed/TdpSearch/index.d.ts +3 -0
- package/dist/components/composed/TdpSearch/types.d.ts +128 -0
- package/dist/components/composed/TdpSearch/utils.d.ts +3 -0
- package/dist/components/composed/TopBar/TopBar.cjs +2 -0
- package/dist/components/composed/TopBar/TopBar.cjs.map +1 -0
- package/dist/components/composed/TopBar/TopBar.d.ts +25 -0
- package/dist/components/composed/TopBar/TopBar.js +56 -0
- package/dist/components/composed/TopBar/TopBar.js.map +1 -0
- package/dist/components/composed/TopBar/index.d.ts +2 -0
- package/dist/components/composed/UserMenu/UserMenu.cjs +2 -0
- package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -0
- package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
- package/dist/components/composed/UserMenu/UserMenu.js +99 -0
- package/dist/components/composed/UserMenu/UserMenu.js.map +1 -0
- package/dist/components/composed/UserMenu/index.d.ts +2 -0
- package/dist/components/composed/tdp-link.d.ts +110 -0
- package/dist/components/composed/tdp-url.d.ts +68 -0
- package/dist/components/ui/accordion.d.ts +7 -0
- package/dist/components/ui/alert-dialog.d.ts +18 -0
- package/dist/components/ui/alert.d.ts +10 -0
- package/dist/components/ui/aspect-ratio.d.ts +3 -0
- package/dist/components/ui/avatar.d.ts +11 -0
- package/dist/components/ui/badge.d.ts +9 -0
- package/dist/components/ui/banner.d.ts +19 -0
- package/dist/components/ui/breadcrumb.d.ts +11 -0
- package/dist/components/ui/button-group.d.ts +11 -0
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/calendar.d.ts +10 -0
- package/dist/components/ui/card.d.ts +11 -0
- package/dist/components/ui/carousel.d.ts +28 -0
- package/dist/components/ui/checkbox.d.ts +4 -0
- package/dist/components/ui/code-block.d.ts +45 -0
- package/dist/components/ui/code-editor.d.ts +18 -0
- package/dist/components/ui/collapsible.d.ts +5 -0
- package/dist/components/ui/combobox.d.ts +24 -0
- package/dist/components/ui/command.d.ts +18 -0
- package/dist/components/ui/context-menu.d.ts +31 -0
- package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
- package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-column-toggle.d.ts +6 -0
- package/dist/components/ui/data-table/data-table-column-toggle.js +71 -63
- package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -1
- package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
- package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-filter.d.ts +9 -0
- package/dist/components/ui/data-table/data-table-filter.js +26 -25
- package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-group.d.ts +9 -0
- package/dist/components/ui/data-table/data-table-group.js +18 -17
- package/dist/components/ui/data-table/data-table-group.js.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.d.ts +7 -0
- package/dist/components/ui/data-table/data-table-pagination.js +16 -16
- package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/ui/data-table/data-table.cjs +1 -1
- package/dist/components/ui/data-table/data-table.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table.d.ts +82 -0
- package/dist/components/ui/data-table/data-table.js +191 -190
- package/dist/components/ui/data-table/data-table.js.map +1 -1
- package/dist/components/ui/data-table/index.d.ts +5 -0
- package/dist/components/ui/dialog.d.ts +18 -0
- package/dist/components/ui/dropdown-menu.d.ts +29 -0
- package/dist/components/ui/field.d.ts +24 -0
- package/dist/components/ui/hover-card.d.ts +6 -0
- package/dist/components/ui/input-group.d.ts +16 -0
- package/dist/components/ui/input.d.ts +3 -0
- package/dist/components/ui/item.d.ts +23 -0
- package/dist/components/ui/kbd.d.ts +3 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/components/ui/menubar.d.ts +30 -0
- package/dist/components/ui/navigation-menu.d.ts +14 -0
- package/dist/components/ui/popover.d.ts +7 -0
- package/dist/components/ui/progress.d.ts +4 -0
- package/dist/components/ui/radio-group.d.ts +5 -0
- package/dist/components/ui/resizable.d.ts +25 -0
- package/dist/components/ui/scroll-area.d.ts +5 -0
- package/dist/components/ui/select.d.ts +15 -0
- package/dist/components/ui/separator.d.ts +4 -0
- package/dist/components/ui/sheet.d.ts +14 -0
- package/dist/components/ui/sidebar.d.ts +69 -0
- package/dist/components/ui/skeleton.d.ts +2 -0
- package/dist/components/ui/slider.d.ts +4 -0
- package/dist/components/ui/snippet.d.ts +18 -0
- package/dist/components/ui/sonner.d.ts +3 -0
- package/dist/components/ui/spinner.d.ts +6 -0
- package/dist/components/ui/switch.d.ts +6 -0
- package/dist/components/ui/table.d.ts +22 -0
- package/dist/components/ui/tabs.d.ts +11 -0
- package/dist/components/ui/tetra-molecule-icon.d.ts +11 -0
- package/dist/components/ui/tetrascience-icon.d.ts +7 -0
- package/dist/components/ui/textarea.d.ts +3 -0
- package/dist/components/ui/toggle-group.d.ts +10 -0
- package/dist/components/ui/toggle.d.ts +9 -0
- package/dist/components/ui/tooltip.d.ts +7 -0
- package/dist/composed/AssistantLayout.cjs +2 -0
- package/dist/composed/AssistantLayout.cjs.map +1 -0
- package/dist/composed/AssistantLayout.js +10 -0
- package/dist/composed/AssistantLayout.js.map +1 -0
- package/dist/composed/Chat.cjs +2 -0
- package/dist/composed/Chat.cjs.map +1 -0
- package/dist/composed/Chat.js +5 -0
- package/dist/composed/Chat.js.map +1 -0
- package/dist/composed/ConfirmDialog.cjs +2 -0
- package/dist/composed/ConfirmDialog.cjs.map +1 -0
- package/dist/composed/ConfirmDialog.js +5 -0
- package/dist/composed/ConfirmDialog.js.map +1 -0
- package/dist/composed/DataAppShell.cjs +2 -0
- package/dist/composed/DataAppShell.cjs.map +1 -0
- package/dist/composed/DataAppShell.js +22 -0
- package/dist/composed/DataAppShell.js.map +1 -0
- package/dist/composed/EmptyState.cjs +2 -0
- package/dist/composed/EmptyState.cjs.map +1 -0
- package/dist/composed/EmptyState.js +5 -0
- package/dist/composed/EmptyState.js.map +1 -0
- package/dist/composed/FormPatterns.cjs +2 -0
- package/dist/composed/FormPatterns.cjs.map +1 -0
- package/dist/composed/FormPatterns.js +5 -0
- package/dist/composed/FormPatterns.js.map +1 -0
- package/dist/composed/MoleculeStructure.cjs +2 -0
- package/dist/composed/MoleculeStructure.cjs.map +1 -0
- package/dist/composed/MoleculeStructure.js +11 -0
- package/dist/composed/MoleculeStructure.js.map +1 -0
- package/dist/composed/PlateMapEditor.cjs +2 -0
- package/dist/composed/PlateMapEditor.cjs.map +1 -0
- package/dist/composed/PlateMapEditor.js +45 -0
- package/dist/composed/PlateMapEditor.js.map +1 -0
- package/dist/composed/ProcessFlow.cjs +2 -0
- package/dist/composed/ProcessFlow.cjs.map +1 -0
- package/dist/composed/ProcessFlow.js +7 -0
- package/dist/composed/ProcessFlow.js.map +1 -0
- package/dist/composed/RichListItem.cjs +2 -0
- package/dist/composed/RichListItem.cjs.map +1 -0
- package/dist/composed/RichListItem.js +6 -0
- package/dist/composed/RichListItem.js.map +1 -0
- package/dist/composed/StatCard.cjs +2 -0
- package/dist/composed/StatCard.cjs.map +1 -0
- package/dist/composed/StatCard.js +5 -0
- package/dist/composed/StatCard.js.map +1 -0
- package/dist/composed/TdpSearch.cjs +2 -0
- package/dist/composed/TdpSearch.cjs.map +1 -0
- package/dist/composed/TdpSearch.js +8 -0
- package/dist/composed/TdpSearch.js.map +1 -0
- package/dist/composed/TopBar.cjs +2 -0
- package/dist/composed/TopBar.cjs.map +1 -0
- package/dist/composed/TopBar.js +6 -0
- package/dist/composed/TopBar.js.map +1 -0
- package/dist/composed/UserMenu.cjs +2 -0
- package/dist/composed/UserMenu.cjs.map +1 -0
- package/dist/composed/UserMenu.js +7 -0
- package/dist/composed/UserMenu.js.map +1 -0
- package/dist/composed/tdp-link.cjs +2 -0
- package/dist/composed/tdp-link.cjs.map +1 -0
- package/dist/composed/tdp-link.js +84 -0
- package/dist/composed/tdp-link.js.map +1 -0
- package/dist/composed/tdp-url.cjs.map +1 -0
- package/dist/composed/tdp-url.js.map +1 -0
- package/dist/hooks/use-code-editor-theme.d.ts +34 -0
- package/dist/hooks/use-element-size.d.ts +25 -0
- package/dist/hooks/use-is-dark.d.ts +12 -0
- package/dist/hooks/use-mobile.d.ts +1 -0
- package/dist/hooks/use-plotly-theme.cjs +1 -1
- package/dist/hooks/use-plotly-theme.cjs.map +1 -1
- package/dist/hooks/use-plotly-theme.d.ts +49 -0
- package/dist/hooks/use-plotly-theme.js +4 -3
- package/dist/hooks/use-plotly-theme.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +102 -4404
- package/dist/index.js +698 -659
- package/dist/index.js.map +1 -1
- package/dist/index.tailwind.css +1 -1
- package/dist/jest-setup.cjs +4 -0
- package/dist/jest-setup.cjs.map +1 -0
- package/dist/jest-setup.d.ts +106 -0
- package/dist/jest-setup.js +218 -0
- package/dist/jest-setup.js.map +1 -0
- package/dist/lib/shiki.cjs +2 -0
- package/dist/lib/shiki.cjs.map +1 -0
- package/dist/lib/shiki.d.ts +32 -0
- package/dist/lib/shiki.js +72 -0
- package/dist/lib/shiki.js.map +1 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/server/auth/JwtTokenManager.cjs +1 -1
- package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
- package/dist/server/auth/JwtTokenManager.d.ts +113 -0
- package/dist/server/auth/JwtTokenManager.js +44 -21
- package/dist/server/auth/JwtTokenManager.js.map +1 -1
- package/dist/server/auth/index.d.ts +5 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/providers/AthenaProvider.cjs +1 -1
- package/dist/server/providers/AthenaProvider.cjs.map +1 -1
- package/dist/server/providers/AthenaProvider.d.ts +75 -0
- package/dist/server/providers/DatabricksProvider.cjs +1 -1
- package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
- package/dist/server/providers/DatabricksProvider.d.ts +38 -0
- package/dist/server/providers/SnowflakeProvider.cjs +1 -1
- package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
- package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
- package/dist/server/providers/buildProvider.d.ts +39 -0
- package/dist/server/providers/entries/athena.d.ts +24 -0
- package/dist/server/providers/entries/databricks.d.ts +25 -0
- package/dist/server/providers/entries/snowflake.d.ts +25 -0
- package/dist/server/providers/exceptions.d.ts +36 -0
- package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
- package/dist/server/providers/index.d.ts +31 -0
- package/dist/server/providers/providerDiscovery.d.ts +81 -0
- package/dist/server/providers/types.d.ts +145 -0
- package/dist/server/search/TdpSearchManager.d.ts +40 -0
- package/dist/server/search/index.d.ts +5 -0
- package/dist/server.d.ts +17 -540
- package/dist/ui/accordion.cjs +2 -0
- package/dist/ui/accordion.cjs.map +1 -0
- package/dist/ui/accordion.js +83 -0
- package/dist/ui/accordion.js.map +1 -0
- package/dist/ui/alert-dialog.cjs +2 -0
- package/dist/ui/alert-dialog.cjs.map +1 -0
- package/dist/ui/alert-dialog.js +181 -0
- package/dist/ui/alert-dialog.js.map +1 -0
- package/dist/ui/alert.cjs +2 -0
- package/dist/ui/alert.cjs.map +1 -0
- package/dist/ui/alert.js +81 -0
- package/dist/ui/alert.js.map +1 -0
- package/dist/ui/aspect-ratio.cjs.map +1 -0
- package/dist/ui/aspect-ratio.js.map +1 -0
- package/dist/ui/avatar.cjs +2 -0
- package/dist/ui/avatar.cjs.map +1 -0
- package/dist/ui/avatar.js +107 -0
- package/dist/ui/avatar.js.map +1 -0
- package/dist/ui/badge.cjs +2 -0
- package/dist/ui/badge.cjs.map +1 -0
- package/dist/ui/badge.js +47 -0
- package/dist/ui/badge.js.map +1 -0
- package/dist/ui/banner.cjs +2 -0
- package/dist/ui/banner.cjs.map +1 -0
- package/dist/ui/banner.js +80 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/ui/breadcrumb.cjs +2 -0
- package/dist/ui/breadcrumb.cjs.map +1 -0
- package/dist/ui/breadcrumb.js +118 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/button-group.cjs +2 -0
- package/dist/ui/button-group.cjs.map +1 -0
- package/dist/ui/button-group.js +77 -0
- package/dist/ui/button-group.js.map +1 -0
- package/dist/ui/button.cjs +2 -0
- package/dist/ui/button.cjs.map +1 -0
- package/dist/ui/button.js +57 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/calendar.cjs +2 -0
- package/dist/ui/calendar.cjs.map +1 -0
- package/dist/ui/calendar.js +174 -0
- package/dist/ui/calendar.js.map +1 -0
- package/dist/ui/card.cjs +2 -0
- package/dist/ui/card.cjs.map +1 -0
- package/dist/ui/card.js +102 -0
- package/dist/ui/card.js.map +1 -0
- package/dist/ui/carousel.cjs +2 -0
- package/dist/ui/carousel.cjs.map +1 -0
- package/dist/ui/carousel.js +179 -0
- package/dist/ui/carousel.js.map +1 -0
- package/dist/ui/checkbox.cjs +2 -0
- package/dist/ui/checkbox.cjs.map +1 -0
- package/dist/ui/checkbox.js +35 -0
- package/dist/ui/checkbox.js.map +1 -0
- package/dist/ui/code-block.cjs +4 -0
- package/dist/ui/code-block.cjs.map +1 -0
- package/dist/ui/code-block.js +324 -0
- package/dist/ui/code-block.js.map +1 -0
- package/dist/ui/code-editor.cjs +2 -0
- package/dist/ui/code-editor.cjs.map +1 -0
- package/dist/ui/code-editor.js +106 -0
- package/dist/ui/code-editor.js.map +1 -0
- package/dist/ui/collapsible.cjs.map +1 -0
- package/dist/ui/collapsible.js.map +1 -0
- package/dist/ui/combobox.cjs +2 -0
- package/dist/ui/combobox.cjs.map +1 -0
- package/dist/ui/combobox.js +285 -0
- package/dist/ui/combobox.js.map +1 -0
- package/dist/ui/command.cjs +2 -0
- package/dist/ui/command.cjs.map +1 -0
- package/dist/ui/command.js +178 -0
- package/dist/ui/command.js.map +1 -0
- package/dist/ui/context-menu.cjs +2 -0
- package/dist/ui/context-menu.cjs.map +1 -0
- package/dist/ui/context-menu.js +236 -0
- package/dist/ui/context-menu.js.map +1 -0
- package/dist/ui/data-table.cjs +2 -0
- package/dist/ui/data-table.cjs.map +1 -0
- package/dist/ui/data-table.js +16 -0
- package/dist/ui/data-table.js.map +1 -0
- package/dist/ui/dialog.cjs +2 -0
- package/dist/ui/dialog.cjs.map +1 -0
- package/dist/ui/dialog.js +165 -0
- package/dist/ui/dialog.js.map +1 -0
- package/dist/ui/dropdown-menu.cjs +2 -0
- package/dist/ui/dropdown-menu.cjs.map +1 -0
- package/dist/ui/dropdown-menu.js +260 -0
- package/dist/ui/dropdown-menu.js.map +1 -0
- package/dist/ui/field.cjs +2 -0
- package/dist/ui/field.cjs.map +1 -0
- package/dist/ui/field.js +210 -0
- package/dist/ui/field.js.map +1 -0
- package/dist/ui/hover-card.cjs +2 -0
- package/dist/ui/hover-card.cjs.map +1 -0
- package/dist/ui/hover-card.js +39 -0
- package/dist/ui/hover-card.js.map +1 -0
- package/dist/ui/input-group.cjs +2 -0
- package/dist/ui/input-group.cjs.map +1 -0
- package/dist/ui/input-group.js +145 -0
- package/dist/ui/input-group.js.map +1 -0
- package/dist/ui/input.cjs +2 -0
- package/dist/ui/input.cjs.map +1 -0
- package/dist/ui/input.js +20 -0
- package/dist/ui/input.js.map +1 -0
- package/dist/ui/item.cjs +2 -0
- package/dist/ui/item.cjs.map +1 -0
- package/dist/ui/item.js +199 -0
- package/dist/ui/item.js.map +1 -0
- package/dist/ui/kbd.cjs +2 -0
- package/dist/ui/kbd.cjs.map +1 -0
- package/dist/ui/kbd.js +30 -0
- package/dist/ui/kbd.js.map +1 -0
- package/dist/ui/label.cjs +2 -0
- package/dist/ui/label.cjs.map +1 -0
- package/dist/ui/label.js +23 -0
- package/dist/ui/label.js.map +1 -0
- package/dist/ui/menubar.cjs +2 -0
- package/dist/ui/menubar.cjs.map +1 -0
- package/dist/ui/menubar.js +256 -0
- package/dist/ui/menubar.js.map +1 -0
- package/dist/ui/navigation-menu.cjs +2 -0
- package/dist/ui/navigation-menu.cjs.map +1 -0
- package/dist/ui/navigation-menu.js +164 -0
- package/dist/ui/navigation-menu.js.map +1 -0
- package/dist/ui/popover.cjs +2 -0
- package/dist/ui/popover.cjs.map +1 -0
- package/dist/ui/popover.js +45 -0
- package/dist/ui/popover.js.map +1 -0
- package/dist/ui/radio-group.cjs +2 -0
- package/dist/ui/radio-group.cjs.map +1 -0
- package/dist/ui/radio-group.js +45 -0
- package/dist/ui/radio-group.js.map +1 -0
- package/dist/ui/resizable.cjs +2 -0
- package/dist/ui/resizable.cjs.map +1 -0
- package/dist/ui/resizable.js +58 -0
- package/dist/ui/resizable.js.map +1 -0
- package/dist/ui/scroll-area.cjs +2 -0
- package/dist/ui/scroll-area.cjs.map +1 -0
- package/dist/ui/scroll-area.js +61 -0
- package/dist/ui/scroll-area.js.map +1 -0
- package/dist/ui/select.cjs +2 -0
- package/dist/ui/select.cjs.map +1 -0
- package/dist/ui/select.js +184 -0
- package/dist/ui/select.js.map +1 -0
- package/dist/ui/separator.cjs +2 -0
- package/dist/ui/separator.cjs.map +1 -0
- package/dist/ui/separator.js +27 -0
- package/dist/ui/separator.js.map +1 -0
- package/dist/ui/sheet.cjs +2 -0
- package/dist/ui/sheet.cjs.map +1 -0
- package/dist/ui/sheet.js +137 -0
- package/dist/ui/sheet.js.map +1 -0
- package/dist/ui/sidebar.cjs +2 -0
- package/dist/ui/sidebar.cjs.map +1 -0
- package/dist/ui/sidebar.js +579 -0
- package/dist/ui/sidebar.js.map +1 -0
- package/dist/ui/skeleton.cjs +2 -0
- package/dist/ui/skeleton.cjs.map +1 -0
- package/dist/ui/skeleton.js +24 -0
- package/dist/ui/skeleton.js.map +1 -0
- package/dist/ui/slider.cjs +2 -0
- package/dist/ui/slider.cjs.map +1 -0
- package/dist/ui/slider.js +61 -0
- package/dist/ui/slider.js.map +1 -0
- package/dist/ui/sonner.cjs +2 -0
- package/dist/ui/sonner.cjs.map +1 -0
- package/dist/ui/sonner.js +52 -0
- package/dist/ui/sonner.js.map +1 -0
- package/dist/ui/spinner.cjs +2 -0
- package/dist/ui/spinner.cjs.map +1 -0
- package/dist/ui/spinner.js +39 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/ui/switch.cjs +2 -0
- package/dist/ui/switch.cjs.map +1 -0
- package/dist/ui/switch.js +32 -0
- package/dist/ui/switch.js.map +1 -0
- package/dist/ui/table.cjs +2 -0
- package/dist/ui/table.cjs.map +1 -0
- package/dist/ui/table.js +153 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/tabs.cjs +2 -0
- package/dist/ui/tabs.cjs.map +1 -0
- package/dist/ui/tabs.js +92 -0
- package/dist/ui/tabs.js.map +1 -0
- package/dist/ui/tetra-molecule-icon.cjs +2 -0
- package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
- package/dist/ui/tetra-molecule-icon.js +50 -0
- package/dist/ui/tetra-molecule-icon.js.map +1 -0
- package/dist/ui/tetrascience-icon.cjs +2 -0
- package/dist/ui/tetrascience-icon.cjs.map +1 -0
- package/dist/ui/tetrascience-icon.js +47 -0
- package/dist/ui/tetrascience-icon.js.map +1 -0
- package/dist/ui/textarea.cjs +2 -0
- package/dist/ui/textarea.cjs.map +1 -0
- package/dist/ui/textarea.js +19 -0
- package/dist/ui/textarea.js.map +1 -0
- package/dist/ui/toggle-group.cjs +2 -0
- package/dist/ui/toggle-group.cjs.map +1 -0
- package/dist/ui/toggle-group.js +81 -0
- package/dist/ui/toggle-group.js.map +1 -0
- package/dist/ui/toggle.cjs +2 -0
- package/dist/ui/toggle.cjs.map +1 -0
- package/dist/ui/toggle.js +44 -0
- package/dist/ui/toggle.js.map +1 -0
- package/dist/ui/tooltip.cjs +2 -0
- package/dist/ui/tooltip.cjs.map +1 -0
- package/dist/ui/tooltip.js +56 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/utils/colors.d.ts +50 -0
- package/package.json +137 -24
- package/dist/athena.d.ts +0 -167
- package/dist/components/ai/attachments.cjs +0 -2
- package/dist/components/ai/attachments.cjs.map +0 -1
- package/dist/components/ai/attachments.js +0 -224
- package/dist/components/ai/attachments.js.map +0 -1
- package/dist/components/ai/chain-of-thought.cjs +0 -2
- package/dist/components/ai/chain-of-thought.cjs.map +0 -1
- package/dist/components/ai/chain-of-thought.js +0 -145
- package/dist/components/ai/chain-of-thought.js.map +0 -1
- package/dist/components/ai/confirmation.cjs +0 -2
- package/dist/components/ai/confirmation.cjs.map +0 -1
- package/dist/components/ai/confirmation.js +0 -109
- package/dist/components/ai/confirmation.js.map +0 -1
- package/dist/components/ai/context.cjs +0 -2
- package/dist/components/ai/context.cjs.map +0 -1
- package/dist/components/ai/context.js +0 -266
- package/dist/components/ai/context.js.map +0 -1
- package/dist/components/ai/conversation.cjs +0 -4
- package/dist/components/ai/conversation.cjs.map +0 -1
- package/dist/components/ai/conversation.js +0 -108
- package/dist/components/ai/conversation.js.map +0 -1
- package/dist/components/ai/inline-citation.cjs +0 -2
- package/dist/components/ai/inline-citation.cjs.map +0 -1
- package/dist/components/ai/inline-citation.js +0 -182
- package/dist/components/ai/inline-citation.js.map +0 -1
- package/dist/components/ai/message.cjs +0 -2
- package/dist/components/ai/message.cjs.map +0 -1
- package/dist/components/ai/message.js +0 -237
- package/dist/components/ai/message.js.map +0 -1
- package/dist/components/ai/model-selector.cjs +0 -2
- package/dist/components/ai/model-selector.cjs.map +0 -1
- package/dist/components/ai/model-selector.js +0 -77
- package/dist/components/ai/model-selector.js.map +0 -1
- package/dist/components/ai/prompt-input.cjs +0 -2
- package/dist/components/ai/prompt-input.cjs.map +0 -1
- package/dist/components/ai/prompt-input.js +0 -774
- package/dist/components/ai/prompt-input.js.map +0 -1
- package/dist/components/ai/queue.cjs +0 -2
- package/dist/components/ai/queue.cjs.map +0 -1
- package/dist/components/ai/queue.js +0 -209
- package/dist/components/ai/queue.js.map +0 -1
- package/dist/components/ai/reasoning.cjs +0 -2
- package/dist/components/ai/reasoning.cjs.map +0 -1
- package/dist/components/ai/reasoning.js +0 -129
- package/dist/components/ai/reasoning.js.map +0 -1
- package/dist/components/ai/shimmer.cjs +0 -2
- package/dist/components/ai/shimmer.cjs.map +0 -1
- package/dist/components/ai/shimmer.js +0 -49
- package/dist/components/ai/shimmer.js.map +0 -1
- package/dist/components/ai/sources.cjs +0 -2
- package/dist/components/ai/sources.cjs.map +0 -1
- package/dist/components/ai/sources.js +0 -54
- package/dist/components/ai/sources.js.map +0 -1
- package/dist/components/ai/speech-input.cjs +0 -2
- package/dist/components/ai/speech-input.cjs.map +0 -1
- package/dist/components/ai/speech-input.js +0 -123
- package/dist/components/ai/speech-input.js.map +0 -1
- package/dist/components/ai/stream-status.cjs +0 -2
- package/dist/components/ai/stream-status.cjs.map +0 -1
- package/dist/components/ai/stream-status.js +0 -106
- package/dist/components/ai/stream-status.js.map +0 -1
- package/dist/components/ai/suggestion.cjs +0 -2
- package/dist/components/ai/suggestion.cjs.map +0 -1
- package/dist/components/ai/suggestion.js +0 -38
- package/dist/components/ai/suggestion.js.map +0 -1
- package/dist/components/ai/task.cjs +0 -2
- package/dist/components/ai/task.cjs.map +0 -1
- package/dist/components/ai/task.js +0 -94
- package/dist/components/ai/task.js.map +0 -1
- package/dist/components/ai/tool.cjs +0 -2
- package/dist/components/ai/tool.cjs.map +0 -1
- package/dist/components/ai/tool.js +0 -143
- package/dist/components/ai/tool.js.map +0 -1
- package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
- package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
- package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
- package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
- package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
- package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
- package/dist/components/charts/BarGraph/BarGraph.js +0 -220
- package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
- package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
- package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
- package/dist/components/charts/Boxplot/Boxplot.js +0 -209
- package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -227
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/annotations.js +0 -73
- package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.js +0 -34
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/constants.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/constants.js +0 -30
- package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/dataProcessing.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/dataProcessing.js +0 -79
- package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
- package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
- package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
- package/dist/components/charts/DotPlot/DotPlot.js +0 -208
- package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
- package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
- package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
- package/dist/components/charts/Heatmap/Heatmap.js +0 -67
- package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
- package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
- package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
- package/dist/components/charts/LineGraph/LineGraph.js +0 -225
- package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
- package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
- package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
- package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
- package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
- package/dist/components/composed/tdp-link.cjs +0 -2
- package/dist/components/composed/tdp-link.cjs.map +0 -1
- package/dist/components/composed/tdp-link.js +0 -84
- package/dist/components/composed/tdp-link.js.map +0 -1
- package/dist/components/composed/tdp-url.cjs.map +0 -1
- package/dist/components/composed/tdp-url.js.map +0 -1
- package/dist/components/ui/accordion.cjs +0 -2
- package/dist/components/ui/accordion.cjs.map +0 -1
- package/dist/components/ui/accordion.js +0 -83
- package/dist/components/ui/accordion.js.map +0 -1
- package/dist/components/ui/alert-dialog.cjs +0 -2
- package/dist/components/ui/alert-dialog.cjs.map +0 -1
- package/dist/components/ui/alert-dialog.js +0 -181
- package/dist/components/ui/alert-dialog.js.map +0 -1
- package/dist/components/ui/alert.cjs +0 -2
- package/dist/components/ui/alert.cjs.map +0 -1
- package/dist/components/ui/alert.js +0 -81
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/aspect-ratio.cjs.map +0 -1
- package/dist/components/ui/aspect-ratio.js.map +0 -1
- package/dist/components/ui/avatar.cjs +0 -2
- package/dist/components/ui/avatar.cjs.map +0 -1
- package/dist/components/ui/avatar.js +0 -107
- package/dist/components/ui/avatar.js.map +0 -1
- package/dist/components/ui/badge.cjs +0 -2
- package/dist/components/ui/badge.cjs.map +0 -1
- package/dist/components/ui/badge.js +0 -47
- package/dist/components/ui/badge.js.map +0 -1
- package/dist/components/ui/banner.cjs +0 -2
- package/dist/components/ui/banner.cjs.map +0 -1
- package/dist/components/ui/banner.js +0 -80
- package/dist/components/ui/banner.js.map +0 -1
- package/dist/components/ui/breadcrumb.cjs +0 -2
- package/dist/components/ui/breadcrumb.cjs.map +0 -1
- package/dist/components/ui/breadcrumb.js +0 -118
- package/dist/components/ui/breadcrumb.js.map +0 -1
- package/dist/components/ui/button-group.cjs +0 -2
- package/dist/components/ui/button-group.cjs.map +0 -1
- package/dist/components/ui/button-group.js +0 -77
- package/dist/components/ui/button-group.js.map +0 -1
- package/dist/components/ui/button.cjs +0 -2
- package/dist/components/ui/button.cjs.map +0 -1
- package/dist/components/ui/button.js +0 -57
- package/dist/components/ui/button.js.map +0 -1
- package/dist/components/ui/calendar.cjs +0 -2
- package/dist/components/ui/calendar.cjs.map +0 -1
- package/dist/components/ui/calendar.js +0 -174
- package/dist/components/ui/calendar.js.map +0 -1
- package/dist/components/ui/card.cjs +0 -2
- package/dist/components/ui/card.cjs.map +0 -1
- package/dist/components/ui/card.js +0 -102
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/carousel.cjs +0 -2
- package/dist/components/ui/carousel.cjs.map +0 -1
- package/dist/components/ui/carousel.js +0 -179
- package/dist/components/ui/carousel.js.map +0 -1
- package/dist/components/ui/checkbox.cjs +0 -2
- package/dist/components/ui/checkbox.cjs.map +0 -1
- package/dist/components/ui/checkbox.js +0 -35
- package/dist/components/ui/checkbox.js.map +0 -1
- package/dist/components/ui/code-block.cjs +0 -4
- package/dist/components/ui/code-block.cjs.map +0 -1
- package/dist/components/ui/code-block.js +0 -306
- package/dist/components/ui/code-block.js.map +0 -1
- package/dist/components/ui/code-editor.cjs +0 -2
- package/dist/components/ui/code-editor.cjs.map +0 -1
- package/dist/components/ui/code-editor.js +0 -103
- package/dist/components/ui/code-editor.js.map +0 -1
- package/dist/components/ui/collapsible.cjs.map +0 -1
- package/dist/components/ui/collapsible.js.map +0 -1
- package/dist/components/ui/combobox.cjs +0 -2
- package/dist/components/ui/combobox.cjs.map +0 -1
- package/dist/components/ui/combobox.js +0 -281
- package/dist/components/ui/combobox.js.map +0 -1
- package/dist/components/ui/command.cjs +0 -2
- package/dist/components/ui/command.cjs.map +0 -1
- package/dist/components/ui/command.js +0 -174
- package/dist/components/ui/command.js.map +0 -1
- package/dist/components/ui/context-menu.cjs +0 -2
- package/dist/components/ui/context-menu.cjs.map +0 -1
- package/dist/components/ui/context-menu.js +0 -236
- package/dist/components/ui/context-menu.js.map +0 -1
- package/dist/components/ui/dialog.cjs +0 -2
- package/dist/components/ui/dialog.cjs.map +0 -1
- package/dist/components/ui/dialog.js +0 -165
- package/dist/components/ui/dialog.js.map +0 -1
- package/dist/components/ui/drawer.cjs +0 -2
- package/dist/components/ui/drawer.cjs.map +0 -1
- package/dist/components/ui/drawer.js +0 -125
- package/dist/components/ui/drawer.js.map +0 -1
- package/dist/components/ui/dropdown-menu.cjs +0 -2
- package/dist/components/ui/dropdown-menu.cjs.map +0 -1
- package/dist/components/ui/dropdown-menu.js +0 -252
- package/dist/components/ui/dropdown-menu.js.map +0 -1
- package/dist/components/ui/field.cjs +0 -2
- package/dist/components/ui/field.cjs.map +0 -1
- package/dist/components/ui/field.js +0 -210
- package/dist/components/ui/field.js.map +0 -1
- package/dist/components/ui/hover-card.cjs +0 -2
- package/dist/components/ui/hover-card.cjs.map +0 -1
- package/dist/components/ui/hover-card.js +0 -39
- package/dist/components/ui/hover-card.js.map +0 -1
- package/dist/components/ui/input-group.cjs +0 -2
- package/dist/components/ui/input-group.cjs.map +0 -1
- package/dist/components/ui/input-group.js +0 -145
- package/dist/components/ui/input-group.js.map +0 -1
- package/dist/components/ui/input-otp.cjs +0 -2
- package/dist/components/ui/input-otp.cjs.map +0 -1
- package/dist/components/ui/input-otp.js +0 -82
- package/dist/components/ui/input-otp.js.map +0 -1
- package/dist/components/ui/input.cjs +0 -2
- package/dist/components/ui/input.cjs.map +0 -1
- package/dist/components/ui/input.js +0 -20
- package/dist/components/ui/input.js.map +0 -1
- package/dist/components/ui/item.cjs +0 -2
- package/dist/components/ui/item.cjs.map +0 -1
- package/dist/components/ui/item.js +0 -191
- package/dist/components/ui/item.js.map +0 -1
- package/dist/components/ui/kbd.cjs +0 -2
- package/dist/components/ui/kbd.cjs.map +0 -1
- package/dist/components/ui/kbd.js +0 -30
- package/dist/components/ui/kbd.js.map +0 -1
- package/dist/components/ui/label.cjs +0 -2
- package/dist/components/ui/label.cjs.map +0 -1
- package/dist/components/ui/label.js +0 -23
- package/dist/components/ui/label.js.map +0 -1
- package/dist/components/ui/menubar.cjs +0 -2
- package/dist/components/ui/menubar.cjs.map +0 -1
- package/dist/components/ui/menubar.js +0 -256
- package/dist/components/ui/menubar.js.map +0 -1
- package/dist/components/ui/navigation-menu.cjs +0 -2
- package/dist/components/ui/navigation-menu.cjs.map +0 -1
- package/dist/components/ui/navigation-menu.js +0 -164
- package/dist/components/ui/navigation-menu.js.map +0 -1
- package/dist/components/ui/popover.cjs +0 -2
- package/dist/components/ui/popover.cjs.map +0 -1
- package/dist/components/ui/popover.js +0 -45
- package/dist/components/ui/popover.js.map +0 -1
- package/dist/components/ui/radio-group.cjs +0 -2
- package/dist/components/ui/radio-group.cjs.map +0 -1
- package/dist/components/ui/radio-group.js +0 -45
- package/dist/components/ui/radio-group.js.map +0 -1
- package/dist/components/ui/resizable.cjs +0 -2
- package/dist/components/ui/resizable.cjs.map +0 -1
- package/dist/components/ui/resizable.js +0 -58
- package/dist/components/ui/resizable.js.map +0 -1
- package/dist/components/ui/scroll-area.cjs +0 -2
- package/dist/components/ui/scroll-area.cjs.map +0 -1
- package/dist/components/ui/scroll-area.js +0 -60
- package/dist/components/ui/scroll-area.js.map +0 -1
- package/dist/components/ui/select.cjs +0 -2
- package/dist/components/ui/select.cjs.map +0 -1
- package/dist/components/ui/select.js +0 -184
- package/dist/components/ui/select.js.map +0 -1
- package/dist/components/ui/separator.cjs +0 -2
- package/dist/components/ui/separator.cjs.map +0 -1
- package/dist/components/ui/separator.js +0 -27
- package/dist/components/ui/separator.js.map +0 -1
- package/dist/components/ui/sheet.cjs +0 -2
- package/dist/components/ui/sheet.cjs.map +0 -1
- package/dist/components/ui/sheet.js +0 -137
- package/dist/components/ui/sheet.js.map +0 -1
- package/dist/components/ui/sidebar.cjs +0 -2
- package/dist/components/ui/sidebar.cjs.map +0 -1
- package/dist/components/ui/sidebar.js +0 -579
- package/dist/components/ui/sidebar.js.map +0 -1
- package/dist/components/ui/skeleton.cjs +0 -2
- package/dist/components/ui/skeleton.cjs.map +0 -1
- package/dist/components/ui/skeleton.js +0 -24
- package/dist/components/ui/skeleton.js.map +0 -1
- package/dist/components/ui/slider.cjs +0 -2
- package/dist/components/ui/slider.cjs.map +0 -1
- package/dist/components/ui/slider.js +0 -60
- package/dist/components/ui/slider.js.map +0 -1
- package/dist/components/ui/sonner.cjs +0 -2
- package/dist/components/ui/sonner.cjs.map +0 -1
- package/dist/components/ui/sonner.js +0 -37
- package/dist/components/ui/sonner.js.map +0 -1
- package/dist/components/ui/spinner.cjs +0 -2
- package/dist/components/ui/spinner.cjs.map +0 -1
- package/dist/components/ui/spinner.js +0 -39
- package/dist/components/ui/spinner.js.map +0 -1
- package/dist/components/ui/switch.cjs +0 -2
- package/dist/components/ui/switch.cjs.map +0 -1
- package/dist/components/ui/switch.js +0 -32
- package/dist/components/ui/switch.js.map +0 -1
- package/dist/components/ui/table.cjs +0 -2
- package/dist/components/ui/table.cjs.map +0 -1
- package/dist/components/ui/table.js +0 -152
- package/dist/components/ui/table.js.map +0 -1
- package/dist/components/ui/tabs.cjs +0 -2
- package/dist/components/ui/tabs.cjs.map +0 -1
- package/dist/components/ui/tabs.js +0 -92
- package/dist/components/ui/tabs.js.map +0 -1
- package/dist/components/ui/tetrascience-icon.cjs +0 -2
- package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
- package/dist/components/ui/tetrascience-icon.js +0 -46
- package/dist/components/ui/tetrascience-icon.js.map +0 -1
- package/dist/components/ui/textarea.cjs +0 -2
- package/dist/components/ui/textarea.cjs.map +0 -1
- package/dist/components/ui/textarea.js +0 -19
- package/dist/components/ui/textarea.js.map +0 -1
- package/dist/components/ui/toggle-group.cjs +0 -2
- package/dist/components/ui/toggle-group.cjs.map +0 -1
- package/dist/components/ui/toggle-group.js +0 -77
- package/dist/components/ui/toggle-group.js.map +0 -1
- package/dist/components/ui/toggle.cjs +0 -2
- package/dist/components/ui/toggle.cjs.map +0 -1
- package/dist/components/ui/toggle.js +0 -44
- package/dist/components/ui/toggle.js.map +0 -1
- package/dist/components/ui/tooltip.cjs +0 -2
- package/dist/components/ui/tooltip.cjs.map +0 -1
- package/dist/components/ui/tooltip.js +0 -56
- package/dist/components/ui/tooltip.js.map +0 -1
- package/dist/databricks.d.ts +0 -129
- package/dist/providers/athena.d.ts +0 -9
- package/dist/providers/databricks.d.ts +0 -9
- package/dist/providers/snowflake.d.ts +0 -9
- package/dist/snowflake.d.ts +0 -125
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
- /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
- /package/dist/{components/composed → composed}/tdp-url.js +0 -0
- /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
- /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
- /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
- /package/dist/{components/ui → ui}/collapsible.js +0 -0
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
import { jsxs as r, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { ChevronLeftIcon as f, ChevronRightIcon as
|
|
3
|
-
import { useDataTable as
|
|
4
|
-
import { Button as s } from "
|
|
5
|
-
import { Select as
|
|
6
|
-
import { cn as
|
|
2
|
+
import { ChevronLeftIcon as f, ChevronRightIcon as b } from "lucide-react";
|
|
3
|
+
import { useDataTable as v } from "./data-table.js";
|
|
4
|
+
import { Button as s } from "../../../ui/button.js";
|
|
5
|
+
import { Select as x, SelectTrigger as P, SelectValue as S, SelectContent as w, SelectItem as C } from "../../../ui/select.js";
|
|
6
|
+
import { cn as E } from "../../../lib/utils.js";
|
|
7
7
|
const _ = 5, A = 10, I = 25;
|
|
8
|
-
function
|
|
8
|
+
function M({
|
|
9
9
|
pageSizeOptions: g = [_, A, I],
|
|
10
|
-
className:
|
|
10
|
+
className: p
|
|
11
11
|
}) {
|
|
12
|
-
const { table: a, grouping:
|
|
13
|
-
if (l === 0 ||
|
|
12
|
+
const { table: a, grouping: m, enableGrouping: d } = v(), c = a.getPageCount(), { pageIndex: i, pageSize: o } = a.getState().pagination, l = a.getFilteredRowModel().rows.length;
|
|
13
|
+
if (l === 0 || d && m) return null;
|
|
14
14
|
const u = i * o + 1, h = Math.min((i + 1) * o, l);
|
|
15
15
|
return /* @__PURE__ */ r(
|
|
16
16
|
"div",
|
|
17
17
|
{
|
|
18
18
|
"data-slot": "data-table-pagination",
|
|
19
|
-
className:
|
|
19
|
+
className: E(
|
|
20
20
|
"flex items-center justify-between gap-4 text-sm text-muted-foreground",
|
|
21
|
-
|
|
21
|
+
p
|
|
22
22
|
),
|
|
23
23
|
children: [
|
|
24
24
|
/* @__PURE__ */ r("div", { className: "flex items-center gap-2", children: [
|
|
25
25
|
/* @__PURE__ */ e("span", { className: "whitespace-nowrap", children: "Rows per page:" }),
|
|
26
26
|
/* @__PURE__ */ r(
|
|
27
|
-
|
|
27
|
+
x,
|
|
28
28
|
{
|
|
29
29
|
value: String(o),
|
|
30
30
|
onValueChange: (t) => a.setPageSize(Number(t)),
|
|
31
31
|
children: [
|
|
32
|
-
/* @__PURE__ */ e(
|
|
33
|
-
/* @__PURE__ */ e(
|
|
32
|
+
/* @__PURE__ */ e(P, { "aria-label": "Rows per page", className: "h-7 w-16", children: /* @__PURE__ */ e(S, {}) }),
|
|
33
|
+
/* @__PURE__ */ e(w, { children: g.map((t) => /* @__PURE__ */ e(C, { value: String(t), children: t }, t)) })
|
|
34
34
|
]
|
|
35
35
|
}
|
|
36
36
|
),
|
|
@@ -74,7 +74,7 @@ function R({
|
|
|
74
74
|
onClick: () => a.nextPage(),
|
|
75
75
|
disabled: !a.getCanNextPage(),
|
|
76
76
|
"aria-label": "Next page",
|
|
77
|
-
children: /* @__PURE__ */ e(
|
|
77
|
+
children: /* @__PURE__ */ e(b, {})
|
|
78
78
|
}
|
|
79
79
|
)
|
|
80
80
|
] })
|
|
@@ -83,6 +83,6 @@ function R({
|
|
|
83
83
|
);
|
|
84
84
|
}
|
|
85
85
|
export {
|
|
86
|
-
|
|
86
|
+
M as DataTablePagination
|
|
87
87
|
};
|
|
88
88
|
//# sourceMappingURL=data-table-pagination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-pagination.js","sources":["../../../../src/components/ui/data-table/data-table-pagination.tsx"],"sourcesContent":["\"use client\"\n\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTablePaginationProps {\n pageSizeOptions?: number[]\n className?: string\n}\n\nconst DEFAULT_PAGE_SIZE_SMALL = 5\nconst DEFAULT_PAGE_SIZE_MEDIUM = 10\nconst DEFAULT_PAGE_SIZE_LARGE = 25\n\nfunction DataTablePagination({\n pageSizeOptions = [DEFAULT_PAGE_SIZE_SMALL, DEFAULT_PAGE_SIZE_MEDIUM, DEFAULT_PAGE_SIZE_LARGE],\n className,\n}: DataTablePaginationProps) {\n const { table, grouping, enableGrouping } = useDataTable()\n\n const pageCount = table.getPageCount()\n const { pageIndex, pageSize } = table.getState().pagination\n const totalRows = table.getFilteredRowModel().rows.length\n\n if (totalRows === 0) return null\n if (enableGrouping && grouping) return null\n\n const start = pageIndex * pageSize + 1\n const end = Math.min((pageIndex + 1) * pageSize, totalRows)\n\n return (\n <div\n data-slot=\"data-table-pagination\"\n className={cn(\n \"flex items-center justify-between gap-4 text-sm text-muted-foreground\",\n className,\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"whitespace-nowrap\">Rows per page:</span>\n <Select\n value={String(pageSize)}\n onValueChange={(value) => table.setPageSize(Number(value))}\n >\n <SelectTrigger className=\"h-7 w-16\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <span className=\"whitespace-nowrap tabular-nums\">\n {start}–{end} of {totalRows}\n </span>\n </div>\n\n {pageCount > 1 && (\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n aria-label=\"Previous page\"\n >\n <ChevronLeftIcon />\n </Button>\n\n {Array.from({ length: pageCount }, (_, i) => (\n <Button\n key={i}\n variant={i === pageIndex ? \"default\" : \"link\"}\n size=\"icon-xs\"\n onClick={() => table.setPageIndex(i)}\n aria-label={`Page ${i + 1}`}\n aria-current={i === pageIndex ? \"page\" : undefined}\n >\n {i + 1}\n </Button>\n ))}\n\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n aria-label=\"Next page\"\n >\n <ChevronRightIcon />\n </Button>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTablePagination }\nexport type { DataTablePaginationProps }\n"],"names":["DEFAULT_PAGE_SIZE_SMALL","DEFAULT_PAGE_SIZE_MEDIUM","DEFAULT_PAGE_SIZE_LARGE","DataTablePagination","pageSizeOptions","className","table","grouping","enableGrouping","useDataTable","pageCount","pageIndex","pageSize","totalRows","start","end","jsxs","cn","jsx","Select","value","SelectTrigger","SelectValue","SelectContent","size","SelectItem","Button","ChevronLeftIcon","_","i","ChevronRightIcon"],"mappings":";;;;;;AAqBA,MAAMA,IAA0B,GAC1BC,IAA2B,IAC3BC,IAA0B;AAEhC,SAASC,EAAoB;AAAA,EAC3B,iBAAAC,IAAkB,CAACJ,GAAyBC,GAA0BC,CAAuB;AAAA,EAC7F,WAAAG;AACF,GAA6B;AAC3B,QAAM,EAAE,OAAAC,GAAO,UAAAC,GAAU,gBAAAC,EAAA,IAAmBC,EAAA,GAEtCC,IAAYJ,EAAM,aAAA,GAClB,EAAE,WAAAK,GAAW,UAAAC,EAAA,IAAaN,EAAM,WAAW,YAC3CO,IAAYP,EAAM,oBAAA,EAAsB,KAAK;AAGnD,MADIO,MAAc,KACdL,KAAkBD,EAAU,QAAO;AAEvC,QAAMO,IAAQH,IAAYC,IAAW,GAC/BG,IAAM,KAAK,KAAKJ,IAAY,KAAKC,GAAUC,CAAS;AAE1D,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAZ;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAAW,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,UAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,qBAAoB,UAAA,kBAAc;AAAA,UAClD,gBAAAF;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,OAAO,OAAOP,CAAQ;AAAA,cACtB,eAAe,CAACQ,MAAUd,EAAM,YAAY,OAAOc,CAAK,CAAC;AAAA,cAEzD,UAAA;AAAA,gBAAA,gBAAAF,EAACG,
|
|
1
|
+
{"version":3,"file":"data-table-pagination.js","sources":["../../../../src/components/ui/data-table/data-table-pagination.tsx"],"sourcesContent":["\"use client\"\n\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTablePaginationProps {\n pageSizeOptions?: number[]\n className?: string\n}\n\nconst DEFAULT_PAGE_SIZE_SMALL = 5\nconst DEFAULT_PAGE_SIZE_MEDIUM = 10\nconst DEFAULT_PAGE_SIZE_LARGE = 25\n\nfunction DataTablePagination({\n pageSizeOptions = [DEFAULT_PAGE_SIZE_SMALL, DEFAULT_PAGE_SIZE_MEDIUM, DEFAULT_PAGE_SIZE_LARGE],\n className,\n}: DataTablePaginationProps) {\n const { table, grouping, enableGrouping } = useDataTable()\n\n const pageCount = table.getPageCount()\n const { pageIndex, pageSize } = table.getState().pagination\n const totalRows = table.getFilteredRowModel().rows.length\n\n if (totalRows === 0) return null\n if (enableGrouping && grouping) return null\n\n const start = pageIndex * pageSize + 1\n const end = Math.min((pageIndex + 1) * pageSize, totalRows)\n\n return (\n <div\n data-slot=\"data-table-pagination\"\n className={cn(\n \"flex items-center justify-between gap-4 text-sm text-muted-foreground\",\n className,\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"whitespace-nowrap\">Rows per page:</span>\n <Select\n value={String(pageSize)}\n onValueChange={(value) => table.setPageSize(Number(value))}\n >\n <SelectTrigger aria-label=\"Rows per page\" className=\"h-7 w-16\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <span className=\"whitespace-nowrap tabular-nums\">\n {start}–{end} of {totalRows}\n </span>\n </div>\n\n {pageCount > 1 && (\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n aria-label=\"Previous page\"\n >\n <ChevronLeftIcon />\n </Button>\n\n {Array.from({ length: pageCount }, (_, i) => (\n <Button\n key={i}\n variant={i === pageIndex ? \"default\" : \"link\"}\n size=\"icon-xs\"\n onClick={() => table.setPageIndex(i)}\n aria-label={`Page ${i + 1}`}\n aria-current={i === pageIndex ? \"page\" : undefined}\n >\n {i + 1}\n </Button>\n ))}\n\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n aria-label=\"Next page\"\n >\n <ChevronRightIcon />\n </Button>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTablePagination }\nexport type { DataTablePaginationProps }\n"],"names":["DEFAULT_PAGE_SIZE_SMALL","DEFAULT_PAGE_SIZE_MEDIUM","DEFAULT_PAGE_SIZE_LARGE","DataTablePagination","pageSizeOptions","className","table","grouping","enableGrouping","useDataTable","pageCount","pageIndex","pageSize","totalRows","start","end","jsxs","cn","jsx","Select","value","SelectTrigger","SelectValue","SelectContent","size","SelectItem","Button","ChevronLeftIcon","_","i","ChevronRightIcon"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),C=require("@dnd-kit/core"),qe=require("@dnd-kit/modifiers"),G=require("@dnd-kit/sortable"),Fe=require("@dnd-kit/utilities"),w=require("@tanstack/react-table"),T=require("lucide-react"),Le=require("react"),Ke=require("./data-table-pagination.cjs"),g=require("../table.cjs"),D=require("../../../lib/utils.cjs");function Pe(e){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(o,r,t.get?t:{enumerable:!0,get:()=>e[r]})}}return o.default=e,Object.freeze(o)}const i=Pe(Le);function A(e,o,r){const t=e.toLowerCase().trim(),a=r.toLowerCase().trim();switch(o){case"contains":return t.includes(a);case"equals":return t===a;case"not_equals":return t!==a;case"starts_with":return t.startsWith(a);case"ends_with":return t.endsWith(a);case"is_empty":return t==="";case"is_not_empty":return t!=="";default:return!0}}const B=i.createContext(null);function Ae(){const e=i.useContext(B);if(!e)throw new Error("useDataTable must be used within a <DataTable>");return e}function Be({header:e,children:o,position:r,numeric:t,truncate:a}){const{attributes:l,listeners:s,setNodeRef:c,transform:u,transition:d,isDragging:m}=G.useSortable({id:e.column.id}),f={transform:Fe.CSS.Transform.toString(u?{...u,scaleX:1,scaleY:1}:null),transition:d,position:"relative"};return n.jsx(g.TableHead,{ref:c,style:f,variant:t?"numeric":void 0,truncate:a,className:D.cn("group/header transition-shadow duration-150",!m&&r==="first"&&"hover:shadow-[inset_-1px_0_0_0_var(--color-border)]",!m&&r==="last"&&"hover:shadow-[inset_1px_0_0_0_var(--color-border)]",!m&&r==="middle"&&"hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]",m&&"opacity-40"),children:n.jsxs("div",{className:D.cn("flex items-center gap-1 min-w-0",t&&"flex-row-reverse"),children:[n.jsx("div",{className:"flex-1 min-w-0",children:o}),n.jsx("button",{type:"button","data-drag-handle":"",className:"cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity",...l,...s,children:n.jsx(T.GripVerticalIcon,{className:"size-3.5"})})]})})}function U({header:e,enableSorting:o,numericColumns:r,columnLabels:t,truncate:a}){if(e.isPlaceholder)return null;const l=o&&e.column.getCanSort(),s=e.column.getIsSorted(),c=r.has(e.column.id);return n.jsxs("div",{className:D.cn("flex items-center gap-1 min-w-0",l&&"group/sort cursor-pointer select-none",c&&"flex-row-reverse"),onClick:l?e.column.getToggleSortingHandler():void 0,onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&l&&e.column.getToggleSortingHandler()},children:[n.jsx("span",{className:D.cn("min-w-0",a&&"truncate"),children:t[e.column.id]??w.flexRender(e.column.columnDef.header,e.getContext())}),l&&n.jsx("span",{className:D.cn(!s&&"opacity-0 group-hover/sort:opacity-100 transition-opacity"),children:s==="asc"?n.jsx(T.ArrowUpIcon,{className:"size-3.5 text-foreground"}):s==="desc"?n.jsx(T.ArrowDownIcon,{className:"size-3.5 text-foreground"}):n.jsx(T.ArrowUpDownIcon,{className:"size-3.5 text-muted-foreground"})})]})}const z="—";function Ue(e,o){const r=new Map,t=new Map;for(const s of e){const c=s.getValue(o),u=c==null||c==="",d=u?z:String(c),m=r.get(d);m?m.push(s):(r.set(d,[s]),t.set(d,u?null:c))}const a=[...r.keys()],l=a.every(s=>s===z||typeof t.get(s)=="number");return a.sort((s,c)=>s===z?1:c===z?-1:l?t.get(s)-t.get(c):s.localeCompare(c,void 0,{sensitivity:"base",numeric:!0})),{order:a,buckets:r}}function Ye(e,o,r,t){const a=e.getColumn(o);return r.find(l=>l.columnId===o)?.label??t[o]??(typeof a?.columnDef.header=="string"?a.columnDef.header:o)}function We({row:e,numericColumns:o,truncate:r}){return n.jsx(g.TableRow,{"data-state":e.getIsSelected()?"selected":void 0,children:e.getVisibleCells().map(t=>n.jsx(g.TableCell,{variant:o.has(t.column.id)?"numeric":void 0,truncate:r&&(t.column.columnDef.meta?.truncate??!0),children:w.flexRender(t.column.columnDef.cell,t.getContext())},t.id))})}function Xe({groupKey:e,groupLabel:o,isExpanded:r,colSpan:t,onToggle:a}){return n.jsx(g.TableRow,{"data-slot":"data-table-group-header",children:n.jsx(g.TableCell,{colSpan:t,className:"p-0 font-medium",children:n.jsxs("button",{type:"button",onClick:a,"aria-expanded":r,"aria-label":`${r?"Collapse":"Expand"} group ${e}`,className:"flex w-full items-center gap-2 text-left p-4 in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[r?n.jsx(T.ChevronDownIcon,{className:"size-3.5 shrink-0 text-muted-foreground"}):n.jsx(T.ChevronRightIcon,{className:"size-3.5 shrink-0 text-muted-foreground"}),n.jsx("span",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:o}),n.jsx("span",{className:"truncate",children:e})]})})})}function Je({table:e,numericColumns:o,truncate:r,grouping:t,groupConfig:a,columnLabels:l,collapsedGroups:s,onToggleGroup:c}){const u=e.getVisibleLeafColumns().length,d=e.getSortedRowModel().rows;if(d.length===0)return n.jsx(g.TableRow,{children:n.jsx(g.TableCell,{colSpan:u,className:"h-24 text-center text-muted-foreground",children:"No results."})});const{order:m,buckets:f}=Ue(d,t),h=Ye(e,t,a,l);return n.jsx(n.Fragment,{children:m.map(b=>{const S=f.get(b)??[],x=!s.has(b);return n.jsxs(i.Fragment,{children:[n.jsx(Xe,{groupKey:b,groupLabel:h,isExpanded:x,colSpan:u,onToggle:()=>c(b)}),x&&S.map(y=>n.jsx(We,{row:y,numericColumns:o,truncate:r},y.id))]},`group-${b}`)})})}function Qe(e,o){if(e.length===0)return new Set;const r=e[0],t=new Set;for(const a of o){const l="accessorKey"in a?String(a.accessorKey):"";l&&typeof r[l]=="number"&&t.add(l)}return t}function K(e){return e.filter(o=>"accessorKey"in o).map(o=>({columnId:String(o.accessorKey)}))}function Ze(e,o){const r=o.filter(t=>t.columnId&&t.operator&&(t.value.trim()!==""||t.operator==="is_empty"||t.operator==="is_not_empty"));return r.length===0?e:e.filter(t=>r.every(a=>{const l=String(t[a.columnId]??"");return A(l,a.operator,a.value)}))}function $e(e,o){const r=C.useSensors(C.useSensor(C.PointerSensor,{activationConstraint:{distance:5}}),C.useSensor(C.KeyboardSensor,{coordinateGetter:G.sortableKeyboardCoordinates})),[t,a]=i.useState(null),l=i.useCallback(u=>{a(String(u.active.id))},[]),s=i.useCallback(u=>{a(null);const{active:d,over:m}=u;if(!m||d.id===m.id)return;const f=o.length>0?o:e.getAllLeafColumns().map(x=>x.id),h=f.indexOf(String(d.id)),b=f.indexOf(String(m.id));if(h===-1||b===-1)return;const S=G.arrayMove(f,h,b);e.setColumnOrder(S)},[o,e]),c=t?e.getFlatHeaders().find(u=>u.column.id===t):null;return{sensors:r,draggingHeader:c,handleDragStart:l,handleDragEnd:s}}function et(e,o){const[r,t]=i.useState(null),[a,l]=i.useState(()=>new Set),s=e===void 0?r:e,c=i.useCallback(d=>{l(new Set),(o??t)(d)},[o]),u=i.useCallback(d=>{l(m=>{const f=new Set(m);return f.has(d)?f.delete(d):f.add(d),f})},[]);return{grouping:s,collapsedGroups:a,handleGroupingChange:c,toggleGroup:u}}function tt({table:e,enableSorting:o,numericColumns:r,columnLabels:t,truncate:a}){return n.jsx(n.Fragment,{children:e.getHeaderGroups().map(l=>n.jsx(g.TableRow,{children:l.headers.map(s=>n.jsx(g.TableHead,{variant:r.has(s.column.id)?"numeric":void 0,truncate:a&&(s.column.columnDef.meta?.truncate??!0),children:n.jsx(U,{header:s,enableSorting:o,numericColumns:r,columnLabels:t,truncate:a&&(s.column.columnDef.meta?.truncate??!0)})},s.id))},l.id))})}function nt({table:e,enableSorting:o,numericColumns:r,columnLabels:t,truncate:a}){return n.jsx(n.Fragment,{children:e.getHeaderGroups().map(l=>n.jsx(g.TableRow,{children:l.headers.map((s,c)=>{const u=c===0?"first":c===l.headers.length-1?"last":"middle";return n.jsx(Be,{header:s,position:u,numeric:r.has(s.column.id),truncate:a&&(s.column.columnDef.meta?.truncate??!0),children:n.jsx(U,{header:s,enableSorting:o,numericColumns:r,columnLabels:t,truncate:a&&(s.column.columnDef.meta?.truncate??!0)})},s.id)})},l.id))})}function P({table:e,useFlexSize:o}){return n.jsx("colgroup",{children:e.getHeaderGroups()[0]?.headers.map(r=>o?n.jsx("col",{style:{width:r.column.getSize()}},r.id):n.jsx("col",{style:r.column.columnDef.size==null?void 0:{width:r.column.columnDef.size}},r.id))})}function ot(e){const{table:o,columns:r,variant:t,containerClassName:a,density:l,hasExplicitSize:s,enableSorting:c,enableColumnReorder:u,enableGrouping:d,grouping:m,groupConfig:f,collapsedGroups:h,onToggleGroup:b,numericColumns:S,columnLabels:x,truncate:y,reorderSensors:R,draggingHeader:v,onDragStart:M,onDragEnd:H}=e,_=n.jsx(rt,{table:o,columns:r,numericColumns:S,truncate:y,grouping:d?m:null,groupConfig:f,columnLabels:x,collapsedGroups:h,onToggleGroup:b});return u?n.jsxs(C.DndContext,{sensors:R,collisionDetection:C.closestCenter,modifiers:[qe.restrictToHorizontalAxis],onDragStart:M,onDragEnd:H,children:[n.jsx(G.SortableContext,{items:o.getFlatHeaders().map(N=>N.column.id),strategy:G.horizontalListSortingStrategy,children:n.jsxs(g.Table,{"data-density":l,variant:t,containerClassName:a,layout:s?"fixed":void 0,children:[s&&n.jsx(P,{table:o,useFlexSize:!0}),n.jsx(g.TableHeader,{children:n.jsx(nt,{table:o,enableSorting:c,numericColumns:S,columnLabels:x,truncate:y})}),n.jsx(g.TableBody,{children:_})]})}),n.jsx(C.DragOverlay,{dropAnimation:null,children:v&&n.jsx("div",{className:"rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-lg",children:x[v.column.id]??(typeof v.column.columnDef.header=="string"?v.column.columnDef.header:v.column.id)})})]}):n.jsxs(g.Table,{"data-density":l,variant:t,containerClassName:a,layout:s?"fixed":void 0,children:[s&&n.jsx(P,{table:o,useFlexSize:!1}),n.jsx(g.TableHeader,{children:n.jsx(tt,{table:o,enableSorting:c,numericColumns:S,columnLabels:x,truncate:y})}),n.jsx(g.TableBody,{children:_})]})}function rt({table:e,columns:o,numericColumns:r,truncate:t,grouping:a,groupConfig:l,columnLabels:s,collapsedGroups:c,onToggleGroup:u}){return a?n.jsx(Je,{table:e,numericColumns:r,truncate:t,grouping:a,groupConfig:l,columnLabels:s,collapsedGroups:c,onToggleGroup:u}):e.getRowModel().rows.length===0?n.jsx(g.TableRow,{children:n.jsx(g.TableCell,{colSpan:o.length,className:"h-24 text-center text-muted-foreground",children:"No results."})}):e.getRowModel().rows.map(d=>n.jsx(g.TableRow,{"data-state":d.getIsSelected()?"selected":void 0,children:d.getVisibleCells().map(m=>n.jsx(g.TableCell,{variant:r.has(m.column.id)?"numeric":void 0,truncate:t&&(m.column.columnDef.meta?.truncate??!0),children:w.flexRender(m.column.columnDef.cell,m.getContext())},m.id))},d.id))}function st(e){const o=[],r=[],t=[],a=[],l=[];return i.Children.forEach(e,s=>{i.isValidElement(s)&&s.type===Y?o.push(s):i.isValidElement(s)&&s.type.displayName==="DataTableFilter"?r.push(s):i.isValidElement(s)&&s.type.displayName==="DataTableGroup"?t.push(s):i.isValidElement(s)&&s.type===Ke.DataTablePagination?a.push(s):l.push(s)}),{toolbarSlots:o,filterSlots:r,groupSlots:t,paginationSlots:a,restSlots:l}}function at({columns:e,data:o,toolbar:r,enableSorting:t=!1,enableColumnVisibility:a=!1,children:l,columnOrder:s,onColumnOrderChange:c,columnVisibility:u,onColumnVisibilityChange:d,columnLabels:m,onColumnLabelChange:f,enablePagination:h=!1,defaultPageSize:b=10,pagination:S,onPaginationChange:x,enableColumnReorder:y=!1,enableFiltering:R=!1,filters:v,onFiltersChange:M,filterConfig:H,manualFiltering:_=!1,enableGrouping:N=!1,grouping:W,onGroupingChange:X,groupConfig:V,density:J="default",className:Q,variant:Z="card",containerClassName:$,truncate:ee=!0}){const[te,ne]=i.useState([]),[oe,re]=i.useState({}),[se,ae]=i.useState([]),[le,ie]=i.useState({}),[ce,ue]=i.useState({pageIndex:0,pageSize:b}),[de,me]=i.useState([]),{grouping:q,collapsedGroups:ge,handleGroupingChange:fe,toggleGroup:pe}=et(W,X),xe=S??ce,k=v??de,E=u??oe,I=s??se,F=m??le,be=i.useMemo(()=>{if(h)return x?p=>{const j=typeof p=="function"?p(S):p;x(j)}:ue},[h,x,S]),he=i.useMemo(()=>{if(a)return p=>{const j=typeof p=="function"?p(E):p;(d??re)(j)}},[a,E,d]),Se=i.useCallback(p=>{(M??me)(p)},[M]),ye=i.useMemo(()=>H??K(e),[H,e]),L=i.useMemo(()=>V??K(e),[V,e]),Ce=i.useMemo(()=>!R||_?o:Ze(o,k),[o,k,R,_]),ve=i.useCallback(p=>{const j=typeof p=="function"?p(I):p;(c??ae)(j)},[I,c]),O=w.useReactTable({data:Ce,columns:e,state:{sorting:t?te:void 0,columnVisibility:a?E:void 0,columnOrder:I.length>0?I:void 0,...h?{pagination:xe}:{}},onSortingChange:t?ne:void 0,onPaginationChange:be,onColumnVisibilityChange:he,onColumnOrderChange:ve,getCoreRowModel:w.getCoreRowModel(),getSortedRowModel:t||N?w.getSortedRowModel():void 0,getPaginationRowModel:h?w.getPaginationRowModel():void 0}),je=i.useCallback((p,j)=>{(f??((Ee,Oe)=>ie(Ve=>({...Ve,[Ee]:Oe}))))(p,j)},[f]),{sensors:we,draggingHeader:De,handleDragStart:Te,handleDragEnd:Re}=$e(O,I),_e=i.useMemo(()=>Qe(o,e),[o,e]),Ne=e.some(p=>p.size!=null),Ie={table:O,columnLabels:F,setColumnLabel:je,filters:k,setFilters:Se,filterConfig:ye,enableFiltering:R,grouping:q,setGrouping:fe,groupConfig:L,enableGrouping:N},{toolbarSlots:Ge,filterSlots:Me,groupSlots:He,paginationSlots:ze,restSlots:ke}=st(l);return n.jsx(B.Provider,{value:Ie,children:n.jsxs("div",{"data-slot":"data-table",className:D.cn("w-full space-y-2",Q),children:[r,Ge,Me,He,n.jsx(ot,{table:O,columns:e,variant:Z,containerClassName:$,density:J,hasExplicitSize:Ne,enableSorting:t,enableColumnReorder:y,enableGrouping:N,grouping:q,groupConfig:L,collapsedGroups:ge,onToggleGroup:pe,numericColumns:_e,columnLabels:F,truncate:ee,reorderSensors:we,draggingHeader:De,onDragStart:Te,onDragEnd:Re}),ze,ke]})})}function Y({className:e,children:o,...r}){return n.jsx("div",{"data-slot":"table-toolbar",className:D.cn("flex items-center justify-end gap-2",e),...r,children:o})}exports.DataTable=at;exports.TableToolbar=Y;exports.applyFilterCondition=A;exports.useDataTable=Ae;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),C=require("@dnd-kit/core"),qe=require("@dnd-kit/modifiers"),G=require("@dnd-kit/sortable"),Fe=require("@dnd-kit/utilities"),w=require("@tanstack/react-table"),T=require("lucide-react"),Ke=require("react"),Pe=require("./data-table-pagination.cjs"),g=require("../../../ui/table.cjs"),D=require("../../../lib/utils.cjs");function Ae(e){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(o,r,t.get?t:{enumerable:!0,get:()=>e[r]})}}return o.default=e,Object.freeze(o)}const i=Ae(Ke);function A(e,o,r){const t=e.toLowerCase().trim(),l=r.toLowerCase().trim();switch(o){case"contains":return t.includes(l);case"equals":return t===l;case"not_equals":return t!==l;case"starts_with":return t.startsWith(l);case"ends_with":return t.endsWith(l);case"is_empty":return t==="";case"is_not_empty":return t!=="";default:return!0}}const B=i.createContext(null);function $(){const e=i.useContext(B);if(!e)throw new Error("useDataTable must be used within a <DataTable>");return e}function Be({header:e,children:o,position:r,numeric:t,truncate:l}){const{attributes:a,listeners:s,setNodeRef:c,transform:u,transition:d,isDragging:m}=G.useSortable({id:e.column.id}),{columnLabels:f}=$(),b=f[e.column.id]??e.column.columnDef.meta?.label??(typeof e.column.columnDef.header=="string"?e.column.columnDef.header:e.column.id),x={transform:Fe.CSS.Transform.toString(u?{...u,scaleX:1,scaleY:1}:null),transition:d,position:"relative"};return n.jsx(g.TableHead,{ref:c,style:x,variant:t?"numeric":void 0,truncate:l,className:D.cn("group/header transition-shadow duration-150",!m&&r==="first"&&"hover:shadow-[inset_-1px_0_0_0_var(--color-border)]",!m&&r==="last"&&"hover:shadow-[inset_1px_0_0_0_var(--color-border)]",!m&&r==="middle"&&"hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]",m&&"opacity-40"),children:n.jsxs("div",{className:D.cn("flex items-center gap-1 min-w-0",t&&"flex-row-reverse"),children:[n.jsx("div",{className:"flex-1 min-w-0",children:o}),n.jsx("button",{type:"button","data-drag-handle":"","aria-label":`Drag to reorder ${b} column`,className:"cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity",...a,...s,children:n.jsx(T.GripVerticalIcon,{className:"size-3.5"})})]})})}function U({header:e,enableSorting:o,numericColumns:r,columnLabels:t,truncate:l}){if(e.isPlaceholder)return null;const a=o&&e.column.getCanSort(),s=e.column.getIsSorted(),c=r.has(e.column.id);return n.jsxs("div",{className:D.cn("flex items-center gap-1 min-w-0",a&&"group/sort cursor-pointer select-none",c&&"flex-row-reverse"),onClick:a?e.column.getToggleSortingHandler():void 0,onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&a&&e.column.getToggleSortingHandler()},children:[n.jsx("span",{className:D.cn("min-w-0",l&&"truncate"),children:t[e.column.id]??w.flexRender(e.column.columnDef.header,e.getContext())}),a&&n.jsx("span",{className:D.cn(!s&&"opacity-0 group-hover/sort:opacity-100 transition-opacity"),children:s==="asc"?n.jsx(T.ArrowUpIcon,{className:"size-3.5 text-foreground"}):s==="desc"?n.jsx(T.ArrowDownIcon,{className:"size-3.5 text-foreground"}):n.jsx(T.ArrowUpDownIcon,{className:"size-3.5 text-muted-foreground"})})]})}const z="—";function $e(e,o){const r=new Map,t=new Map;for(const s of e){const c=s.getValue(o),u=c==null||c==="",d=u?z:String(c),m=r.get(d);m?m.push(s):(r.set(d,[s]),t.set(d,u?null:c))}const l=[...r.keys()],a=l.every(s=>s===z||typeof t.get(s)=="number");return l.sort((s,c)=>s===z?1:c===z?-1:a?t.get(s)-t.get(c):s.localeCompare(c,void 0,{sensitivity:"base",numeric:!0})),{order:l,buckets:r}}function Ue(e,o,r,t){const l=e.getColumn(o);return r.find(a=>a.columnId===o)?.label??t[o]??(typeof l?.columnDef.header=="string"?l.columnDef.header:o)}function Ye({row:e,numericColumns:o,truncate:r}){return n.jsx(g.TableRow,{"data-state":e.getIsSelected()?"selected":void 0,children:e.getVisibleCells().map(t=>n.jsx(g.TableCell,{variant:o.has(t.column.id)?"numeric":void 0,truncate:r&&(t.column.columnDef.meta?.truncate??!0),children:w.flexRender(t.column.columnDef.cell,t.getContext())},t.id))})}function We({groupKey:e,groupLabel:o,isExpanded:r,colSpan:t,onToggle:l}){return n.jsx(g.TableRow,{"data-slot":"data-table-group-header",children:n.jsx(g.TableCell,{colSpan:t,className:"p-0 font-medium",children:n.jsxs("button",{type:"button",onClick:l,"aria-expanded":r,"aria-label":`${r?"Collapse":"Expand"} group ${e}`,className:"flex w-full items-center gap-2 text-left p-4 in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[r?n.jsx(T.ChevronDownIcon,{className:"size-3.5 shrink-0 text-muted-foreground"}):n.jsx(T.ChevronRightIcon,{className:"size-3.5 shrink-0 text-muted-foreground"}),n.jsx("span",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:o}),n.jsx("span",{className:"truncate",children:e})]})})})}function Xe({table:e,numericColumns:o,truncate:r,grouping:t,groupConfig:l,columnLabels:a,collapsedGroups:s,onToggleGroup:c}){const u=e.getVisibleLeafColumns().length,d=e.getSortedRowModel().rows;if(d.length===0)return n.jsx(g.TableRow,{children:n.jsx(g.TableCell,{colSpan:u,className:"h-24 text-center text-muted-foreground",children:"No results."})});const{order:m,buckets:f}=$e(d,t),b=Ue(e,t,l,a);return n.jsx(n.Fragment,{children:m.map(x=>{const S=f.get(x)??[],h=!s.has(x);return n.jsxs(i.Fragment,{children:[n.jsx(We,{groupKey:x,groupLabel:b,isExpanded:h,colSpan:u,onToggle:()=>c(x)}),h&&S.map(y=>n.jsx(Ye,{row:y,numericColumns:o,truncate:r},y.id))]},`group-${x}`)})})}function Je(e,o){if(e.length===0)return new Set;const r=e[0],t=new Set;for(const l of o){const a="accessorKey"in l?String(l.accessorKey):"";a&&typeof r[a]=="number"&&t.add(a)}return t}function K(e){return e.filter(o=>"accessorKey"in o).map(o=>({columnId:String(o.accessorKey)}))}function Qe(e,o){const r=o.filter(t=>t.columnId&&t.operator&&(t.value.trim()!==""||t.operator==="is_empty"||t.operator==="is_not_empty"));return r.length===0?e:e.filter(t=>r.every(l=>{const a=String(t[l.columnId]??"");return A(a,l.operator,l.value)}))}function Ze(e,o){const r=C.useSensors(C.useSensor(C.PointerSensor,{activationConstraint:{distance:5}}),C.useSensor(C.KeyboardSensor,{coordinateGetter:G.sortableKeyboardCoordinates})),[t,l]=i.useState(null),a=i.useCallback(u=>{l(String(u.active.id))},[]),s=i.useCallback(u=>{l(null);const{active:d,over:m}=u;if(!m||d.id===m.id)return;const f=o.length>0?o:e.getAllLeafColumns().map(h=>h.id),b=f.indexOf(String(d.id)),x=f.indexOf(String(m.id));if(b===-1||x===-1)return;const S=G.arrayMove(f,b,x);e.setColumnOrder(S)},[o,e]),c=t?e.getFlatHeaders().find(u=>u.column.id===t):null;return{sensors:r,draggingHeader:c,handleDragStart:a,handleDragEnd:s}}function et(e,o){const[r,t]=i.useState(null),[l,a]=i.useState(()=>new Set),s=e===void 0?r:e,c=i.useCallback(d=>{a(new Set),(o??t)(d)},[o]),u=i.useCallback(d=>{a(m=>{const f=new Set(m);return f.has(d)?f.delete(d):f.add(d),f})},[]);return{grouping:s,collapsedGroups:l,handleGroupingChange:c,toggleGroup:u}}function tt({table:e,enableSorting:o,numericColumns:r,columnLabels:t,truncate:l}){return n.jsx(n.Fragment,{children:e.getHeaderGroups().map(a=>n.jsx(g.TableRow,{children:a.headers.map(s=>n.jsx(g.TableHead,{variant:r.has(s.column.id)?"numeric":void 0,truncate:l&&(s.column.columnDef.meta?.truncate??!0),children:n.jsx(U,{header:s,enableSorting:o,numericColumns:r,columnLabels:t,truncate:l&&(s.column.columnDef.meta?.truncate??!0)})},s.id))},a.id))})}function nt({table:e,enableSorting:o,numericColumns:r,columnLabels:t,truncate:l}){return n.jsx(n.Fragment,{children:e.getHeaderGroups().map(a=>n.jsx(g.TableRow,{children:a.headers.map((s,c)=>{const u=c===0?"first":c===a.headers.length-1?"last":"middle";return n.jsx(Be,{header:s,position:u,numeric:r.has(s.column.id),truncate:l&&(s.column.columnDef.meta?.truncate??!0),children:n.jsx(U,{header:s,enableSorting:o,numericColumns:r,columnLabels:t,truncate:l&&(s.column.columnDef.meta?.truncate??!0)})},s.id)})},a.id))})}function P({table:e,useFlexSize:o}){return n.jsx("colgroup",{children:e.getHeaderGroups()[0]?.headers.map(r=>o?n.jsx("col",{style:{width:r.column.getSize()}},r.id):n.jsx("col",{style:r.column.columnDef.size==null?void 0:{width:r.column.columnDef.size}},r.id))})}function ot(e){const{table:o,columns:r,variant:t,containerClassName:l,density:a,hasExplicitSize:s,enableSorting:c,enableColumnReorder:u,enableGrouping:d,grouping:m,groupConfig:f,collapsedGroups:b,onToggleGroup:x,numericColumns:S,columnLabels:h,truncate:y,reorderSensors:R,draggingHeader:v,onDragStart:M,onDragEnd:H}=e,_=n.jsx(rt,{table:o,columns:r,numericColumns:S,truncate:y,grouping:d?m:null,groupConfig:f,columnLabels:h,collapsedGroups:b,onToggleGroup:x});return u?n.jsxs(C.DndContext,{sensors:R,collisionDetection:C.closestCenter,modifiers:[qe.restrictToHorizontalAxis],onDragStart:M,onDragEnd:H,children:[n.jsx(G.SortableContext,{items:o.getFlatHeaders().map(N=>N.column.id),strategy:G.horizontalListSortingStrategy,children:n.jsxs(g.Table,{"data-density":a,variant:t,containerClassName:l,layout:s?"fixed":void 0,children:[s&&n.jsx(P,{table:o,useFlexSize:!0}),n.jsx(g.TableHeader,{children:n.jsx(nt,{table:o,enableSorting:c,numericColumns:S,columnLabels:h,truncate:y})}),n.jsx(g.TableBody,{children:_})]})}),n.jsx(C.DragOverlay,{dropAnimation:null,children:v&&n.jsx("div",{className:"rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-elevation-5",children:h[v.column.id]??(typeof v.column.columnDef.header=="string"?v.column.columnDef.header:v.column.id)})})]}):n.jsxs(g.Table,{"data-density":a,variant:t,containerClassName:l,layout:s?"fixed":void 0,children:[s&&n.jsx(P,{table:o,useFlexSize:!1}),n.jsx(g.TableHeader,{children:n.jsx(tt,{table:o,enableSorting:c,numericColumns:S,columnLabels:h,truncate:y})}),n.jsx(g.TableBody,{children:_})]})}function rt({table:e,columns:o,numericColumns:r,truncate:t,grouping:l,groupConfig:a,columnLabels:s,collapsedGroups:c,onToggleGroup:u}){return l?n.jsx(Xe,{table:e,numericColumns:r,truncate:t,grouping:l,groupConfig:a,columnLabels:s,collapsedGroups:c,onToggleGroup:u}):e.getRowModel().rows.length===0?n.jsx(g.TableRow,{children:n.jsx(g.TableCell,{colSpan:o.length,className:"h-24 text-center text-muted-foreground",children:"No results."})}):e.getRowModel().rows.map(d=>n.jsx(g.TableRow,{"data-state":d.getIsSelected()?"selected":void 0,children:d.getVisibleCells().map(m=>n.jsx(g.TableCell,{variant:r.has(m.column.id)?"numeric":void 0,truncate:t&&(m.column.columnDef.meta?.truncate??!0),children:w.flexRender(m.column.columnDef.cell,m.getContext())},m.id))},d.id))}function st(e){const o=[],r=[],t=[],l=[],a=[];return i.Children.forEach(e,s=>{i.isValidElement(s)&&s.type===Y?o.push(s):i.isValidElement(s)&&s.type.displayName==="DataTableFilter"?r.push(s):i.isValidElement(s)&&s.type.displayName==="DataTableGroup"?t.push(s):i.isValidElement(s)&&s.type===Pe.DataTablePagination?l.push(s):a.push(s)}),{toolbarSlots:o,filterSlots:r,groupSlots:t,paginationSlots:l,restSlots:a}}function lt({columns:e,data:o,toolbar:r,enableSorting:t=!1,enableColumnVisibility:l=!1,children:a,columnOrder:s,onColumnOrderChange:c,columnVisibility:u,onColumnVisibilityChange:d,columnLabels:m,onColumnLabelChange:f,enablePagination:b=!1,defaultPageSize:x=10,pagination:S,onPaginationChange:h,enableColumnReorder:y=!1,enableFiltering:R=!1,filters:v,onFiltersChange:M,filterConfig:H,manualFiltering:_=!1,enableGrouping:N=!1,grouping:W,onGroupingChange:X,groupConfig:L,density:J="default",className:Q,variant:Z="card",containerClassName:ee,truncate:te=!0}){const[ne,oe]=i.useState([]),[re,se]=i.useState({}),[le,ae]=i.useState([]),[ie,ce]=i.useState({}),[ue,de]=i.useState({pageIndex:0,pageSize:x}),[me,ge]=i.useState([]),{grouping:V,collapsedGroups:fe,handleGroupingChange:pe,toggleGroup:xe}=et(W,X),be=S??ue,k=v??me,E=u??re,I=s??le,q=m??ie,he=i.useMemo(()=>{if(b)return h?p=>{const j=typeof p=="function"?p(S):p;h(j)}:de},[b,h,S]),Se=i.useMemo(()=>{if(l)return p=>{const j=typeof p=="function"?p(E):p;(d??se)(j)}},[l,E,d]),ye=i.useCallback(p=>{(M??ge)(p)},[M]),Ce=i.useMemo(()=>H??K(e),[H,e]),F=i.useMemo(()=>L??K(e),[L,e]),ve=i.useMemo(()=>!R||_?o:Qe(o,k),[o,k,R,_]),je=i.useCallback(p=>{const j=typeof p=="function"?p(I):p;(c??ae)(j)},[I,c]),O=w.useReactTable({data:ve,columns:e,state:{sorting:t?ne:void 0,columnVisibility:l?E:void 0,columnOrder:I.length>0?I:void 0,...b?{pagination:be}:{}},onSortingChange:t?oe:void 0,onPaginationChange:he,onColumnVisibilityChange:Se,onColumnOrderChange:je,getCoreRowModel:w.getCoreRowModel(),getSortedRowModel:t||N?w.getSortedRowModel():void 0,getPaginationRowModel:b?w.getPaginationRowModel():void 0}),we=i.useCallback((p,j)=>{(f??((Oe,Le)=>ce(Ve=>({...Ve,[Oe]:Le}))))(p,j)},[f]),{sensors:De,draggingHeader:Te,handleDragStart:Re,handleDragEnd:_e}=Ze(O,I),Ne=i.useMemo(()=>Je(o,e),[o,e]),Ie=e.some(p=>p.size!=null),Ge={table:O,columnLabels:q,setColumnLabel:we,filters:k,setFilters:ye,filterConfig:Ce,enableFiltering:R,grouping:V,setGrouping:pe,groupConfig:F,enableGrouping:N},{toolbarSlots:Me,filterSlots:He,groupSlots:ze,paginationSlots:ke,restSlots:Ee}=st(a);return n.jsx(B.Provider,{value:Ge,children:n.jsxs("div",{"data-slot":"data-table",className:D.cn("w-full space-y-2",Q),children:[r,Me,He,ze,n.jsx(ot,{table:O,columns:e,variant:Z,containerClassName:ee,density:J,hasExplicitSize:Ie,enableSorting:t,enableColumnReorder:y,enableGrouping:N,grouping:V,groupConfig:F,collapsedGroups:fe,onToggleGroup:xe,numericColumns:Ne,columnLabels:q,truncate:te,reorderSensors:De,draggingHeader:Te,onDragStart:Re,onDragEnd:_e}),ke,Ee]})})}function Y({className:e,children:o,...r}){return n.jsx("div",{"data-slot":"table-toolbar",className:D.cn("flex items-center justify-end gap-2",e),...r,children:o})}exports.DataTable=lt;exports.TableToolbar=Y;exports.applyFilterCondition=A;exports.useDataTable=$;
|
|
2
2
|
//# sourceMappingURL=data-table.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.cjs","sources":["../../../../src/components/ui/data-table/data-table.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToHorizontalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n type ColumnDef,\n type ColumnOrderState,\n type Header,\n type PaginationState,\n type RowData,\n type SortingState,\n type Table as TanStackTable,\n type VisibilityState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon, ChevronDownIcon, ChevronRightIcon, GripVerticalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { DataTablePagination } from \"./data-table-pagination\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Module augmentation — column meta\n// ---------------------------------------------------------------------------\n\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n truncate?: boolean\n }\n}\n\n// ---------------------------------------------------------------------------\n// Filter types\n// ---------------------------------------------------------------------------\n\ntype FilterOperator =\n | \"contains\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"ends_with\"\n | \"is_empty\"\n | \"is_not_empty\"\n\ninterface FilterCondition {\n /** Stable unique key for React reconciliation. */\n id: string\n columnId: string\n operator: FilterOperator\n value: string\n}\n\ninterface FilterColumnConfig {\n columnId: string\n label?: string\n operators?: FilterOperator[]\n}\n\n// ---------------------------------------------------------------------------\n// Grouping types\n// ---------------------------------------------------------------------------\n\ninterface GroupColumnConfig {\n columnId: string\n label?: string\n}\n\nexport function applyFilterCondition(\n cellValue: string,\n operator: FilterOperator,\n filterValue: string,\n): boolean {\n const cell = cellValue.toLowerCase().trim()\n const filter = filterValue.toLowerCase().trim()\n switch (operator) {\n case \"contains\": return cell.includes(filter)\n case \"equals\": return cell === filter\n case \"not_equals\": return cell !== filter\n case \"starts_with\": return cell.startsWith(filter)\n case \"ends_with\": return cell.endsWith(filter)\n case \"is_empty\": return cell === \"\"\n case \"is_not_empty\": return cell !== \"\"\n default: {\n const _exhaustive: never = operator\n void _exhaustive\n return true\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface TableContextValue<TData> {\n table: TanStackTable<TData>\n columnLabels: Record<string, string>\n setColumnLabel: (columnId: string, label: string) => void\n filters: FilterCondition[]\n setFilters: (filters: FilterCondition[]) => void\n filterConfig: FilterColumnConfig[]\n enableFiltering: boolean\n grouping: string | null\n setGrouping: (columnId: string | null) => void\n groupConfig: GroupColumnConfig[]\n enableGrouping: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue<unknown> | null>(null)\n\nfunction useDataTable<TData = unknown>() {\n const ctx = React.useContext(TableContext) as TableContextValue<TData> | null\n if (!ctx) {\n throw new Error(\"useDataTable must be used within a <DataTable>\")\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// DraggableHeader\n// ---------------------------------------------------------------------------\n\nfunction DraggableHeader<TData>({\n header,\n children,\n position,\n numeric,\n truncate,\n}: {\n header: Header<TData, unknown>\n children: React.ReactNode\n position?: \"first\" | \"last\" | \"middle\"\n numeric?: boolean\n truncate?: boolean\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: header.column.id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(\n transform ? { ...transform, scaleX: 1, scaleY: 1 } : null,\n ),\n transition,\n position: \"relative\",\n }\n\n return (\n <TableHead\n ref={setNodeRef}\n style={style}\n variant={numeric ? \"numeric\" : undefined}\n truncate={truncate}\n className={cn(\n \"group/header transition-shadow duration-150\",\n !isDragging && position === \"first\" && \"hover:shadow-[inset_-1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"last\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"middle\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]\",\n isDragging && \"opacity-40\",\n )}\n >\n <div className={cn(\"flex items-center gap-1 min-w-0\", numeric && \"flex-row-reverse\")}>\n <div className=\"flex-1 min-w-0\">{children}</div>\n <button\n type=\"button\"\n data-drag-handle=\"\"\n className=\"cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity\"\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n </div>\n </TableHead>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Shared header / body renderers (extracted to reduce cognitive complexity)\n// ---------------------------------------------------------------------------\n\ninterface SortableHeaderContentProps {\n header: Header<unknown, unknown>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate?: boolean\n}\n\nfunction SortableHeaderContent({\n header,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: SortableHeaderContentProps) {\n if (header.isPlaceholder) return null\n const canSort = enableSorting && header.column.getCanSort()\n const sorted = header.column.getIsSorted()\n const isNumeric = numericColumns.has(header.column.id)\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1 min-w-0\",\n canSort && \"group/sort cursor-pointer select-none\",\n isNumeric && \"flex-row-reverse\",\n )}\n onClick={canSort ? header.column.getToggleSortingHandler() : undefined}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && canSort) {\n header.column.getToggleSortingHandler()\n }\n }}\n >\n <span className={cn(\"min-w-0\", truncate && \"truncate\")}>\n {columnLabels[header.column.id] ??\n flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n {canSort && (\n <span\n className={cn(\n !sorted && \"opacity-0 group-hover/sort:opacity-100 transition-opacity\",\n )}\n >\n {sorted === \"asc\" ? (\n <ArrowUpIcon className=\"size-3.5 text-foreground\" />\n ) : sorted === \"desc\" ? (\n <ArrowDownIcon className=\"size-3.5 text-foreground\" />\n ) : (\n <ArrowUpDownIcon className=\"size-3.5 text-muted-foreground\" />\n )}\n </span>\n )}\n </div>\n )\n}\n\ntype RowOf<TData> = ReturnType<TanStackTable<TData>[\"getRowModel\"]>[\"rows\"][number]\n\nconst EMPTY_GROUP_KEY = \"—\"\n\nfunction bucketRowsByGroup<TData>(rows: RowOf<TData>[], grouping: string) {\n const buckets = new Map<string, RowOf<TData>[]>()\n const rawByKey = new Map<string, unknown>()\n for (const row of rows) {\n const raw = row.getValue(grouping)\n const isEmpty = raw == null || raw === \"\"\n const key = isEmpty ? EMPTY_GROUP_KEY : String(raw)\n const bucket = buckets.get(key)\n if (bucket) {\n bucket.push(row)\n } else {\n buckets.set(key, [row])\n rawByKey.set(key, isEmpty ? null : raw)\n }\n }\n\n const keys = [...buckets.keys()]\n const allNumeric = keys.every((k) => k === EMPTY_GROUP_KEY || typeof rawByKey.get(k) === \"number\")\n keys.sort((a, b) => {\n if (a === EMPTY_GROUP_KEY) return 1\n if (b === EMPTY_GROUP_KEY) return -1\n if (allNumeric) return (rawByKey.get(a) as number) - (rawByKey.get(b) as number)\n return a.localeCompare(b, undefined, { sensitivity: \"base\", numeric: true })\n })\n\n return { order: keys, buckets }\n}\n\nfunction resolveGroupLabel<TData>(\n table: TanStackTable<TData>,\n grouping: string,\n groupConfig: GroupColumnConfig[],\n columnLabels: Record<string, string>,\n): string {\n const groupColumn = table.getColumn(grouping)\n return (\n groupConfig.find((g) => g.columnId === grouping)?.label ??\n columnLabels[grouping] ??\n (typeof groupColumn?.columnDef.header === \"string\"\n ? groupColumn.columnDef.header\n : grouping)\n )\n}\n\ninterface DataRowProps<TData> {\n row: RowOf<TData>\n numericColumns: Set<string>\n truncate?: boolean\n}\n\nfunction DataRow<TData>({ row, numericColumns, truncate }: DataRowProps<TData>) {\n return (\n <TableRow data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (cell.column.columnDef.meta?.truncate ?? true)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n )\n}\n\ninterface GroupHeaderRowProps {\n groupKey: string\n groupLabel: string\n isExpanded: boolean\n colSpan: number\n onToggle: () => void\n}\n\nfunction GroupHeaderRow({\n groupKey,\n groupLabel,\n isExpanded,\n colSpan,\n onToggle,\n}: GroupHeaderRowProps) {\n return (\n <TableRow data-slot=\"data-table-group-header\">\n <TableCell colSpan={colSpan} className=\"p-0 font-medium\">\n <button\n type=\"button\"\n onClick={onToggle}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? \"Collapse\" : \"Expand\"} group ${groupKey}`}\n className=\"flex w-full items-center gap-2 text-left p-4 in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset\"\n >\n {isExpanded ? (\n <ChevronDownIcon className=\"size-3.5 shrink-0 text-muted-foreground\" />\n ) : (\n <ChevronRightIcon className=\"size-3.5 shrink-0 text-muted-foreground\" />\n )}\n <span className=\"text-xs uppercase tracking-wide text-muted-foreground\">\n {groupLabel}\n </span>\n <span className=\"truncate\">{groupKey}</span>\n </button>\n </TableCell>\n </TableRow>\n )\n}\n\ninterface GroupedRowsProps<TData> {\n table: TanStackTable<TData>\n numericColumns: Set<string>\n truncate?: boolean\n grouping: string\n groupConfig: GroupColumnConfig[]\n columnLabels: Record<string, string>\n collapsedGroups: Set<string>\n onToggleGroup: (key: string) => void\n}\n\nfunction GroupedRows<TData>({\n table,\n numericColumns,\n truncate,\n grouping,\n groupConfig,\n columnLabels,\n collapsedGroups,\n onToggleGroup,\n}: GroupedRowsProps<TData>) {\n const visibleColumnCount = table.getVisibleLeafColumns().length\n const rows = table.getSortedRowModel().rows\n if (rows.length === 0) {\n return (\n <TableRow>\n <TableCell colSpan={visibleColumnCount} className=\"h-24 text-center text-muted-foreground\">\n No results.\n </TableCell>\n </TableRow>\n )\n }\n\n const { order, buckets } = bucketRowsByGroup(rows, grouping)\n const groupLabel = resolveGroupLabel(table, grouping, groupConfig, columnLabels)\n\n return (\n <>\n {order.map((key) => {\n const groupRows = buckets.get(key) ?? []\n const isExpanded = !collapsedGroups.has(key)\n return (\n <React.Fragment key={`group-${key}`}>\n <GroupHeaderRow\n groupKey={key}\n groupLabel={groupLabel}\n isExpanded={isExpanded}\n colSpan={visibleColumnCount}\n onToggle={() => onToggleGroup(key)}\n />\n {isExpanded &&\n groupRows.map((row) => (\n <DataRow\n key={row.id}\n row={row}\n numericColumns={numericColumns}\n truncate={truncate}\n />\n ))}\n </React.Fragment>\n )\n })}\n </>\n )\n}\n\nfunction deriveNumericColumns<TData>(\n data: TData[],\n columns: ColumnDef<TData, unknown>[],\n): Set<string> {\n if (data.length === 0) return new Set<string>()\n const first = data[0] as Record<string, unknown>\n const ids = new Set<string>()\n for (const col of columns) {\n const key = \"accessorKey\" in col ? String(col.accessorKey) : \"\"\n if (key && typeof first[key] === \"number\") ids.add(key)\n }\n return ids\n}\n\nfunction deriveAccessorConfig<TData>(\n columns: ColumnDef<TData, unknown>[],\n): { columnId: string }[] {\n return columns\n .filter((col) => \"accessorKey\" in col)\n .map((col) => ({ columnId: String((col as { accessorKey: unknown }).accessorKey) }))\n}\n\nfunction applyClientFilters<TData>(data: TData[], filters: FilterCondition[]): TData[] {\n const active = filters.filter(\n (f) =>\n f.columnId &&\n f.operator &&\n (f.value.trim() !== \"\" || f.operator === \"is_empty\" || f.operator === \"is_not_empty\"),\n )\n if (active.length === 0) return data\n return data.filter((row) =>\n active.every((condition) => {\n const cellValue = String((row as Record<string, unknown>)[condition.columnId] ?? \"\")\n return applyFilterCondition(cellValue, condition.operator, condition.value)\n }),\n )\n}\n\nfunction useColumnReorder<TData>(\n table: TanStackTable<TData>,\n columnOrder: ColumnOrderState,\n) {\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n )\n\n const [draggingColumnId, setDraggingColumnId] = React.useState<string | null>(null)\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setDraggingColumnId(String(event.active.id))\n }, [])\n\n const handleDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n setDraggingColumnId(null)\n const { active, over } = event\n if (!over || active.id === over.id) return\n const currentOrder =\n columnOrder.length > 0 ? columnOrder : table.getAllLeafColumns().map((column) => column.id)\n const oldIdx = currentOrder.indexOf(String(active.id))\n const newIdx = currentOrder.indexOf(String(over.id))\n if (oldIdx === -1 || newIdx === -1) return\n const newOrder = arrayMove(currentOrder, oldIdx, newIdx)\n table.setColumnOrder(newOrder)\n },\n [columnOrder, table],\n )\n\n const draggingHeader = draggingColumnId\n ? table.getFlatHeaders().find((h) => h.column.id === draggingColumnId)\n : null\n\n return { sensors, draggingHeader, handleDragStart, handleDragEnd }\n}\n\nfunction useGroupingState(\n controlledGrouping: string | null | undefined,\n onGroupingChange: ((grouping: string | null) => void) | undefined,\n) {\n const [internalGrouping, setInternalGrouping] = React.useState<string | null>(null)\n const [collapsedGroups, setCollapsedGroups] = React.useState<Set<string>>(() => new Set())\n\n const grouping = controlledGrouping === undefined ? internalGrouping : controlledGrouping\n\n const handleGroupingChange = React.useCallback(\n (next: string | null) => {\n setCollapsedGroups(new Set())\n ;(onGroupingChange ?? setInternalGrouping)(next)\n },\n [onGroupingChange],\n )\n\n const toggleGroup = React.useCallback((key: string) => {\n setCollapsedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(key)) next.delete(key)\n else next.add(key)\n return next\n })\n }, [])\n\n return { grouping, collapsedGroups, handleGroupingChange, toggleGroup }\n}\n\ninterface TableSurfaceProps<TData> {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n variant: React.ComponentProps<typeof Table>[\"variant\"]\n containerClassName?: React.ComponentProps<typeof Table>[\"containerClassName\"]\n density: \"compact\" | \"default\" | \"relaxed\"\n hasExplicitSize: boolean\n enableSorting: boolean\n enableColumnReorder: boolean\n enableGrouping: boolean\n grouping: string | null\n groupConfig: GroupColumnConfig[]\n collapsedGroups: Set<string>\n onToggleGroup: (key: string) => void\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate: boolean\n reorderSensors: ReturnType<typeof useSensors>\n draggingHeader: ReturnType<TanStackTable<TData>[\"getFlatHeaders\"]>[number] | null | undefined\n onDragStart: (event: DragStartEvent) => void\n onDragEnd: (event: DragEndEvent) => void\n}\n\nfunction HeaderCells<TData>({\n table,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: {\n table: TanStackTable<TData>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate: boolean\n}) {\n return (\n <>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n variant={numericColumns.has(header.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </TableHead>\n ))}\n </TableRow>\n ))}\n </>\n )\n}\n\nfunction DraggableHeaderCells<TData>({\n table,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: {\n table: TanStackTable<TData>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate: boolean\n}) {\n return (\n <>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header, headerIdx) => {\n const position =\n headerIdx === 0\n ? \"first\"\n : headerIdx === headerGroup.headers.length - 1\n ? \"last\"\n : \"middle\"\n return (\n <DraggableHeader\n key={header.id}\n header={header}\n position={position}\n numeric={numericColumns.has(header.column.id)}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </DraggableHeader>\n )\n })}\n </TableRow>\n ))}\n </>\n )\n}\n\nfunction ColGroup<TData>({\n table,\n useFlexSize,\n}: {\n table: TanStackTable<TData>\n useFlexSize: boolean\n}) {\n return (\n <colgroup>\n {table.getHeaderGroups()[0]?.headers.map((header) =>\n useFlexSize ? (\n <col key={header.id} style={{ width: header.column.getSize() }} />\n ) : (\n <col\n key={header.id}\n style={\n header.column.columnDef.size == null\n ? undefined\n : { width: header.column.columnDef.size }\n }\n />\n ),\n )}\n </colgroup>\n )\n}\n\nfunction TableSurface<TData>(props: TableSurfaceProps<TData>) {\n const {\n table,\n columns,\n variant,\n containerClassName,\n density,\n hasExplicitSize,\n enableSorting,\n enableColumnReorder,\n enableGrouping,\n grouping,\n groupConfig,\n collapsedGroups,\n onToggleGroup,\n numericColumns,\n columnLabels,\n truncate,\n reorderSensors,\n draggingHeader,\n onDragStart,\n onDragEnd,\n } = props\n\n const body = (\n <DataTableRows\n table={table}\n columns={columns}\n numericColumns={numericColumns}\n truncate={truncate}\n grouping={enableGrouping ? grouping : null}\n groupConfig={groupConfig}\n columnLabels={columnLabels}\n collapsedGroups={collapsedGroups}\n onToggleGroup={onToggleGroup}\n />\n )\n\n if (enableColumnReorder) {\n return (\n <DndContext\n sensors={reorderSensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToHorizontalAxis]}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n >\n <SortableContext\n items={table.getFlatHeaders().map((h) => h.column.id)}\n strategy={horizontalListSortingStrategy}\n >\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && <ColGroup table={table} useFlexSize />}\n <TableHeader>\n <DraggableHeaderCells\n table={table}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate}\n />\n </TableHeader>\n <TableBody>{body}</TableBody>\n </Table>\n </SortableContext>\n <DragOverlay dropAnimation={null}>\n {draggingHeader && (\n <div className=\"rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-lg\">\n {columnLabels[draggingHeader.column.id] ??\n (typeof draggingHeader.column.columnDef.header === \"string\"\n ? draggingHeader.column.columnDef.header\n : draggingHeader.column.id)}\n </div>\n )}\n </DragOverlay>\n </DndContext>\n )\n }\n\n return (\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && <ColGroup table={table} useFlexSize={false} />}\n <TableHeader>\n <HeaderCells\n table={table}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate}\n />\n </TableHeader>\n <TableBody>{body}</TableBody>\n </Table>\n )\n}\n\nfunction DataTableRows<TData>({\n table,\n columns,\n numericColumns,\n truncate,\n grouping,\n groupConfig,\n columnLabels,\n collapsedGroups,\n onToggleGroup,\n}: {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n numericColumns: Set<string>\n truncate?: boolean\n grouping: string | null\n groupConfig: GroupColumnConfig[]\n columnLabels: Record<string, string>\n collapsedGroups: Set<string>\n onToggleGroup: (key: string) => void\n}) {\n if (grouping) {\n return (\n <GroupedRows\n table={table}\n numericColumns={numericColumns}\n truncate={truncate}\n grouping={grouping}\n groupConfig={groupConfig}\n columnLabels={columnLabels}\n collapsedGroups={collapsedGroups}\n onToggleGroup={onToggleGroup}\n />\n )\n }\n\n if (table.getRowModel().rows.length === 0) {\n return (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n No results.\n </TableCell>\n </TableRow>\n )\n }\n\n return table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (cell.column.columnDef.meta?.truncate ?? true)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n}\n\n// ---------------------------------------------------------------------------\n// Slot categorization\n// ---------------------------------------------------------------------------\n\nfunction categorizeSlots(children: React.ReactNode) {\n const toolbarSlots: React.ReactNode[] = []\n const filterSlots: React.ReactNode[] = []\n const groupSlots: React.ReactNode[] = []\n const paginationSlots: React.ReactNode[] = []\n const restSlots: React.ReactNode[] = []\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === TableToolbar) {\n toolbarSlots.push(child)\n } else if (\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"DataTableFilter\"\n ) {\n filterSlots.push(child)\n } else if (\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"DataTableGroup\"\n ) {\n groupSlots.push(child)\n } else if (React.isValidElement(child) && child.type === DataTablePagination) {\n paginationSlots.push(child)\n } else {\n restSlots.push(child)\n }\n })\n return { toolbarSlots, filterSlots, groupSlots, paginationSlots, restSlots }\n}\n\n// ---------------------------------------------------------------------------\n// DataTable\n// ---------------------------------------------------------------------------\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n /** @deprecated Use `<TableToolbar>` as a child instead */\n toolbar?: React.ReactNode\n enableSorting?: boolean\n enableColumnVisibility?: boolean\n columnOrder?: ColumnOrderState\n onColumnOrderChange?: (order: ColumnOrderState) => void\n columnVisibility?: VisibilityState\n onColumnVisibilityChange?: (vis: VisibilityState) => void\n columnLabels?: Record<string, string>\n onColumnLabelChange?: (columnId: string, label: string) => void\n enablePagination?: boolean\n defaultPageSize?: number\n pagination?: PaginationState\n onPaginationChange?: (pagination: PaginationState) => void\n enableColumnReorder?: boolean\n enableFiltering?: boolean\n filters?: FilterCondition[]\n onFiltersChange?: (filters: FilterCondition[]) => void\n filterConfig?: FilterColumnConfig[]\n /** When true, filtering is handled externally — onFiltersChange fires but rows are not filtered client-side. */\n manualFiltering?: boolean\n enableGrouping?: boolean\n /** ID of the column currently grouped by, or null for no grouping. */\n grouping?: string | null\n onGroupingChange?: (grouping: string | null) => void\n groupConfig?: GroupColumnConfig[]\n density?: \"compact\" | \"default\" | \"relaxed\"\n children?: React.ReactNode\n className?: string\n /** Variant passed to the base Table component */\n variant?: React.ComponentProps<typeof Table>[\"variant\"]\n /** className passed to the base Table's container div */\n containerClassName?: React.ComponentProps<typeof Table>[\"containerClassName\"]\n truncate?: boolean\n}\n\nfunction DataTable<TData, TValue>({\n columns,\n data,\n toolbar,\n enableSorting = false,\n enableColumnVisibility = false,\n children,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n columnLabels: controlledColumnLabels,\n onColumnLabelChange,\n enablePagination = false,\n defaultPageSize = 10,\n pagination: controlledPagination,\n onPaginationChange,\n enableColumnReorder = false,\n enableFiltering = false,\n filters: controlledFilters,\n onFiltersChange,\n filterConfig,\n manualFiltering = false,\n enableGrouping = false,\n grouping: controlledGrouping,\n onGroupingChange,\n groupConfig,\n density = \"default\",\n className,\n variant = \"card\",\n containerClassName,\n truncate = true,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>({})\n const [internalColumnOrder, setInternalColumnOrder] =\n React.useState<ColumnOrderState>([])\n const [internalColumnLabels, setInternalColumnLabels] = React.useState<\n Record<string, string>\n >({})\n const [internalPagination, setInternalPagination] =\n React.useState<PaginationState>({\n pageIndex: 0,\n pageSize: defaultPageSize,\n })\n const [internalFilters, setInternalFilters] = React.useState<FilterCondition[]>([])\n const { grouping, collapsedGroups, handleGroupingChange, toggleGroup } =\n useGroupingState(controlledGrouping, onGroupingChange)\n\n const pagination = controlledPagination ?? internalPagination\n const filters = controlledFilters ?? internalFilters\n\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const columnOrder = controlledColumnOrder ?? internalColumnOrder\n const columnLabels = controlledColumnLabels ?? internalColumnLabels\n\n const handlePaginationChange = React.useMemo(() => {\n if (!enablePagination) return\n if (onPaginationChange) {\n return (updater: PaginationState | ((prev: PaginationState) => PaginationState)) => {\n const next = typeof updater === \"function\" ? updater(controlledPagination!) : updater\n onPaginationChange(next)\n }\n }\n return setInternalPagination\n }, [enablePagination, onPaginationChange, controlledPagination])\n\n const handleVisibilityChange = React.useMemo(() => {\n if (!enableColumnVisibility) return\n return (updater: VisibilityState | ((prev: VisibilityState) => VisibilityState)) => {\n const next = typeof updater === \"function\" ? updater(columnVisibility) : updater\n ;(onColumnVisibilityChange ?? setInternalColumnVisibility)(next)\n }\n }, [enableColumnVisibility, columnVisibility, onColumnVisibilityChange])\n\n const handleFiltersChange = React.useCallback(\n (newFilters: FilterCondition[]) => {\n ;(onFiltersChange ?? setInternalFilters)(newFilters)\n },\n [onFiltersChange],\n )\n\n const resolvedFilterConfig: FilterColumnConfig[] = React.useMemo(\n () => filterConfig ?? deriveAccessorConfig(columns),\n [filterConfig, columns],\n )\n\n const resolvedGroupConfig: GroupColumnConfig[] = React.useMemo(\n () => groupConfig ?? deriveAccessorConfig(columns),\n [groupConfig, columns],\n )\n\n const filteredData = React.useMemo(\n (): TData[] => (!enableFiltering || manualFiltering ? data : applyClientFilters(data, filters)),\n [data, filters, enableFiltering, manualFiltering],\n )\n\n const handleColumnOrderChange = React.useCallback(\n (updater: ColumnOrderState | ((prev: ColumnOrderState) => ColumnOrderState)) => {\n const next = typeof updater === \"function\" ? updater(columnOrder) : updater\n ;(onColumnOrderChange ?? setInternalColumnOrder)(next)\n },\n [columnOrder, onColumnOrderChange],\n )\n\n const table = useReactTable({\n data: filteredData,\n columns,\n state: {\n sorting: enableSorting ? sorting : undefined,\n columnVisibility: enableColumnVisibility ? columnVisibility : undefined,\n columnOrder: columnOrder.length > 0 ? columnOrder : undefined,\n ...(enablePagination ? { pagination } : {}),\n },\n onSortingChange: enableSorting ? setSorting : undefined,\n onPaginationChange: handlePaginationChange,\n onColumnVisibilityChange: handleVisibilityChange,\n onColumnOrderChange: handleColumnOrderChange,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: enableSorting || enableGrouping ? getSortedRowModel() : undefined,\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n })\n\n const setColumnLabel = React.useCallback(\n (columnId: string, label: string) => {\n ;(onColumnLabelChange ?? ((id: string, l: string) => setInternalColumnLabels((prev) => ({ ...prev, [id]: l }))))(columnId, label)\n },\n [onColumnLabelChange],\n )\n\n const {\n sensors: reorderSensors,\n draggingHeader,\n handleDragStart: handleColumnDragStart,\n handleDragEnd: handleColumnDragEnd,\n } = useColumnReorder(table, columnOrder)\n\n const numericColumns = React.useMemo(\n () => deriveNumericColumns(data, columns),\n [data, columns],\n )\n\n const hasExplicitSize = columns.some((c) => c.size != null)\n\n // Not memoized: TanStack's table instance is a stable reference that mutates\n // internally, so children reading table.getState() need fresh context on each render.\n const ctx = {\n table,\n columnLabels,\n setColumnLabel,\n filters,\n setFilters: handleFiltersChange,\n filterConfig: resolvedFilterConfig,\n enableFiltering,\n grouping,\n setGrouping: handleGroupingChange,\n groupConfig: resolvedGroupConfig,\n enableGrouping,\n } as TableContextValue<unknown>\n\n const { toolbarSlots, filterSlots, groupSlots, paginationSlots, restSlots } = categorizeSlots(children)\n\n return (\n <TableContext.Provider value={ctx}>\n <div data-slot=\"data-table\" className={cn(\"w-full space-y-2\", className)}>\n {toolbar}\n {toolbarSlots}\n {filterSlots}\n {groupSlots}\n <TableSurface\n table={table}\n columns={columns}\n variant={variant}\n containerClassName={containerClassName}\n density={density}\n hasExplicitSize={hasExplicitSize}\n enableSorting={enableSorting}\n enableColumnReorder={enableColumnReorder}\n enableGrouping={enableGrouping}\n grouping={grouping}\n groupConfig={resolvedGroupConfig}\n collapsedGroups={collapsedGroups}\n onToggleGroup={toggleGroup}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate}\n reorderSensors={reorderSensors}\n draggingHeader={draggingHeader}\n onDragStart={handleColumnDragStart}\n onDragEnd={handleColumnDragEnd}\n />\n {paginationSlots}\n {restSlots}\n </div>\n </TableContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TableToolbar\n// ---------------------------------------------------------------------------\n\nfunction TableToolbar({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"table-toolbar\"\n className={cn(\"flex items-center justify-end gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { DataTable, TableToolbar, useDataTable }\nexport type { DataTableProps, FilterCondition, FilterOperator, FilterColumnConfig, GroupColumnConfig }\n"],"names":["applyFilterCondition","cellValue","operator","filterValue","cell","filter","TableContext","React","useDataTable","ctx","DraggableHeader","header","children","position","numeric","truncate","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsx","TableHead","cn","GripVerticalIcon","SortableHeaderContent","enableSorting","numericColumns","columnLabels","canSort","sorted","isNumeric","jsxs","e","flexRender","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","EMPTY_GROUP_KEY","bucketRowsByGroup","rows","grouping","buckets","rawByKey","row","raw","isEmpty","key","bucket","keys","allNumeric","k","a","b","resolveGroupLabel","table","groupConfig","groupColumn","g","DataRow","TableRow","TableCell","GroupHeaderRow","groupKey","groupLabel","isExpanded","colSpan","onToggle","ChevronDownIcon","ChevronRightIcon","GroupedRows","collapsedGroups","onToggleGroup","visibleColumnCount","order","Fragment","groupRows","deriveNumericColumns","data","columns","first","ids","col","deriveAccessorConfig","applyClientFilters","filters","active","f","condition","useColumnReorder","columnOrder","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","draggingColumnId","setDraggingColumnId","handleDragStart","event","handleDragEnd","over","currentOrder","column","oldIdx","newIdx","newOrder","arrayMove","draggingHeader","h","useGroupingState","controlledGrouping","onGroupingChange","internalGrouping","setInternalGrouping","setCollapsedGroups","handleGroupingChange","next","toggleGroup","prev","HeaderCells","headerGroup","DraggableHeaderCells","headerIdx","ColGroup","useFlexSize","TableSurface","props","variant","containerClassName","density","hasExplicitSize","enableColumnReorder","enableGrouping","reorderSensors","onDragStart","onDragEnd","body","DataTableRows","DndContext","closestCenter","restrictToHorizontalAxis","SortableContext","horizontalListSortingStrategy","Table","TableHeader","TableBody","DragOverlay","categorizeSlots","toolbarSlots","filterSlots","groupSlots","paginationSlots","restSlots","child","TableToolbar","DataTablePagination","DataTable","toolbar","enableColumnVisibility","controlledColumnOrder","onColumnOrderChange","controlledColumnVisibility","onColumnVisibilityChange","controlledColumnLabels","onColumnLabelChange","enablePagination","defaultPageSize","controlledPagination","onPaginationChange","enableFiltering","controlledFilters","onFiltersChange","filterConfig","manualFiltering","className","sorting","setSorting","internalColumnVisibility","setInternalColumnVisibility","internalColumnOrder","setInternalColumnOrder","internalColumnLabels","setInternalColumnLabels","internalPagination","setInternalPagination","internalFilters","setInternalFilters","pagination","columnVisibility","handlePaginationChange","updater","handleVisibilityChange","handleFiltersChange","newFilters","resolvedFilterConfig","resolvedGroupConfig","filteredData","handleColumnOrderChange","useReactTable","getCoreRowModel","getSortedRowModel","getPaginationRowModel","setColumnLabel","columnId","label","id","l","handleColumnDragStart","handleColumnDragEnd","c"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table.cjs","sources":["../../../../src/components/ui/data-table/data-table.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToHorizontalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n type ColumnDef,\n type ColumnOrderState,\n type Header,\n type PaginationState,\n type RowData,\n type SortingState,\n type Table as TanStackTable,\n type VisibilityState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon, ChevronDownIcon, ChevronRightIcon, GripVerticalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { DataTablePagination } from \"./data-table-pagination\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Module augmentation — column meta\n// ---------------------------------------------------------------------------\n\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n truncate?: boolean\n }\n}\n\n// ---------------------------------------------------------------------------\n// Filter types\n// ---------------------------------------------------------------------------\n\ntype FilterOperator =\n | \"contains\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"ends_with\"\n | \"is_empty\"\n | \"is_not_empty\"\n\ninterface FilterCondition {\n /** Stable unique key for React reconciliation. */\n id: string\n columnId: string\n operator: FilterOperator\n value: string\n}\n\ninterface FilterColumnConfig {\n columnId: string\n label?: string\n operators?: FilterOperator[]\n}\n\n// ---------------------------------------------------------------------------\n// Grouping types\n// ---------------------------------------------------------------------------\n\ninterface GroupColumnConfig {\n columnId: string\n label?: string\n}\n\nexport function applyFilterCondition(\n cellValue: string,\n operator: FilterOperator,\n filterValue: string,\n): boolean {\n const cell = cellValue.toLowerCase().trim()\n const filter = filterValue.toLowerCase().trim()\n switch (operator) {\n case \"contains\": return cell.includes(filter)\n case \"equals\": return cell === filter\n case \"not_equals\": return cell !== filter\n case \"starts_with\": return cell.startsWith(filter)\n case \"ends_with\": return cell.endsWith(filter)\n case \"is_empty\": return cell === \"\"\n case \"is_not_empty\": return cell !== \"\"\n default: {\n const _exhaustive: never = operator\n void _exhaustive\n return true\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface TableContextValue<TData> {\n table: TanStackTable<TData>\n columnLabels: Record<string, string>\n setColumnLabel: (columnId: string, label: string) => void\n filters: FilterCondition[]\n setFilters: (filters: FilterCondition[]) => void\n filterConfig: FilterColumnConfig[]\n enableFiltering: boolean\n grouping: string | null\n setGrouping: (columnId: string | null) => void\n groupConfig: GroupColumnConfig[]\n enableGrouping: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue<unknown> | null>(null)\n\nfunction useDataTable<TData = unknown>() {\n const ctx = React.useContext(TableContext) as TableContextValue<TData> | null\n if (!ctx) {\n throw new Error(\"useDataTable must be used within a <DataTable>\")\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// DraggableHeader\n// ---------------------------------------------------------------------------\n\nfunction DraggableHeader<TData>({\n header,\n children,\n position,\n numeric,\n truncate,\n}: {\n header: Header<TData, unknown>\n children: React.ReactNode\n position?: \"first\" | \"last\" | \"middle\"\n numeric?: boolean\n truncate?: boolean\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: header.column.id })\n\n const { columnLabels } = useDataTable()\n const columnLabel =\n columnLabels[header.column.id] ??\n (header.column.columnDef.meta as { label?: string } | undefined)?.label ??\n (typeof header.column.columnDef.header === \"string\"\n ? header.column.columnDef.header\n : header.column.id)\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(\n transform ? { ...transform, scaleX: 1, scaleY: 1 } : null,\n ),\n transition,\n position: \"relative\",\n }\n\n return (\n <TableHead\n ref={setNodeRef}\n style={style}\n variant={numeric ? \"numeric\" : undefined}\n truncate={truncate}\n className={cn(\n \"group/header transition-shadow duration-150\",\n !isDragging && position === \"first\" && \"hover:shadow-[inset_-1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"last\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"middle\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]\",\n isDragging && \"opacity-40\",\n )}\n >\n <div className={cn(\"flex items-center gap-1 min-w-0\", numeric && \"flex-row-reverse\")}>\n <div className=\"flex-1 min-w-0\">{children}</div>\n <button\n type=\"button\"\n data-drag-handle=\"\"\n aria-label={`Drag to reorder ${columnLabel} column`}\n className=\"cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity\"\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n </div>\n </TableHead>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Shared header / body renderers (extracted to reduce cognitive complexity)\n// ---------------------------------------------------------------------------\n\ninterface SortableHeaderContentProps {\n header: Header<unknown, unknown>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate?: boolean\n}\n\nfunction SortableHeaderContent({\n header,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: SortableHeaderContentProps) {\n if (header.isPlaceholder) return null\n const canSort = enableSorting && header.column.getCanSort()\n const sorted = header.column.getIsSorted()\n const isNumeric = numericColumns.has(header.column.id)\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1 min-w-0\",\n canSort && \"group/sort cursor-pointer select-none\",\n isNumeric && \"flex-row-reverse\",\n )}\n onClick={canSort ? header.column.getToggleSortingHandler() : undefined}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && canSort) {\n header.column.getToggleSortingHandler()\n }\n }}\n >\n <span className={cn(\"min-w-0\", truncate && \"truncate\")}>\n {columnLabels[header.column.id] ??\n flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n {canSort && (\n <span\n className={cn(\n !sorted && \"opacity-0 group-hover/sort:opacity-100 transition-opacity\",\n )}\n >\n {sorted === \"asc\" ? (\n <ArrowUpIcon className=\"size-3.5 text-foreground\" />\n ) : sorted === \"desc\" ? (\n <ArrowDownIcon className=\"size-3.5 text-foreground\" />\n ) : (\n <ArrowUpDownIcon className=\"size-3.5 text-muted-foreground\" />\n )}\n </span>\n )}\n </div>\n )\n}\n\ntype RowOf<TData> = ReturnType<TanStackTable<TData>[\"getRowModel\"]>[\"rows\"][number]\n\nconst EMPTY_GROUP_KEY = \"—\"\n\nfunction bucketRowsByGroup<TData>(rows: RowOf<TData>[], grouping: string) {\n const buckets = new Map<string, RowOf<TData>[]>()\n const rawByKey = new Map<string, unknown>()\n for (const row of rows) {\n const raw = row.getValue(grouping)\n const isEmpty = raw == null || raw === \"\"\n const key = isEmpty ? EMPTY_GROUP_KEY : String(raw)\n const bucket = buckets.get(key)\n if (bucket) {\n bucket.push(row)\n } else {\n buckets.set(key, [row])\n rawByKey.set(key, isEmpty ? null : raw)\n }\n }\n\n const keys = [...buckets.keys()]\n const allNumeric = keys.every((k) => k === EMPTY_GROUP_KEY || typeof rawByKey.get(k) === \"number\")\n keys.sort((a, b) => {\n if (a === EMPTY_GROUP_KEY) return 1\n if (b === EMPTY_GROUP_KEY) return -1\n if (allNumeric) return (rawByKey.get(a) as number) - (rawByKey.get(b) as number)\n return a.localeCompare(b, undefined, { sensitivity: \"base\", numeric: true })\n })\n\n return { order: keys, buckets }\n}\n\nfunction resolveGroupLabel<TData>(\n table: TanStackTable<TData>,\n grouping: string,\n groupConfig: GroupColumnConfig[],\n columnLabels: Record<string, string>,\n): string {\n const groupColumn = table.getColumn(grouping)\n return (\n groupConfig.find((g) => g.columnId === grouping)?.label ??\n columnLabels[grouping] ??\n (typeof groupColumn?.columnDef.header === \"string\"\n ? groupColumn.columnDef.header\n : grouping)\n )\n}\n\ninterface DataRowProps<TData> {\n row: RowOf<TData>\n numericColumns: Set<string>\n truncate?: boolean\n}\n\nfunction DataRow<TData>({ row, numericColumns, truncate }: DataRowProps<TData>) {\n return (\n <TableRow data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (cell.column.columnDef.meta?.truncate ?? true)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n )\n}\n\ninterface GroupHeaderRowProps {\n groupKey: string\n groupLabel: string\n isExpanded: boolean\n colSpan: number\n onToggle: () => void\n}\n\nfunction GroupHeaderRow({\n groupKey,\n groupLabel,\n isExpanded,\n colSpan,\n onToggle,\n}: GroupHeaderRowProps) {\n return (\n <TableRow data-slot=\"data-table-group-header\">\n <TableCell colSpan={colSpan} className=\"p-0 font-medium\">\n <button\n type=\"button\"\n onClick={onToggle}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? \"Collapse\" : \"Expand\"} group ${groupKey}`}\n className=\"flex w-full items-center gap-2 text-left p-4 in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset\"\n >\n {isExpanded ? (\n <ChevronDownIcon className=\"size-3.5 shrink-0 text-muted-foreground\" />\n ) : (\n <ChevronRightIcon className=\"size-3.5 shrink-0 text-muted-foreground\" />\n )}\n <span className=\"text-xs uppercase tracking-wide text-muted-foreground\">\n {groupLabel}\n </span>\n <span className=\"truncate\">{groupKey}</span>\n </button>\n </TableCell>\n </TableRow>\n )\n}\n\ninterface GroupedRowsProps<TData> {\n table: TanStackTable<TData>\n numericColumns: Set<string>\n truncate?: boolean\n grouping: string\n groupConfig: GroupColumnConfig[]\n columnLabels: Record<string, string>\n collapsedGroups: Set<string>\n onToggleGroup: (key: string) => void\n}\n\nfunction GroupedRows<TData>({\n table,\n numericColumns,\n truncate,\n grouping,\n groupConfig,\n columnLabels,\n collapsedGroups,\n onToggleGroup,\n}: GroupedRowsProps<TData>) {\n const visibleColumnCount = table.getVisibleLeafColumns().length\n const rows = table.getSortedRowModel().rows\n if (rows.length === 0) {\n return (\n <TableRow>\n <TableCell colSpan={visibleColumnCount} className=\"h-24 text-center text-muted-foreground\">\n No results.\n </TableCell>\n </TableRow>\n )\n }\n\n const { order, buckets } = bucketRowsByGroup(rows, grouping)\n const groupLabel = resolveGroupLabel(table, grouping, groupConfig, columnLabels)\n\n return (\n <>\n {order.map((key) => {\n const groupRows = buckets.get(key) ?? []\n const isExpanded = !collapsedGroups.has(key)\n return (\n <React.Fragment key={`group-${key}`}>\n <GroupHeaderRow\n groupKey={key}\n groupLabel={groupLabel}\n isExpanded={isExpanded}\n colSpan={visibleColumnCount}\n onToggle={() => onToggleGroup(key)}\n />\n {isExpanded &&\n groupRows.map((row) => (\n <DataRow\n key={row.id}\n row={row}\n numericColumns={numericColumns}\n truncate={truncate}\n />\n ))}\n </React.Fragment>\n )\n })}\n </>\n )\n}\n\nfunction deriveNumericColumns<TData>(\n data: TData[],\n columns: ColumnDef<TData, unknown>[],\n): Set<string> {\n if (data.length === 0) return new Set<string>()\n const first = data[0] as Record<string, unknown>\n const ids = new Set<string>()\n for (const col of columns) {\n const key = \"accessorKey\" in col ? String(col.accessorKey) : \"\"\n if (key && typeof first[key] === \"number\") ids.add(key)\n }\n return ids\n}\n\nfunction deriveAccessorConfig<TData>(\n columns: ColumnDef<TData, unknown>[],\n): { columnId: string }[] {\n return columns\n .filter((col) => \"accessorKey\" in col)\n .map((col) => ({ columnId: String((col as { accessorKey: unknown }).accessorKey) }))\n}\n\nfunction applyClientFilters<TData>(data: TData[], filters: FilterCondition[]): TData[] {\n const active = filters.filter(\n (f) =>\n f.columnId &&\n f.operator &&\n (f.value.trim() !== \"\" || f.operator === \"is_empty\" || f.operator === \"is_not_empty\"),\n )\n if (active.length === 0) return data\n return data.filter((row) =>\n active.every((condition) => {\n const cellValue = String((row as Record<string, unknown>)[condition.columnId] ?? \"\")\n return applyFilterCondition(cellValue, condition.operator, condition.value)\n }),\n )\n}\n\nfunction useColumnReorder<TData>(\n table: TanStackTable<TData>,\n columnOrder: ColumnOrderState,\n) {\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n )\n\n const [draggingColumnId, setDraggingColumnId] = React.useState<string | null>(null)\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setDraggingColumnId(String(event.active.id))\n }, [])\n\n const handleDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n setDraggingColumnId(null)\n const { active, over } = event\n if (!over || active.id === over.id) return\n const currentOrder =\n columnOrder.length > 0 ? columnOrder : table.getAllLeafColumns().map((column) => column.id)\n const oldIdx = currentOrder.indexOf(String(active.id))\n const newIdx = currentOrder.indexOf(String(over.id))\n if (oldIdx === -1 || newIdx === -1) return\n const newOrder = arrayMove(currentOrder, oldIdx, newIdx)\n table.setColumnOrder(newOrder)\n },\n [columnOrder, table],\n )\n\n const draggingHeader = draggingColumnId\n ? table.getFlatHeaders().find((h) => h.column.id === draggingColumnId)\n : null\n\n return { sensors, draggingHeader, handleDragStart, handleDragEnd }\n}\n\nfunction useGroupingState(\n controlledGrouping: string | null | undefined,\n onGroupingChange: ((grouping: string | null) => void) | undefined,\n) {\n const [internalGrouping, setInternalGrouping] = React.useState<string | null>(null)\n const [collapsedGroups, setCollapsedGroups] = React.useState<Set<string>>(() => new Set())\n\n const grouping = controlledGrouping === undefined ? internalGrouping : controlledGrouping\n\n const handleGroupingChange = React.useCallback(\n (next: string | null) => {\n setCollapsedGroups(new Set())\n ;(onGroupingChange ?? setInternalGrouping)(next)\n },\n [onGroupingChange],\n )\n\n const toggleGroup = React.useCallback((key: string) => {\n setCollapsedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(key)) next.delete(key)\n else next.add(key)\n return next\n })\n }, [])\n\n return { grouping, collapsedGroups, handleGroupingChange, toggleGroup }\n}\n\ninterface TableSurfaceProps<TData> {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n variant: React.ComponentProps<typeof Table>[\"variant\"]\n containerClassName?: React.ComponentProps<typeof Table>[\"containerClassName\"]\n density: \"compact\" | \"default\" | \"relaxed\"\n hasExplicitSize: boolean\n enableSorting: boolean\n enableColumnReorder: boolean\n enableGrouping: boolean\n grouping: string | null\n groupConfig: GroupColumnConfig[]\n collapsedGroups: Set<string>\n onToggleGroup: (key: string) => void\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate: boolean\n reorderSensors: ReturnType<typeof useSensors>\n draggingHeader: ReturnType<TanStackTable<TData>[\"getFlatHeaders\"]>[number] | null | undefined\n onDragStart: (event: DragStartEvent) => void\n onDragEnd: (event: DragEndEvent) => void\n}\n\nfunction HeaderCells<TData>({\n table,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: {\n table: TanStackTable<TData>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate: boolean\n}) {\n return (\n <>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n variant={numericColumns.has(header.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </TableHead>\n ))}\n </TableRow>\n ))}\n </>\n )\n}\n\nfunction DraggableHeaderCells<TData>({\n table,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: {\n table: TanStackTable<TData>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate: boolean\n}) {\n return (\n <>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header, headerIdx) => {\n const position =\n headerIdx === 0\n ? \"first\"\n : headerIdx === headerGroup.headers.length - 1\n ? \"last\"\n : \"middle\"\n return (\n <DraggableHeader\n key={header.id}\n header={header}\n position={position}\n numeric={numericColumns.has(header.column.id)}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </DraggableHeader>\n )\n })}\n </TableRow>\n ))}\n </>\n )\n}\n\nfunction ColGroup<TData>({\n table,\n useFlexSize,\n}: {\n table: TanStackTable<TData>\n useFlexSize: boolean\n}) {\n return (\n <colgroup>\n {table.getHeaderGroups()[0]?.headers.map((header) =>\n useFlexSize ? (\n <col key={header.id} style={{ width: header.column.getSize() }} />\n ) : (\n <col\n key={header.id}\n style={\n header.column.columnDef.size == null\n ? undefined\n : { width: header.column.columnDef.size }\n }\n />\n ),\n )}\n </colgroup>\n )\n}\n\nfunction TableSurface<TData>(props: TableSurfaceProps<TData>) {\n const {\n table,\n columns,\n variant,\n containerClassName,\n density,\n hasExplicitSize,\n enableSorting,\n enableColumnReorder,\n enableGrouping,\n grouping,\n groupConfig,\n collapsedGroups,\n onToggleGroup,\n numericColumns,\n columnLabels,\n truncate,\n reorderSensors,\n draggingHeader,\n onDragStart,\n onDragEnd,\n } = props\n\n const body = (\n <DataTableRows\n table={table}\n columns={columns}\n numericColumns={numericColumns}\n truncate={truncate}\n grouping={enableGrouping ? grouping : null}\n groupConfig={groupConfig}\n columnLabels={columnLabels}\n collapsedGroups={collapsedGroups}\n onToggleGroup={onToggleGroup}\n />\n )\n\n if (enableColumnReorder) {\n return (\n <DndContext\n sensors={reorderSensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToHorizontalAxis]}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n >\n <SortableContext\n items={table.getFlatHeaders().map((h) => h.column.id)}\n strategy={horizontalListSortingStrategy}\n >\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && <ColGroup table={table} useFlexSize />}\n <TableHeader>\n <DraggableHeaderCells\n table={table}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate}\n />\n </TableHeader>\n <TableBody>{body}</TableBody>\n </Table>\n </SortableContext>\n <DragOverlay dropAnimation={null}>\n {draggingHeader && (\n <div className=\"rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-elevation-5\">\n {columnLabels[draggingHeader.column.id] ??\n (typeof draggingHeader.column.columnDef.header === \"string\"\n ? draggingHeader.column.columnDef.header\n : draggingHeader.column.id)}\n </div>\n )}\n </DragOverlay>\n </DndContext>\n )\n }\n\n return (\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && <ColGroup table={table} useFlexSize={false} />}\n <TableHeader>\n <HeaderCells\n table={table}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate}\n />\n </TableHeader>\n <TableBody>{body}</TableBody>\n </Table>\n )\n}\n\nfunction DataTableRows<TData>({\n table,\n columns,\n numericColumns,\n truncate,\n grouping,\n groupConfig,\n columnLabels,\n collapsedGroups,\n onToggleGroup,\n}: {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n numericColumns: Set<string>\n truncate?: boolean\n grouping: string | null\n groupConfig: GroupColumnConfig[]\n columnLabels: Record<string, string>\n collapsedGroups: Set<string>\n onToggleGroup: (key: string) => void\n}) {\n if (grouping) {\n return (\n <GroupedRows\n table={table}\n numericColumns={numericColumns}\n truncate={truncate}\n grouping={grouping}\n groupConfig={groupConfig}\n columnLabels={columnLabels}\n collapsedGroups={collapsedGroups}\n onToggleGroup={onToggleGroup}\n />\n )\n }\n\n if (table.getRowModel().rows.length === 0) {\n return (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n No results.\n </TableCell>\n </TableRow>\n )\n }\n\n return table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (cell.column.columnDef.meta?.truncate ?? true)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n}\n\n// ---------------------------------------------------------------------------\n// Slot categorization\n// ---------------------------------------------------------------------------\n\nfunction categorizeSlots(children: React.ReactNode) {\n const toolbarSlots: React.ReactNode[] = []\n const filterSlots: React.ReactNode[] = []\n const groupSlots: React.ReactNode[] = []\n const paginationSlots: React.ReactNode[] = []\n const restSlots: React.ReactNode[] = []\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === TableToolbar) {\n toolbarSlots.push(child)\n } else if (\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"DataTableFilter\"\n ) {\n filterSlots.push(child)\n } else if (\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"DataTableGroup\"\n ) {\n groupSlots.push(child)\n } else if (React.isValidElement(child) && child.type === DataTablePagination) {\n paginationSlots.push(child)\n } else {\n restSlots.push(child)\n }\n })\n return { toolbarSlots, filterSlots, groupSlots, paginationSlots, restSlots }\n}\n\n// ---------------------------------------------------------------------------\n// DataTable\n// ---------------------------------------------------------------------------\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n /** @deprecated Use `<TableToolbar>` as a child instead */\n toolbar?: React.ReactNode\n enableSorting?: boolean\n enableColumnVisibility?: boolean\n columnOrder?: ColumnOrderState\n onColumnOrderChange?: (order: ColumnOrderState) => void\n columnVisibility?: VisibilityState\n onColumnVisibilityChange?: (vis: VisibilityState) => void\n columnLabels?: Record<string, string>\n onColumnLabelChange?: (columnId: string, label: string) => void\n enablePagination?: boolean\n defaultPageSize?: number\n pagination?: PaginationState\n onPaginationChange?: (pagination: PaginationState) => void\n enableColumnReorder?: boolean\n enableFiltering?: boolean\n filters?: FilterCondition[]\n onFiltersChange?: (filters: FilterCondition[]) => void\n filterConfig?: FilterColumnConfig[]\n /** When true, filtering is handled externally — onFiltersChange fires but rows are not filtered client-side. */\n manualFiltering?: boolean\n enableGrouping?: boolean\n /** ID of the column currently grouped by, or null for no grouping. */\n grouping?: string | null\n onGroupingChange?: (grouping: string | null) => void\n groupConfig?: GroupColumnConfig[]\n density?: \"compact\" | \"default\" | \"relaxed\"\n children?: React.ReactNode\n className?: string\n /** Variant passed to the base Table component */\n variant?: React.ComponentProps<typeof Table>[\"variant\"]\n /** className passed to the base Table's container div */\n containerClassName?: React.ComponentProps<typeof Table>[\"containerClassName\"]\n truncate?: boolean\n}\n\nfunction DataTable<TData, TValue>({\n columns,\n data,\n toolbar,\n enableSorting = false,\n enableColumnVisibility = false,\n children,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n columnLabels: controlledColumnLabels,\n onColumnLabelChange,\n enablePagination = false,\n defaultPageSize = 10,\n pagination: controlledPagination,\n onPaginationChange,\n enableColumnReorder = false,\n enableFiltering = false,\n filters: controlledFilters,\n onFiltersChange,\n filterConfig,\n manualFiltering = false,\n enableGrouping = false,\n grouping: controlledGrouping,\n onGroupingChange,\n groupConfig,\n density = \"default\",\n className,\n variant = \"card\",\n containerClassName,\n truncate = true,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>({})\n const [internalColumnOrder, setInternalColumnOrder] =\n React.useState<ColumnOrderState>([])\n const [internalColumnLabels, setInternalColumnLabels] = React.useState<\n Record<string, string>\n >({})\n const [internalPagination, setInternalPagination] =\n React.useState<PaginationState>({\n pageIndex: 0,\n pageSize: defaultPageSize,\n })\n const [internalFilters, setInternalFilters] = React.useState<FilterCondition[]>([])\n const { grouping, collapsedGroups, handleGroupingChange, toggleGroup } =\n useGroupingState(controlledGrouping, onGroupingChange)\n\n const pagination = controlledPagination ?? internalPagination\n const filters = controlledFilters ?? internalFilters\n\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const columnOrder = controlledColumnOrder ?? internalColumnOrder\n const columnLabels = controlledColumnLabels ?? internalColumnLabels\n\n const handlePaginationChange = React.useMemo(() => {\n if (!enablePagination) return\n if (onPaginationChange) {\n return (updater: PaginationState | ((prev: PaginationState) => PaginationState)) => {\n const next = typeof updater === \"function\" ? updater(controlledPagination!) : updater\n onPaginationChange(next)\n }\n }\n return setInternalPagination\n }, [enablePagination, onPaginationChange, controlledPagination])\n\n const handleVisibilityChange = React.useMemo(() => {\n if (!enableColumnVisibility) return\n return (updater: VisibilityState | ((prev: VisibilityState) => VisibilityState)) => {\n const next = typeof updater === \"function\" ? updater(columnVisibility) : updater\n ;(onColumnVisibilityChange ?? setInternalColumnVisibility)(next)\n }\n }, [enableColumnVisibility, columnVisibility, onColumnVisibilityChange])\n\n const handleFiltersChange = React.useCallback(\n (newFilters: FilterCondition[]) => {\n ;(onFiltersChange ?? setInternalFilters)(newFilters)\n },\n [onFiltersChange],\n )\n\n const resolvedFilterConfig: FilterColumnConfig[] = React.useMemo(\n () => filterConfig ?? deriveAccessorConfig(columns),\n [filterConfig, columns],\n )\n\n const resolvedGroupConfig: GroupColumnConfig[] = React.useMemo(\n () => groupConfig ?? deriveAccessorConfig(columns),\n [groupConfig, columns],\n )\n\n const filteredData = React.useMemo(\n (): TData[] => (!enableFiltering || manualFiltering ? data : applyClientFilters(data, filters)),\n [data, filters, enableFiltering, manualFiltering],\n )\n\n const handleColumnOrderChange = React.useCallback(\n (updater: ColumnOrderState | ((prev: ColumnOrderState) => ColumnOrderState)) => {\n const next = typeof updater === \"function\" ? updater(columnOrder) : updater\n ;(onColumnOrderChange ?? setInternalColumnOrder)(next)\n },\n [columnOrder, onColumnOrderChange],\n )\n\n const table = useReactTable({\n data: filteredData,\n columns,\n state: {\n sorting: enableSorting ? sorting : undefined,\n columnVisibility: enableColumnVisibility ? columnVisibility : undefined,\n columnOrder: columnOrder.length > 0 ? columnOrder : undefined,\n ...(enablePagination ? { pagination } : {}),\n },\n onSortingChange: enableSorting ? setSorting : undefined,\n onPaginationChange: handlePaginationChange,\n onColumnVisibilityChange: handleVisibilityChange,\n onColumnOrderChange: handleColumnOrderChange,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: enableSorting || enableGrouping ? getSortedRowModel() : undefined,\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n })\n\n const setColumnLabel = React.useCallback(\n (columnId: string, label: string) => {\n ;(onColumnLabelChange ?? ((id: string, l: string) => setInternalColumnLabels((prev) => ({ ...prev, [id]: l }))))(columnId, label)\n },\n [onColumnLabelChange],\n )\n\n const {\n sensors: reorderSensors,\n draggingHeader,\n handleDragStart: handleColumnDragStart,\n handleDragEnd: handleColumnDragEnd,\n } = useColumnReorder(table, columnOrder)\n\n const numericColumns = React.useMemo(\n () => deriveNumericColumns(data, columns),\n [data, columns],\n )\n\n const hasExplicitSize = columns.some((c) => c.size != null)\n\n // Not memoized: TanStack's table instance is a stable reference that mutates\n // internally, so children reading table.getState() need fresh context on each render.\n const ctx = {\n table,\n columnLabels,\n setColumnLabel,\n filters,\n setFilters: handleFiltersChange,\n filterConfig: resolvedFilterConfig,\n enableFiltering,\n grouping,\n setGrouping: handleGroupingChange,\n groupConfig: resolvedGroupConfig,\n enableGrouping,\n } as TableContextValue<unknown>\n\n const { toolbarSlots, filterSlots, groupSlots, paginationSlots, restSlots } = categorizeSlots(children)\n\n return (\n <TableContext.Provider value={ctx}>\n <div data-slot=\"data-table\" className={cn(\"w-full space-y-2\", className)}>\n {toolbar}\n {toolbarSlots}\n {filterSlots}\n {groupSlots}\n <TableSurface\n table={table}\n columns={columns}\n variant={variant}\n containerClassName={containerClassName}\n density={density}\n hasExplicitSize={hasExplicitSize}\n enableSorting={enableSorting}\n enableColumnReorder={enableColumnReorder}\n enableGrouping={enableGrouping}\n grouping={grouping}\n groupConfig={resolvedGroupConfig}\n collapsedGroups={collapsedGroups}\n onToggleGroup={toggleGroup}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate}\n reorderSensors={reorderSensors}\n draggingHeader={draggingHeader}\n onDragStart={handleColumnDragStart}\n onDragEnd={handleColumnDragEnd}\n />\n {paginationSlots}\n {restSlots}\n </div>\n </TableContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TableToolbar\n// ---------------------------------------------------------------------------\n\nfunction TableToolbar({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"table-toolbar\"\n className={cn(\"flex items-center justify-end gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { DataTable, TableToolbar, useDataTable }\nexport type { DataTableProps, FilterCondition, FilterOperator, FilterColumnConfig, GroupColumnConfig }\n"],"names":["applyFilterCondition","cellValue","operator","filterValue","cell","filter","TableContext","React","useDataTable","ctx","DraggableHeader","header","children","position","numeric","truncate","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","columnLabels","columnLabel","style","CSS","jsx","TableHead","cn","GripVerticalIcon","SortableHeaderContent","enableSorting","numericColumns","canSort","sorted","isNumeric","jsxs","e","flexRender","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","EMPTY_GROUP_KEY","bucketRowsByGroup","rows","grouping","buckets","rawByKey","row","raw","isEmpty","key","bucket","keys","allNumeric","k","a","b","resolveGroupLabel","table","groupConfig","groupColumn","g","DataRow","TableRow","TableCell","GroupHeaderRow","groupKey","groupLabel","isExpanded","colSpan","onToggle","ChevronDownIcon","ChevronRightIcon","GroupedRows","collapsedGroups","onToggleGroup","visibleColumnCount","order","Fragment","groupRows","deriveNumericColumns","data","columns","first","ids","col","deriveAccessorConfig","applyClientFilters","filters","active","f","condition","useColumnReorder","columnOrder","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","draggingColumnId","setDraggingColumnId","handleDragStart","event","handleDragEnd","over","currentOrder","column","oldIdx","newIdx","newOrder","arrayMove","draggingHeader","h","useGroupingState","controlledGrouping","onGroupingChange","internalGrouping","setInternalGrouping","setCollapsedGroups","handleGroupingChange","next","toggleGroup","prev","HeaderCells","headerGroup","DraggableHeaderCells","headerIdx","ColGroup","useFlexSize","TableSurface","props","variant","containerClassName","density","hasExplicitSize","enableColumnReorder","enableGrouping","reorderSensors","onDragStart","onDragEnd","body","DataTableRows","DndContext","closestCenter","restrictToHorizontalAxis","SortableContext","horizontalListSortingStrategy","Table","TableHeader","TableBody","DragOverlay","categorizeSlots","toolbarSlots","filterSlots","groupSlots","paginationSlots","restSlots","child","TableToolbar","DataTablePagination","DataTable","toolbar","enableColumnVisibility","controlledColumnOrder","onColumnOrderChange","controlledColumnVisibility","onColumnVisibilityChange","controlledColumnLabels","onColumnLabelChange","enablePagination","defaultPageSize","controlledPagination","onPaginationChange","enableFiltering","controlledFilters","onFiltersChange","filterConfig","manualFiltering","className","sorting","setSorting","internalColumnVisibility","setInternalColumnVisibility","internalColumnOrder","setInternalColumnOrder","internalColumnLabels","setInternalColumnLabels","internalPagination","setInternalPagination","internalFilters","setInternalFilters","pagination","columnVisibility","handlePaginationChange","updater","handleVisibilityChange","handleFiltersChange","newFilters","resolvedFilterConfig","resolvedGroupConfig","filteredData","handleColumnOrderChange","useReactTable","getCoreRowModel","getSortedRowModel","getPaginationRowModel","setColumnLabel","columnId","label","id","l","handleColumnDragStart","handleColumnDragEnd","c"],"mappings":"gtBAmGO,SAASA,EACdC,EACAC,EACAC,EACS,CACT,MAAMC,EAAOH,EAAU,YAAA,EAAc,KAAA,EAC/BI,EAASF,EAAY,YAAA,EAAc,KAAA,EACzC,OAAQD,EAAA,CACN,IAAK,WAAiB,OAAOE,EAAK,SAASC,CAAM,EACjD,IAAK,SAAiB,OAAOD,IAASC,EACtC,IAAK,aAAiB,OAAOD,IAASC,EACtC,IAAK,cAAiB,OAAOD,EAAK,WAAWC,CAAM,EACnD,IAAK,YAAiB,OAAOD,EAAK,SAASC,CAAM,EACjD,IAAK,WAAiB,OAAOD,IAAS,GACtC,IAAK,eAAiB,OAAOA,IAAS,GACtC,QAGE,MAAO,EACT,CAEJ,CAoBA,MAAME,EAAeC,EAAM,cAAiD,IAAI,EAEhF,SAASC,GAAgC,CACvC,MAAMC,EAAMF,EAAM,WAAWD,CAAY,EACzC,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,gDAAgD,EAElE,OAAOA,CACT,CAMA,SAASC,GAAuB,CAC9B,OAAAC,EACA,SAAAC,EACA,SAAAC,EACA,QAAAC,EACA,SAAAC,CACF,EAMG,CACD,KAAM,CACJ,WAAAC,EACA,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,WAAAC,EACA,WAAAC,CAAA,EACEC,EAAAA,YAAY,CAAE,GAAIX,EAAO,OAAO,GAAI,EAElC,CAAE,aAAAY,CAAA,EAAiBf,EAAA,EACnBgB,EACJD,EAAaZ,EAAO,OAAO,EAAE,GAC5BA,EAAO,OAAO,UAAU,MAAyC,QACjE,OAAOA,EAAO,OAAO,UAAU,QAAW,SACvCA,EAAO,OAAO,UAAU,OACxBA,EAAO,OAAO,IAEdc,EAA6B,CACjC,UAAWC,GAAAA,IAAI,UAAU,SACvBP,EAAY,CAAE,GAAGA,EAAW,OAAQ,EAAG,OAAQ,GAAM,IAAA,EAEvD,WAAAC,EACA,SAAU,UAAA,EAGZ,OACEO,EAAAA,IAACC,EAAAA,UAAA,CACC,IAAKV,EACL,MAAAO,EACA,QAASX,EAAU,UAAY,OAC/B,SAAAC,EACA,UAAWc,EAAAA,GACT,8CACA,CAACR,GAAcR,IAAa,SAAW,sDACvC,CAACQ,GAAcR,IAAa,QAAU,qDACtC,CAACQ,GAAcR,IAAa,UAAY,0FACxCQ,GAAc,YAAA,EAGhB,gBAAC,MAAA,CAAI,UAAWQ,KAAG,kCAAmCf,GAAW,kBAAkB,EACjF,SAAA,CAAAa,EAAAA,IAAC,MAAA,CAAI,UAAU,iBAAkB,SAAAf,CAAA,CAAS,EAC1Ce,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,mBAAiB,GACjB,aAAY,mBAAmBH,CAAW,UAC1C,UAAU,wJACT,GAAGR,EACH,GAAGC,EAEJ,SAAAU,EAAAA,IAACG,EAAAA,iBAAA,CAAiB,UAAU,UAAA,CAAW,CAAA,CAAA,CACzC,CAAA,CACF,CAAA,CAAA,CAGN,CAcA,SAASC,EAAsB,CAC7B,OAAApB,EACA,cAAAqB,EACA,eAAAC,EACA,aAAAV,EACA,SAAAR,CACF,EAA+B,CAC7B,GAAIJ,EAAO,cAAe,OAAO,KACjC,MAAMuB,EAAUF,GAAiBrB,EAAO,OAAO,WAAA,EACzCwB,EAASxB,EAAO,OAAO,YAAA,EACvByB,EAAYH,EAAe,IAAItB,EAAO,OAAO,EAAE,EAErD,OACE0B,EAAAA,KAAC,MAAA,CACC,UAAWR,EAAAA,GACT,kCACAK,GAAW,wCACXE,GAAa,kBAAA,EAEf,QAASF,EAAUvB,EAAO,OAAO,0BAA4B,OAC7D,UAAY2B,GAAM,EACXA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MAAQJ,GAC1CvB,EAAO,OAAO,wBAAA,CAElB,EAEA,SAAA,CAAAgB,MAAC,OAAA,CAAK,UAAWE,EAAAA,GAAG,UAAWd,GAAY,UAAU,EAClD,WAAaJ,EAAO,OAAO,EAAE,GAC5B4B,aAAW5B,EAAO,OAAO,UAAU,OAAQA,EAAO,WAAA,CAAY,EAClE,EACCuB,GACCP,EAAAA,IAAC,OAAA,CACC,UAAWE,EAAAA,GACT,CAACM,GAAU,2DAAA,EAGZ,aAAW,MACVR,MAACa,EAAAA,YAAA,CAAY,UAAU,2BAA2B,EAChDL,IAAW,OACbR,EAAAA,IAACc,EAAAA,eAAc,UAAU,0BAAA,CAA2B,EAEpDd,EAAAA,IAACe,EAAAA,gBAAA,CAAgB,UAAU,gCAAA,CAAiC,CAAA,CAAA,CAEhE,CAAA,CAAA,CAIR,CAIA,MAAMC,EAAkB,IAExB,SAASC,GAAyBC,EAAsBC,EAAkB,CACxE,MAAMC,MAAc,IACdC,MAAe,IACrB,UAAWC,KAAOJ,EAAM,CACtB,MAAMK,EAAMD,EAAI,SAASH,CAAQ,EAC3BK,EAAUD,GAAO,MAAQA,IAAQ,GACjCE,EAAMD,EAAUR,EAAkB,OAAOO,CAAG,EAC5CG,EAASN,EAAQ,IAAIK,CAAG,EAC1BC,EACFA,EAAO,KAAKJ,CAAG,GAEfF,EAAQ,IAAIK,EAAK,CAACH,CAAG,CAAC,EACtBD,EAAS,IAAII,EAAKD,EAAU,KAAOD,CAAG,EAE1C,CAEA,MAAMI,EAAO,CAAC,GAAGP,EAAQ,MAAM,EACzBQ,EAAaD,EAAK,MAAOE,GAAMA,IAAMb,GAAmB,OAAOK,EAAS,IAAIQ,CAAC,GAAM,QAAQ,EACjG,OAAAF,EAAK,KAAK,CAACG,EAAGC,IACRD,IAAMd,EAAwB,EAC9Be,IAAMf,EAAwB,GAC9BY,EAAoBP,EAAS,IAAIS,CAAC,EAAgBT,EAAS,IAAIU,CAAC,EAC7DD,EAAE,cAAcC,EAAG,OAAW,CAAE,YAAa,OAAQ,QAAS,GAAM,CAC5E,EAEM,CAAE,MAAOJ,EAAM,QAAAP,CAAA,CACxB,CAEA,SAASY,GACPC,EACAd,EACAe,EACAtC,EACQ,CACR,MAAMuC,EAAcF,EAAM,UAAUd,CAAQ,EAC5C,OACEe,EAAY,KAAME,GAAMA,EAAE,WAAajB,CAAQ,GAAG,OAClDvB,EAAauB,CAAQ,IACpB,OAAOgB,GAAa,UAAU,QAAW,SACtCA,EAAY,UAAU,OACtBhB,EAER,CAQA,SAASkB,GAAe,CAAE,IAAAf,EAAK,eAAAhB,EAAgB,SAAAlB,GAAiC,CAC9E,OACEY,EAAAA,IAACsC,EAAAA,SAAA,CAAS,aAAYhB,EAAI,cAAA,EAAkB,WAAa,OACtD,SAAAA,EAAI,gBAAA,EAAkB,IAAK7C,GAC1BuB,EAAAA,IAACuC,EAAAA,UAAA,CAEC,QAASjC,EAAe,IAAI7B,EAAK,OAAO,EAAE,EAAI,UAAY,OAC1D,SAAUW,IAAaX,EAAK,OAAO,UAAU,MAAM,UAAY,IAE9D,sBAAWA,EAAK,OAAO,UAAU,KAAMA,EAAK,YAAY,CAAA,EAJpDA,EAAK,EAAA,CAMb,EACH,CAEJ,CAUA,SAAS+D,GAAe,CACtB,SAAAC,EACA,WAAAC,EACA,WAAAC,EACA,QAAAC,EACA,SAAAC,CACF,EAAwB,CACtB,OACE7C,EAAAA,IAACsC,EAAAA,UAAS,YAAU,0BAClB,eAACC,EAAAA,UAAA,CAAU,QAAAK,EAAkB,UAAU,kBACrC,SAAAlC,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,QAASmC,EACT,gBAAeF,EACf,aAAY,GAAGA,EAAa,WAAa,QAAQ,UAAUF,CAAQ,GACnE,UAAU,6NAET,SAAA,CAAAE,EACC3C,EAAAA,IAAC8C,mBAAgB,UAAU,yCAAA,CAA0C,EAErE9C,EAAAA,IAAC+C,EAAAA,iBAAA,CAAiB,UAAU,yCAAA,CAA0C,EAExE/C,EAAAA,IAAC,OAAA,CAAK,UAAU,wDACb,SAAA0C,EACH,EACA1C,EAAAA,IAAC,OAAA,CAAK,UAAU,WAAY,SAAAyC,CAAA,CAAS,CAAA,CAAA,CAAA,EAEzC,CAAA,CACF,CAEJ,CAaA,SAASO,GAAmB,CAC1B,MAAAf,EACA,eAAA3B,EACA,SAAAlB,EACA,SAAA+B,EACA,YAAAe,EACA,aAAAtC,EACA,gBAAAqD,EACA,cAAAC,CACF,EAA4B,CAC1B,MAAMC,EAAqBlB,EAAM,sBAAA,EAAwB,OACnDf,EAAOe,EAAM,kBAAA,EAAoB,KACvC,GAAIf,EAAK,SAAW,EAClB,OACElB,EAAAA,IAACsC,EAAAA,UACC,SAAAtC,EAAAA,IAACuC,EAAAA,UAAA,CAAU,QAASY,EAAoB,UAAU,yCAAyC,SAAA,aAAA,CAE3F,CAAA,CACF,EAIJ,KAAM,CAAE,MAAAC,EAAO,QAAAhC,CAAA,EAAYH,GAAkBC,EAAMC,CAAQ,EACrDuB,EAAaV,GAAkBC,EAAOd,EAAUe,EAAatC,CAAY,EAE/E,OACEI,EAAAA,IAAAqD,EAAAA,SAAA,CACG,SAAAD,EAAM,IAAK3B,GAAQ,CAClB,MAAM6B,EAAYlC,EAAQ,IAAIK,CAAG,GAAK,CAAA,EAChCkB,EAAa,CAACM,EAAgB,IAAIxB,CAAG,EAC3C,OACEf,OAAC9B,EAAM,SAAN,CACC,SAAA,CAAAoB,EAAAA,IAACwC,GAAA,CACC,SAAUf,EACV,WAAAiB,EACA,WAAAC,EACA,QAASQ,EACT,SAAU,IAAMD,EAAczB,CAAG,CAAA,CAAA,EAElCkB,GACCW,EAAU,IAAKhC,GACbtB,EAAAA,IAACqC,GAAA,CAEC,IAAAf,EACA,eAAAhB,EACA,SAAAlB,CAAA,EAHKkC,EAAI,EAAA,CAKZ,CAAA,CAAA,EAhBgB,SAASG,CAAG,EAiBjC,CAEJ,CAAC,CAAA,CACH,CAEJ,CAEA,SAAS8B,GACPC,EACAC,EACa,CACb,GAAID,EAAK,SAAW,EAAG,WAAW,IAClC,MAAME,EAAQF,EAAK,CAAC,EACdG,MAAU,IAChB,UAAWC,KAAOH,EAAS,CACzB,MAAMhC,EAAM,gBAAiBmC,EAAM,OAAOA,EAAI,WAAW,EAAI,GACzDnC,GAAO,OAAOiC,EAAMjC,CAAG,GAAM,UAAUkC,EAAI,IAAIlC,CAAG,CACxD,CACA,OAAOkC,CACT,CAEA,SAASE,EACPJ,EACwB,CACxB,OAAOA,EACJ,OAAQG,GAAQ,gBAAiBA,CAAG,EACpC,IAAKA,IAAS,CAAE,SAAU,OAAQA,EAAiC,WAAW,GAAI,CACvF,CAEA,SAASE,GAA0BN,EAAeO,EAAqC,CACrF,MAAMC,EAASD,EAAQ,OACpBE,GACCA,EAAE,UACFA,EAAE,WACDA,EAAE,MAAM,KAAA,IAAW,IAAMA,EAAE,WAAa,YAAcA,EAAE,WAAa,eAAA,EAE1E,OAAID,EAAO,SAAW,EAAUR,EACzBA,EAAK,OAAQlC,GAClB0C,EAAO,MAAOE,GAAc,CAC1B,MAAM5F,EAAY,OAAQgD,EAAgC4C,EAAU,QAAQ,GAAK,EAAE,EACnF,OAAO7F,EAAqBC,EAAW4F,EAAU,SAAUA,EAAU,KAAK,CAC5E,CAAC,CAAA,CAEL,CAEA,SAASC,GACPlC,EACAmC,EACA,CACA,MAAMC,EAAUC,EAAAA,WACdC,EAAAA,UAAUC,EAAAA,cAAe,CAAE,qBAAsB,CAAE,SAAU,CAAA,EAAK,EAClED,EAAAA,UAAUE,EAAAA,eAAgB,CAAE,iBAAkBC,8BAA6B,CAAA,EAGvE,CAACC,EAAkBC,CAAmB,EAAIhG,EAAM,SAAwB,IAAI,EAE5EiG,EAAkBjG,EAAM,YAAakG,GAA0B,CACnEF,EAAoB,OAAOE,EAAM,OAAO,EAAE,CAAC,CAC7C,EAAG,CAAA,CAAE,EAECC,EAAgBnG,EAAM,YACzBkG,GAAwB,CACvBF,EAAoB,IAAI,EACxB,KAAM,CAAE,OAAAZ,EAAQ,KAAAgB,CAAA,EAASF,EACzB,GAAI,CAACE,GAAQhB,EAAO,KAAOgB,EAAK,GAAI,OACpC,MAAMC,EACJb,EAAY,OAAS,EAAIA,EAAcnC,EAAM,kBAAA,EAAoB,IAAKiD,GAAWA,EAAO,EAAE,EACtFC,EAASF,EAAa,QAAQ,OAAOjB,EAAO,EAAE,CAAC,EAC/CoB,EAASH,EAAa,QAAQ,OAAOD,EAAK,EAAE,CAAC,EACnD,GAAIG,IAAW,IAAMC,IAAW,GAAI,OACpC,MAAMC,EAAWC,EAAAA,UAAUL,EAAcE,EAAQC,CAAM,EACvDnD,EAAM,eAAeoD,CAAQ,CAC/B,EACA,CAACjB,EAAanC,CAAK,CAAA,EAGfsD,EAAiBZ,EACnB1C,EAAM,eAAA,EAAiB,KAAMuD,GAAMA,EAAE,OAAO,KAAOb,CAAgB,EACnE,KAEJ,MAAO,CAAE,QAAAN,EAAS,eAAAkB,EAAgB,gBAAAV,EAAiB,cAAAE,CAAA,CACrD,CAEA,SAASU,GACPC,EACAC,EACA,CACA,KAAM,CAACC,EAAkBC,CAAmB,EAAIjH,EAAM,SAAwB,IAAI,EAC5E,CAACqE,EAAiB6C,CAAkB,EAAIlH,EAAM,SAAsB,IAAM,IAAI,GAAK,EAEnFuC,EAAWuE,IAAuB,OAAYE,EAAmBF,EAEjEK,EAAuBnH,EAAM,YAChCoH,GAAwB,CACvBF,EAAmB,IAAI,GAAK,GAC1BH,GAAoBE,GAAqBG,CAAI,CACjD,EACA,CAACL,CAAgB,CAAA,EAGbM,EAAcrH,EAAM,YAAa6C,GAAgB,CACrDqE,EAAoBI,GAAS,CAC3B,MAAMF,EAAO,IAAI,IAAIE,CAAI,EACzB,OAAIF,EAAK,IAAIvE,CAAG,EAAGuE,EAAK,OAAOvE,CAAG,EAC7BuE,EAAK,IAAIvE,CAAG,EACVuE,CACT,CAAC,CACH,EAAG,CAAA,CAAE,EAEL,MAAO,CAAE,SAAA7E,EAAU,gBAAA8B,EAAiB,qBAAA8C,EAAsB,YAAAE,CAAA,CAC5D,CAyBA,SAASE,GAAmB,CAC1B,MAAAlE,EACA,cAAA5B,EACA,eAAAC,EACA,aAAAV,EACA,SAAAR,CACF,EAMG,CACD,OACEY,EAAAA,IAAAqD,EAAAA,SAAA,CACG,SAAApB,EAAM,gBAAA,EAAkB,IAAKmE,GAC5BpG,EAAAA,IAACsC,EAAAA,SAAA,CACE,SAAA8D,EAAY,QAAQ,IAAKpH,GACxBgB,EAAAA,IAACC,EAAAA,UAAA,CAEC,QAASK,EAAe,IAAItB,EAAO,OAAO,EAAE,EAAI,UAAY,OAC5D,SAAUI,IAAaJ,EAAO,OAAO,UAAU,MAAM,UAAY,IAEjE,SAAAgB,EAAAA,IAACI,EAAA,CACC,OAAApB,EACA,cAAAqB,EACA,eAAAC,EACA,aAAAV,EACA,SAAUR,IAAaJ,EAAO,OAAO,UAAU,MAAM,UAAY,GAAA,CAAA,CACnE,EAVKA,EAAO,EAAA,CAYf,GAfYoH,EAAY,EAgB3B,CACD,CAAA,CACH,CAEJ,CAEA,SAASC,GAA4B,CACnC,MAAApE,EACA,cAAA5B,EACA,eAAAC,EACA,aAAAV,EACA,SAAAR,CACF,EAMG,CACD,OACEY,EAAAA,IAAAqD,EAAAA,SAAA,CACG,SAAApB,EAAM,gBAAA,EAAkB,IAAKmE,GAC5BpG,EAAAA,IAACsC,EAAAA,SAAA,CACE,SAAA8D,EAAY,QAAQ,IAAI,CAACpH,EAAQsH,IAAc,CAC9C,MAAMpH,EACJoH,IAAc,EACV,QACAA,IAAcF,EAAY,QAAQ,OAAS,EACzC,OACA,SACR,OACEpG,EAAAA,IAACjB,GAAA,CAEC,OAAAC,EACA,SAAAE,EACA,QAASoB,EAAe,IAAItB,EAAO,OAAO,EAAE,EAC5C,SAAUI,IAAaJ,EAAO,OAAO,UAAU,MAAM,UAAY,IAEjE,SAAAgB,EAAAA,IAACI,EAAA,CACC,OAAApB,EACA,cAAAqB,EACA,eAAAC,EACA,aAAAV,EACA,SAAUR,IAAaJ,EAAO,OAAO,UAAU,MAAM,UAAY,GAAA,CAAA,CACnE,EAZKA,EAAO,EAAA,CAelB,CAAC,CAAA,EAzBYoH,EAAY,EA0B3B,CACD,CAAA,CACH,CAEJ,CAEA,SAASG,EAAgB,CACvB,MAAAtE,EACA,YAAAuE,CACF,EAGG,CACD,aACG,WAAA,CACE,SAAAvE,EAAM,kBAAkB,CAAC,GAAG,QAAQ,IAAKjD,GACxCwH,EACExG,EAAAA,IAAC,OAAoB,MAAO,CAAE,MAAOhB,EAAO,OAAO,QAAA,CAAQ,CAAE,EAAnDA,EAAO,EAA+C,EAEhEgB,EAAAA,IAAC,MAAA,CAEC,MACEhB,EAAO,OAAO,UAAU,MAAQ,KAC5B,OACA,CAAE,MAAOA,EAAO,OAAO,UAAU,IAAA,CAAK,EAJvCA,EAAO,EAAA,CAMd,EAGN,CAEJ,CAEA,SAASyH,GAAoBC,EAAiC,CAC5D,KAAM,CACJ,MAAAzE,EACA,QAAAwB,EACA,QAAAkD,EACA,mBAAAC,EACA,QAAAC,EACA,gBAAAC,EACA,cAAAzG,EACA,oBAAA0G,EACA,eAAAC,EACA,SAAA7F,EACA,YAAAe,EACA,gBAAAe,EACA,cAAAC,EACA,eAAA5C,EACA,aAAAV,EACA,SAAAR,EACA,eAAA6H,EACA,eAAA1B,EACA,YAAA2B,EACA,UAAAC,CAAA,EACET,EAEEU,EACJpH,EAAAA,IAACqH,GAAA,CACC,MAAApF,EACA,QAAAwB,EACA,eAAAnD,EACA,SAAAlB,EACA,SAAU4H,EAAiB7F,EAAW,KACtC,YAAAe,EACA,aAAAtC,EACA,gBAAAqD,EACA,cAAAC,CAAA,CAAA,EAIJ,OAAI6D,EAEArG,EAAAA,KAAC4G,EAAAA,WAAA,CACC,QAASL,EACT,mBAAoBM,EAAAA,cACpB,UAAW,CAACC,GAAAA,wBAAwB,EACpC,YAAAN,EACA,UAAAC,EAEA,SAAA,CAAAnH,EAAAA,IAACyH,EAAAA,gBAAA,CACC,MAAOxF,EAAM,iBAAiB,IAAKuD,GAAMA,EAAE,OAAO,EAAE,EACpD,SAAUkC,EAAAA,8BAEV,SAAAhH,EAAAA,KAACiH,EAAAA,MAAA,CACC,eAAcd,EACd,QAAAF,EACA,mBAAAC,EACA,OAAQE,EAAkB,QAAU,OAEnC,SAAA,CAAAA,GAAmB9G,EAAAA,IAACuG,EAAA,CAAS,MAAAtE,EAAc,YAAW,GAAC,QACvD2F,EAAAA,YAAA,CACC,SAAA5H,EAAAA,IAACqG,GAAA,CACC,MAAApE,EACA,cAAA5B,EACA,eAAAC,EACA,aAAAV,EACA,SAAAR,CAAA,CAAA,EAEJ,EACAY,EAAAA,IAAC6H,EAAAA,WAAW,SAAAT,CAAA,CAAK,CAAA,CAAA,CAAA,CACnB,CAAA,EAEFpH,EAAAA,IAAC8H,EAAAA,YAAA,CAAY,cAAe,KACzB,SAAAvC,GACCvF,EAAAA,IAAC,MAAA,CAAI,UAAU,mFACZ,SAAAJ,EAAa2F,EAAe,OAAO,EAAE,IACnC,OAAOA,EAAe,OAAO,UAAU,QAAW,SAC/CA,EAAe,OAAO,UAAU,OAChCA,EAAe,OAAO,GAAA,CAC9B,CAAA,CAEJ,CAAA,CAAA,CAAA,EAMJ7E,EAAAA,KAACiH,EAAAA,MAAA,CACC,eAAcd,EACd,QAAAF,EACA,mBAAAC,EACA,OAAQE,EAAkB,QAAU,OAEnC,SAAA,CAAAA,GAAmB9G,EAAAA,IAACuG,EAAA,CAAS,MAAAtE,EAAc,YAAa,GAAO,QAC/D2F,EAAAA,YAAA,CACC,SAAA5H,EAAAA,IAACmG,GAAA,CACC,MAAAlE,EACA,cAAA5B,EACA,eAAAC,EACA,aAAAV,EACA,SAAAR,CAAA,CAAA,EAEJ,EACAY,EAAAA,IAAC6H,EAAAA,WAAW,SAAAT,CAAA,CAAK,CAAA,CAAA,CAAA,CAGvB,CAEA,SAASC,GAAqB,CAC5B,MAAApF,EACA,QAAAwB,EACA,eAAAnD,EACA,SAAAlB,EACA,SAAA+B,EACA,YAAAe,EACA,aAAAtC,EACA,gBAAAqD,EACA,cAAAC,CACF,EAUG,CACD,OAAI/B,EAEAnB,EAAAA,IAACgD,GAAA,CACC,MAAAf,EACA,eAAA3B,EACA,SAAAlB,EACA,SAAA+B,EACA,YAAAe,EACA,aAAAtC,EACA,gBAAAqD,EACA,cAAAC,CAAA,CAAA,EAKFjB,EAAM,YAAA,EAAc,KAAK,SAAW,EAEpCjC,EAAAA,IAACsC,EAAAA,SAAA,CACC,SAAAtC,EAAAA,IAACuC,EAAAA,UAAA,CAAU,QAASkB,EAAQ,OAAQ,UAAU,yCAAyC,SAAA,aAAA,CAEvF,EACF,EAIGxB,EAAM,cAAc,KAAK,IAAKX,SAClCgB,EAAAA,SAAA,CAAsB,aAAYhB,EAAI,cAAA,EAAkB,WAAa,OACnE,SAAAA,EAAI,kBAAkB,IAAK7C,GAC1BuB,EAAAA,IAACuC,EAAAA,UAAA,CAEC,QAASjC,EAAe,IAAI7B,EAAK,OAAO,EAAE,EAAI,UAAY,OAC1D,SAAUW,IAAaX,EAAK,OAAO,UAAU,MAAM,UAAY,IAE9D,sBAAWA,EAAK,OAAO,UAAU,KAAMA,EAAK,YAAY,CAAA,EAJpDA,EAAK,EAAA,CAMb,CAAA,EATY6C,EAAI,EAUnB,CACD,CACH,CAMA,SAASyG,GAAgB9I,EAA2B,CAClD,MAAM+I,EAAkC,CAAA,EAClCC,EAAiC,CAAA,EACjCC,EAAgC,CAAA,EAChCC,EAAqC,CAAA,EACrCC,EAA+B,CAAA,EACrCxJ,OAAAA,EAAM,SAAS,QAAQK,EAAWoJ,GAAU,CACtCzJ,EAAM,eAAeyJ,CAAK,GAAKA,EAAM,OAASC,EAChDN,EAAa,KAAKK,CAAK,EAEvBzJ,EAAM,eAAeyJ,CAAK,GACzBA,EAAM,KAA6B,cAAgB,kBAEpDJ,EAAY,KAAKI,CAAK,EAEtBzJ,EAAM,eAAeyJ,CAAK,GACzBA,EAAM,KAA6B,cAAgB,iBAEpDH,EAAW,KAAKG,CAAK,EACZzJ,EAAM,eAAeyJ,CAAK,GAAKA,EAAM,OAASE,uBACvDJ,EAAgB,KAAKE,CAAK,EAE1BD,EAAU,KAAKC,CAAK,CAExB,CAAC,EACM,CAAE,aAAAL,EAAc,YAAAC,EAAa,WAAAC,EAAY,gBAAAC,EAAiB,UAAAC,CAAA,CACnE,CA6CA,SAASI,GAAyB,CAChC,QAAA/E,EACA,KAAAD,EACA,QAAAiF,EACA,cAAApI,EAAgB,GAChB,uBAAAqI,EAAyB,GACzB,SAAAzJ,EACA,YAAa0J,EACb,oBAAAC,EACA,iBAAkBC,EAClB,yBAAAC,EACA,aAAcC,EACd,oBAAAC,EACA,iBAAAC,EAAmB,GACnB,gBAAAC,EAAkB,GAClB,WAAYC,EACZ,mBAAAC,EACA,oBAAArC,EAAsB,GACtB,gBAAAsC,EAAkB,GAClB,QAASC,EACT,gBAAAC,EACA,aAAAC,EACA,gBAAAC,EAAkB,GAClB,eAAAzC,EAAiB,GACjB,SAAUtB,EACV,iBAAAC,EACA,YAAAzD,EACA,QAAA2E,EAAU,UACV,UAAA6C,EACA,QAAA/C,EAAU,OACV,mBAAAC,GACA,SAAAxH,GAAW,EACb,EAAkC,CAChC,KAAM,CAACuK,GAASC,EAAU,EAAIhL,EAAM,SAAuB,CAAA,CAAE,EACvD,CAACiL,GAA0BC,EAA2B,EAC1DlL,EAAM,SAA0B,CAAA,CAAE,EAC9B,CAACmL,GAAqBC,EAAsB,EAChDpL,EAAM,SAA2B,CAAA,CAAE,EAC/B,CAACqL,GAAsBC,EAAuB,EAAItL,EAAM,SAE5D,CAAA,CAAE,EACE,CAACuL,GAAoBC,EAAqB,EAC9CxL,EAAM,SAA0B,CAC9B,UAAW,EACX,SAAUsK,CAAA,CACX,EACG,CAACmB,GAAiBC,EAAkB,EAAI1L,EAAM,SAA4B,CAAA,CAAE,EAC5E,CAAE,SAAAuC,EAAU,gBAAA8B,GAAiB,qBAAA8C,GAAsB,YAAAE,IACvDR,GAAiBC,EAAoBC,CAAgB,EAEjD4E,GAAapB,GAAwBgB,GACrCpG,EAAUuF,GAAqBe,GAE/BG,EACJ3B,GAA8BgB,GAC1BzF,EAAcuE,GAAyBoB,GACvCnK,EAAemJ,GAA0BkB,GAEzCQ,GAAyB7L,EAAM,QAAQ,IAAM,CACjD,GAAKqK,EACL,OAAIG,EACMsB,GAA4E,CAClF,MAAM1E,EAAO,OAAO0E,GAAY,WAAaA,EAAQvB,CAAqB,EAAIuB,EAC9EtB,EAAmBpD,CAAI,CACzB,EAEKoE,EACT,EAAG,CAACnB,EAAkBG,EAAoBD,CAAoB,CAAC,EAEzDwB,GAAyB/L,EAAM,QAAQ,IAAM,CACjD,GAAK8J,EACL,OAAQgC,GAA4E,CAClF,MAAM1E,EAAO,OAAO0E,GAAY,WAAaA,EAAQF,CAAgB,EAAIE,GACvE5B,GAA4BgB,IAA6B9D,CAAI,CACjE,CACF,EAAG,CAAC0C,EAAwB8B,EAAkB1B,CAAwB,CAAC,EAEjE8B,GAAsBhM,EAAM,YAC/BiM,GAAkC,EAC/BtB,GAAmBe,IAAoBO,CAAU,CACrD,EACA,CAACtB,CAAe,CAAA,EAGZuB,GAA6ClM,EAAM,QACvD,IAAM4K,GAAgB3F,EAAqBJ,CAAO,EAClD,CAAC+F,EAAc/F,CAAO,CAAA,EAGlBsH,EAA2CnM,EAAM,QACrD,IAAMsD,GAAe2B,EAAqBJ,CAAO,EACjD,CAACvB,EAAauB,CAAO,CAAA,EAGjBuH,GAAepM,EAAM,QACzB,IAAgB,CAACyK,GAAmBI,EAAkBjG,EAAOM,GAAmBN,EAAMO,CAAO,EAC7F,CAACP,EAAMO,EAASsF,EAAiBI,CAAe,CAAA,EAG5CwB,GAA0BrM,EAAM,YACnC8L,GAA+E,CAC9E,MAAM1E,EAAO,OAAO0E,GAAY,WAAaA,EAAQtG,CAAW,EAAIsG,GAClE9B,GAAuBoB,IAAwBhE,CAAI,CACvD,EACA,CAAC5B,EAAawE,CAAmB,CAAA,EAG7B3G,EAAQiJ,EAAAA,cAAc,CAC1B,KAAMF,GACN,QAAAvH,EACA,MAAO,CACL,QAASpD,EAAgBsJ,GAAU,OACnC,iBAAkBjB,EAAyB8B,EAAmB,OAC9D,YAAapG,EAAY,OAAS,EAAIA,EAAc,OACpD,GAAI6E,EAAmB,CAAE,WAAAsB,IAAe,CAAA,CAAC,EAE3C,gBAAiBlK,EAAgBuJ,GAAa,OAC9C,mBAAoBa,GACpB,yBAA0BE,GAC1B,oBAAqBM,GACrB,gBAAiBE,EAAAA,gBAAA,EACjB,kBAAmB9K,GAAiB2G,EAAiBoE,EAAAA,kBAAA,EAAsB,OAC3E,sBAAuBnC,EAAmBoC,EAAAA,wBAA0B,MAAA,CACrE,EAEKC,GAAiB1M,EAAM,YAC3B,CAAC2M,EAAkBC,IAAkB,EACjCxC,IAAwB,CAACyC,GAAYC,KAAcxB,GAAyBhE,KAAU,CAAE,GAAGA,GAAM,CAACuF,EAAE,EAAGC,IAAI,IAAIH,EAAUC,CAAK,CAClI,EACA,CAACxC,CAAmB,CAAA,EAGhB,CACJ,QAAS/B,GACT,eAAA1B,GACA,gBAAiBoG,GACjB,cAAeC,EAAA,EACbzH,GAAiBlC,EAAOmC,CAAW,EAEjC9D,GAAiB1B,EAAM,QAC3B,IAAM2E,GAAqBC,EAAMC,CAAO,EACxC,CAACD,EAAMC,CAAO,CAAA,EAGVqD,GAAkBrD,EAAQ,KAAMoI,GAAMA,EAAE,MAAQ,IAAI,EAIpD/M,GAAM,CACV,MAAAmD,EACA,aAAArC,EACA,eAAA0L,GACA,QAAAvH,EACA,WAAY6G,GACZ,aAAcE,GACd,gBAAAzB,EACA,SAAAlI,EACA,YAAa4E,GACb,YAAagF,EACb,eAAA/D,CAAA,EAGI,CAAE,aAAAgB,GAAc,YAAAC,GAAa,WAAAC,GAAY,gBAAAC,GAAiB,UAAAC,EAAA,EAAcL,GAAgB9I,CAAQ,EAEtG,OACEe,EAAAA,IAACrB,EAAa,SAAb,CAAsB,MAAOG,GAC5B,SAAA4B,EAAAA,KAAC,MAAA,CAAI,YAAU,aAAa,UAAWR,EAAAA,GAAG,mBAAoBwJ,CAAS,EACpE,SAAA,CAAAjB,EACAT,GACAC,GACAC,GACDlI,EAAAA,IAACyG,GAAA,CACC,MAAAxE,EACA,QAAAwB,EACA,QAAAkD,EACA,mBAAAC,GACA,QAAAC,EACA,gBAAAC,GACA,cAAAzG,EACA,oBAAA0G,EACA,eAAAC,EACA,SAAA7F,EACA,YAAa4J,EACb,gBAAA9H,GACA,cAAegD,GACf,eAAA3F,GACA,aAAAV,EACA,SAAAR,GACA,eAAA6H,GACA,eAAA1B,GACA,YAAaoG,GACb,UAAWC,EAAA,CAAA,EAEZzD,GACAC,EAAA,CAAA,CACH,CAAA,CACF,CAEJ,CAMA,SAASE,EAAa,CACpB,UAAAoB,EACA,SAAAzK,EACA,GAAGyH,CACL,EAAgC,CAC9B,OACE1G,EAAAA,IAAC,MAAA,CACC,YAAU,gBACV,UAAWE,EAAAA,GAAG,sCAAuCwJ,CAAS,EAC7D,GAAGhD,EAEH,SAAAzH,CAAA,CAAA,CAGP"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ColumnDef, ColumnOrderState, PaginationState, RowData, Table as TanStackTable, VisibilityState } from '@tanstack/react-table';
|
|
2
|
+
import { Table } from '../table';
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
declare module "@tanstack/react-table" {
|
|
5
|
+
interface ColumnMeta<TData extends RowData, TValue> {
|
|
6
|
+
truncate?: boolean;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
type FilterOperator = "contains" | "equals" | "not_equals" | "starts_with" | "ends_with" | "is_empty" | "is_not_empty";
|
|
10
|
+
interface FilterCondition {
|
|
11
|
+
/** Stable unique key for React reconciliation. */
|
|
12
|
+
id: string;
|
|
13
|
+
columnId: string;
|
|
14
|
+
operator: FilterOperator;
|
|
15
|
+
value: string;
|
|
16
|
+
}
|
|
17
|
+
interface FilterColumnConfig {
|
|
18
|
+
columnId: string;
|
|
19
|
+
label?: string;
|
|
20
|
+
operators?: FilterOperator[];
|
|
21
|
+
}
|
|
22
|
+
interface GroupColumnConfig {
|
|
23
|
+
columnId: string;
|
|
24
|
+
label?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function applyFilterCondition(cellValue: string, operator: FilterOperator, filterValue: string): boolean;
|
|
27
|
+
interface TableContextValue<TData> {
|
|
28
|
+
table: TanStackTable<TData>;
|
|
29
|
+
columnLabels: Record<string, string>;
|
|
30
|
+
setColumnLabel: (columnId: string, label: string) => void;
|
|
31
|
+
filters: FilterCondition[];
|
|
32
|
+
setFilters: (filters: FilterCondition[]) => void;
|
|
33
|
+
filterConfig: FilterColumnConfig[];
|
|
34
|
+
enableFiltering: boolean;
|
|
35
|
+
grouping: string | null;
|
|
36
|
+
setGrouping: (columnId: string | null) => void;
|
|
37
|
+
groupConfig: GroupColumnConfig[];
|
|
38
|
+
enableGrouping: boolean;
|
|
39
|
+
}
|
|
40
|
+
declare function useDataTable<TData = unknown>(): TableContextValue<TData>;
|
|
41
|
+
interface DataTableProps<TData, TValue> {
|
|
42
|
+
columns: ColumnDef<TData, TValue>[];
|
|
43
|
+
data: TData[];
|
|
44
|
+
/** @deprecated Use `<TableToolbar>` as a child instead */
|
|
45
|
+
toolbar?: React.ReactNode;
|
|
46
|
+
enableSorting?: boolean;
|
|
47
|
+
enableColumnVisibility?: boolean;
|
|
48
|
+
columnOrder?: ColumnOrderState;
|
|
49
|
+
onColumnOrderChange?: (order: ColumnOrderState) => void;
|
|
50
|
+
columnVisibility?: VisibilityState;
|
|
51
|
+
onColumnVisibilityChange?: (vis: VisibilityState) => void;
|
|
52
|
+
columnLabels?: Record<string, string>;
|
|
53
|
+
onColumnLabelChange?: (columnId: string, label: string) => void;
|
|
54
|
+
enablePagination?: boolean;
|
|
55
|
+
defaultPageSize?: number;
|
|
56
|
+
pagination?: PaginationState;
|
|
57
|
+
onPaginationChange?: (pagination: PaginationState) => void;
|
|
58
|
+
enableColumnReorder?: boolean;
|
|
59
|
+
enableFiltering?: boolean;
|
|
60
|
+
filters?: FilterCondition[];
|
|
61
|
+
onFiltersChange?: (filters: FilterCondition[]) => void;
|
|
62
|
+
filterConfig?: FilterColumnConfig[];
|
|
63
|
+
/** When true, filtering is handled externally — onFiltersChange fires but rows are not filtered client-side. */
|
|
64
|
+
manualFiltering?: boolean;
|
|
65
|
+
enableGrouping?: boolean;
|
|
66
|
+
/** ID of the column currently grouped by, or null for no grouping. */
|
|
67
|
+
grouping?: string | null;
|
|
68
|
+
onGroupingChange?: (grouping: string | null) => void;
|
|
69
|
+
groupConfig?: GroupColumnConfig[];
|
|
70
|
+
density?: "compact" | "default" | "relaxed";
|
|
71
|
+
children?: React.ReactNode;
|
|
72
|
+
className?: string;
|
|
73
|
+
/** Variant passed to the base Table component */
|
|
74
|
+
variant?: React.ComponentProps<typeof Table>["variant"];
|
|
75
|
+
/** className passed to the base Table's container div */
|
|
76
|
+
containerClassName?: React.ComponentProps<typeof Table>["containerClassName"];
|
|
77
|
+
truncate?: boolean;
|
|
78
|
+
}
|
|
79
|
+
declare function DataTable<TData, TValue>({ columns, data, toolbar, enableSorting, enableColumnVisibility, children, columnOrder: controlledColumnOrder, onColumnOrderChange, columnVisibility: controlledColumnVisibility, onColumnVisibilityChange, columnLabels: controlledColumnLabels, onColumnLabelChange, enablePagination, defaultPageSize, pagination: controlledPagination, onPaginationChange, enableColumnReorder, enableFiltering, filters: controlledFilters, onFiltersChange, filterConfig, manualFiltering, enableGrouping, grouping: controlledGrouping, onGroupingChange, groupConfig, density, className, variant, containerClassName, truncate, }: DataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
|
|
80
|
+
declare function TableToolbar({ className, children, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
81
|
+
export { DataTable, TableToolbar, useDataTable };
|
|
82
|
+
export type { DataTableProps, FilterCondition, FilterOperator, FilterColumnConfig, GroupColumnConfig };
|