@langchain/macaw-components 1.0.0-beta.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/LICENSE +21 -0
- package/README.md +27 -0
- package/dist/_chunks/ErrorState-CmPX01HV.js +13361 -0
- package/dist/_chunks/ErrorState-CmPX01HV.js.map +1 -0
- package/dist/_chunks/LoadingIndicator-DgtU9aqD.js +80 -0
- package/dist/_chunks/LoadingIndicator-DgtU9aqD.js.map +1 -0
- package/dist/base.css +305 -0
- package/dist/catalog.json +1675 -0
- package/dist/components/Avatar/Avatar.d.ts +28 -0
- package/dist/components/Avatar/Avatar.js +47 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Avatar/index.js +2 -0
- package/dist/components/Badge/Badge.d.ts +25 -0
- package/dist/components/Badge/Badge.js +82 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/Badge/index.js +2 -0
- package/dist/components/Banner/Banner.d.ts +15 -0
- package/dist/components/Banner/Banner.js +102 -0
- package/dist/components/Banner/Banner.js.map +1 -0
- package/dist/components/Banner/index.d.ts +2 -0
- package/dist/components/Banner/index.js +2 -0
- package/dist/components/BarChart/AnimatedBar.d.ts +20 -0
- package/dist/components/BarChart/AnimatedBar.js +65 -0
- package/dist/components/BarChart/AnimatedBar.js.map +1 -0
- package/dist/components/BarChart/BarChart.d.ts +25 -0
- package/dist/components/BarChart/BarChart.js +248 -0
- package/dist/components/BarChart/BarChart.js.map +1 -0
- package/dist/components/BarChart/BarChart.types.d.ts +239 -0
- package/dist/components/BarChart/BarChart.types.js +0 -0
- package/dist/components/BarChart/BarChart.utils.d.ts +51 -0
- package/dist/components/BarChart/BarChart.utils.js +215 -0
- package/dist/components/BarChart/BarChart.utils.js.map +1 -0
- package/dist/components/BarChart/BarChartAxes.d.ts +22 -0
- package/dist/components/BarChart/BarChartAxes.js +144 -0
- package/dist/components/BarChart/BarChartAxes.js.map +1 -0
- package/dist/components/BarChart/BarChartGuides.d.ts +22 -0
- package/dist/components/BarChart/BarChartGuides.js +83 -0
- package/dist/components/BarChart/BarChartGuides.js.map +1 -0
- package/dist/components/BarChart/BarChartPlot.d.ts +40 -0
- package/dist/components/BarChart/BarChartPlot.js +262 -0
- package/dist/components/BarChart/BarChartPlot.js.map +1 -0
- package/dist/components/BarChart/constants.d.ts +21 -0
- package/dist/components/BarChart/constants.js +26 -0
- package/dist/components/BarChart/constants.js.map +1 -0
- package/dist/components/BarChart/index.d.ts +3 -0
- package/dist/components/BarChart/index.js +3 -0
- package/dist/components/Button/Button.d.ts +36 -0
- package/dist/components/Button/Button.js +99 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/constants.d.ts +26 -0
- package/dist/components/Button/constants.js +31 -0
- package/dist/components/Button/constants.js.map +1 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Button/index.js +2 -0
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +30 -0
- package/dist/components/ButtonGroup/ButtonGroup.js +26 -0
- package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/components/ButtonGroup/index.d.ts +2 -0
- package/dist/components/ButtonGroup/index.js +2 -0
- package/dist/components/Card/Card.d.ts +10 -0
- package/dist/components/Card/Card.js +23 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/index.d.ts +2 -0
- package/dist/components/Card/index.js +2 -0
- package/dist/components/ChartCard/ChartCard.d.ts +53 -0
- package/dist/components/ChartCard/ChartCard.js +172 -0
- package/dist/components/ChartCard/ChartCard.js.map +1 -0
- package/dist/components/ChartCard/ChartCardSkeleton.d.ts +7 -0
- package/dist/components/ChartCard/ChartCardSkeleton.js +61 -0
- package/dist/components/ChartCard/ChartCardSkeleton.js.map +1 -0
- package/dist/components/ChartCard/index.d.ts +4 -0
- package/dist/components/ChartCard/index.js +3 -0
- package/dist/components/ChartLegend/ChartLegend.d.ts +19 -0
- package/dist/components/ChartLegend/ChartLegend.js +195 -0
- package/dist/components/ChartLegend/ChartLegend.js.map +1 -0
- package/dist/components/ChartLegend/ChartLegendItemRenderer.d.ts +14 -0
- package/dist/components/ChartLegend/ChartLegendItemRenderer.js +90 -0
- package/dist/components/ChartLegend/ChartLegendItemRenderer.js.map +1 -0
- package/dist/components/ChartLegend/index.d.ts +3 -0
- package/dist/components/ChartLegend/index.js +3 -0
- package/dist/components/ChartLegend/useChartLegendActiveItem.d.ts +7 -0
- package/dist/components/ChartLegend/useChartLegendActiveItem.js +35 -0
- package/dist/components/ChartLegend/useChartLegendActiveItem.js.map +1 -0
- package/dist/components/ChartLegend/utils.d.ts +20 -0
- package/dist/components/ChartLegend/utils.js +33 -0
- package/dist/components/ChartLegend/utils.js.map +1 -0
- package/dist/components/ChartTooltip/ChartTooltip.d.ts +23 -0
- package/dist/components/ChartTooltip/ChartTooltip.js +83 -0
- package/dist/components/ChartTooltip/ChartTooltip.js.map +1 -0
- package/dist/components/ChartTooltip/index.d.ts +2 -0
- package/dist/components/ChartTooltip/index.js +2 -0
- package/dist/components/Checkbox/Checkbox.d.ts +58 -0
- package/dist/components/Checkbox/Checkbox.js +50 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/constants.d.ts +28 -0
- package/dist/components/Checkbox/constants.js +57 -0
- package/dist/components/Checkbox/constants.js.map +1 -0
- package/dist/components/Checkbox/getCheckedState.d.ts +6 -0
- package/dist/components/Checkbox/getCheckedState.js +14 -0
- package/dist/components/Checkbox/getCheckedState.js.map +1 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.js +3 -0
- package/dist/components/CircularProgress/CircularProgress.d.ts +54 -0
- package/dist/components/CircularProgress/CircularProgress.js +85 -0
- package/dist/components/CircularProgress/CircularProgress.js.map +1 -0
- package/dist/components/CircularProgress/index.d.ts +2 -0
- package/dist/components/CircularProgress/index.js +2 -0
- package/dist/components/Code/Code.utils.d.ts +24 -0
- package/dist/components/Code/Code.utils.js +160 -0
- package/dist/components/Code/Code.utils.js.map +1 -0
- package/dist/components/Code/CodeLite.d.ts +19 -0
- package/dist/components/Code/CodeLite.js +146 -0
- package/dist/components/Code/CodeLite.js.map +1 -0
- package/dist/components/Code/CodeLite.utils.d.ts +24 -0
- package/dist/components/Code/CodeLite.utils.js +273 -0
- package/dist/components/Code/CodeLite.utils.js.map +1 -0
- package/dist/components/Code/ImageReplacerExtension.d.ts +9 -0
- package/dist/components/Code/ImageReplacerExtension.js +227 -0
- package/dist/components/Code/ImageReplacerExtension.js.map +1 -0
- package/dist/components/Code/JsonHighlighterExtension.d.ts +4 -0
- package/dist/components/Code/JsonHighlighterExtension.js +172 -0
- package/dist/components/Code/JsonHighlighterExtension.js.map +1 -0
- package/dist/components/Code/constants.d.ts +6 -0
- package/dist/components/Code/constants.js +11 -0
- package/dist/components/Code/constants.js.map +1 -0
- package/dist/components/Code/index.d.ts +30 -0
- package/dist/components/Code/index.js +140 -0
- package/dist/components/Code/index.js.map +1 -0
- package/dist/components/Code/languages/json.d.ts +1 -0
- package/dist/components/Code/languages/json.js +7 -0
- package/dist/components/Code/languages/json.js.map +1 -0
- package/dist/components/Code/languages/languages.d.ts +7 -0
- package/dist/components/Code/languages/languages.js +12 -0
- package/dist/components/Code/languages/languages.js.map +1 -0
- package/dist/components/Code/languages/python.d.ts +1 -0
- package/dist/components/Code/languages/python.js +7 -0
- package/dist/components/Code/languages/python.js.map +1 -0
- package/dist/components/Code/languages/shell.d.ts +7 -0
- package/dist/components/Code/languages/shell.js +241 -0
- package/dist/components/Code/languages/shell.js.map +1 -0
- package/dist/components/Code/languages/typescript.d.ts +1 -0
- package/dist/components/Code/languages/typescript.js +7 -0
- package/dist/components/Code/languages/typescript.js.map +1 -0
- package/dist/components/Code/languages/yaml.d.ts +2 -0
- package/dist/components/Code/languages/yaml.js +44 -0
- package/dist/components/Code/languages/yaml.js.map +1 -0
- package/dist/components/Code/types.d.ts +8 -0
- package/dist/components/Code/types.js +0 -0
- package/dist/components/Code/utils.d.ts +4 -0
- package/dist/components/Code/utils.js +27 -0
- package/dist/components/Code/utils.js.map +1 -0
- package/dist/components/Command/Command.d.ts +78 -0
- package/dist/components/Command/Command.js +78 -0
- package/dist/components/Command/Command.js.map +1 -0
- package/dist/components/Command/CommandMenu.d.ts +65 -0
- package/dist/components/Command/CommandMenu.js +101 -0
- package/dist/components/Command/CommandMenu.js.map +1 -0
- package/dist/components/Command/index.d.ts +4 -0
- package/dist/components/Command/index.js +3 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts +9 -0
- package/dist/components/ContextMenu/ContextMenu.js +43 -0
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
- package/dist/components/ContextMenu/index.d.ts +1 -0
- package/dist/components/ContextMenu/index.js +2 -0
- package/dist/components/CopyButton/CopyButton.d.ts +24 -0
- package/dist/components/CopyButton/CopyButton.js +121 -0
- package/dist/components/CopyButton/CopyButton.js.map +1 -0
- package/dist/components/CopyButton/copyToClipboard.d.ts +1 -0
- package/dist/components/CopyButton/copyToClipboard.js +29 -0
- package/dist/components/CopyButton/copyToClipboard.js.map +1 -0
- package/dist/components/CopyButton/index.d.ts +4 -0
- package/dist/components/CopyButton/index.js +4 -0
- package/dist/components/CopyButton/useCopy.d.ts +10 -0
- package/dist/components/CopyButton/useCopy.js +46 -0
- package/dist/components/CopyButton/useCopy.js.map +1 -0
- package/dist/components/Dialog/index.d.ts +49 -0
- package/dist/components/Dialog/index.js +130 -0
- package/dist/components/Dialog/index.js.map +1 -0
- package/dist/components/Divider/Divider.d.ts +9 -0
- package/dist/components/Divider/Divider.js +27 -0
- package/dist/components/Divider/Divider.js.map +1 -0
- package/dist/components/Divider/index.d.ts +2 -0
- package/dist/components/Divider/index.js +2 -0
- package/dist/components/DonutChart/DonutChart.d.ts +101 -0
- package/dist/components/DonutChart/DonutChart.js +197 -0
- package/dist/components/DonutChart/DonutChart.js.map +1 -0
- package/dist/components/DonutChart/DonutChart.utils.d.ts +38 -0
- package/dist/components/DonutChart/DonutChart.utils.js +93 -0
- package/dist/components/DonutChart/DonutChart.utils.js.map +1 -0
- package/dist/components/DonutChart/constants.d.ts +7 -0
- package/dist/components/DonutChart/constants.js +12 -0
- package/dist/components/DonutChart/constants.js.map +1 -0
- package/dist/components/DonutChart/index.d.ts +4 -0
- package/dist/components/DonutChart/index.js +4 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +24 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +149 -0
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/dist/components/DropdownMenu/index.d.ts +1 -0
- package/dist/components/DropdownMenu/index.js +2 -0
- package/dist/components/EmptyState/EmptyState.d.ts +26 -0
- package/dist/components/EmptyState/EmptyState.js +85 -0
- package/dist/components/EmptyState/EmptyState.js.map +1 -0
- package/dist/components/EmptyState/index.d.ts +2 -0
- package/dist/components/EmptyState/index.js +2 -0
- package/dist/components/ErrorBoundary.d.ts +35 -0
- package/dist/components/ErrorBoundary.js +41 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/ErrorMessage/ErrorMessage.d.ts +17 -0
- package/dist/components/ErrorMessage/ErrorMessage.js +146 -0
- package/dist/components/ErrorMessage/ErrorMessage.js.map +1 -0
- package/dist/components/ErrorMessage/index.d.ts +2 -0
- package/dist/components/ErrorMessage/index.js +2 -0
- package/dist/components/ErrorState/ErrorState.d.ts +23 -0
- package/dist/components/ErrorState/ErrorState.js +2 -0
- package/dist/components/ErrorState/index.d.ts +2 -0
- package/dist/components/ErrorState/index.js +2 -0
- package/dist/components/GroupedTabs/GroupedTabs.d.ts +31 -0
- package/dist/components/GroupedTabs/GroupedTabs.js +92 -0
- package/dist/components/GroupedTabs/GroupedTabs.js.map +1 -0
- package/dist/components/GroupedTabs/index.d.ts +2 -0
- package/dist/components/GroupedTabs/index.js +2 -0
- package/dist/components/HoverCard.d.ts +4 -0
- package/dist/components/HoverCard.js +34 -0
- package/dist/components/HoverCard.js.map +1 -0
- package/dist/components/Icon/Icon.d.ts +25 -0
- package/dist/components/Icon/Icon.js +57 -0
- package/dist/components/Icon/Icon.js.map +1 -0
- package/dist/components/Icon/index.d.ts +2 -0
- package/dist/components/Icon/index.js +2 -0
- package/dist/components/IconButton/IconButton.d.ts +35 -0
- package/dist/components/IconButton/IconButton.js +73 -0
- package/dist/components/IconButton/IconButton.js.map +1 -0
- package/dist/components/IconButton/index.d.ts +2 -0
- package/dist/components/IconButton/index.js +2 -0
- package/dist/components/Input/Input.d.ts +72 -0
- package/dist/components/Input/Input.js +221 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Input/index.js +2 -0
- package/dist/components/Input/inputStyles.d.ts +28 -0
- package/dist/components/Input/inputStyles.js +45 -0
- package/dist/components/Input/inputStyles.js.map +1 -0
- package/dist/components/Kbd/Kbd.d.ts +15 -0
- package/dist/components/Kbd/Kbd.js +30 -0
- package/dist/components/Kbd/Kbd.js.map +1 -0
- package/dist/components/Kbd/index.d.ts +2 -0
- package/dist/components/Kbd/index.js +2 -0
- package/dist/components/LineChart/LineChart.d.ts +8 -0
- package/dist/components/LineChart/LineChart.js +194 -0
- package/dist/components/LineChart/LineChart.js.map +1 -0
- package/dist/components/LineChart/LineChart.types.d.ts +138 -0
- package/dist/components/LineChart/LineChart.types.js +0 -0
- package/dist/components/LineChart/LineChart.utils.d.ts +29 -0
- package/dist/components/LineChart/LineChart.utils.js +123 -0
- package/dist/components/LineChart/LineChart.utils.js.map +1 -0
- package/dist/components/LineChart/LineChartPlot.d.ts +43 -0
- package/dist/components/LineChart/LineChartPlot.js +306 -0
- package/dist/components/LineChart/LineChartPlot.js.map +1 -0
- package/dist/components/LineChart/constants.d.ts +3 -0
- package/dist/components/LineChart/constants.js +8 -0
- package/dist/components/LineChart/constants.js.map +1 -0
- package/dist/components/LineChart/index.d.ts +2 -0
- package/dist/components/LineChart/index.js +2 -0
- package/dist/components/LinearProgress/LinearProgress.d.ts +16 -0
- package/dist/components/LinearProgress/LinearProgress.js +42 -0
- package/dist/components/LinearProgress/LinearProgress.js.map +1 -0
- package/dist/components/LinearProgress/index.d.ts +2 -0
- package/dist/components/LinearProgress/index.js +2 -0
- package/dist/components/Link/Link.d.ts +30 -0
- package/dist/components/Link/Link.js +51 -0
- package/dist/components/Link/Link.js.map +1 -0
- package/dist/components/Link/index.d.ts +2 -0
- package/dist/components/Link/index.js +2 -0
- package/dist/components/Logo/index.d.ts +17 -0
- package/dist/components/Logo/index.js +705 -0
- package/dist/components/Logo/index.js.map +1 -0
- package/dist/components/MetricChart/MetricChart.d.ts +9 -0
- package/dist/components/MetricChart/MetricChart.js +42 -0
- package/dist/components/MetricChart/MetricChart.js.map +1 -0
- package/dist/components/MetricChart/formatters.d.ts +18 -0
- package/dist/components/MetricChart/formatters.js +34 -0
- package/dist/components/MetricChart/formatters.js.map +1 -0
- package/dist/components/MetricChart/index.d.ts +4 -0
- package/dist/components/MetricChart/index.js +3 -0
- package/dist/components/Pane/Pane.d.ts +29 -0
- package/dist/components/Pane/Pane.js +171 -0
- package/dist/components/Pane/Pane.js.map +1 -0
- package/dist/components/Pane/Pane.utils.d.ts +10 -0
- package/dist/components/Pane/Pane.utils.js +7 -0
- package/dist/components/Pane/Pane.utils.js.map +1 -0
- package/dist/components/Pane/index.d.ts +3 -0
- package/dist/components/Pane/index.js +3 -0
- package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.d.ts +9 -0
- package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.js +76 -0
- package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.js.map +1 -0
- package/dist/components/PlainTextEditor/index.d.ts +18 -0
- package/dist/components/PlainTextEditor/index.js +71 -0
- package/dist/components/PlainTextEditor/index.js.map +1 -0
- package/dist/components/Popover/Popover.d.ts +13 -0
- package/dist/components/Popover/Popover.js +48 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/constants.d.ts +1 -0
- package/dist/components/Popover/constants.js +6 -0
- package/dist/components/Popover/constants.js.map +1 -0
- package/dist/components/Popover/index.d.ts +1 -0
- package/dist/components/Popover/index.js +2 -0
- package/dist/components/PortalSlot.d.ts +11 -0
- package/dist/components/PortalSlot.js +41 -0
- package/dist/components/PortalSlot.js.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.d.ts +38 -0
- package/dist/components/ProgressBar/ProgressBar.js +82 -0
- package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
- package/dist/components/ProgressBar/index.d.ts +2 -0
- package/dist/components/ProgressBar/index.js +2 -0
- package/dist/components/RadioButton/RadioButton.d.ts +62 -0
- package/dist/components/RadioButton/RadioButton.js +38 -0
- package/dist/components/RadioButton/RadioButton.js.map +1 -0
- package/dist/components/RadioButton/constants.d.ts +30 -0
- package/dist/components/RadioButton/constants.js +55 -0
- package/dist/components/RadioButton/constants.js.map +1 -0
- package/dist/components/RadioButton/index.d.ts +2 -0
- package/dist/components/RadioButton/index.js +2 -0
- package/dist/components/RadioCard/RadioCard.d.ts +26 -0
- package/dist/components/RadioCard/RadioCard.js +43 -0
- package/dist/components/RadioCard/RadioCard.js.map +1 -0
- package/dist/components/RadioCard/index.d.ts +2 -0
- package/dist/components/RadioCard/index.js +2 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +5 -0
- package/dist/components/RadioGroup/RadioGroup.js +17 -0
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/RadioGroup/RadioGroupItem.d.ts +5 -0
- package/dist/components/RadioGroup/RadioGroupItem.js +22 -0
- package/dist/components/RadioGroup/RadioGroupItem.js.map +1 -0
- package/dist/components/RadioGroup/index.d.ts +4 -0
- package/dist/components/RadioGroup/index.js +3 -0
- package/dist/components/Select/Select.d.ts +84 -0
- package/dist/components/Select/Select.js +120 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/SelectPrimitive.d.ts +17 -0
- package/dist/components/Select/SelectPrimitive.js +126 -0
- package/dist/components/Select/SelectPrimitive.js.map +1 -0
- package/dist/components/Select/index.d.ts +4 -0
- package/dist/components/Select/index.js +3 -0
- package/dist/components/Skeleton/Skeleton.d.ts +13 -0
- package/dist/components/Skeleton/Skeleton.js +25 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Skeleton/index.d.ts +1 -0
- package/dist/components/Skeleton/index.js +2 -0
- package/dist/components/Slider/Slider.d.ts +33 -0
- package/dist/components/Slider/Slider.js +64 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Slider/index.js +2 -0
- package/dist/components/SparkLineChart/SparkLineChart.d.ts +14 -0
- package/dist/components/SparkLineChart/SparkLineChart.js +112 -0
- package/dist/components/SparkLineChart/SparkLineChart.js.map +1 -0
- package/dist/components/SparkLineChart/index.d.ts +2 -0
- package/dist/components/SparkLineChart/index.js +2 -0
- package/dist/components/Spinner/Spinner.d.ts +12 -0
- package/dist/components/Spinner/Spinner.js +33 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/index.d.ts +1 -0
- package/dist/components/Spinner/index.js +2 -0
- package/dist/components/SplitViewPane/SplitViewPane.d.ts +41 -0
- package/dist/components/SplitViewPane/SplitViewPane.js +314 -0
- package/dist/components/SplitViewPane/SplitViewPane.js.map +1 -0
- package/dist/components/SplitViewPane/SplitViewPaneHeader.d.ts +22 -0
- package/dist/components/SplitViewPane/SplitViewPaneHeader.js +105 -0
- package/dist/components/SplitViewPane/SplitViewPaneHeader.js.map +1 -0
- package/dist/components/SplitViewPane/index.d.ts +2 -0
- package/dist/components/SplitViewPane/index.js +3 -0
- package/dist/components/SplitViewPane/openPaneRegistry.d.ts +2 -0
- package/dist/components/SplitViewPane/openPaneRegistry.js +49 -0
- package/dist/components/SplitViewPane/openPaneRegistry.js.map +1 -0
- package/dist/components/Switch/Switch.d.ts +35 -0
- package/dist/components/Switch/Switch.js +65 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/index.js +2 -0
- package/dist/components/Tabs/index.d.ts +27 -0
- package/dist/components/Tabs/index.js +45 -0
- package/dist/components/Tabs/index.js.map +1 -0
- package/dist/components/Text/Text.d.ts +13 -0
- package/dist/components/Text/Text.js +58 -0
- package/dist/components/Text/Text.js.map +1 -0
- package/dist/components/Text/index.d.ts +2 -0
- package/dist/components/Text/index.js +2 -0
- package/dist/components/TextVirtualizer.d.ts +8 -0
- package/dist/components/TextVirtualizer.js +53 -0
- package/dist/components/TextVirtualizer.js.map +1 -0
- package/dist/components/TextWithLinks.d.ts +6 -0
- package/dist/components/TextWithLinks.js +61 -0
- package/dist/components/TextWithLinks.js.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +47 -0
- package/dist/components/Textarea/Textarea.js +150 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/Textarea/index.js +2 -0
- package/dist/components/ThinkingState/LoadingIndicator.d.ts +19 -0
- package/dist/components/ThinkingState/LoadingIndicator.js +2 -0
- package/dist/components/ThinkingState/NOTICE +25 -0
- package/dist/components/ThinkingState/ThinkingState.d.ts +21 -0
- package/dist/components/ThinkingState/ThinkingState.js +42 -0
- package/dist/components/ThinkingState/ThinkingState.js.map +1 -0
- package/dist/components/ThinkingState/ThinkingStateTimer.d.ts +9 -0
- package/dist/components/ThinkingState/ThinkingStateTimer.js +43 -0
- package/dist/components/ThinkingState/ThinkingStateTimer.js.map +1 -0
- package/dist/components/ThinkingState/index.d.ts +4 -0
- package/dist/components/ThinkingState/index.js +3 -0
- package/dist/components/Toast/ToastContext.d.ts +5 -0
- package/dist/components/Toast/ToastContext.js +9 -0
- package/dist/components/Toast/ToastContext.js.map +1 -0
- package/dist/components/Toast/index.d.ts +13 -0
- package/dist/components/Toast/index.js +166 -0
- package/dist/components/Toast/index.js.map +1 -0
- package/dist/components/Toast/useToast.d.ts +3 -0
- package/dist/components/Toast/useToast.js +11 -0
- package/dist/components/Toast/useToast.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +19 -0
- package/dist/components/Tooltip/Tooltip.js +57 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +3 -0
- package/dist/components/Tooltip/index.js +3 -0
- package/dist/components/TopList/TopList.d.ts +3 -0
- package/dist/components/TopList/TopList.js +186 -0
- package/dist/components/TopList/TopList.js.map +1 -0
- package/dist/components/TopList/TopList.types.d.ts +34 -0
- package/dist/components/TopList/TopList.types.js +0 -0
- package/dist/components/TopList/TopList.utils.d.ts +3 -0
- package/dist/components/TopList/TopList.utils.js +16 -0
- package/dist/components/TopList/TopList.utils.js.map +1 -0
- package/dist/components/TopList/index.d.ts +2 -0
- package/dist/components/TopList/index.js +2 -0
- package/dist/components/Typeahead/Typeahead.d.ts +5 -0
- package/dist/components/Typeahead/Typeahead.js +305 -0
- package/dist/components/Typeahead/Typeahead.js.map +1 -0
- package/dist/components/Typeahead/Typeahead.types.d.ts +99 -0
- package/dist/components/Typeahead/Typeahead.types.js +0 -0
- package/dist/components/Typeahead/Typeahead.utils.d.ts +25 -0
- package/dist/components/Typeahead/Typeahead.utils.js +73 -0
- package/dist/components/Typeahead/Typeahead.utils.js.map +1 -0
- package/dist/components/Typeahead/TypeaheadParts.d.ts +25 -0
- package/dist/components/Typeahead/TypeaheadParts.js +109 -0
- package/dist/components/Typeahead/TypeaheadParts.js.map +1 -0
- package/dist/components/Typeahead/TypeaheadView.d.ts +81 -0
- package/dist/components/Typeahead/TypeaheadView.js +228 -0
- package/dist/components/Typeahead/TypeaheadView.js.map +1 -0
- package/dist/components/Typeahead/index.d.ts +2 -0
- package/dist/components/Typeahead/index.js +2 -0
- package/dist/components/Typeahead/useTypeaheadDomSync.d.ts +15 -0
- package/dist/components/Typeahead/useTypeaheadDomSync.js +43 -0
- package/dist/components/Typeahead/useTypeaheadDomSync.js.map +1 -0
- package/dist/components/Typeahead/useTypeaheadUncontrolledInput.d.ts +11 -0
- package/dist/components/Typeahead/useTypeaheadUncontrolledInput.js +32 -0
- package/dist/components/Typeahead/useTypeaheadUncontrolledInput.js.map +1 -0
- package/dist/components/UnsavedChangesDialog.d.ts +14 -0
- package/dist/components/UnsavedChangesDialog.js +67 -0
- package/dist/components/UnsavedChangesDialog.js.map +1 -0
- package/dist/components/index.d.ts +58 -0
- package/dist/components/index.js +35 -0
- package/dist/components.css +102 -0
- package/dist/contexts/ErrorReporterContext.d.ts +6 -0
- package/dist/contexts/ErrorReporterContext.js +7 -0
- package/dist/contexts/ErrorReporterContext.js.map +1 -0
- package/dist/hooks/AppThemeProvider.d.ts +8 -0
- package/dist/hooks/AppThemeProvider.js +52 -0
- package/dist/hooks/AppThemeProvider.js.map +1 -0
- package/dist/hooks/useColorScheme.d.ts +20 -0
- package/dist/hooks/useColorScheme.js +50 -0
- package/dist/hooks/useColorScheme.js.map +1 -0
- package/dist/icons/LongTailPhosphorIcons.d.ts +51 -0
- package/dist/icons/LongTailPhosphorIcons.js +102 -0
- package/dist/icons/LongTailPhosphorIcons.js.map +1 -0
- package/dist/icons/PaddedPhosphorIcons.d.ts +17 -0
- package/dist/icons/PaddedPhosphorIcons.js +55 -0
- package/dist/icons/PaddedPhosphorIcons.js.map +1 -0
- package/dist/icons/WeightedPhosphorIcons.d.ts +45 -0
- package/dist/icons/WeightedPhosphorIcons.js +96 -0
- package/dist/icons/WeightedPhosphorIcons.js.map +1 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/index.js +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +36 -0
- package/dist/styles.css +10 -0
- package/dist/utilities.css +2 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/index.d.ts +7 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/index.js +15 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/index.js.map +1 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.d.ts +4 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.js +10 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.js.map +1 -0
- package/dist/utils/ZIndexContext.d.ts +5 -0
- package/dist/utils/ZIndexContext.js +13 -0
- package/dist/utils/ZIndexContext.js.map +1 -0
- package/dist/utils/animation.d.ts +37 -0
- package/dist/utils/animation.js +42 -0
- package/dist/utils/animation.js.map +1 -0
- package/dist/utils/chartAxisLayout.d.ts +6 -0
- package/dist/utils/chartAxisLayout.js +8 -0
- package/dist/utils/chartAxisLayout.js.map +1 -0
- package/dist/utils/chartColors.d.ts +38 -0
- package/dist/utils/chartColors.js +78 -0
- package/dist/utils/chartColors.js.map +1 -0
- package/dist/utils/chartConstants.d.ts +10 -0
- package/dist/utils/chartConstants.js +15 -0
- package/dist/utils/chartConstants.js.map +1 -0
- package/dist/utils/chartValues.d.ts +2 -0
- package/dist/utils/chartValues.js +36 -0
- package/dist/utils/chartValues.js.map +1 -0
- package/dist/utils/clamp.d.ts +2 -0
- package/dist/utils/clamp.js +7 -0
- package/dist/utils/clamp.js.map +1 -0
- package/dist/utils/cn.d.ts +2 -0
- package/dist/utils/cn.js +191 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/componentSizes.d.ts +104 -0
- package/dist/utils/componentSizes.js +104 -0
- package/dist/utils/componentSizes.js.map +1 -0
- package/dist/utils/controlIconSizes.d.ts +10 -0
- package/dist/utils/controlIconSizes.js +32 -0
- package/dist/utils/controlIconSizes.js.map +1 -0
- package/dist/utils/csp-nonce.d.ts +11 -0
- package/dist/utils/csp-nonce.js +17 -0
- package/dist/utils/csp-nonce.js.map +1 -0
- package/dist/utils/get-closest-scroll-parent.d.ts +1 -0
- package/dist/utils/get-closest-scroll-parent.js +16 -0
- package/dist/utils/get-closest-scroll-parent.js.map +1 -0
- package/dist/utils/get-color-by-string.d.ts +1 -0
- package/dist/utils/get-color-by-string.js +10 -0
- package/dist/utils/get-color-by-string.js.map +1 -0
- package/dist/utils/getYAxisLeftMargin.d.ts +10 -0
- package/dist/utils/getYAxisLeftMargin.js +20 -0
- package/dist/utils/getYAxisLeftMargin.js.map +1 -0
- package/dist/utils/icon-types.d.ts +8 -0
- package/dist/utils/icon-types.js +0 -0
- package/dist/utils/lazy-codemirror-loader.d.ts +70 -0
- package/dist/utils/lazy-codemirror-loader.js +79 -0
- package/dist/utils/lazy-codemirror-loader.js.map +1 -0
- package/dist/utils/merge-refs.d.ts +2 -0
- package/dist/utils/merge-refs.js +13 -0
- package/dist/utils/merge-refs.js.map +1 -0
- package/dist/utils/parseTextLinks.d.ts +7 -0
- package/dist/utils/parseTextLinks.js +46 -0
- package/dist/utils/parseTextLinks.js.map +1 -0
- package/dist/utils/prettify-error-payload.d.ts +7 -0
- package/dist/utils/prettify-error-payload.js +188 -0
- package/dist/utils/prettify-error-payload.js.map +1 -0
- package/dist/utils/spacing.d.ts +30 -0
- package/dist/utils/spacing.js +34 -0
- package/dist/utils/spacing.js.map +1 -0
- package/dist/utils/useCodeMirror.d.ts +7 -0
- package/dist/utils/useCodeMirror.js +28 -0
- package/dist/utils/useCodeMirror.js.map +1 -0
- package/dist/utils/useZIndex.d.ts +52 -0
- package/dist/utils/useZIndex.js +62 -0
- package/dist/utils/useZIndex.js.map +1 -0
- package/dist/utils/zIndices.d.ts +42 -0
- package/dist/utils/zIndices.js +46 -0
- package/dist/utils/zIndices.js.map +1 -0
- package/docs/DESIGN.md +134 -0
- package/docs/STYLES.md +568 -0
- package/package.json +619 -0
- package/tailwind.preset.cjs +738 -0
- package/tailwind.preset.d.cts +5 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RadioButton style constants following the Button pattern.
|
|
3
|
+
* Styles are organized by category for maintainability.
|
|
4
|
+
*/
|
|
5
|
+
/** Base styles applied to all radio buttons */
|
|
6
|
+
export declare const radioButtonBaseStyles = "flex shrink-0 items-center justify-center rounded-full border bg-elevated transition-colors";
|
|
7
|
+
/** Focus ring styles: brand border + shadow haze */
|
|
8
|
+
export declare const radioButtonFocusStyles = "focus-visible:border-brand focus-visible:outline-none focus-visible:shadow-[0_0_0_4px_var(--bg-brand-subtle)]";
|
|
9
|
+
/** Size variant styles for the radio button */
|
|
10
|
+
export declare const radioButtonSizeStyles: {
|
|
11
|
+
readonly sm: "size-4";
|
|
12
|
+
readonly md: "size-5";
|
|
13
|
+
};
|
|
14
|
+
/** Size variant styles for the indicator dot */
|
|
15
|
+
export declare const radioButtonDotSizeStyles: {
|
|
16
|
+
readonly sm: "size-1.5";
|
|
17
|
+
readonly md: "size-2";
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Indicator dot styles. The disabled fill is applied via Radix's `data-disabled`
|
|
21
|
+
* attribute, which is set on the Indicator whenever the radio button or its
|
|
22
|
+
* enclosing group is disabled — so it covers both item-level and group-level
|
|
23
|
+
* disabled states, not just the local `disabled` prop.
|
|
24
|
+
*/
|
|
25
|
+
export declare const radioButtonIndicatorStyles = "bg-control-thumb data-[disabled]:bg-control-disabled";
|
|
26
|
+
/**
|
|
27
|
+
* Combined radio button root styles - convenience export for component use.
|
|
28
|
+
* All state styles combined as an array to be spread in cn().
|
|
29
|
+
*/
|
|
30
|
+
export declare const radioButtonRootStateStyles: readonly ["border-default", "data-[state=unchecked]:hover:bg-elevated-hover", "data-[state=checked]:border-transparent data-[state=checked]:bg-control-active hover:data-[state=checked]:bg-control-active-hover", "data-[disabled]:cursor-not-allowed data-[disabled]:border-disabled data-[disabled]:bg-disabled", "data-[disabled]:data-[state=unchecked]:hover:border-disabled data-[disabled]:data-[state=unchecked]:hover:shadow-none data-[disabled]:hover:bg-disabled data-[state=unchecked]:hover:bg-disabled", "data-[disabled]:data-[state=checked]:border-disabled data-[disabled]:data-[state=checked]:bg-disabled data-[disabled]:data-[state=checked]:hover:bg-disabled"];
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { SELECTION_CONTROL_SIZES } from "../../utils/componentSizes.js";
|
|
2
|
+
//#region packages/components/src/components/RadioButton/constants.ts
|
|
3
|
+
/**
|
|
4
|
+
* RadioButton style constants following the Button pattern.
|
|
5
|
+
* Styles are organized by category for maintainability.
|
|
6
|
+
*/
|
|
7
|
+
/** Base styles applied to all radio buttons */
|
|
8
|
+
var radioButtonBaseStyles = "flex shrink-0 items-center justify-center rounded-full border bg-elevated transition-colors";
|
|
9
|
+
/** Focus ring styles: brand border + shadow haze */
|
|
10
|
+
var radioButtonFocusStyles = "focus-visible:border-brand focus-visible:outline-none focus-visible:shadow-[0_0_0_4px_var(--bg-brand-subtle)]";
|
|
11
|
+
/** Size variant styles for the radio button */
|
|
12
|
+
var radioButtonSizeStyles = {
|
|
13
|
+
sm: SELECTION_CONTROL_SIZES.sm.className,
|
|
14
|
+
md: SELECTION_CONTROL_SIZES.md.className
|
|
15
|
+
};
|
|
16
|
+
/** Size variant styles for the indicator dot */
|
|
17
|
+
var radioButtonDotSizeStyles = {
|
|
18
|
+
sm: "size-1.5",
|
|
19
|
+
md: "size-2"
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* State styles using Radix data attributes.
|
|
23
|
+
* These are combined and applied via cn() in the component.
|
|
24
|
+
*/
|
|
25
|
+
var radioButtonStateStyles = {
|
|
26
|
+
default: "border-default",
|
|
27
|
+
uncheckedHover: "data-[state=unchecked]:hover:bg-elevated-hover",
|
|
28
|
+
checked: "data-[state=checked]:border-transparent data-[state=checked]:bg-control-active hover:data-[state=checked]:bg-control-active-hover",
|
|
29
|
+
disabledBase: "data-[disabled]:cursor-not-allowed data-[disabled]:border-disabled data-[disabled]:bg-disabled",
|
|
30
|
+
disabledUnchecked: "data-[disabled]:data-[state=unchecked]:hover:border-disabled data-[disabled]:data-[state=unchecked]:hover:shadow-none data-[disabled]:hover:bg-disabled data-[state=unchecked]:hover:bg-disabled",
|
|
31
|
+
disabledChecked: "data-[disabled]:data-[state=checked]:border-disabled data-[disabled]:data-[state=checked]:bg-disabled data-[disabled]:data-[state=checked]:hover:bg-disabled"
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Indicator dot styles. The disabled fill is applied via Radix's `data-disabled`
|
|
35
|
+
* attribute, which is set on the Indicator whenever the radio button or its
|
|
36
|
+
* enclosing group is disabled — so it covers both item-level and group-level
|
|
37
|
+
* disabled states, not just the local `disabled` prop.
|
|
38
|
+
*/
|
|
39
|
+
var radioButtonIndicatorStyles = "bg-control-thumb data-[disabled]:bg-control-disabled";
|
|
40
|
+
/**
|
|
41
|
+
* Combined radio button root styles - convenience export for component use.
|
|
42
|
+
* All state styles combined as an array to be spread in cn().
|
|
43
|
+
*/
|
|
44
|
+
var radioButtonRootStateStyles = [
|
|
45
|
+
radioButtonStateStyles.default,
|
|
46
|
+
radioButtonStateStyles.uncheckedHover,
|
|
47
|
+
radioButtonStateStyles.checked,
|
|
48
|
+
radioButtonStateStyles.disabledBase,
|
|
49
|
+
radioButtonStateStyles.disabledUnchecked,
|
|
50
|
+
radioButtonStateStyles.disabledChecked
|
|
51
|
+
];
|
|
52
|
+
//#endregion
|
|
53
|
+
export { radioButtonBaseStyles, radioButtonDotSizeStyles, radioButtonFocusStyles, radioButtonIndicatorStyles, radioButtonRootStateStyles, radioButtonSizeStyles };
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../../../src/components/RadioButton/constants.ts"],"sourcesContent":["import {\n SELECTION_CONTROL_SIZES,\n type SelectionControlSize,\n} from '../../utils/componentSizes';\n\n/**\n * RadioButton style constants following the Button pattern.\n * Styles are organized by category for maintainability.\n */\n\n/** Base styles applied to all radio buttons */\nexport const radioButtonBaseStyles =\n 'flex shrink-0 items-center justify-center rounded-full border bg-elevated transition-colors';\n\n/** Focus ring styles: brand border + shadow haze */\nexport const radioButtonFocusStyles =\n 'focus-visible:border-brand focus-visible:outline-none focus-visible:shadow-[0_0_0_4px_var(--bg-brand-subtle)]';\n\n/** Size variant styles for the radio button */\nexport const radioButtonSizeStyles = {\n sm: SELECTION_CONTROL_SIZES.sm.className,\n md: SELECTION_CONTROL_SIZES.md.className,\n} as const satisfies Record<SelectionControlSize, string>;\n\n/** Size variant styles for the indicator dot */\nexport const radioButtonDotSizeStyles = {\n sm: 'size-1.5',\n md: 'size-2',\n} as const satisfies Record<SelectionControlSize, string>;\n\n/**\n * State styles using Radix data attributes.\n * These are combined and applied via cn() in the component.\n */\nconst radioButtonStateStyles = {\n // Default border (unchecked state)\n default: 'border-default',\n\n // Unchecked hover - slight background change\n uncheckedHover: 'data-[state=unchecked]:hover:bg-elevated-hover',\n\n // Checked state - filled with brand color\n checked:\n 'data-[state=checked]:border-transparent data-[state=checked]:bg-control-active hover:data-[state=checked]:bg-control-active-hover',\n\n // Disabled base - applies to all states when disabled\n disabledBase:\n 'data-[disabled]:cursor-not-allowed data-[disabled]:border-disabled data-[disabled]:bg-disabled',\n\n // Disabled unchecked - override hover effects\n disabledUnchecked:\n 'data-[disabled]:data-[state=unchecked]:hover:border-disabled data-[disabled]:data-[state=unchecked]:hover:shadow-none data-[disabled]:hover:bg-disabled data-[state=unchecked]:hover:bg-disabled',\n\n // Disabled checked - override hover effects\n disabledChecked:\n 'data-[disabled]:data-[state=checked]:border-disabled data-[disabled]:data-[state=checked]:bg-disabled data-[disabled]:data-[state=checked]:hover:bg-disabled',\n} as const;\n\n/**\n * Indicator dot styles. The disabled fill is applied via Radix's `data-disabled`\n * attribute, which is set on the Indicator whenever the radio button or its\n * enclosing group is disabled — so it covers both item-level and group-level\n * disabled states, not just the local `disabled` prop.\n */\nexport const radioButtonIndicatorStyles =\n 'bg-control-thumb data-[disabled]:bg-control-disabled';\n\n/**\n * Combined radio button root styles - convenience export for component use.\n * All state styles combined as an array to be spread in cn().\n */\nexport const radioButtonRootStateStyles = [\n radioButtonStateStyles.default,\n radioButtonStateStyles.uncheckedHover,\n radioButtonStateStyles.checked,\n radioButtonStateStyles.disabledBase,\n radioButtonStateStyles.disabledUnchecked,\n radioButtonStateStyles.disabledChecked,\n] as const;\n"],"mappings":";;;;;;;AAWA,IAAa,wBACX;;AAGF,IAAa,yBACX;;AAGF,IAAa,wBAAwB;CACnC,IAAI,wBAAwB,GAAG;CAC/B,IAAI,wBAAwB,GAAG;AACjC;;AAGA,IAAa,2BAA2B;CACtC,IAAI;CACJ,IAAI;AACN;;;;;AAMA,IAAM,yBAAyB;CAE7B,SAAS;CAGT,gBAAgB;CAGhB,SACE;CAGF,cACE;CAGF,mBACE;CAGF,iBACE;AACJ;;;;;;;AAQA,IAAa,6BACX;;;;;AAMF,IAAa,6BAA6B;CACxC,uBAAuB;CACvB,uBAAuB;CACvB,uBAAuB;CACvB,uBAAuB;CACvB,uBAAuB;CACvB,uBAAuB;AACzB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SelectionControlSize } from '../../utils/componentSizes.js';
|
|
2
|
+
export interface RadioCardProps {
|
|
3
|
+
value: string;
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
/**
|
|
6
|
+
* Content revealed only when the card is selected.
|
|
7
|
+
* When provided, collapse/expand behavior is enabled automatically
|
|
8
|
+
* using CSS `group-has-[[role=radio][data-state=checked]]`
|
|
9
|
+
*/
|
|
10
|
+
collapsible?: React.ReactNode;
|
|
11
|
+
className?: string;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
radioPosition?: 'left' | 'right';
|
|
14
|
+
/** Indicator size. The card height remains content-driven. */
|
|
15
|
+
size?: SelectionControlSize;
|
|
16
|
+
/**
|
|
17
|
+
* Hides the visible radio indicator while keeping it in the DOM so that
|
|
18
|
+
* the selection state (border highlight, collapsible reveal) still works.
|
|
19
|
+
* Use when the card design itself is the only selection affordance needed.
|
|
20
|
+
*/
|
|
21
|
+
hideIndicator?: boolean;
|
|
22
|
+
'data-testid'?: string;
|
|
23
|
+
'aria-label'?: string;
|
|
24
|
+
'aria-labelledby'?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const RadioCard: import("react").ForwardRefExoticComponent<RadioCardProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { radioButtonBaseStyles, radioButtonDotSizeStyles, radioButtonFocusStyles, radioButtonIndicatorStyles, radioButtonRootStateStyles, radioButtonSizeStyles } from "../RadioButton/constants.js";
|
|
3
|
+
import { forwardRef, useId } from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
6
|
+
//#region packages/components/src/components/RadioCard/RadioCard.tsx
|
|
7
|
+
var RadioCard = forwardRef(({ value, children, collapsible, className, disabled, radioPosition = "left", size = "sm", hideIndicator = false, "data-testid": dataTestId, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy }, ref) => {
|
|
8
|
+
const id = useId();
|
|
9
|
+
const radioItem = /* @__PURE__ */ jsx(RadioGroupPrimitive.Item, {
|
|
10
|
+
ref,
|
|
11
|
+
id,
|
|
12
|
+
value,
|
|
13
|
+
disabled,
|
|
14
|
+
"aria-label": ariaLabel,
|
|
15
|
+
"aria-labelledby": ariaLabelledBy,
|
|
16
|
+
"data-testid": dataTestId,
|
|
17
|
+
className: cn(radioButtonBaseStyles, radioButtonFocusStyles, radioButtonSizeStyles[size], radioButtonRootStateStyles, "shrink-0"),
|
|
18
|
+
children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, { className: cn("flex items-center justify-center rounded-full", radioButtonDotSizeStyles[size], radioButtonIndicatorStyles) })
|
|
19
|
+
});
|
|
20
|
+
return /* @__PURE__ */ jsxs("label", {
|
|
21
|
+
htmlFor: id,
|
|
22
|
+
className: cn("group/rc", "flex items-center rounded-lg border-2 border-secondary p-space-4 transition-colors has-[[role=radio][data-state=checked]]:border-brand", size === "sm" ? "gap-space-3" : "gap-space-4", disabled ? "cursor-not-allowed" : "cursor-pointer", !disabled && "hover:bg-primary-hover", disabled && "text-disabled", className),
|
|
23
|
+
children: [
|
|
24
|
+
hideIndicator ? /* @__PURE__ */ jsx("span", {
|
|
25
|
+
className: "sr-only",
|
|
26
|
+
children: radioItem
|
|
27
|
+
}) : radioPosition === "left" && radioItem,
|
|
28
|
+
/* @__PURE__ */ jsxs("div", {
|
|
29
|
+
className: "flex min-w-0 flex-1 flex-col gap-space-2",
|
|
30
|
+
children: [children, collapsible != null && /* @__PURE__ */ jsx("div", {
|
|
31
|
+
className: "hidden group-has-[[role=radio][data-state=checked]]/rc:block",
|
|
32
|
+
children: collapsible
|
|
33
|
+
})]
|
|
34
|
+
}),
|
|
35
|
+
!hideIndicator && radioPosition === "right" && radioItem
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
RadioCard.displayName = "RadioCard";
|
|
40
|
+
//#endregion
|
|
41
|
+
export { RadioCard };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=RadioCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioCard.js","names":[],"sources":["../../../src/components/RadioCard/RadioCard.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\n\nimport { cn } from '../../utils/cn';\nimport type { SelectionControlSize } from '../../utils/componentSizes';\nimport {\n radioButtonBaseStyles,\n radioButtonDotSizeStyles,\n radioButtonFocusStyles,\n radioButtonIndicatorStyles,\n radioButtonRootStateStyles,\n radioButtonSizeStyles,\n} from '../RadioButton/constants';\n\nexport interface RadioCardProps {\n value: string;\n children?: React.ReactNode;\n /**\n * Content revealed only when the card is selected.\n * When provided, collapse/expand behavior is enabled automatically\n * using CSS `group-has-[[role=radio][data-state=checked]]`\n */\n collapsible?: React.ReactNode;\n className?: string;\n disabled?: boolean;\n radioPosition?: 'left' | 'right';\n /** Indicator size. The card height remains content-driven. */\n size?: SelectionControlSize;\n /**\n * Hides the visible radio indicator while keeping it in the DOM so that\n * the selection state (border highlight, collapsible reveal) still works.\n * Use when the card design itself is the only selection affordance needed.\n */\n hideIndicator?: boolean;\n 'data-testid'?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n}\n\nexport const RadioCard = forwardRef<HTMLButtonElement, RadioCardProps>(\n (\n {\n value,\n children,\n collapsible,\n className,\n disabled,\n radioPosition = 'left',\n size = 'sm',\n hideIndicator = false,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n },\n ref\n ) => {\n const id = useId();\n\n const radioItem = (\n <RadioGroupPrimitive.Item\n ref={ref}\n id={id}\n value={value}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n data-testid={dataTestId}\n className={cn(\n radioButtonBaseStyles,\n radioButtonFocusStyles,\n radioButtonSizeStyles[size],\n radioButtonRootStateStyles,\n 'shrink-0'\n )}\n >\n <RadioGroupPrimitive.Indicator\n className={cn(\n 'flex items-center justify-center rounded-full',\n radioButtonDotSizeStyles[size],\n radioButtonIndicatorStyles\n )}\n />\n </RadioGroupPrimitive.Item>\n );\n\n return (\n <label\n htmlFor={id}\n className={cn(\n // Named group so nested collapsible content can reference it safely\n // even when RadioCards are nested inside other groups.\n 'group/rc',\n 'flex items-center rounded-lg border-2 border-secondary p-space-4 transition-colors has-[[role=radio][data-state=checked]]:border-brand',\n size === 'sm' ? 'gap-space-3' : 'gap-space-4',\n disabled ? 'cursor-not-allowed' : 'cursor-pointer',\n !disabled && 'hover:bg-primary-hover',\n disabled && 'text-disabled',\n className\n )}\n >\n {/* When hideIndicator, keep the radio item in the DOM (so CSS has()\n and screen readers still work) but remove it from layout flow. */}\n {hideIndicator ? (\n <span className=\"sr-only\">{radioItem}</span>\n ) : (\n radioPosition === 'left' && radioItem\n )}\n\n <div className=\"flex min-w-0 flex-1 flex-col gap-space-2\">\n {children}\n {collapsible != null && (\n <div className=\"hidden group-has-[[role=radio][data-state=checked]]/rc:block\">\n {collapsible}\n </div>\n )}\n </div>\n\n {!hideIndicator && radioPosition === 'right' && radioItem}\n </label>\n );\n }\n);\n\nRadioCard.displayName = 'RadioCard';\n"],"mappings":";;;;;;AAwCA,IAAa,YAAY,YAErB,EACE,OACA,UACA,aACA,WACA,UACA,gBAAgB,QAChB,OAAO,MACP,gBAAgB,OAChB,eAAe,YACf,cAAc,WACd,mBAAmB,kBAErB,QACG;CACH,MAAM,KAAK,MAAM;CAEjB,MAAM,YACJ,oBAAC,oBAAoB,MAArB;EACO;EACD;EACG;EACG;EACV,cAAY;EACZ,mBAAiB;EACjB,eAAa;EACb,WAAW,GACT,uBACA,wBACA,sBAAsB,OACtB,4BACA,UACF;EAEA,UAAA,oBAAC,oBAAoB,WAArB,EACE,WAAW,GACT,iDACA,yBAAyB,OACzB,0BACF,EACD,CAAA;CACuB,CAAA;CAG5B,OACE,qBAAC,SAAD;EACE,SAAS;EACT,WAAW,GAGT,YACA,0IACA,SAAS,OAAO,gBAAgB,eAChC,WAAW,uBAAuB,kBAClC,CAAC,YAAY,0BACb,YAAY,iBACZ,SACF;EAZF,UAAA;GAgBG,gBACC,oBAAC,QAAD;IAAM,WAAU;IAAW,UAAA;GAAgB,CAAA,IAE3C,kBAAkB,UAAU;GAG9B,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACG,UACA,eAAe,QACd,oBAAC,OAAD;KAAK,WAAU;KACZ,UAAA;IACE,CAAA,CAEJ;;GAEJ,CAAC,iBAAiB,kBAAkB,WAAW;EAC3C;;AAEX,CACF;AAEA,UAAU,cAAc"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
3
|
+
export type RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;
|
|
4
|
+
declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
export { RadioGroup };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import * as React$1 from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
5
|
+
//#region packages/components/src/components/RadioGroup/RadioGroup.tsx
|
|
6
|
+
var RadioGroup = React$1.forwardRef(({ className, ...props }, ref) => {
|
|
7
|
+
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, {
|
|
8
|
+
className: cn("flex flex-col gap-space-3", className),
|
|
9
|
+
...props,
|
|
10
|
+
ref
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { RadioGroup };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=RadioGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","names":[],"sources":["../../../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\n\nimport { cn } from '../../utils/cn';\n\nexport type RadioGroupProps = React.ComponentPropsWithoutRef<\n typeof RadioGroupPrimitive.Root\n>;\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn('flex flex-col gap-space-3', className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nexport { RadioGroup };\n"],"mappings":";;;;;AAUA,IAAM,aAAa,QAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAAQ;CAClC,OACE,oBAAC,oBAAoB,MAArB;EACE,WAAW,GAAG,6BAA6B,SAAS;EACpD,GAAI;EACC;CACN,CAAA;AAEL,CAAC;AACD,WAAW,cAAc,oBAAoB,KAAK"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
3
|
+
export type RadioGroupItemProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>;
|
|
4
|
+
declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
+
export { RadioGroupItem };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { SELECTION_CONTROL_HIT_AREA_STYLES } from "../../utils/componentSizes.js";
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
6
|
+
//#region packages/components/src/components/RadioGroup/RadioGroupItem.tsx
|
|
7
|
+
var RadioGroupItem = React$1.forwardRef(({ className, ...props }, ref) => {
|
|
8
|
+
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Item, {
|
|
9
|
+
ref,
|
|
10
|
+
className: cn("flex items-start justify-end gap-space-3 self-stretch rounded-full border border-subtle bg-surface-level-1 p-space-3 transition-colors data-[disabled]:cursor-not-allowed data-[disabled]:border-disabled data-[disabled]:bg-disabled data-[disabled]:data-[state=checked]:bg-disabled data-[state=checked]:bg-brand data-[state=checked]:p-space-2", "focus-visible:shadow-[0_0_0_4px_var(--bg-brand-subtle)] focus-visible:outline-none", SELECTION_CONTROL_HIT_AREA_STYLES, className),
|
|
11
|
+
...props,
|
|
12
|
+
children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, {
|
|
13
|
+
className: "group flex items-center justify-center",
|
|
14
|
+
children: /* @__PURE__ */ jsx("div", { className: "size-2 rounded-full bg-control-thumb group-data-[disabled]:bg-control-disabled" })
|
|
15
|
+
})
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { RadioGroupItem };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=RadioGroupItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroupItem.js","names":[],"sources":["../../../src/components/RadioGroup/RadioGroupItem.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\n\nimport { cn } from '../../utils/cn';\nimport { SELECTION_CONTROL_HIT_AREA_STYLES } from '../../utils/componentSizes';\n\nexport type RadioGroupItemProps = React.ComponentPropsWithoutRef<\n typeof RadioGroupPrimitive.Item\n>;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'flex items-start justify-end gap-space-3 self-stretch rounded-full border border-subtle bg-surface-level-1 p-space-3 transition-colors data-[disabled]:cursor-not-allowed data-[disabled]:border-disabled data-[disabled]:bg-disabled data-[disabled]:data-[state=checked]:bg-disabled data-[state=checked]:bg-brand data-[state=checked]:p-space-2',\n 'focus-visible:shadow-[0_0_0_4px_var(--bg-brand-subtle)] focus-visible:outline-none',\n SELECTION_CONTROL_HIT_AREA_STYLES,\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"group flex items-center justify-center\">\n <div className=\"size-2 rounded-full bg-control-thumb group-data-[disabled]:bg-control-disabled\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroupItem };\n"],"mappings":";;;;;;AAWA,IAAM,iBAAiB,QAAM,YAG1B,EAAE,WAAW,GAAG,SAAS,QAAQ;CAClC,OACE,oBAAC,oBAAoB,MAArB;EACO;EACL,WAAW,GACT,uVACA,sFACA,mCACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,oBAAoB,WAArB;GAA+B,WAAU;GACvC,UAAA,oBAAC,OAAD,EAAK,WAAU,iFAAkF,CAAA;EACpE,CAAA;CACP,CAAA;AAE9B,CAAC;AACD,eAAe,cAAc,oBAAoB,KAAK"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ControlSize } from '../../utils/componentSizes.js';
|
|
3
|
+
export interface SelectOption<T extends string = string> {
|
|
4
|
+
/** The value used for selection and filtering */
|
|
5
|
+
value: T;
|
|
6
|
+
/** Display label (defaults to value if not provided) */
|
|
7
|
+
label?: string;
|
|
8
|
+
/** Secondary description text displayed below the label */
|
|
9
|
+
description?: string;
|
|
10
|
+
/** Element displayed on the right side of the item (e.g. badge, shortcut) */
|
|
11
|
+
rightDecorator?: ReactNode;
|
|
12
|
+
/** Whether this option is disabled */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface SelectGroup<T extends string = string> {
|
|
16
|
+
heading?: string;
|
|
17
|
+
options: SelectOption<T>[];
|
|
18
|
+
}
|
|
19
|
+
export type SelectSize = ControlSize;
|
|
20
|
+
interface SelectBaseProps<T extends string = string> {
|
|
21
|
+
/** The currently selected value */
|
|
22
|
+
value?: T;
|
|
23
|
+
/** Callback when selection changes. Receives undefined when deselected. */
|
|
24
|
+
onChange: (value: T | undefined) => void;
|
|
25
|
+
/** Placeholder text when no value is selected */
|
|
26
|
+
placeholder?: string;
|
|
27
|
+
/** Placeholder text for the search input */
|
|
28
|
+
searchPlaceholder?: string;
|
|
29
|
+
/** Whether the select is disabled */
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
/** Exact trigger height: xs=20px, sm=24px, md=32px, lg=40px. */
|
|
32
|
+
size?: SelectSize;
|
|
33
|
+
/** Text to show when no options match the search */
|
|
34
|
+
emptyText?: string;
|
|
35
|
+
/** Allow deselecting the current value by clicking it again (default: false) */
|
|
36
|
+
allowDeselect?: boolean;
|
|
37
|
+
/** Hide the search input (default: true, search is hidden) */
|
|
38
|
+
hideSearch?: boolean;
|
|
39
|
+
/** Disable client-side filtering by cmdk (default: false). Set true for server-side filtering. */
|
|
40
|
+
disableFilter?: boolean;
|
|
41
|
+
/** Callback when the search input value changes. Useful for server-side filtering. */
|
|
42
|
+
onSearchChange?: (query: string) => void;
|
|
43
|
+
/** Whether more items are currently being loaded */
|
|
44
|
+
loading?: boolean;
|
|
45
|
+
/** Number of skeleton rows to show while loading (default: 5) */
|
|
46
|
+
loadingRows?: number;
|
|
47
|
+
/** Callback when the user scrolls near the end of the list. Use for infinite loading. */
|
|
48
|
+
onEndReached?: () => void;
|
|
49
|
+
/** Distance in pixels from the bottom to trigger onEndReached (default: 50) */
|
|
50
|
+
endReachedThresholdPx?: number;
|
|
51
|
+
/** Additional class name for the trigger button */
|
|
52
|
+
triggerClassName?: string;
|
|
53
|
+
/** Additional class name for the popover content */
|
|
54
|
+
contentClassName?: string;
|
|
55
|
+
/** Custom render function for the selected value in the trigger */
|
|
56
|
+
renderValue?: (option: SelectOption<T>) => ReactNode;
|
|
57
|
+
/** Custom render function for each option in the list */
|
|
58
|
+
renderOption?: (option: SelectOption<T>, isSelected: boolean) => ReactNode;
|
|
59
|
+
/** Side of the trigger to align the popover */
|
|
60
|
+
side?: 'top' | 'bottom' | 'left' | 'right';
|
|
61
|
+
/** Alignment of the popover relative to the trigger */
|
|
62
|
+
align?: 'start' | 'center' | 'end';
|
|
63
|
+
/** aria-label for the trigger button */
|
|
64
|
+
'aria-label'?: string;
|
|
65
|
+
/** Test id for the trigger button */
|
|
66
|
+
'data-testid'?: string;
|
|
67
|
+
}
|
|
68
|
+
export type SelectProps<T extends string = string> = SelectBaseProps<T> & ({
|
|
69
|
+
options: SelectOption<T>[];
|
|
70
|
+
groups?: never;
|
|
71
|
+
} | {
|
|
72
|
+
groups: SelectGroup<T>[];
|
|
73
|
+
options?: never;
|
|
74
|
+
}) & ({
|
|
75
|
+
/** Controlled open state */
|
|
76
|
+
open: boolean;
|
|
77
|
+
/** Callback when open state changes (required when `open` is provided) */
|
|
78
|
+
onOpenChange: (open: boolean) => void;
|
|
79
|
+
} | {
|
|
80
|
+
open?: never;
|
|
81
|
+
onOpenChange?: never;
|
|
82
|
+
});
|
|
83
|
+
export declare function Select<T extends string = string>(props: SelectProps<T>): React.ReactElement<unknown>;
|
|
84
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { CONTROL_SIZES } from "../../utils/componentSizes.js";
|
|
3
|
+
import { Text } from "../Text/Text.js";
|
|
4
|
+
import { CaretDownIcon } from "../../icons/PaddedPhosphorIcons.js";
|
|
5
|
+
import { Icon } from "../Icon/Icon.js";
|
|
6
|
+
import { Button } from "../Button/Button.js";
|
|
7
|
+
import { Popover, PopoverContent, PopoverTrigger } from "../Popover/Popover.js";
|
|
8
|
+
import { CommandMenu } from "../Command/CommandMenu.js";
|
|
9
|
+
import { CONTROL_ICON_SIZES } from "../../utils/controlIconSizes.js";
|
|
10
|
+
import { useCallback, useMemo, useState } from "react";
|
|
11
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
//#region packages/components/src/components/Select/Select.tsx
|
|
13
|
+
function optionToItem(opt) {
|
|
14
|
+
return {
|
|
15
|
+
value: opt.value,
|
|
16
|
+
label: opt.label,
|
|
17
|
+
description: opt.description,
|
|
18
|
+
rightDecorator: opt.rightDecorator,
|
|
19
|
+
disabled: opt.disabled,
|
|
20
|
+
keywords: opt.label ? [opt.label] : void 0
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function OptionSelect({ value, onChange, options, groups, placeholder = "Select...", searchPlaceholder = "Search...", disabled = false, size = "sm", emptyText = "No results found.", open: controlledOpen, onOpenChange: controlledOnOpenChange, allowDeselect, hideSearch = true, disableFilter, onSearchChange, loading, loadingRows, onEndReached, endReachedThresholdPx, triggerClassName, contentClassName, renderValue, renderOption, side, align = "start", "aria-label": ariaLabel, "data-testid": dataTestId }) {
|
|
24
|
+
const [uncontrolledOpen, setUncontrolledOpen] = useState(false);
|
|
25
|
+
const isControlled = controlledOpen !== void 0;
|
|
26
|
+
const open = isControlled ? controlledOpen : uncontrolledOpen;
|
|
27
|
+
const setOpen = isControlled ? controlledOnOpenChange : setUncontrolledOpen;
|
|
28
|
+
const allOptions = useMemo(() => groups ? groups.flatMap((g) => g.options) : options ?? [], [groups, options]);
|
|
29
|
+
const selectedOption = useMemo(() => allOptions.find((opt) => opt.value === value), [allOptions, value]);
|
|
30
|
+
const handleSelect = useCallback((optionValue) => {
|
|
31
|
+
const match = allOptions.find((o) => o.value === optionValue);
|
|
32
|
+
if (!match) return;
|
|
33
|
+
if (allowDeselect && match.value === value) onChange(void 0);
|
|
34
|
+
else onChange(match.value);
|
|
35
|
+
setOpen(false);
|
|
36
|
+
}, [
|
|
37
|
+
allowDeselect,
|
|
38
|
+
value,
|
|
39
|
+
onChange,
|
|
40
|
+
setOpen,
|
|
41
|
+
allOptions
|
|
42
|
+
]);
|
|
43
|
+
const items = useMemo(() => (options ?? []).map(optionToItem), [options]);
|
|
44
|
+
const commandGroups = useMemo(() => groups?.map((g) => ({
|
|
45
|
+
heading: g.heading,
|
|
46
|
+
items: g.options.map(optionToItem)
|
|
47
|
+
})), [groups]);
|
|
48
|
+
const renderItem = renderOption ? (item, isSelected) => {
|
|
49
|
+
const option = allOptions.find((o) => o.value === item.value);
|
|
50
|
+
return option ? renderOption(option, isSelected) : null;
|
|
51
|
+
} : void 0;
|
|
52
|
+
const searchInputSize = size === "xs" ? "sm" : size === "lg" ? "md" : size;
|
|
53
|
+
const triggerButtonSize = size === "lg" ? "md" : size;
|
|
54
|
+
const commandMenuSharedProps = {
|
|
55
|
+
value,
|
|
56
|
+
onSelect: handleSelect,
|
|
57
|
+
placeholder: searchPlaceholder,
|
|
58
|
+
emptyText,
|
|
59
|
+
hideSearch,
|
|
60
|
+
disableFilter,
|
|
61
|
+
onSearchChange,
|
|
62
|
+
loading,
|
|
63
|
+
loadingRows,
|
|
64
|
+
onEndReached,
|
|
65
|
+
endReachedThresholdPx,
|
|
66
|
+
renderItem,
|
|
67
|
+
inputSize: searchInputSize
|
|
68
|
+
};
|
|
69
|
+
const triggerContent = selectedOption && renderValue ? renderValue(selectedOption) : /* @__PURE__ */ jsx(Text, {
|
|
70
|
+
as: "span",
|
|
71
|
+
variant: triggerButtonSize,
|
|
72
|
+
weight: "normal",
|
|
73
|
+
className: "min-w-0 truncate text-left",
|
|
74
|
+
children: selectedOption ? selectedOption.label ?? selectedOption.value : placeholder
|
|
75
|
+
});
|
|
76
|
+
return /* @__PURE__ */ jsxs(Popover, {
|
|
77
|
+
open,
|
|
78
|
+
onOpenChange: setOpen,
|
|
79
|
+
children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
80
|
+
asChild: true,
|
|
81
|
+
children: /* @__PURE__ */ jsxs(Button, {
|
|
82
|
+
role: "combobox",
|
|
83
|
+
"aria-expanded": open,
|
|
84
|
+
"aria-label": ariaLabel ?? placeholder,
|
|
85
|
+
variant: "outlined",
|
|
86
|
+
color: "secondary",
|
|
87
|
+
size: triggerButtonSize,
|
|
88
|
+
className: cn("box-border w-full justify-between py-0", CONTROL_SIZES[size].heightClassName, triggerClassName),
|
|
89
|
+
disabled,
|
|
90
|
+
"data-testid": dataTestId,
|
|
91
|
+
children: [triggerContent, /* @__PURE__ */ jsx(Icon, {
|
|
92
|
+
"aria-hidden": true,
|
|
93
|
+
icon: CaretDownIcon,
|
|
94
|
+
iconClassName: CONTROL_ICON_SIZES[size].iconClassName,
|
|
95
|
+
className: "text-inherit",
|
|
96
|
+
weight: "regular"
|
|
97
|
+
})]
|
|
98
|
+
})
|
|
99
|
+
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
100
|
+
className: cn("w-max min-w-[var(--radix-popover-trigger-width)] max-w-[min(24rem,calc(100vw-1rem))] p-0 text-primary", contentClassName),
|
|
101
|
+
side,
|
|
102
|
+
align,
|
|
103
|
+
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
104
|
+
children: commandGroups ? /* @__PURE__ */ jsx(CommandMenu, {
|
|
105
|
+
groups: commandGroups,
|
|
106
|
+
...commandMenuSharedProps
|
|
107
|
+
}) : /* @__PURE__ */ jsx(CommandMenu, {
|
|
108
|
+
items,
|
|
109
|
+
...commandMenuSharedProps
|
|
110
|
+
})
|
|
111
|
+
})]
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function Select(props) {
|
|
115
|
+
return /* @__PURE__ */ jsx(OptionSelect, { ...props });
|
|
116
|
+
}
|
|
117
|
+
//#endregion
|
|
118
|
+
export { Select };
|
|
119
|
+
|
|
120
|
+
//# sourceMappingURL=Select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.js","names":[],"sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { CaretDownIcon } from '../../icons/PaddedPhosphorIcons';\nimport { cn } from '../../utils/cn';\nimport { CONTROL_SIZES, type ControlSize } from '../../utils/componentSizes';\nimport { CONTROL_ICON_SIZES } from '../../utils/controlIconSizes';\nimport { Button } from '../Button';\nimport { CommandMenu } from '../Command/CommandMenu';\nimport type { CommandMenuGroup, CommandMenuItem } from '../Command/CommandMenu';\nimport { Icon } from '../Icon';\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover';\nimport { Text } from '../Text';\n\nexport interface SelectOption<T extends string = string> {\n /** The value used for selection and filtering */\n value: T;\n /** Display label (defaults to value if not provided) */\n label?: string;\n /** Secondary description text displayed below the label */\n description?: string;\n /** Element displayed on the right side of the item (e.g. badge, shortcut) */\n rightDecorator?: ReactNode;\n /** Whether this option is disabled */\n disabled?: boolean;\n}\n\nexport interface SelectGroup<T extends string = string> {\n heading?: string;\n options: SelectOption<T>[];\n}\n\nexport type SelectSize = ControlSize;\n\ninterface SelectBaseProps<T extends string = string> {\n /** The currently selected value */\n value?: T;\n /** Callback when selection changes. Receives undefined when deselected. */\n onChange: (value: T | undefined) => void;\n /** Placeholder text when no value is selected */\n placeholder?: string;\n /** Placeholder text for the search input */\n searchPlaceholder?: string;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Exact trigger height: xs=20px, sm=24px, md=32px, lg=40px. */\n size?: SelectSize;\n /** Text to show when no options match the search */\n emptyText?: string;\n /** Allow deselecting the current value by clicking it again (default: false) */\n allowDeselect?: boolean;\n /** Hide the search input (default: true, search is hidden) */\n hideSearch?: boolean;\n /** Disable client-side filtering by cmdk (default: false). Set true for server-side filtering. */\n disableFilter?: boolean;\n /** Callback when the search input value changes. Useful for server-side filtering. */\n onSearchChange?: (query: string) => void;\n /** Whether more items are currently being loaded */\n loading?: boolean;\n /** Number of skeleton rows to show while loading (default: 5) */\n loadingRows?: number;\n /** Callback when the user scrolls near the end of the list. Use for infinite loading. */\n onEndReached?: () => void;\n /** Distance in pixels from the bottom to trigger onEndReached (default: 50) */\n endReachedThresholdPx?: number;\n /** Additional class name for the trigger button */\n triggerClassName?: string;\n /** Additional class name for the popover content */\n contentClassName?: string;\n /** Custom render function for the selected value in the trigger */\n renderValue?: (option: SelectOption<T>) => ReactNode;\n /** Custom render function for each option in the list */\n renderOption?: (option: SelectOption<T>, isSelected: boolean) => ReactNode;\n /** Side of the trigger to align the popover */\n side?: 'top' | 'bottom' | 'left' | 'right';\n /** Alignment of the popover relative to the trigger */\n align?: 'start' | 'center' | 'end';\n /** aria-label for the trigger button */\n 'aria-label'?: string;\n /** Test id for the trigger button */\n 'data-testid'?: string;\n}\n\nexport type SelectProps<T extends string = string> = SelectBaseProps<T> &\n (\n | {\n options: SelectOption<T>[];\n groups?: never;\n }\n | {\n groups: SelectGroup<T>[];\n options?: never;\n }\n ) &\n (\n | {\n /** Controlled open state */\n open: boolean;\n /** Callback when open state changes (required when `open` is provided) */\n onOpenChange: (open: boolean) => void;\n }\n | {\n open?: never;\n onOpenChange?: never;\n }\n );\n\nfunction optionToItem(opt: SelectOption): CommandMenuItem {\n return {\n value: opt.value,\n label: opt.label,\n description: opt.description,\n rightDecorator: opt.rightDecorator,\n disabled: opt.disabled,\n keywords: opt.label ? [opt.label] : undefined,\n };\n}\n\nfunction OptionSelect<T extends string = string>({\n value,\n onChange,\n options,\n groups,\n placeholder = 'Select...',\n searchPlaceholder = 'Search...',\n disabled = false,\n size = 'sm',\n emptyText = 'No results found.',\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n allowDeselect,\n hideSearch = true,\n disableFilter,\n onSearchChange,\n loading,\n loadingRows,\n onEndReached,\n endReachedThresholdPx,\n triggerClassName,\n contentClassName,\n renderValue,\n renderOption,\n side,\n align = 'start',\n 'aria-label': ariaLabel,\n 'data-testid': dataTestId,\n}: SelectProps<T>) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n const setOpen = isControlled ? controlledOnOpenChange : setUncontrolledOpen;\n\n const allOptions = useMemo<SelectOption<T>[]>(\n () => (groups ? groups.flatMap((g) => g.options) : (options ?? [])),\n [groups, options]\n );\n\n const selectedOption = useMemo(\n () => allOptions.find((opt) => opt.value === value),\n [allOptions, value]\n );\n\n const handleSelect = useCallback(\n (optionValue: string) => {\n const match = allOptions.find((o) => o.value === optionValue);\n if (!match) return;\n if (allowDeselect && match.value === value) {\n onChange(undefined);\n } else {\n onChange(match.value);\n }\n setOpen(false);\n },\n [allowDeselect, value, onChange, setOpen, allOptions]\n );\n\n const items: CommandMenuItem[] = useMemo(\n () => (options ?? []).map(optionToItem),\n [options]\n );\n\n const commandGroups: CommandMenuGroup[] | undefined = useMemo(\n () =>\n groups?.map((g) => ({\n heading: g.heading,\n items: g.options.map(optionToItem),\n })),\n [groups]\n );\n\n const renderItem = renderOption\n ? (item: CommandMenuItem, isSelected: boolean) => {\n const option = allOptions.find((o) => o.value === item.value);\n return option ? renderOption(option, isSelected) : null;\n }\n : undefined;\n const searchInputSize = size === 'xs' ? 'sm' : size === 'lg' ? 'md' : size;\n const triggerButtonSize = size === 'lg' ? 'md' : size;\n\n const commandMenuSharedProps = {\n value,\n onSelect: handleSelect,\n placeholder: searchPlaceholder,\n emptyText,\n hideSearch,\n disableFilter,\n onSearchChange,\n loading,\n loadingRows,\n onEndReached,\n endReachedThresholdPx,\n renderItem,\n inputSize: searchInputSize,\n };\n\n const triggerContent =\n selectedOption && renderValue ? (\n renderValue(selectedOption)\n ) : (\n <Text\n as=\"span\"\n variant={triggerButtonSize}\n weight=\"normal\"\n className=\"min-w-0 truncate text-left\"\n >\n {selectedOption\n ? (selectedOption.label ?? selectedOption.value)\n : placeholder}\n </Text>\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n role=\"combobox\"\n aria-expanded={open}\n aria-label={ariaLabel ?? placeholder}\n variant=\"outlined\"\n color=\"secondary\"\n size={triggerButtonSize}\n className={cn(\n 'box-border w-full justify-between py-0',\n CONTROL_SIZES[size].heightClassName,\n triggerClassName\n )}\n disabled={disabled}\n data-testid={dataTestId}\n >\n {triggerContent}\n <Icon\n aria-hidden\n icon={CaretDownIcon}\n iconClassName={CONTROL_ICON_SIZES[size].iconClassName}\n className=\"text-inherit\"\n weight=\"regular\"\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n 'w-max min-w-[var(--radix-popover-trigger-width)] max-w-[min(24rem,calc(100vw-1rem))] p-0 text-primary',\n contentClassName\n )}\n side={side}\n align={align}\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n {commandGroups ? (\n <CommandMenu groups={commandGroups} {...commandMenuSharedProps} />\n ) : (\n <CommandMenu items={items} {...commandMenuSharedProps} />\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function Select<T extends string = string>(\n props: SelectProps<T>\n): React.ReactElement<unknown> {\n return <OptionSelect {...props} />;\n}\n"],"mappings":";;;;;;;;;;;;AA2GA,SAAS,aAAa,KAAoC;CACxD,OAAO;EACL,OAAO,IAAI;EACX,OAAO,IAAI;EACX,aAAa,IAAI;EACjB,gBAAgB,IAAI;EACpB,UAAU,IAAI;EACd,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,KAAA;CACtC;AACF;AAEA,SAAS,aAAwC,EAC/C,OACA,UACA,SACA,QACA,cAAc,aACd,oBAAoB,aACpB,WAAW,OACX,OAAO,MACP,YAAY,qBACZ,MAAM,gBACN,cAAc,wBACd,eACA,aAAa,MACb,eACA,gBACA,SACA,aACA,cACA,uBACA,kBACA,kBACA,aACA,cACA,MACA,QAAQ,SACR,cAAc,WACd,eAAe,cACE;CACjB,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,KAAK;CAC9D,MAAM,eAAe,mBAAmB,KAAA;CACxC,MAAM,OAAO,eAAe,iBAAiB;CAC7C,MAAM,UAAU,eAAe,yBAAyB;CAExD,MAAM,aAAa,cACV,SAAS,OAAO,SAAS,MAAM,EAAE,OAAO,IAAK,WAAW,CAAC,GAChE,CAAC,QAAQ,OAAO,CAClB;CAEA,MAAM,iBAAiB,cACf,WAAW,MAAM,QAAQ,IAAI,UAAU,KAAK,GAClD,CAAC,YAAY,KAAK,CACpB;CAEA,MAAM,eAAe,aAClB,gBAAwB;EACvB,MAAM,QAAQ,WAAW,MAAM,MAAM,EAAE,UAAU,WAAW;EAC5D,IAAI,CAAC,OAAO;EACZ,IAAI,iBAAiB,MAAM,UAAU,OACnC,SAAS,KAAA,CAAS;OAElB,SAAS,MAAM,KAAK;EAEtB,QAAQ,KAAK;CACf,GACA;EAAC;EAAe;EAAO;EAAU;EAAS;CAAU,CACtD;CAEA,MAAM,QAA2B,eACxB,WAAW,CAAC,EAAA,CAAG,IAAI,YAAY,GACtC,CAAC,OAAO,CACV;CAEA,MAAM,gBAAgD,cAElD,QAAQ,KAAK,OAAO;EAClB,SAAS,EAAE;EACX,OAAO,EAAE,QAAQ,IAAI,YAAY;CACnC,EAAE,GACJ,CAAC,MAAM,CACT;CAEA,MAAM,aAAa,gBACd,MAAuB,eAAwB;EAC9C,MAAM,SAAS,WAAW,MAAM,MAAM,EAAE,UAAU,KAAK,KAAK;EAC5D,OAAO,SAAS,aAAa,QAAQ,UAAU,IAAI;CACrD,IACA,KAAA;CACJ,MAAM,kBAAkB,SAAS,OAAO,OAAO,SAAS,OAAO,OAAO;CACtE,MAAM,oBAAoB,SAAS,OAAO,OAAO;CAEjD,MAAM,yBAAyB;EAC7B;EACA,UAAU;EACV,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;CACb;CAEA,MAAM,iBACJ,kBAAkB,cAChB,YAAY,cAAc,IAE1B,oBAAC,MAAD;EACE,IAAG;EACH,SAAS;EACT,QAAO;EACP,WAAU;EAET,UAAA,iBACI,eAAe,SAAS,eAAe,QACxC;CACA,CAAA;CAGV,OACE,qBAAC,SAAD;EAAe;EAAM,cAAc;EAAnC,UAAA,CACE,oBAAC,gBAAD;GAAgB,SAAA;GACd,UAAA,qBAAC,QAAD;IACE,MAAK;IACL,iBAAe;IACf,cAAY,aAAa;IACzB,SAAQ;IACR,OAAM;IACN,MAAM;IACN,WAAW,GACT,0CACA,cAAc,KAAK,CAAC,iBACpB,gBACF;IACU;IACV,eAAa;IAbf,UAAA,CAeG,gBACD,oBAAC,MAAD;KACE,eAAA;KACA,MAAM;KACN,eAAe,mBAAmB,KAAK,CAAC;KACxC,WAAU;KACV,QAAO;IACR,CAAA,CACK;;EACM,CAAA,GAChB,oBAAC,gBAAD;GACE,WAAW,GACT,yGACA,gBACF;GACM;GACC;GACP,mBAAmB,MAAM,EAAE,eAAe;GAEzC,UAAA,gBACC,oBAAC,aAAD;IAAa,QAAQ;IAAe,GAAI;GAAyB,CAAA,IAEjE,oBAAC,aAAD;IAAoB;IAAO,GAAI;GAAyB,CAAA;EAE5C,CAAA,CACT;;AAEb;AAEA,SAAgB,OACd,OAC6B;CAC7B,OAAO,oBAAC,cAAD,EAAc,GAAI,MAAQ,CAAA;AACnC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as RadixSelect from '@radix-ui/react-select';
|
|
3
|
+
export declare const SelectRoot: typeof RadixSelect.Root;
|
|
4
|
+
export type SelectTriggerProps = React.ComponentPropsWithoutRef<typeof RadixSelect.Trigger> & {
|
|
5
|
+
iconClassName?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<RadixSelect.SelectTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & {
|
|
8
|
+
iconClassName?: string;
|
|
9
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
10
|
+
export declare const SelectContent: React.ForwardRefExoticComponent<Omit<RadixSelect.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
export declare const SelectLabel: React.ForwardRefExoticComponent<Omit<RadixSelect.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
export declare const SelectItem: React.ForwardRefExoticComponent<Omit<RadixSelect.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
13
|
+
checkmarkPosition?: "left" | "right";
|
|
14
|
+
selectedIndicator?: "checkmark" | "background";
|
|
15
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
16
|
+
export declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<RadixSelect.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
+
export declare const SelectValue: React.ForwardRefExoticComponent<RadixSelect.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
|