@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,314 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import zIndices from "../../utils/zIndices.js";
|
|
3
|
+
import { useZIndex } from "../../utils/useZIndex.js";
|
|
4
|
+
import { ZIndexProvider } from "../../utils/ZIndexContext.js";
|
|
5
|
+
import UnsavedChangesDialog from "../UnsavedChangesDialog.js";
|
|
6
|
+
import { createPortalSlot } from "../PortalSlot.js";
|
|
7
|
+
import { registerOpenPane } from "./openPaneRegistry.js";
|
|
8
|
+
import { HeaderTitleActionSlot, SplitViewPaneHeader } from "./SplitViewPaneHeader.js";
|
|
9
|
+
import { Fragment, createContext, useCallback, useContext, useEffect, useId, useLayoutEffect, useRef, useState } from "react";
|
|
10
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
import { useHotkeys } from "react-hotkeys-hook";
|
|
12
|
+
import { Transition, TransitionChild } from "@headlessui/react";
|
|
13
|
+
import * as Portal from "@radix-ui/react-portal";
|
|
14
|
+
//#region packages/components/src/components/SplitViewPane/SplitViewPane.tsx
|
|
15
|
+
var PaneDepth = createContext(0);
|
|
16
|
+
var useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
|
|
17
|
+
var MINIMUM_LEFT_MARGIN_PX = 100;
|
|
18
|
+
var MINIMUM_PANE_WIDTH_PX = 500;
|
|
19
|
+
var KEYBOARD_RESIZE_STEP_PX = 10;
|
|
20
|
+
var MAX_INITIAL_PANE_WIDTH_PX = 1280;
|
|
21
|
+
var INITIAL_PANE_WIDTH_RATIO = 2 / 3;
|
|
22
|
+
var RESIZE_HANDLE_OUTSET_PX = 8;
|
|
23
|
+
var RESIZE_HANDLE_WIDTH_PX = 20;
|
|
24
|
+
var PANE_TRANSITION_CLASSES = {
|
|
25
|
+
enter: "duration-normal motion-reduce:duration-0",
|
|
26
|
+
enterFrom: "opacity-0",
|
|
27
|
+
enterTo: "animate-slide-left opacity-100 motion-reduce:animate-none",
|
|
28
|
+
leave: "duration-normal motion-reduce:duration-0",
|
|
29
|
+
leaveFrom: "opacity-100",
|
|
30
|
+
leaveTo: "animate-slide-right opacity-0 motion-reduce:animate-none"
|
|
31
|
+
};
|
|
32
|
+
var getClientWidth = () => {
|
|
33
|
+
if (typeof document === "undefined" || typeof window === "undefined") return 0;
|
|
34
|
+
return Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
|
|
35
|
+
};
|
|
36
|
+
function getAvailableWidth(element) {
|
|
37
|
+
if (typeof document === "undefined") return 0;
|
|
38
|
+
const style = getComputedStyle(element ?? document.documentElement);
|
|
39
|
+
const reservedRight = Number.parseFloat(element ? style.right : style.getPropertyValue("--polly-chat-width"));
|
|
40
|
+
return Math.max(0, getClientWidth() - (reservedRight || 0));
|
|
41
|
+
}
|
|
42
|
+
function clampLeft(value, width, minPaneWidthPx = MINIMUM_PANE_WIDTH_PX) {
|
|
43
|
+
const maximumLeft = Math.max(0, width - minPaneWidthPx);
|
|
44
|
+
return Math.min(maximumLeft, Math.max(MINIMUM_LEFT_MARGIN_PX, value));
|
|
45
|
+
}
|
|
46
|
+
function defaultLeft(props, width) {
|
|
47
|
+
if (props.sidePaneId != null && typeof window !== "undefined") {
|
|
48
|
+
const value = window.localStorage.getItem(`SidePanelGroup:sizes:${props.sidePaneId}`);
|
|
49
|
+
const pastRatio = Number.parseFloat(value ?? "");
|
|
50
|
+
if (!Number.isNaN(pastRatio)) return clampLeft(width - (width * pastRatio - props.offsetPx), width, props.minWidthPx);
|
|
51
|
+
}
|
|
52
|
+
return clampLeft(width - (Math.min(props.defaultWidthPx ?? MAX_INITIAL_PANE_WIDTH_PX, width * INITIAL_PANE_WIDTH_RATIO) - props.offsetPx), width, props.minWidthPx);
|
|
53
|
+
}
|
|
54
|
+
function useShowChildren({ open, children }) {
|
|
55
|
+
const [showChildren, setShowChildren] = useState(children);
|
|
56
|
+
useIsomorphicLayoutEffect(() => {
|
|
57
|
+
if (open) setShowChildren(children);
|
|
58
|
+
}, [open, children]);
|
|
59
|
+
return showChildren;
|
|
60
|
+
}
|
|
61
|
+
function useResize(props) {
|
|
62
|
+
const target = useRef(null);
|
|
63
|
+
const container = useRef(null);
|
|
64
|
+
const [element, setElement] = useState(null);
|
|
65
|
+
const containerRef = useCallback((node) => {
|
|
66
|
+
container.current = node;
|
|
67
|
+
setElement(node);
|
|
68
|
+
}, []);
|
|
69
|
+
const resizing = useRef(false);
|
|
70
|
+
const initialProps = useRef(props);
|
|
71
|
+
const [width, setWidth] = useState(0);
|
|
72
|
+
const [left, setLeft] = useState(MINIMUM_LEFT_MARGIN_PX);
|
|
73
|
+
useIsomorphicLayoutEffect(() => {
|
|
74
|
+
const width = getAvailableWidth();
|
|
75
|
+
setWidth(width);
|
|
76
|
+
setLeft(defaultLeft(initialProps.current, width));
|
|
77
|
+
}, []);
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (props.overrideWidthPx) {
|
|
80
|
+
const desiredWidth = props.overrideWidthPx - props.offsetPx;
|
|
81
|
+
setLeft(clampLeft(width - desiredWidth, width, props.minWidthPx));
|
|
82
|
+
}
|
|
83
|
+
}, [
|
|
84
|
+
props.overrideWidthPx,
|
|
85
|
+
props.offsetPx,
|
|
86
|
+
props.minWidthPx,
|
|
87
|
+
width
|
|
88
|
+
]);
|
|
89
|
+
const onMouseDown = useCallback((e) => {
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
resizing.current = true;
|
|
92
|
+
if (target.current) target.current.dataset.resizeHandleActive = "true";
|
|
93
|
+
}, []);
|
|
94
|
+
const onMouseUp = useCallback(() => {
|
|
95
|
+
if (resizing.current) {
|
|
96
|
+
resizing.current = false;
|
|
97
|
+
if (target.current) delete target.current.dataset.resizeHandleActive;
|
|
98
|
+
}
|
|
99
|
+
}, []);
|
|
100
|
+
const doResizeBounded = useCallback((desiredX) => {
|
|
101
|
+
if (container.current) {
|
|
102
|
+
const width = getAvailableWidth(container.current);
|
|
103
|
+
const bounded = clampLeft(desiredX, width, props.minWidthPx);
|
|
104
|
+
if (props.sidePaneId != null && width > 0) {
|
|
105
|
+
const ratio = (width - bounded) / width;
|
|
106
|
+
window.localStorage.setItem(`SidePanelGroup:sizes:${props.sidePaneId}`, ratio.toString());
|
|
107
|
+
}
|
|
108
|
+
container.current.style.left = `${bounded}px`;
|
|
109
|
+
if (target.current) {
|
|
110
|
+
target.current.style.left = `${bounded - RESIZE_HANDLE_OUTSET_PX}px`;
|
|
111
|
+
target.current.setAttribute("aria-valuenow", bounded.toString());
|
|
112
|
+
}
|
|
113
|
+
setLeft(bounded);
|
|
114
|
+
}
|
|
115
|
+
}, [props.sidePaneId, props.minWidthPx]);
|
|
116
|
+
const onMouseMove = useCallback((e) => {
|
|
117
|
+
if (resizing.current && container.current) {
|
|
118
|
+
e.preventDefault();
|
|
119
|
+
doResizeBounded(e.clientX);
|
|
120
|
+
}
|
|
121
|
+
}, [doResizeBounded]);
|
|
122
|
+
const onResize = useCallback(() => {
|
|
123
|
+
setWidth(getAvailableWidth(container.current));
|
|
124
|
+
if (container.current) doResizeBounded(Number.parseFloat(container.current.style.left));
|
|
125
|
+
}, [doResizeBounded]);
|
|
126
|
+
const onKeyDown = (e) => {
|
|
127
|
+
const desiredLeft = e.key === "ArrowLeft" ? left - KEYBOARD_RESIZE_STEP_PX : e.key === "ArrowRight" ? left + KEYBOARD_RESIZE_STEP_PX : e.key === "Home" ? 0 : e.key === "End" ? width : void 0;
|
|
128
|
+
if (desiredLeft === void 0) return;
|
|
129
|
+
e.preventDefault();
|
|
130
|
+
doResizeBounded(desiredLeft);
|
|
131
|
+
};
|
|
132
|
+
useIsomorphicLayoutEffect(() => {
|
|
133
|
+
if (!element) return;
|
|
134
|
+
onResize();
|
|
135
|
+
const observer = new ResizeObserver(onResize);
|
|
136
|
+
observer.observe(element);
|
|
137
|
+
return () => observer.disconnect();
|
|
138
|
+
}, [element, onResize]);
|
|
139
|
+
useEffect(() => {
|
|
140
|
+
window.addEventListener("resize", onResize);
|
|
141
|
+
document.addEventListener("mouseup", onMouseUp);
|
|
142
|
+
document.addEventListener("mousemove", onMouseMove);
|
|
143
|
+
return () => {
|
|
144
|
+
window.removeEventListener("resize", onResize);
|
|
145
|
+
document.removeEventListener("mouseup", onMouseUp);
|
|
146
|
+
document.removeEventListener("mousemove", onMouseMove);
|
|
147
|
+
};
|
|
148
|
+
}, [
|
|
149
|
+
onMouseMove,
|
|
150
|
+
onMouseUp,
|
|
151
|
+
onResize
|
|
152
|
+
]);
|
|
153
|
+
useEffect(() => {
|
|
154
|
+
if (props.open && left !== clampLeft(left, width, props.minWidthPx)) setLeft(defaultLeft(props, width));
|
|
155
|
+
}, [
|
|
156
|
+
props,
|
|
157
|
+
left,
|
|
158
|
+
width
|
|
159
|
+
]);
|
|
160
|
+
return {
|
|
161
|
+
left,
|
|
162
|
+
width,
|
|
163
|
+
onMouseDown,
|
|
164
|
+
onKeyDown,
|
|
165
|
+
target,
|
|
166
|
+
container,
|
|
167
|
+
containerRef
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
var CustomHeaderSlot = createPortalSlot();
|
|
171
|
+
function SplitViewPane({ open, onClose, onExpand, onNext, onPrevious, children, title, className, sidePaneId, hideArrows, customHeader, useCustomHeaderSlot, defaultWidthPx, overrideWidthPx, minWidthPx, requireConfirmationOnClose = false, dismissOnOutsideClick = false, scrollContainer = "outer", headerClassName }) {
|
|
172
|
+
const depth = useContext(PaneDepth);
|
|
173
|
+
const showChildren = useShowChildren({
|
|
174
|
+
children,
|
|
175
|
+
open
|
|
176
|
+
});
|
|
177
|
+
const { left, width, onMouseDown, onKeyDown, target, container, containerRef } = useResize({
|
|
178
|
+
offsetPx: depth * 4.5 * 16,
|
|
179
|
+
sidePaneId,
|
|
180
|
+
defaultWidthPx,
|
|
181
|
+
overrideWidthPx,
|
|
182
|
+
minWidthPx,
|
|
183
|
+
open
|
|
184
|
+
});
|
|
185
|
+
const onCloseRef = useRef(onClose);
|
|
186
|
+
onCloseRef.current = onClose;
|
|
187
|
+
const [showConfirmModal, setShowConfirmModal] = useState(false);
|
|
188
|
+
const paneZIndex = useZIndex(zIndices.pane);
|
|
189
|
+
const paneId = useId();
|
|
190
|
+
const titleId = title && !customHeader && !useCustomHeaderSlot ? `${paneId}-title` : void 0;
|
|
191
|
+
const maximumLeft = Math.max(0, width - (minWidthPx ?? MINIMUM_PANE_WIDTH_PX));
|
|
192
|
+
const minimumLeft = Math.min(MINIMUM_LEFT_MARGIN_PX, maximumLeft);
|
|
193
|
+
const handleCloseClick = useCallback((e) => {
|
|
194
|
+
if (requireConfirmationOnClose) {
|
|
195
|
+
e?.preventDefault();
|
|
196
|
+
e?.stopPropagation();
|
|
197
|
+
setShowConfirmModal(true);
|
|
198
|
+
} else onCloseRef.current?.();
|
|
199
|
+
}, [requireConfirmationOnClose]);
|
|
200
|
+
const handleCloseClickRef = useRef(handleCloseClick);
|
|
201
|
+
handleCloseClickRef.current = handleCloseClick;
|
|
202
|
+
useEffect(() => {
|
|
203
|
+
if (!open) return;
|
|
204
|
+
return registerOpenPane(paneId, paneZIndex, container, (event) => handleCloseClickRef.current(event), dismissOnOutsideClick ? (event) => handleCloseClickRef.current(event) : void 0);
|
|
205
|
+
}, [
|
|
206
|
+
container,
|
|
207
|
+
dismissOnOutsideClick,
|
|
208
|
+
open,
|
|
209
|
+
paneId,
|
|
210
|
+
paneZIndex
|
|
211
|
+
]);
|
|
212
|
+
const nextRef = useRef(onNext);
|
|
213
|
+
nextRef.current = onNext;
|
|
214
|
+
const prevRef = useRef(onPrevious);
|
|
215
|
+
prevRef.current = onPrevious;
|
|
216
|
+
useHotkeys("j", () => {
|
|
217
|
+
nextRef.current?.();
|
|
218
|
+
}, { enabled: open && onNext != null });
|
|
219
|
+
useHotkeys("k", () => {
|
|
220
|
+
prevRef.current?.();
|
|
221
|
+
}, { enabled: open && onPrevious != null });
|
|
222
|
+
const renderHeader = () => {
|
|
223
|
+
if (customHeader) return customHeader;
|
|
224
|
+
if (useCustomHeaderSlot) return /* @__PURE__ */ jsx(CustomHeaderSlot.Slot, {});
|
|
225
|
+
return /* @__PURE__ */ jsx(SplitViewPaneHeader, {
|
|
226
|
+
title,
|
|
227
|
+
open,
|
|
228
|
+
onClose: handleCloseClick,
|
|
229
|
+
onExpand,
|
|
230
|
+
onNext,
|
|
231
|
+
onPrevious,
|
|
232
|
+
hideArrows,
|
|
233
|
+
headerClassName,
|
|
234
|
+
titleId
|
|
235
|
+
});
|
|
236
|
+
};
|
|
237
|
+
return /* @__PURE__ */ jsx(CustomHeaderSlot.Context, { children: /* @__PURE__ */ jsxs(HeaderTitleActionSlot.Context, { children: [/* @__PURE__ */ jsx(Portal.Root, { children: /* @__PURE__ */ jsx(Transition, {
|
|
238
|
+
show: open,
|
|
239
|
+
as: Fragment,
|
|
240
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
241
|
+
className: "relative",
|
|
242
|
+
style: { zIndex: paneZIndex },
|
|
243
|
+
children: [/* @__PURE__ */ jsx(TransitionChild, {
|
|
244
|
+
as: Fragment,
|
|
245
|
+
...PANE_TRANSITION_CLASSES,
|
|
246
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
247
|
+
ref: containerRef,
|
|
248
|
+
style: {
|
|
249
|
+
left,
|
|
250
|
+
right: `var(--polly-chat-width, 0px)`
|
|
251
|
+
},
|
|
252
|
+
className: cn("fixed inset-0 shadow-lg", !open && "pointer-events-none", scrollContainer === "outer" ? "overflow-y-auto overscroll-y-none" : "overflow-hidden"),
|
|
253
|
+
"data-testid": "split-view-pane",
|
|
254
|
+
role: titleId ? "region" : void 0,
|
|
255
|
+
"aria-labelledby": titleId,
|
|
256
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
257
|
+
className: cn("relative flex flex-col items-stretch bg-elevated", scrollContainer === "outer" ? "min-h-full" : "h-full"),
|
|
258
|
+
children: /* @__PURE__ */ jsxs(ZIndexProvider, {
|
|
259
|
+
value: paneZIndex,
|
|
260
|
+
children: [renderHeader(), /* @__PURE__ */ jsx(PaneDepth.Provider, {
|
|
261
|
+
value: depth + 1,
|
|
262
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
263
|
+
className: cn("flex flex-1 flex-col", scrollContainer === "inner" && "min-h-0 overflow-y-auto overscroll-y-none", className),
|
|
264
|
+
children: showChildren
|
|
265
|
+
})
|
|
266
|
+
})]
|
|
267
|
+
})
|
|
268
|
+
})
|
|
269
|
+
})
|
|
270
|
+
}), /* @__PURE__ */ jsx(TransitionChild, {
|
|
271
|
+
as: Fragment,
|
|
272
|
+
...PANE_TRANSITION_CLASSES,
|
|
273
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
274
|
+
ref: target,
|
|
275
|
+
role: "separator",
|
|
276
|
+
"aria-label": "Resize pane",
|
|
277
|
+
"aria-orientation": "vertical",
|
|
278
|
+
"aria-valuemin": minimumLeft,
|
|
279
|
+
"aria-valuemax": maximumLeft,
|
|
280
|
+
"aria-valuenow": left,
|
|
281
|
+
tabIndex: 0,
|
|
282
|
+
"data-split-view-pane-resize-handle": true,
|
|
283
|
+
"data-testid": "split-view-pane-resize-handle",
|
|
284
|
+
className: cn("group fixed inset-y-0 cursor-col-resize focus-visible:outline-none", !open && "pointer-events-none"),
|
|
285
|
+
style: {
|
|
286
|
+
left: left - RESIZE_HANDLE_OUTSET_PX,
|
|
287
|
+
width: RESIZE_HANDLE_WIDTH_PX,
|
|
288
|
+
zIndex: zIndices.resizeHandle
|
|
289
|
+
},
|
|
290
|
+
onMouseDown,
|
|
291
|
+
onKeyDown,
|
|
292
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
293
|
+
className: "absolute inset-y-0 w-0 border-l border-subtle transition-all duration-normal group-hover:border-l-2 group-focus-visible:border-l-2 group-focus-visible:border-l-brand group-data-[resize-handle-active]:border-l-brand motion-reduce:transition-none",
|
|
294
|
+
style: { left: RESIZE_HANDLE_OUTSET_PX }
|
|
295
|
+
})
|
|
296
|
+
})
|
|
297
|
+
})]
|
|
298
|
+
})
|
|
299
|
+
}) }), /* @__PURE__ */ jsx(UnsavedChangesDialog, {
|
|
300
|
+
isOpen: showConfirmModal,
|
|
301
|
+
onClose: () => setShowConfirmModal(false),
|
|
302
|
+
onDiscard: () => {
|
|
303
|
+
setShowConfirmModal(false);
|
|
304
|
+
onCloseRef.current?.();
|
|
305
|
+
},
|
|
306
|
+
title: "Unsaved Changes",
|
|
307
|
+
description: "You may have unsaved changes. Are you sure you want to exit?",
|
|
308
|
+
discardCopy: "Exit"
|
|
309
|
+
})] }) });
|
|
310
|
+
}
|
|
311
|
+
//#endregion
|
|
312
|
+
export { CustomHeaderSlot, HeaderTitleActionSlot, SplitViewPane };
|
|
313
|
+
|
|
314
|
+
//# sourceMappingURL=SplitViewPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitViewPane.js","names":[],"sources":["../../../src/components/SplitViewPane/SplitViewPane.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n Fragment,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport { Transition, TransitionChild } from '@headlessui/react';\nimport * as Portal from '@radix-ui/react-portal';\n\nimport { cn } from '../../utils/cn';\nimport { useZIndex } from '../../utils/useZIndex';\nimport { ZIndexProvider } from '../../utils/ZIndexContext';\nimport zIndices from '../../utils/zIndices';\nimport { createPortalSlot } from '../PortalSlot';\nimport UnsavedChangesDialog from '../UnsavedChangesDialog';\nimport { registerOpenPane } from './openPaneRegistry';\nimport {\n HeaderTitleActionSlot,\n SplitViewPaneHeader,\n} from './SplitViewPaneHeader';\n\nexport { HeaderTitleActionSlot } from './SplitViewPaneHeader';\n\nconst PaneDepth = createContext<number>(0);\n\nconst useIsomorphicLayoutEffect =\n typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nconst MINIMUM_LEFT_MARGIN_PX = 100;\nconst MINIMUM_PANE_WIDTH_PX = 500;\nconst KEYBOARD_RESIZE_STEP_PX = 10;\n\nconst MAX_INITIAL_PANE_WIDTH_PX = 1280;\nconst INITIAL_PANE_WIDTH_RATIO = 2 / 3;\n\nconst RESIZE_HANDLE_OUTSET_PX = 8;\nconst RESIZE_HANDLE_WIDTH_PX = 20;\n\nconst PANE_TRANSITION_CLASSES = {\n enter: 'duration-normal motion-reduce:duration-0',\n enterFrom: 'opacity-0',\n enterTo: 'animate-slide-left opacity-100 motion-reduce:animate-none',\n leave: 'duration-normal motion-reduce:duration-0',\n leaveFrom: 'opacity-100',\n leaveTo: 'animate-slide-right opacity-0 motion-reduce:animate-none',\n};\nconst getClientWidth = () => {\n if (typeof document === 'undefined' || typeof window === 'undefined') {\n return 0;\n }\n\n return Math.max(\n document.documentElement.clientWidth || 0,\n window.innerWidth || 0\n );\n};\n\nfunction getAvailableWidth(element?: HTMLDivElement | null) {\n if (typeof document === 'undefined') return 0;\n const style = getComputedStyle(element ?? document.documentElement);\n const reservedRight = Number.parseFloat(\n element ? style.right : style.getPropertyValue('--polly-chat-width')\n );\n return Math.max(0, getClientWidth() - (reservedRight || 0));\n}\n\nfunction clampLeft(\n value: number,\n width: number,\n minPaneWidthPx: number = MINIMUM_PANE_WIDTH_PX\n) {\n const maximumLeft = Math.max(0, width - minPaneWidthPx);\n return Math.min(maximumLeft, Math.max(MINIMUM_LEFT_MARGIN_PX, value));\n}\n\nfunction defaultLeft(\n props: {\n offsetPx: number;\n sidePaneId?: string;\n defaultWidthPx?: number;\n minWidthPx?: number;\n },\n width: number\n) {\n if (props.sidePaneId != null && typeof window !== 'undefined') {\n const value = window.localStorage.getItem(\n `SidePanelGroup:sizes:${props.sidePaneId}`\n );\n const pastRatio = Number.parseFloat(value ?? '');\n\n if (!Number.isNaN(pastRatio)) {\n const desiredWidth = width * pastRatio - props.offsetPx;\n return clampLeft(width - desiredWidth, width, props.minWidthPx);\n }\n }\n\n const desiredWidth =\n Math.min(\n props.defaultWidthPx ?? MAX_INITIAL_PANE_WIDTH_PX,\n width * INITIAL_PANE_WIDTH_RATIO\n ) - props.offsetPx;\n\n return clampLeft(width - desiredWidth, width, props.minWidthPx);\n}\n\nfunction useShowChildren({\n open,\n children,\n}: {\n open: boolean;\n children: ReactNode;\n}) {\n const [showChildren, setShowChildren] = useState<ReactNode>(children);\n useIsomorphicLayoutEffect(() => {\n if (open) setShowChildren(children);\n }, [open, children]);\n return showChildren;\n}\n\nfunction useResize(props: {\n offsetPx: number;\n sidePaneId?: string;\n defaultWidthPx?: number;\n overrideWidthPx?: number;\n minWidthPx?: number;\n open: boolean;\n}) {\n const target = useRef<HTMLDivElement>(null);\n const container = useRef<HTMLDivElement>(null);\n const [element, setElement] = useState<HTMLDivElement | null>(null);\n const containerRef = useCallback((node: HTMLDivElement | null) => {\n container.current = node;\n setElement(node);\n }, []);\n\n const resizing = useRef(false);\n const initialProps = useRef(props);\n const [width, setWidth] = useState(0);\n const [left, setLeft] = useState(MINIMUM_LEFT_MARGIN_PX);\n\n useIsomorphicLayoutEffect(() => {\n const width = getAvailableWidth();\n setWidth(width);\n setLeft(defaultLeft(initialProps.current, width));\n }, []);\n\n useEffect(() => {\n if (props.overrideWidthPx) {\n const desiredWidth = props.overrideWidthPx - props.offsetPx;\n\n setLeft(clampLeft(width - desiredWidth, width, props.minWidthPx));\n }\n }, [props.overrideWidthPx, props.offsetPx, props.minWidthPx, width]);\n\n const onMouseDown = useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n resizing.current = true;\n if (target.current) {\n target.current.dataset.resizeHandleActive = 'true';\n }\n }, []);\n\n const onMouseUp = useCallback(() => {\n if (resizing.current) {\n resizing.current = false;\n if (target.current) {\n delete target.current.dataset.resizeHandleActive;\n }\n }\n }, []);\n\n const doResizeBounded = useCallback(\n (desiredX: number) => {\n if (container.current) {\n const width = getAvailableWidth(container.current);\n const bounded = clampLeft(desiredX, width, props.minWidthPx);\n\n if (props.sidePaneId != null && width > 0) {\n const ratio = (width - bounded) / width;\n window.localStorage.setItem(\n `SidePanelGroup:sizes:${props.sidePaneId}`,\n ratio.toString()\n );\n }\n\n container.current.style.left = `${bounded}px`;\n if (target.current) {\n target.current.style.left = `${bounded - RESIZE_HANDLE_OUTSET_PX}px`;\n target.current.setAttribute('aria-valuenow', bounded.toString());\n }\n setLeft(bounded);\n }\n },\n [props.sidePaneId, props.minWidthPx]\n );\n\n const onMouseMove = useCallback(\n (e: MouseEvent) => {\n if (resizing.current && container.current) {\n e.preventDefault();\n doResizeBounded(e.clientX);\n }\n },\n [doResizeBounded]\n );\n\n const onResize = useCallback(() => {\n setWidth(getAvailableWidth(container.current));\n if (container.current) {\n // Inline position excludes the slide transition's visual transform.\n doResizeBounded(Number.parseFloat(container.current.style.left));\n }\n }, [doResizeBounded]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const desiredLeft =\n e.key === 'ArrowLeft'\n ? left - KEYBOARD_RESIZE_STEP_PX\n : e.key === 'ArrowRight'\n ? left + KEYBOARD_RESIZE_STEP_PX\n : e.key === 'Home'\n ? 0\n : e.key === 'End'\n ? width\n : undefined;\n if (desiredLeft === undefined) return;\n\n e.preventDefault();\n doResizeBounded(desiredLeft);\n };\n\n useIsomorphicLayoutEffect(() => {\n if (!element) return;\n onResize();\n const observer = new ResizeObserver(onResize);\n observer.observe(element);\n return () => observer.disconnect();\n }, [element, onResize]);\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('mousemove', onMouseMove);\n return () => {\n window.removeEventListener('resize', onResize);\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('mousemove', onMouseMove);\n };\n }, [onMouseMove, onMouseUp, onResize]);\n\n useEffect(() => {\n // A closed pane has no element to resize, so restore valid bounds on reopen.\n if (props.open && left !== clampLeft(left, width, props.minWidthPx)) {\n setLeft(defaultLeft(props, width));\n }\n }, [props, left, width]);\n\n return {\n left,\n width,\n onMouseDown,\n onKeyDown,\n target,\n container,\n containerRef,\n };\n}\n\nexport const CustomHeaderSlot = createPortalSlot();\n\nexport type SplitViewPaneProps = {\n open: boolean;\n children: ReactNode;\n className?: string;\n sidePaneId?: string;\n hideArrows?: boolean;\n customHeader?: ReactNode;\n defaultWidthPx?: number;\n overrideWidthPx?: number;\n minWidthPx?: number;\n useCustomHeaderSlot?: boolean;\n requireConfirmationOnClose?: boolean;\n dismissOnOutsideClick?: boolean;\n scrollContainer?: 'outer' | 'inner';\n headerClassName?: string;\n} & (\n | {\n title?: undefined;\n onClose?: undefined;\n onExpand?: undefined;\n onNext?: undefined;\n onPrevious?: undefined;\n }\n | {\n title?: ReactNode;\n onClose: () => void;\n onExpand?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n onNext?: () => void;\n onPrevious?: () => void;\n }\n);\n\nexport function SplitViewPane({\n open,\n onClose,\n onExpand,\n onNext,\n onPrevious,\n children,\n title,\n className,\n sidePaneId,\n hideArrows,\n customHeader,\n useCustomHeaderSlot,\n defaultWidthPx,\n overrideWidthPx,\n minWidthPx,\n requireConfirmationOnClose = false,\n dismissOnOutsideClick = false,\n scrollContainer = 'outer',\n headerClassName,\n}: SplitViewPaneProps) {\n const depth = useContext(PaneDepth);\n const showChildren = useShowChildren({ children, open });\n const {\n left,\n width,\n onMouseDown,\n onKeyDown,\n target,\n container,\n containerRef,\n } = useResize({\n offsetPx: depth * 4.5 * 16,\n sidePaneId,\n defaultWidthPx,\n overrideWidthPx,\n minWidthPx,\n open,\n });\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n const [showConfirmModal, setShowConfirmModal] = useState(false);\n const paneZIndex = useZIndex(zIndices.pane);\n const paneId = useId();\n const titleId =\n title && !customHeader && !useCustomHeaderSlot\n ? `${paneId}-title`\n : undefined;\n const maximumLeft = Math.max(\n 0,\n width - (minWidthPx ?? MINIMUM_PANE_WIDTH_PX)\n );\n const minimumLeft = Math.min(MINIMUM_LEFT_MARGIN_PX, maximumLeft);\n\n const handleCloseClick = useCallback(\n (e?: Event) => {\n if (requireConfirmationOnClose) {\n e?.preventDefault();\n e?.stopPropagation();\n setShowConfirmModal(true);\n } else {\n onCloseRef.current?.();\n }\n },\n [requireConfirmationOnClose]\n );\n\n const handleCloseClickRef = useRef(handleCloseClick);\n handleCloseClickRef.current = handleCloseClick;\n\n useEffect(() => {\n if (!open) return;\n return registerOpenPane(\n paneId,\n paneZIndex,\n container,\n (event) => handleCloseClickRef.current(event),\n dismissOnOutsideClick\n ? (event) => handleCloseClickRef.current(event)\n : undefined\n );\n }, [container, dismissOnOutsideClick, open, paneId, paneZIndex]);\n\n const nextRef = useRef(onNext);\n nextRef.current = onNext;\n\n const prevRef = useRef(onPrevious);\n prevRef.current = onPrevious;\n\n useHotkeys(\n 'j',\n () => {\n nextRef.current?.();\n },\n { enabled: open && onNext != null }\n );\n\n useHotkeys(\n 'k',\n () => {\n prevRef.current?.();\n },\n { enabled: open && onPrevious != null }\n );\n\n const renderHeader = () => {\n if (customHeader) {\n return customHeader;\n }\n if (useCustomHeaderSlot) {\n return <CustomHeaderSlot.Slot />;\n }\n\n return (\n <SplitViewPaneHeader\n title={title}\n open={open}\n onClose={handleCloseClick}\n onExpand={onExpand}\n onNext={onNext}\n onPrevious={onPrevious}\n hideArrows={hideArrows}\n headerClassName={headerClassName}\n titleId={titleId}\n />\n );\n };\n\n return (\n <CustomHeaderSlot.Context>\n <HeaderTitleActionSlot.Context>\n <Portal.Root>\n <Transition show={open} as={Fragment}>\n <div className=\"relative\" style={{ zIndex: paneZIndex }}>\n <TransitionChild as={Fragment} {...PANE_TRANSITION_CLASSES}>\n <div\n ref={containerRef}\n style={{ left, right: `var(--polly-chat-width, 0px)` }}\n className={cn(\n 'fixed inset-0 shadow-lg',\n !open && 'pointer-events-none',\n scrollContainer === 'outer'\n ? 'overflow-y-auto overscroll-y-none'\n : 'overflow-hidden'\n )}\n data-testid=\"split-view-pane\"\n role={titleId ? 'region' : undefined}\n aria-labelledby={titleId}\n >\n <div\n className={cn(\n 'relative flex flex-col items-stretch bg-elevated',\n scrollContainer === 'outer' ? 'min-h-full' : 'h-full'\n )}\n >\n <ZIndexProvider value={paneZIndex}>\n {renderHeader()}\n <PaneDepth.Provider value={depth + 1}>\n <div\n className={cn(\n 'flex flex-1 flex-col',\n scrollContainer === 'inner' &&\n 'min-h-0 overflow-y-auto overscroll-y-none',\n className\n )}\n >\n {showChildren}\n </div>\n </PaneDepth.Provider>\n </ZIndexProvider>\n </div>\n </div>\n </TransitionChild>\n <TransitionChild as={Fragment} {...PANE_TRANSITION_CLASSES}>\n <div\n ref={target}\n role=\"separator\"\n aria-label=\"Resize pane\"\n aria-orientation=\"vertical\"\n aria-valuemin={minimumLeft}\n aria-valuemax={maximumLeft}\n aria-valuenow={left}\n tabIndex={0}\n data-split-view-pane-resize-handle\n data-testid=\"split-view-pane-resize-handle\"\n className={cn(\n 'group fixed inset-y-0 cursor-col-resize focus-visible:outline-none',\n !open && 'pointer-events-none'\n )}\n style={{\n left: left - RESIZE_HANDLE_OUTSET_PX,\n width: RESIZE_HANDLE_WIDTH_PX,\n zIndex: zIndices.resizeHandle,\n }}\n onMouseDown={onMouseDown}\n onKeyDown={onKeyDown}\n >\n <div\n className=\"absolute inset-y-0 w-0 border-l border-subtle transition-all duration-normal group-hover:border-l-2 group-focus-visible:border-l-2 group-focus-visible:border-l-brand group-data-[resize-handle-active]:border-l-brand motion-reduce:transition-none\"\n style={{ left: RESIZE_HANDLE_OUTSET_PX }}\n />\n </div>\n </TransitionChild>\n </div>\n </Transition>\n </Portal.Root>\n <UnsavedChangesDialog\n isOpen={showConfirmModal}\n onClose={() => setShowConfirmModal(false)}\n onDiscard={() => {\n setShowConfirmModal(false);\n onCloseRef.current?.();\n }}\n title=\"Unsaved Changes\"\n description=\"You may have unsaved changes. Are you sure you want to exit?\"\n discardCopy=\"Exit\"\n />\n </HeaderTitleActionSlot.Context>\n </CustomHeaderSlot.Context>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { MouseEvent, ReactNode } from 'react';
|
|
2
|
+
export declare const HeaderTitleActionSlot: {
|
|
3
|
+
Fill: (props: {
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
}) => import("react").ReactPortal | null;
|
|
6
|
+
Slot: (props: import("react").HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
|
|
7
|
+
Context: (props: {
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}) => import("react").JSX.Element;
|
|
10
|
+
useCanFillSlot: () => boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function SplitViewPaneHeader({ title, onClose, onExpand, onNext, onPrevious, hideArrows, headerClassName, titleId, open, }: {
|
|
13
|
+
title: ReactNode;
|
|
14
|
+
onClose?: () => void;
|
|
15
|
+
onExpand?: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
16
|
+
onNext?: () => void;
|
|
17
|
+
onPrevious?: () => void;
|
|
18
|
+
hideArrows?: boolean;
|
|
19
|
+
headerClassName?: string;
|
|
20
|
+
titleId?: string;
|
|
21
|
+
open?: boolean;
|
|
22
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import zIndices from "../../utils/zIndices.js";
|
|
3
|
+
import { Text } from "../Text/Text.js";
|
|
4
|
+
import { CaretDoubleRightIcon, CaretDownIcon, CaretUpIcon } from "../../icons/PaddedPhosphorIcons.js";
|
|
5
|
+
import { IconButton } from "../IconButton/IconButton.js";
|
|
6
|
+
import { Kbd } from "../Kbd/Kbd.js";
|
|
7
|
+
import { createPortalSlot } from "../PortalSlot.js";
|
|
8
|
+
import { useLayoutEffect, useState } from "react";
|
|
9
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { CornersOutIcon } from "@phosphor-icons/react/dist/ssr/CornersOut";
|
|
11
|
+
//#region packages/components/src/components/SplitViewPane/SplitViewPaneHeader.tsx
|
|
12
|
+
var HeaderTitleActionSlot = createPortalSlot();
|
|
13
|
+
function SplitViewPaneHeader({ title, onClose, onExpand, onNext, onPrevious, hideArrows, headerClassName, titleId, open }) {
|
|
14
|
+
const [retainedOnExpand, setRetainedOnExpand] = useState(() => onExpand);
|
|
15
|
+
useLayoutEffect(() => {
|
|
16
|
+
if (open !== false) setRetainedOnExpand(() => onExpand);
|
|
17
|
+
}, [onExpand, open]);
|
|
18
|
+
const visibleOnExpand = open === false ? retainedOnExpand : onExpand;
|
|
19
|
+
return /* @__PURE__ */ jsxs("header", {
|
|
20
|
+
className: cn("sticky top-0 flex items-center gap-space-1 border-b border-subtle bg-elevated px-space-4 py-1.5 text-base font-semibold text-secondary", headerClassName),
|
|
21
|
+
style: { zIndex: zIndices.stickyHeader },
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ jsx(IconButton, {
|
|
24
|
+
label: "Close",
|
|
25
|
+
icon: CaretDoubleRightIcon,
|
|
26
|
+
onClick: onClose,
|
|
27
|
+
variant: "plain",
|
|
28
|
+
color: "secondary",
|
|
29
|
+
size: "xs",
|
|
30
|
+
iconClassName: "size-5 text-icon-tertiary",
|
|
31
|
+
"data-testid": "split-view-pane-close-button",
|
|
32
|
+
className: "bg-transparent"
|
|
33
|
+
}),
|
|
34
|
+
visibleOnExpand && /* @__PURE__ */ jsx(IconButton, {
|
|
35
|
+
label: "Expand",
|
|
36
|
+
icon: CornersOutIcon,
|
|
37
|
+
onClick: visibleOnExpand,
|
|
38
|
+
variant: "plain",
|
|
39
|
+
color: "secondary",
|
|
40
|
+
size: "sm",
|
|
41
|
+
iconClassName: "text-icon-tertiary",
|
|
42
|
+
"data-testid": "split-view-pane-expand-button",
|
|
43
|
+
className: "bg-transparent"
|
|
44
|
+
}),
|
|
45
|
+
!hideArrows && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
46
|
+
/* @__PURE__ */ jsx("div", { className: "mx-space-1 h-5 border-r border-default" }),
|
|
47
|
+
/* @__PURE__ */ jsx(IconButton, {
|
|
48
|
+
label: "Navigate down",
|
|
49
|
+
tooltipProps: { title: /* @__PURE__ */ jsxs("div", {
|
|
50
|
+
className: "flex items-center",
|
|
51
|
+
children: [/* @__PURE__ */ jsx(Text, {
|
|
52
|
+
variant: "sm",
|
|
53
|
+
children: "Navigate down"
|
|
54
|
+
}), /* @__PURE__ */ jsx(Kbd, {
|
|
55
|
+
className: "ml-space-2",
|
|
56
|
+
children: "J"
|
|
57
|
+
})]
|
|
58
|
+
}) },
|
|
59
|
+
icon: CaretDownIcon,
|
|
60
|
+
onClick: onNext,
|
|
61
|
+
variant: "plain",
|
|
62
|
+
color: "secondary",
|
|
63
|
+
size: "xs",
|
|
64
|
+
iconClassName: cn("size-5", onNext && "text-icon-tertiary"),
|
|
65
|
+
disabled: !onNext,
|
|
66
|
+
className: "bg-transparent"
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ jsx(IconButton, {
|
|
69
|
+
label: "Navigate up",
|
|
70
|
+
tooltipProps: { title: /* @__PURE__ */ jsxs("div", {
|
|
71
|
+
className: "flex items-center",
|
|
72
|
+
children: [/* @__PURE__ */ jsx(Text, {
|
|
73
|
+
variant: "sm",
|
|
74
|
+
children: "Navigate up"
|
|
75
|
+
}), /* @__PURE__ */ jsx(Kbd, {
|
|
76
|
+
className: "ml-space-2",
|
|
77
|
+
children: "K"
|
|
78
|
+
})]
|
|
79
|
+
}) },
|
|
80
|
+
icon: CaretUpIcon,
|
|
81
|
+
onClick: onPrevious,
|
|
82
|
+
variant: "plain",
|
|
83
|
+
color: "secondary",
|
|
84
|
+
size: "xs",
|
|
85
|
+
iconClassName: cn("size-5", onPrevious && "text-icon-tertiary"),
|
|
86
|
+
disabled: !onPrevious,
|
|
87
|
+
className: "bg-transparent"
|
|
88
|
+
})
|
|
89
|
+
] }),
|
|
90
|
+
titleId && /* @__PURE__ */ jsx(Text, {
|
|
91
|
+
id: titleId,
|
|
92
|
+
as: "h2",
|
|
93
|
+
variant: "h3",
|
|
94
|
+
className: "min-w-0",
|
|
95
|
+
color: "secondary",
|
|
96
|
+
children: title
|
|
97
|
+
}),
|
|
98
|
+
/* @__PURE__ */ jsx(HeaderTitleActionSlot.Slot, { className: "flex flex-1 items-center justify-end gap-space-2 empty:hidden" })
|
|
99
|
+
]
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
export { HeaderTitleActionSlot, SplitViewPaneHeader };
|
|
104
|
+
|
|
105
|
+
//# sourceMappingURL=SplitViewPaneHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitViewPaneHeader.js","names":[],"sources":["../../../src/components/SplitViewPane/SplitViewPaneHeader.tsx"],"sourcesContent":["import type { MouseEvent, ReactNode } from 'react';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { CornersOutIcon } from '@phosphor-icons/react/dist/ssr/CornersOut';\n\nimport {\n CaretDoubleRightIcon,\n CaretDownIcon,\n CaretUpIcon,\n} from '../../icons/PaddedPhosphorIcons';\nimport { cn } from '../../utils/cn';\nimport zIndices from '../../utils/zIndices';\nimport { IconButton } from '../IconButton';\nimport { Kbd } from '../Kbd';\nimport { createPortalSlot } from '../PortalSlot';\nimport { Text } from '../Text';\n\nexport const HeaderTitleActionSlot = createPortalSlot();\n\nexport function SplitViewPaneHeader({\n title,\n onClose,\n onExpand,\n onNext,\n onPrevious,\n hideArrows,\n headerClassName,\n titleId,\n open,\n}: {\n title: ReactNode;\n onClose?: () => void;\n onExpand?: (event: MouseEvent<HTMLButtonElement>) => void;\n onNext?: () => void;\n onPrevious?: () => void;\n hideArrows?: boolean;\n headerClassName?: string;\n titleId?: string;\n open?: boolean;\n}) {\n const [retainedOnExpand, setRetainedOnExpand] = useState<\n ((event: MouseEvent<HTMLButtonElement>) => void) | undefined\n >(() => onExpand);\n\n useLayoutEffect(() => {\n if (open !== false) setRetainedOnExpand(() => onExpand);\n }, [onExpand, open]);\n\n const visibleOnExpand = open === false ? retainedOnExpand : onExpand;\n return (\n <header\n className={cn(\n 'sticky top-0 flex items-center gap-space-1 border-b border-subtle bg-elevated px-space-4 py-1.5 text-base font-semibold text-secondary',\n headerClassName\n )}\n style={{ zIndex: zIndices.stickyHeader }}\n >\n <IconButton\n label=\"Close\"\n icon={CaretDoubleRightIcon}\n onClick={onClose}\n variant=\"plain\"\n color=\"secondary\"\n size=\"xs\"\n iconClassName=\"size-5 text-icon-tertiary\"\n data-testid=\"split-view-pane-close-button\"\n className=\"bg-transparent\"\n />\n\n {visibleOnExpand && (\n <IconButton\n label=\"Expand\"\n icon={CornersOutIcon}\n onClick={visibleOnExpand}\n variant=\"plain\"\n color=\"secondary\"\n size=\"sm\"\n iconClassName=\"text-icon-tertiary\"\n data-testid=\"split-view-pane-expand-button\"\n className=\"bg-transparent\"\n />\n )}\n {!hideArrows && (\n <>\n <div className=\"mx-space-1 h-5 border-r border-default\" />\n <IconButton\n label=\"Navigate down\"\n tooltipProps={{\n title: (\n <div className=\"flex items-center\">\n <Text variant=\"sm\">Navigate down</Text>\n <Kbd className=\"ml-space-2\">J</Kbd>\n </div>\n ),\n }}\n icon={CaretDownIcon}\n onClick={onNext}\n variant=\"plain\"\n color=\"secondary\"\n size=\"xs\"\n iconClassName={cn('size-5', onNext && 'text-icon-tertiary')}\n disabled={!onNext}\n className=\"bg-transparent\"\n />\n\n <IconButton\n label=\"Navigate up\"\n tooltipProps={{\n title: (\n <div className=\"flex items-center\">\n <Text variant=\"sm\">Navigate up</Text>\n <Kbd className=\"ml-space-2\">K</Kbd>\n </div>\n ),\n }}\n icon={CaretUpIcon}\n onClick={onPrevious}\n variant=\"plain\"\n color=\"secondary\"\n size=\"xs\"\n iconClassName={cn('size-5', onPrevious && 'text-icon-tertiary')}\n disabled={!onPrevious}\n className=\"bg-transparent\"\n />\n </>\n )}\n {titleId && (\n <Text\n id={titleId}\n as=\"h2\"\n variant=\"h3\"\n className=\"min-w-0\"\n color=\"secondary\"\n >\n {title}\n </Text>\n )}\n\n <HeaderTitleActionSlot.Slot className=\"flex flex-1 items-center justify-end gap-space-2 empty:hidden\" />\n </header>\n );\n}\n"],"mappings":";;;;;;;;;;;AAiBA,IAAa,wBAAwB,iBAAiB;AAEtD,SAAgB,oBAAoB,EAClC,OACA,SACA,UACA,QACA,YACA,YACA,iBACA,SACA,QAWC;CACD,MAAM,CAAC,kBAAkB,uBAAuB,eAExC,QAAQ;CAEhB,sBAAsB;EACpB,IAAI,SAAS,OAAO,0BAA0B,QAAQ;CACxD,GAAG,CAAC,UAAU,IAAI,CAAC;CAEnB,MAAM,kBAAkB,SAAS,QAAQ,mBAAmB;CAC5D,OACE,qBAAC,UAAD;EACE,WAAW,GACT,0IACA,eACF;EACA,OAAO,EAAE,QAAQ,SAAS,aAAa;EALzC,UAAA;GAOE,oBAAC,YAAD;IACE,OAAM;IACN,MAAM;IACN,SAAS;IACT,SAAQ;IACR,OAAM;IACN,MAAK;IACL,eAAc;IACd,eAAY;IACZ,WAAU;GACX,CAAA;GAEA,mBACC,oBAAC,YAAD;IACE,OAAM;IACN,MAAM;IACN,SAAS;IACT,SAAQ;IACR,OAAM;IACN,MAAK;IACL,eAAc;IACd,eAAY;IACZ,WAAU;GACX,CAAA;GAEF,CAAC,cACA,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,OAAD,EAAK,WAAU,yCAA0C,CAAA;IACzD,oBAAC,YAAD;KACE,OAAM;KACN,cAAc,EACZ,OACE,qBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,oBAAC,MAAD;OAAM,SAAQ;OAAK,UAAA;MAAmB,CAAA,GACtC,oBAAC,KAAD;OAAK,WAAU;OAAa,UAAA;MAAM,CAAA,CAC/B;KAET,CAAA,EAAA;KACA,MAAM;KACN,SAAS;KACT,SAAQ;KACR,OAAM;KACN,MAAK;KACL,eAAe,GAAG,UAAU,UAAU,oBAAoB;KAC1D,UAAU,CAAC;KACX,WAAU;IACX,CAAA;IAED,oBAAC,YAAD;KACE,OAAM;KACN,cAAc,EACZ,OACE,qBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,oBAAC,MAAD;OAAM,SAAQ;OAAK,UAAA;MAAiB,CAAA,GACpC,oBAAC,KAAD;OAAK,WAAU;OAAa,UAAA;MAAM,CAAA,CAC/B;KAET,CAAA,EAAA;KACA,MAAM;KACN,SAAS;KACT,SAAQ;KACR,OAAM;KACN,MAAK;KACL,eAAe,GAAG,UAAU,cAAc,oBAAoB;KAC9D,UAAU,CAAC;KACX,WAAU;IACX,CAAA;GACD,EAAA,CAAA;GAEH,WACC,oBAAC,MAAD;IACE,IAAI;IACJ,IAAG;IACH,SAAQ;IACR,WAAU;IACV,OAAM;IAEL,UAAA;GACG,CAAA;GAGR,oBAAC,sBAAsB,MAAvB,EAA4B,WAAU,gEAAiE,CAAA;EACjG;;AAEZ"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region packages/components/src/components/SplitViewPane/openPaneRegistry.ts
|
|
2
|
+
var openSplitViewPanes = /* @__PURE__ */ new Map();
|
|
3
|
+
var nextOpenPaneOrder = 0;
|
|
4
|
+
function getTopmostPane() {
|
|
5
|
+
let topmostPane;
|
|
6
|
+
for (const pane of openSplitViewPanes.values()) if (!topmostPane || pane.zIndex > topmostPane.zIndex || pane.zIndex === topmostPane.zIndex && pane.order > topmostPane.order) topmostPane = pane;
|
|
7
|
+
return topmostPane;
|
|
8
|
+
}
|
|
9
|
+
function handleEscapeKeyDown(event) {
|
|
10
|
+
if (event.key !== "Escape") return;
|
|
11
|
+
queueMicrotask(() => {
|
|
12
|
+
if (event.defaultPrevented) return;
|
|
13
|
+
getTopmostPane()?.onEscape(event);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function handleMouseDown(event) {
|
|
17
|
+
const topmostPane = getTopmostPane();
|
|
18
|
+
const path = event.composedPath();
|
|
19
|
+
if (topmostPane?.onMouseDownOutside == null || document.querySelector("[data-pane-interaction-boundary][data-state=\"open\"]") != null || path.some((target) => target instanceof HTMLElement && (target.classList.contains("data-grid-row-component") || target.hasAttribute("data-split-view-pane-interaction-boundary") || target.hasAttribute("data-split-view-pane-resize-handle")))) return;
|
|
20
|
+
const element = topmostPane.element.current;
|
|
21
|
+
if (element == null || path.includes(element)) return;
|
|
22
|
+
const bounds = element.getBoundingClientRect();
|
|
23
|
+
if (!(event.clientX >= bounds.left && event.clientX <= bounds.right && event.clientY >= bounds.top && event.clientY <= bounds.bottom)) topmostPane.onMouseDownOutside(event);
|
|
24
|
+
}
|
|
25
|
+
function registerOpenPane(id, zIndex, element, onEscape, onMouseDownOutside) {
|
|
26
|
+
openSplitViewPanes.set(id, {
|
|
27
|
+
id,
|
|
28
|
+
zIndex,
|
|
29
|
+
order: nextOpenPaneOrder++,
|
|
30
|
+
element,
|
|
31
|
+
onEscape,
|
|
32
|
+
onMouseDownOutside
|
|
33
|
+
});
|
|
34
|
+
if (openSplitViewPanes.size === 1) {
|
|
35
|
+
document.addEventListener("keydown", handleEscapeKeyDown);
|
|
36
|
+
document.addEventListener("mousedown", handleMouseDown, true);
|
|
37
|
+
}
|
|
38
|
+
return () => {
|
|
39
|
+
openSplitViewPanes.delete(id);
|
|
40
|
+
if (openSplitViewPanes.size === 0) {
|
|
41
|
+
document.removeEventListener("keydown", handleEscapeKeyDown);
|
|
42
|
+
document.removeEventListener("mousedown", handleMouseDown, true);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { registerOpenPane };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=openPaneRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openPaneRegistry.js","names":[],"sources":["../../../src/components/SplitViewPane/openPaneRegistry.ts"],"sourcesContent":["import type { RefObject } from 'react';\n\ntype OpenSplitViewPane = {\n id: string;\n zIndex: number;\n order: number;\n element: RefObject<HTMLDivElement | null>;\n onEscape: (event: KeyboardEvent) => void;\n onMouseDownOutside?: (event: MouseEvent) => void;\n};\n\nconst openSplitViewPanes = new Map<string, OpenSplitViewPane>();\nlet nextOpenPaneOrder = 0;\n\nfunction getTopmostPane() {\n let topmostPane: OpenSplitViewPane | undefined;\n for (const pane of openSplitViewPanes.values()) {\n if (\n !topmostPane ||\n pane.zIndex > topmostPane.zIndex ||\n (pane.zIndex === topmostPane.zIndex && pane.order > topmostPane.order)\n ) {\n topmostPane = pane;\n }\n }\n return topmostPane;\n}\n\nfunction handleEscapeKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Escape') return;\n\n queueMicrotask(() => {\n if (event.defaultPrevented) return;\n getTopmostPane()?.onEscape(event);\n });\n}\n\nfunction handleMouseDown(event: MouseEvent) {\n const topmostPane = getTopmostPane();\n const path = event.composedPath();\n if (\n topmostPane?.onMouseDownOutside == null ||\n document.querySelector(\n '[data-pane-interaction-boundary][data-state=\"open\"]'\n ) != null ||\n path.some(\n (target) =>\n target instanceof HTMLElement &&\n (target.classList.contains('data-grid-row-component') ||\n target.hasAttribute('data-split-view-pane-interaction-boundary') ||\n target.hasAttribute('data-split-view-pane-resize-handle'))\n )\n ) {\n return;\n }\n\n const element = topmostPane.element.current;\n // The bounds comparison below misses clicks on the pane's own subpixel edge,\n // so containment decides first.\n if (element == null || path.includes(element)) return;\n const bounds = element.getBoundingClientRect();\n const isInside =\n event.clientX >= bounds.left &&\n event.clientX <= bounds.right &&\n event.clientY >= bounds.top &&\n event.clientY <= bounds.bottom;\n if (!isInside) topmostPane.onMouseDownOutside(event);\n}\n\nexport function registerOpenPane(\n id: string,\n zIndex: number,\n element: RefObject<HTMLDivElement | null>,\n onEscape: (event: KeyboardEvent) => void,\n onMouseDownOutside?: (event: MouseEvent) => void\n) {\n openSplitViewPanes.set(id, {\n id,\n zIndex,\n order: nextOpenPaneOrder++,\n element,\n onEscape,\n onMouseDownOutside,\n });\n\n if (openSplitViewPanes.size === 1) {\n document.addEventListener('keydown', handleEscapeKeyDown);\n document.addEventListener('mousedown', handleMouseDown, true);\n }\n\n return () => {\n openSplitViewPanes.delete(id);\n if (openSplitViewPanes.size === 0) {\n document.removeEventListener('keydown', handleEscapeKeyDown);\n document.removeEventListener('mousedown', handleMouseDown, true);\n }\n };\n}\n"],"mappings":";AAWA,IAAM,qCAAqB,IAAI,IAA+B;AAC9D,IAAI,oBAAoB;AAExB,SAAS,iBAAiB;CACxB,IAAI;CACJ,KAAK,MAAM,QAAQ,mBAAmB,OAAO,GAC3C,IACE,CAAC,eACD,KAAK,SAAS,YAAY,UACzB,KAAK,WAAW,YAAY,UAAU,KAAK,QAAQ,YAAY,OAEhE,cAAc;CAGlB,OAAO;AACT;AAEA,SAAS,oBAAoB,OAAsB;CACjD,IAAI,MAAM,QAAQ,UAAU;CAE5B,qBAAqB;EACnB,IAAI,MAAM,kBAAkB;EAC5B,eAAe,CAAC,EAAE,SAAS,KAAK;CAClC,CAAC;AACH;AAEA,SAAS,gBAAgB,OAAmB;CAC1C,MAAM,cAAc,eAAe;CACnC,MAAM,OAAO,MAAM,aAAa;CAChC,IACE,aAAa,sBAAsB,QACnC,SAAS,cACP,uDACF,KAAK,QACL,KAAK,MACF,WACC,kBAAkB,gBACjB,OAAO,UAAU,SAAS,yBAAyB,KAClD,OAAO,aAAa,2CAA2C,KAC/D,OAAO,aAAa,oCAAoC,EAC9D,GAEA;CAGF,MAAM,UAAU,YAAY,QAAQ;CAGpC,IAAI,WAAW,QAAQ,KAAK,SAAS,OAAO,GAAG;CAC/C,MAAM,SAAS,QAAQ,sBAAsB;CAM7C,IAAI,EAJF,MAAM,WAAW,OAAO,QACxB,MAAM,WAAW,OAAO,SACxB,MAAM,WAAW,OAAO,OACxB,MAAM,WAAW,OAAO,SACX,YAAY,mBAAmB,KAAK;AACrD;AAEA,SAAgB,iBACd,IACA,QACA,SACA,UACA,oBACA;CACA,mBAAmB,IAAI,IAAI;EACzB;EACA;EACA,OAAO;EACP;EACA;EACA;CACF,CAAC;CAED,IAAI,mBAAmB,SAAS,GAAG;EACjC,SAAS,iBAAiB,WAAW,mBAAmB;EACxD,SAAS,iBAAiB,aAAa,iBAAiB,IAAI;CAC9D;CAEA,aAAa;EACX,mBAAmB,OAAO,EAAE;EAC5B,IAAI,mBAAmB,SAAS,GAAG;GACjC,SAAS,oBAAoB,WAAW,mBAAmB;GAC3D,SAAS,oBAAoB,aAAa,iBAAiB,IAAI;EACjE;CACF;AACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type SelectionControlSize } from '../../utils/componentSizes.js';
|
|
2
|
+
interface SwitchBaseProps {
|
|
3
|
+
checked: boolean;
|
|
4
|
+
onChange: (checked: boolean) => void;
|
|
5
|
+
id?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Track height. The pointer target remains at least 24px. */
|
|
8
|
+
size?: SelectionControlSize;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
onClick?: (e: React.MouseEvent) => void;
|
|
11
|
+
}
|
|
12
|
+
interface SwitchWithLabelProps extends SwitchBaseProps {
|
|
13
|
+
label: string;
|
|
14
|
+
labelClassName?: string;
|
|
15
|
+
labelPosition?: 'left' | 'right';
|
|
16
|
+
'aria-label'?: never;
|
|
17
|
+
'aria-labelledby'?: never;
|
|
18
|
+
}
|
|
19
|
+
interface SwitchWithAriaLabelProps extends SwitchBaseProps {
|
|
20
|
+
'aria-label': string;
|
|
21
|
+
label?: never;
|
|
22
|
+
labelClassName?: never;
|
|
23
|
+
labelPosition?: never;
|
|
24
|
+
'aria-labelledby'?: never;
|
|
25
|
+
}
|
|
26
|
+
interface SwitchWithAriaLabelledByProps extends SwitchBaseProps {
|
|
27
|
+
'aria-labelledby': string;
|
|
28
|
+
label?: never;
|
|
29
|
+
labelClassName?: never;
|
|
30
|
+
labelPosition?: never;
|
|
31
|
+
'aria-label'?: never;
|
|
32
|
+
}
|
|
33
|
+
export type SwitchProps = SwitchWithLabelProps | SwitchWithAriaLabelProps | SwitchWithAriaLabelledByProps;
|
|
34
|
+
export declare const Switch: ({ checked, onChange, id, className, size, disabled, onClick, label, labelClassName, labelPosition, ...rest }: SwitchProps) => import("react").JSX.Element;
|
|
35
|
+
export {};
|