@dxos/react-ui 0.8.4-main.d05539e30a → 0.8.4-main.d9fc60f731
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/dist/lib/browser/chunk-5SPBSIWS.mjs +33 -0
- package/dist/lib/browser/chunk-5SPBSIWS.mjs.map +7 -0
- package/dist/lib/browser/chunk-KVJDKHLF.mjs +1613 -0
- package/dist/lib/browser/chunk-KVJDKHLF.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +2403 -1562
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +9 -6
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/translations.mjs +1 -1
- package/dist/lib/node-esm/chunk-5JYHWJDZ.mjs +1615 -0
- package/dist/lib/node-esm/chunk-5JYHWJDZ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XCFLA74M.mjs → chunk-FPVTVXND.mjs} +11 -2
- package/dist/lib/node-esm/chunk-FPVTVXND.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +2403 -1562
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +9 -6
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/translations.mjs +1 -1
- package/dist/types/src/components/Avatars/Avatar.theme.d.ts +11 -0
- package/dist/types/src/components/Avatars/Avatar.theme.d.ts.map +1 -0
- package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +5 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts +4 -0
- package/dist/types/src/components/Breadcrumb/Breadcrumb.theme.d.ts.map +1 -0
- package/dist/types/src/components/Button/Button.d.ts +1 -1
- package/dist/types/src/components/Button/Button.d.ts.map +1 -1
- package/dist/types/src/components/Button/Button.theme.d.ts +11 -0
- package/dist/types/src/components/Button/Button.theme.d.ts.map +1 -0
- package/dist/types/src/components/Button/IconButton.stories.d.ts +1 -0
- package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.theme.d.ts +8 -0
- package/dist/types/src/components/Button/IconButton.theme.d.ts.map +1 -0
- package/dist/types/src/components/Calendar/Calendar.d.ts +33 -0
- package/dist/types/src/components/Calendar/Calendar.d.ts.map +1 -0
- package/dist/types/src/components/Calendar/Calendar.stories.d.ts +9 -0
- package/dist/types/src/components/Calendar/Calendar.stories.d.ts.map +1 -0
- package/dist/types/src/components/Calendar/Calendar.theme.d.ts +4 -0
- package/dist/types/src/components/Calendar/Calendar.theme.d.ts.map +1 -0
- package/dist/types/src/components/Calendar/index.d.ts +2 -0
- package/dist/types/src/components/Calendar/index.d.ts.map +1 -0
- package/dist/types/src/components/Card/Card.d.ts +51 -44
- package/dist/types/src/components/Card/Card.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.stories.d.ts +1 -0
- package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.theme.d.ts +12 -0
- package/dist/types/src/components/Card/Card.theme.d.ts.map +1 -0
- package/dist/types/src/components/Carousel/Carousel.d.ts +2 -6
- package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/index.d.ts +1 -1
- package/dist/types/src/{primitives → components}/Column/Column.d.ts.map +1 -1
- package/dist/types/src/{primitives → components}/Column/Column.stories.d.ts.map +1 -1
- package/dist/types/src/components/Column/Column.theme.d.ts +9 -0
- package/dist/types/src/components/Column/Column.theme.d.ts.map +1 -0
- package/dist/types/src/components/Column/index.d.ts +3 -0
- package/dist/types/src/components/Column/index.d.ts.map +1 -0
- package/dist/types/src/components/Column/withColumn.d.ts +21 -0
- package/dist/types/src/components/Column/withColumn.d.ts.map +1 -0
- package/dist/types/src/components/DatePicker/DatePicker.d.ts +72 -0
- package/dist/types/src/components/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts +10 -0
- package/dist/types/src/components/DatePicker/DatePicker.stories.d.ts.map +1 -0
- package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts +6 -0
- package/dist/types/src/components/DatePicker/DatePicker.theme.d.ts.map +1 -0
- package/dist/types/src/components/DatePicker/index.d.ts +2 -0
- package/dist/types/src/components/DatePicker/index.d.ts.map +1 -0
- package/dist/types/src/components/Dialog/AlertDialog.d.ts +8 -8
- package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.d.ts +9 -7
- package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.theme.d.ts +10 -0
- package/dist/types/src/components/Dialog/Dialog.theme.d.ts.map +1 -0
- package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
- package/dist/types/src/components/Focus/Focus.d.ts.map +1 -1
- package/dist/types/src/components/Focus/Focus.theme.d.ts +6 -0
- package/dist/types/src/components/Focus/Focus.theme.d.ts.map +1 -0
- package/dist/types/src/components/Icon/Icon.theme.d.ts +11 -0
- package/dist/types/src/components/Icon/Icon.theme.d.ts.map +1 -0
- package/dist/types/src/components/Icon/IconBlock.d.ts +15 -0
- package/dist/types/src/components/Icon/IconBlock.d.ts.map +1 -0
- package/dist/types/src/components/Icon/index.d.ts +1 -0
- package/dist/types/src/components/Icon/index.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.d.ts +81 -3
- package/dist/types/src/components/Input/Input.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.stories.d.ts +14 -3
- package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.theme.d.ts +115 -0
- package/dist/types/src/components/Input/Input.theme.d.ts.map +1 -0
- package/dist/types/src/components/Input/SegmentedInput.d.ts +79 -0
- package/dist/types/src/components/Input/SegmentedInput.d.ts.map +1 -0
- package/dist/types/src/components/Input/constants.d.ts +2 -0
- package/dist/types/src/components/Input/constants.d.ts.map +1 -0
- package/dist/types/src/components/Input/index.d.ts +2 -0
- package/dist/types/src/components/Input/index.d.ts.map +1 -1
- package/dist/types/src/components/Link/Link.theme.d.ts +6 -0
- package/dist/types/src/components/Link/Link.theme.d.ts.map +1 -0
- package/dist/types/src/components/List/List.d.ts.map +1 -1
- package/dist/types/src/components/List/List.theme.d.ts +7 -0
- package/dist/types/src/components/List/List.theme.d.ts.map +1 -0
- package/dist/types/src/components/List/Treegrid.d.ts +1 -1
- package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
- package/dist/types/src/components/List/Treegrid.theme.d.ts +7 -0
- package/dist/types/src/components/List/Treegrid.theme.d.ts.map +1 -0
- package/dist/types/src/components/Main/Main.d.ts +2 -2
- package/dist/types/src/components/Main/Main.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.theme.d.ts +20 -0
- package/dist/types/src/components/Main/Main.theme.d.ts.map +1 -0
- package/dist/types/src/components/Main/constants.d.ts +3 -0
- package/dist/types/src/components/Main/constants.d.ts.map +1 -0
- package/dist/types/src/components/Main/index.d.ts +1 -0
- package/dist/types/src/components/Main/index.d.ts.map +1 -1
- package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +9 -12
- package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -1
- package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts +1 -1
- package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
- package/dist/types/src/components/Menu/Menu.theme.d.ts +7 -0
- package/dist/types/src/components/Menu/Menu.theme.d.ts.map +1 -0
- package/dist/types/src/components/Message/Message.d.ts +2 -2
- package/dist/types/src/components/Message/Message.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.stories.d.ts +5 -1
- package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.theme.d.ts +7 -0
- package/dist/types/src/components/Message/Message.theme.d.ts.map +1 -0
- package/dist/types/src/{primitives → components}/Panel/Panel.d.ts +1 -1
- package/dist/types/src/components/Panel/Panel.d.ts.map +1 -0
- package/dist/types/src/{primitives → components}/Panel/Panel.stories.d.ts.map +1 -1
- package/dist/types/src/components/Panel/Panel.theme.d.ts +13 -0
- package/dist/types/src/components/Panel/Panel.theme.d.ts.map +1 -0
- package/dist/types/src/components/Panel/index.d.ts.map +1 -0
- package/dist/types/src/components/Popover/Popover.theme.d.ts +8 -0
- package/dist/types/src/components/Popover/Popover.theme.d.ts.map +1 -0
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts +17 -0
- package/dist/types/src/components/ScrollArea/ScrollArea.theme.d.ts.map +1 -0
- package/dist/types/src/components/ScrollArea/index.d.ts +1 -0
- package/dist/types/src/components/ScrollArea/index.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/scrollbar.d.ts +18 -0
- package/dist/types/src/components/ScrollArea/scrollbar.d.ts.map +1 -0
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +13 -19
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.theme.d.ts +6 -0
- package/dist/types/src/components/Select/Select.theme.d.ts.map +1 -0
- package/dist/types/src/components/Separator/Separator.theme.d.ts +7 -0
- package/dist/types/src/components/Separator/Separator.theme.d.ts.map +1 -0
- package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts +6 -0
- package/dist/types/src/components/Skeleton/Skeleton.theme.d.ts.map +1 -0
- package/dist/types/src/components/Splitter/Splitter.d.ts +3 -5
- package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
- package/dist/types/src/components/Splitter/Splitter.theme.d.ts +4 -0
- package/dist/types/src/components/Splitter/Splitter.theme.d.ts.map +1 -0
- package/dist/types/src/components/Status/Status.d.ts +1 -1
- package/dist/types/src/components/Status/Status.d.ts.map +1 -1
- package/dist/types/src/components/Status/Status.theme.d.ts +7 -0
- package/dist/types/src/components/Status/Status.theme.d.ts.map +1 -0
- package/dist/types/src/components/Tag/Tag.theme.d.ts +6 -0
- package/dist/types/src/components/Tag/Tag.theme.d.ts.map +1 -0
- package/dist/types/src/components/Toast/Toast.d.ts +13 -10
- package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.stories.d.ts +5 -2
- package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.theme.d.ts +4 -0
- package/dist/types/src/components/Toast/Toast.theme.d.ts.map +1 -0
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +19 -7
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts +8 -0
- package/dist/types/src/components/Toolbar/Toolbar.theme.d.ts.map +1 -0
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts +6 -0
- package/dist/types/src/components/Tooltip/Tooltip.theme.d.ts.map +1 -0
- package/dist/types/src/components/Tooltip/index.d.ts +1 -0
- package/dist/types/src/components/Tooltip/index.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/tooltipContent.d.ts +4 -0
- package/dist/types/src/components/Tooltip/tooltipContent.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +5 -4
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
- package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
- package/dist/types/src/hooks/useTranslationsContext.d.ts +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
- package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts.map +1 -1
- package/dist/types/src/primitives/DensityProvider/index.d.ts.map +1 -0
- package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts.map +1 -1
- package/dist/types/src/primitives/ElevationProvider/index.d.ts.map +1 -0
- package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
- package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
- package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
- package/dist/types/src/{components → primitives}/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
- package/dist/types/src/{components → primitives}/ThemeProvider/index.d.ts +1 -1
- package/dist/types/src/primitives/ThemeProvider/index.d.ts.map +1 -0
- package/dist/types/src/primitives/index.d.ts +3 -2
- package/dist/types/src/primitives/index.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
- package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
- package/dist/types/src/theme/bindTheme.d.ts +3 -0
- package/dist/types/src/theme/bindTheme.d.ts.map +1 -0
- package/dist/types/src/theme/defaultTheme.d.ts +4 -0
- package/dist/types/src/theme/defaultTheme.d.ts.map +1 -0
- package/dist/types/src/theme/index.d.ts +31 -0
- package/dist/types/src/theme/index.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +9 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/util/index.d.ts +2 -1
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/src/util/mobile.d.ts +5 -0
- package/dist/types/src/util/mobile.d.ts.map +1 -0
- package/dist/types/src/util/slots.d.ts +57 -0
- package/dist/types/src/util/slots.d.ts.map +1 -0
- package/dist/types/src/util/usePx.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +19 -17
- package/src/components/Avatars/Avatar.theme.ts +93 -0
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -1
- package/src/components/Breadcrumb/Breadcrumb.theme.ts +26 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +14 -2
- package/src/components/Button/Button.theme.ts +31 -0
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Button/IconButton.stories.tsx +50 -2
- package/src/components/Button/IconButton.theme.ts +21 -0
- package/src/components/Calendar/Calendar.stories.tsx +43 -0
- package/src/components/Calendar/Calendar.theme.ts +74 -0
- package/src/components/Calendar/Calendar.tsx +196 -0
- package/src/components/Calendar/index.ts +5 -0
- package/src/components/Card/Card.stories.tsx +40 -19
- package/src/components/Card/Card.theme.ts +93 -0
- package/src/components/Card/Card.tsx +121 -147
- package/src/components/Carousel/Carousel.tsx +2 -10
- package/src/components/Clipboard/CopyButton.tsx +1 -1
- package/src/{primitives → components}/Column/Column.stories.tsx +1 -1
- package/src/components/Column/Column.theme.ts +48 -0
- package/src/{primitives → components}/Column/Column.tsx +2 -1
- package/src/{primitives → components}/Column/index.ts +1 -0
- package/src/components/Column/withColumn.ts +27 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +102 -0
- package/src/components/DatePicker/DatePicker.theme.ts +35 -0
- package/src/components/DatePicker/DatePicker.tsx +279 -0
- package/src/components/DatePicker/index.ts +5 -0
- package/src/components/Dialog/AlertDialog.tsx +12 -13
- package/src/components/Dialog/Dialog.stories.tsx +2 -2
- package/src/components/Dialog/Dialog.theme.ts +61 -0
- package/src/components/Dialog/Dialog.tsx +46 -17
- package/src/components/ErrorFallback/ErrorFallback.tsx +14 -8
- package/src/components/ErrorFallback/ErrorStack.tsx +12 -6
- package/src/components/Focus/Focus.theme.ts +32 -0
- package/src/components/Focus/Focus.tsx +1 -1
- package/src/components/Icon/Icon.theme.ts +45 -0
- package/src/components/Icon/IconBlock.tsx +38 -0
- package/src/components/Icon/index.ts +1 -0
- package/src/components/Image/Image.stories.tsx +1 -1
- package/src/components/Input/Input.stories.tsx +132 -29
- package/src/components/Input/Input.theme.ts +191 -0
- package/src/components/Input/Input.tsx +207 -2
- package/src/components/Input/SegmentedInput.tsx +454 -0
- package/src/components/Input/constants.ts +5 -0
- package/src/components/Input/index.ts +2 -0
- package/src/components/Link/Link.theme.ts +16 -0
- package/src/components/List/List.theme.ts +47 -0
- package/src/components/List/List.tsx +2 -2
- package/src/components/List/ListDropIndicator.tsx +1 -1
- package/src/components/List/TreeDropIndicator.tsx +3 -3
- package/src/components/List/Treegrid.theme.ts +35 -0
- package/src/components/List/Treegrid.tsx +3 -4
- package/src/components/Main/Main.theme.ts +29 -0
- package/src/components/Main/Main.tsx +9 -7
- package/src/components/Main/constants.ts +6 -0
- package/src/components/Main/index.ts +1 -0
- package/src/components/MediaPlayer/MediaPlayer.tsx +61 -36
- package/src/components/Menu/ContextMenu.stories.tsx +0 -3
- package/src/components/Menu/DropdownMenu.stories.tsx +0 -3
- package/src/components/Menu/DropdownMenu.tsx +15 -15
- package/src/components/Menu/Menu.theme.ts +48 -0
- package/src/components/Message/Message.stories.tsx +42 -4
- package/src/components/Message/Message.theme.ts +44 -0
- package/src/components/Message/Message.tsx +63 -20
- package/src/{primitives → components}/Panel/Panel.stories.tsx +2 -3
- package/src/components/Panel/Panel.theme.ts +42 -0
- package/src/{primitives → components}/Panel/Panel.tsx +2 -1
- package/src/components/Popover/Popover.theme.ts +40 -0
- package/src/components/Popover/Popover.tsx +7 -7
- package/src/components/ScrollArea/ScrollArea.stories.tsx +1 -1
- package/src/components/ScrollArea/ScrollArea.theme.ts +107 -0
- package/src/components/ScrollArea/ScrollArea.tsx +3 -2
- package/src/components/ScrollArea/index.ts +1 -0
- package/src/components/ScrollArea/scrollbar.ts +21 -0
- package/src/components/ScrollContainer/ScrollContainer.stories.tsx +1 -1
- package/src/components/ScrollContainer/ScrollContainer.tsx +57 -55
- package/src/components/Select/Select.theme.ts +55 -0
- package/src/components/Select/Select.tsx +26 -10
- package/src/components/Separator/Separator.theme.ts +23 -0
- package/src/components/Skeleton/Skeleton.theme.ts +22 -0
- package/src/components/Splitter/Splitter.stories.tsx +1 -1
- package/src/components/Splitter/Splitter.theme.ts +18 -0
- package/src/components/Splitter/Splitter.tsx +10 -15
- package/src/components/Status/Status.theme.ts +31 -0
- package/src/components/Status/Status.tsx +1 -2
- package/src/components/Tag/Tag.theme.ts +22 -0
- package/src/components/Toast/Toast.stories.tsx +41 -20
- package/src/components/Toast/Toast.theme.ts +56 -0
- package/src/components/Toast/Toast.tsx +95 -27
- package/src/components/Toolbar/Toolbar.theme.ts +36 -0
- package/src/components/Toolbar/Toolbar.tsx +63 -13
- package/src/components/Tooltip/Tooltip.stories.tsx +0 -9
- package/src/components/Tooltip/Tooltip.theme.ts +19 -0
- package/src/components/Tooltip/Tooltip.tsx +4 -4
- package/src/components/Tooltip/index.ts +1 -0
- package/src/components/Tooltip/tooltipContent.ts +16 -0
- package/src/components/index.ts +5 -5
- package/src/exemplars/generics.stories.tsx +1 -2
- package/src/exemplars/slot.stories.tsx +2 -1
- package/src/hooks/useDensityContext.ts +1 -1
- package/src/hooks/useElevationContext.ts +1 -1
- package/src/hooks/useThemeContext.ts +1 -1
- package/src/hooks/useTranslationsContext.ts +1 -1
- package/src/index.ts +1 -0
- package/src/playground/Custom.stories.tsx +12 -32
- package/src/primitives/Container/Container.tsx +3 -1
- package/src/{components → primitives}/DensityProvider/DensityProvider.tsx +1 -1
- package/src/primitives/Flex/Flex.tsx +3 -1
- package/src/primitives/Grid/Grid.tsx +3 -1
- package/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.tsx +1 -1
- package/src/{components → primitives}/ThemeProvider/ThemeProvider.tsx +1 -1
- package/src/{components → primitives}/ThemeProvider/index.ts +1 -1
- package/src/primitives/index.ts +4 -2
- package/src/testing/decorators/withLayoutVariants.tsx +1 -1
- package/src/testing/decorators/withTheme.tsx +21 -13
- package/src/theme/bindTheme.ts +13 -0
- package/src/theme/defaultTheme.ts +83 -0
- package/src/theme/index.ts +37 -0
- package/src/translations.ts +9 -0
- package/src/util/index.ts +2 -1
- package/src/util/mobile.ts +11 -0
- package/src/util/slots.ts +129 -0
- package/src/util/usePx.ts +4 -1
- package/dist/lib/browser/chunk-A5QCIG5R.mjs +0 -24
- package/dist/lib/browser/chunk-A5QCIG5R.mjs.map +0 -7
- package/dist/lib/browser/chunk-LY5XDQR5.mjs +0 -846
- package/dist/lib/browser/chunk-LY5XDQR5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NGKLIKP3.mjs +0 -848
- package/dist/lib/node-esm/chunk-NGKLIKP3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XCFLA74M.mjs.map +0 -7
- package/dist/types/src/components/DensityProvider/index.d.ts.map +0 -1
- package/dist/types/src/components/ElevationProvider/index.d.ts.map +0 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts.map +0 -1
- package/dist/types/src/primitives/Column/index.d.ts +0 -2
- package/dist/types/src/primitives/Column/index.d.ts.map +0 -1
- package/dist/types/src/primitives/Panel/Panel.d.ts.map +0 -1
- package/dist/types/src/primitives/Panel/index.d.ts.map +0 -1
- package/dist/types/src/util/hasIosKeyboard.d.ts +0 -2
- package/dist/types/src/util/hasIosKeyboard.d.ts.map +0 -1
- package/src/util/hasIosKeyboard.ts +0 -8
- /package/dist/types/src/{primitives → components}/Column/Column.d.ts +0 -0
- /package/dist/types/src/{primitives → components}/Column/Column.stories.d.ts +0 -0
- /package/dist/types/src/{primitives → components}/Panel/Panel.stories.d.ts +0 -0
- /package/dist/types/src/{primitives → components}/Panel/index.d.ts +0 -0
- /package/dist/types/src/{components → primitives}/DensityProvider/DensityProvider.d.ts +0 -0
- /package/dist/types/src/{components → primitives}/DensityProvider/index.d.ts +0 -0
- /package/dist/types/src/{components → primitives}/ElevationProvider/ElevationProvider.d.ts +0 -0
- /package/dist/types/src/{components → primitives}/ElevationProvider/index.d.ts +0 -0
- /package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts +0 -0
- /package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.stories.d.ts +0 -0
- /package/dist/types/src/{components → primitives}/ThemeProvider/TranslationsProvider.d.ts +0 -0
- /package/src/{primitives → components}/Column/AUDIT.md +0 -0
- /package/src/{primitives → components}/Panel/index.ts +0 -0
- /package/src/{components → primitives}/DensityProvider/index.ts +0 -0
- /package/src/{components → primitives}/ElevationProvider/ElevationProvider.tsx +0 -0
- /package/src/{components → primitives}/ElevationProvider/index.ts +0 -0
- /package/src/{components → primitives}/ThemeProvider/TranslationsProvider.tsx +0 -0
|
@@ -18,10 +18,10 @@ import React, {
|
|
|
18
18
|
import { addEventListener, combine } from '@dxos/async';
|
|
19
19
|
import { invariant } from '@dxos/invariant';
|
|
20
20
|
import { useMergeRefs } from '@dxos/react-hooks';
|
|
21
|
-
import { composable, composableProps, slottable } from '@dxos/ui-theme';
|
|
22
21
|
import { mx } from '@dxos/ui-theme';
|
|
23
22
|
import { type SlottableProps } from '@dxos/ui-types';
|
|
24
23
|
|
|
24
|
+
import { composable, composableProps, slottable } from '../../util';
|
|
25
25
|
import { type ThemedClassName } from '../../util';
|
|
26
26
|
import { IconButton } from '../Button';
|
|
27
27
|
import { ScrollArea, type ScrollAreaRootProps } from '../ScrollArea';
|
|
@@ -55,7 +55,7 @@ const [ScrollContainerProvider, useScrollContainerContext] =
|
|
|
55
55
|
// Root
|
|
56
56
|
//
|
|
57
57
|
|
|
58
|
-
type
|
|
58
|
+
type ScrollContainerRootProps = PropsWithChildren<{
|
|
59
59
|
pin?: boolean;
|
|
60
60
|
behavior?: ScrollBehavior;
|
|
61
61
|
}>;
|
|
@@ -64,7 +64,7 @@ type RootProps = PropsWithChildren<{
|
|
|
64
64
|
* Headless scroll container that provides context for scroll state.
|
|
65
65
|
* Render ScrollContainer.Content and ScrollContainer.Viewport as children.
|
|
66
66
|
*/
|
|
67
|
-
const
|
|
67
|
+
const ScrollContainerRoot = forwardRef<ScrollController, ScrollContainerRootProps>(
|
|
68
68
|
({ children, pin, behavior: behaviorProp = 'smooth' }, forwardedRef) => {
|
|
69
69
|
const scrollerRef = useRef<HTMLDivElement | null>(null);
|
|
70
70
|
const autoScrollRef = useRef(false);
|
|
@@ -139,23 +139,23 @@ const Root = forwardRef<ScrollController, RootProps>(
|
|
|
139
139
|
},
|
|
140
140
|
);
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
ScrollContainerRoot.displayName = 'ScrollContainer.Root';
|
|
143
143
|
|
|
144
144
|
//
|
|
145
145
|
// Content
|
|
146
146
|
//
|
|
147
147
|
|
|
148
|
-
type
|
|
148
|
+
type ScrollContainerContentProps = Pick<ScrollAreaRootProps, 'thin' | 'padding' | 'centered'>;
|
|
149
149
|
|
|
150
150
|
/**
|
|
151
151
|
* Composable wrapper around ScrollArea.Root.
|
|
152
152
|
* Provides the DOM structure for the scroll container.
|
|
153
153
|
*/
|
|
154
|
-
const
|
|
154
|
+
const ScrollContainerContent = composable<HTMLDivElement, ScrollContainerContentProps>(
|
|
155
155
|
({ children, thin, padding, centered, ...props }, forwardedRef) => {
|
|
156
156
|
return (
|
|
157
157
|
<ScrollArea.Root
|
|
158
|
-
{...composableProps(props, { classNames: 'relative' })}
|
|
158
|
+
{...composableProps(props, { classNames: 'relative isolate' })}
|
|
159
159
|
thin={thin}
|
|
160
160
|
padding={padding}
|
|
161
161
|
centered={centered}
|
|
@@ -167,7 +167,7 @@ const Content = composable<HTMLDivElement, ContentProps>(
|
|
|
167
167
|
},
|
|
168
168
|
);
|
|
169
169
|
|
|
170
|
-
|
|
170
|
+
ScrollContainerContent.displayName = 'ScrollContainer.Content';
|
|
171
171
|
|
|
172
172
|
//
|
|
173
173
|
// Viewport
|
|
@@ -175,40 +175,42 @@ Content.displayName = 'ScrollContainer.Content';
|
|
|
175
175
|
|
|
176
176
|
const VIEWPORT_NAME = 'ScrollContainer.Viewport';
|
|
177
177
|
|
|
178
|
-
type
|
|
178
|
+
type ScrollContainerViewportProps = SlottableProps;
|
|
179
179
|
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
const ScrollContainerViewport = slottable<HTMLDivElement, ScrollContainerViewportProps>(
|
|
181
|
+
({ children, asChild, ...props }, forwardedRef) => {
|
|
182
|
+
const scrollerRef = useRef<HTMLDivElement>(null);
|
|
183
|
+
const mergedRef = useMergeRefs([forwardedRef, scrollerRef]);
|
|
184
|
+
const { setViewport, setPinned, setOverflow } = useScrollContainerContext(VIEWPORT_NAME);
|
|
184
185
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
186
|
+
// Register the scroll element with Root and set up wheel/scroll listeners.
|
|
187
|
+
useEffect(() => {
|
|
188
|
+
const el = scrollerRef.current;
|
|
189
|
+
if (!el) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
191
192
|
|
|
192
|
-
|
|
193
|
+
setViewport(el);
|
|
193
194
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
195
|
+
return combine(
|
|
196
|
+
addEventListener(el, 'wheel', () => setPinned(isBottom(el))),
|
|
197
|
+
addEventListener(el, 'scroll', () => setOverflow((el.scrollTop ?? 0) > 0)),
|
|
198
|
+
() => setViewport(null),
|
|
199
|
+
);
|
|
200
|
+
}, [setViewport, setPinned, setOverflow]);
|
|
200
201
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
202
|
+
return (
|
|
203
|
+
<>
|
|
204
|
+
<ScrollArea.Viewport asChild={asChild} {...composableProps(props)} ref={mergedRef}>
|
|
205
|
+
{children}
|
|
206
|
+
</ScrollArea.Viewport>
|
|
207
|
+
<ScrollContainerPinEffect scrollerRef={scrollerRef} />
|
|
208
|
+
</>
|
|
209
|
+
);
|
|
210
|
+
},
|
|
211
|
+
);
|
|
210
212
|
|
|
211
|
-
|
|
213
|
+
ScrollContainerViewport.displayName = VIEWPORT_NAME;
|
|
212
214
|
|
|
213
215
|
/**
|
|
214
216
|
* Isolated component that consumes pinned/controller from context.
|
|
@@ -216,7 +218,7 @@ Viewport.displayName = VIEWPORT_NAME;
|
|
|
216
218
|
*/
|
|
217
219
|
const PIN_EFFECT_NAME = 'ScrollContainer.PinEffect';
|
|
218
220
|
|
|
219
|
-
const
|
|
221
|
+
const ScrollContainerPinEffect = ({ scrollerRef }: { scrollerRef: RefObject<HTMLDivElement | null> }) => {
|
|
220
222
|
const { pinned, controller } = useScrollContainerContext(PIN_EFFECT_NAME);
|
|
221
223
|
|
|
222
224
|
// Pin scroll to bottom when content changes.
|
|
@@ -269,9 +271,9 @@ const PinEffect = ({ scrollerRef }: { scrollerRef: RefObject<HTMLDivElement | nu
|
|
|
269
271
|
|
|
270
272
|
const FADE_NAME = 'ScrollContainer.Fade';
|
|
271
273
|
|
|
272
|
-
type
|
|
274
|
+
type ScrollContainerFadeProps = {};
|
|
273
275
|
|
|
274
|
-
|
|
276
|
+
function ScrollContainerFade() {
|
|
275
277
|
const { overflow } = useScrollContainerContext(FADE_NAME);
|
|
276
278
|
|
|
277
279
|
return (
|
|
@@ -285,9 +287,9 @@ const Fade = () => {
|
|
|
285
287
|
)}
|
|
286
288
|
/>
|
|
287
289
|
);
|
|
288
|
-
}
|
|
290
|
+
}
|
|
289
291
|
|
|
290
|
-
|
|
292
|
+
ScrollContainerFade.displayName = FADE_NAME;
|
|
291
293
|
|
|
292
294
|
//
|
|
293
295
|
// ScrollDownButton
|
|
@@ -295,9 +297,9 @@ Fade.displayName = FADE_NAME;
|
|
|
295
297
|
|
|
296
298
|
const SCROLL_DOWN_BUTTON_NAME = 'ScrollContainer.ScrollDownButton';
|
|
297
299
|
|
|
298
|
-
type
|
|
300
|
+
type ScrollContainerScrollDownButtonProps = ThemedClassName;
|
|
299
301
|
|
|
300
|
-
|
|
302
|
+
function ScrollContainerScrollDownButton({ classNames }: ScrollContainerScrollDownButtonProps) {
|
|
301
303
|
const { pinned, controller } = useScrollContainerContext(SCROLL_DOWN_BUTTON_NAME);
|
|
302
304
|
|
|
303
305
|
return (
|
|
@@ -318,9 +320,9 @@ const ScrollDownButton = ({ classNames }: ScrollDownButtonProps) => {
|
|
|
318
320
|
/>
|
|
319
321
|
</div>
|
|
320
322
|
);
|
|
321
|
-
}
|
|
323
|
+
}
|
|
322
324
|
|
|
323
|
-
|
|
325
|
+
ScrollContainerScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
|
|
324
326
|
|
|
325
327
|
//
|
|
326
328
|
// ScrollContainer
|
|
@@ -329,17 +331,17 @@ ScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
|
|
|
329
331
|
export { useScrollContainerContext };
|
|
330
332
|
|
|
331
333
|
export const ScrollContainer = {
|
|
332
|
-
Root,
|
|
333
|
-
Content,
|
|
334
|
-
Viewport,
|
|
335
|
-
Fade,
|
|
336
|
-
ScrollDownButton,
|
|
334
|
+
Root: ScrollContainerRoot,
|
|
335
|
+
Content: ScrollContainerContent,
|
|
336
|
+
Viewport: ScrollContainerViewport,
|
|
337
|
+
Fade: ScrollContainerFade,
|
|
338
|
+
ScrollDownButton: ScrollContainerScrollDownButton,
|
|
337
339
|
};
|
|
338
340
|
|
|
339
341
|
export type {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
342
|
+
ScrollContainerRootProps,
|
|
343
|
+
ScrollContainerContentProps,
|
|
344
|
+
ScrollContainerViewportProps,
|
|
345
|
+
ScrollContainerFadeProps,
|
|
346
|
+
ScrollContainerScrollDownButtonProps,
|
|
345
347
|
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2022 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx, surfaceShadow, surfaceZIndex } from '@dxos/ui-theme';
|
|
6
|
+
import { type ComponentFunction, type Elevation, type Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
export type SelectStyleProps = Partial<{
|
|
9
|
+
elevation: Elevation;
|
|
10
|
+
}>;
|
|
11
|
+
|
|
12
|
+
const content: ComponentFunction<SelectStyleProps> = ({ elevation }, ...etc) => {
|
|
13
|
+
return mx(
|
|
14
|
+
'dx-modal-surface rounded-sm border border-separator',
|
|
15
|
+
'min-w-(--radix-select-trigger-width) max-h-(--radix-select-content-available-height)',
|
|
16
|
+
surfaceShadow({ elevation: 'positioned' }),
|
|
17
|
+
surfaceZIndex({ elevation, level: 'menu' }),
|
|
18
|
+
...etc,
|
|
19
|
+
);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const triggerButton: ComponentFunction<SelectStyleProps> = (_props, ...etc) =>
|
|
23
|
+
mx('grid grid-cols-[1fr_auto] [&>span]:text-left', ...etc);
|
|
24
|
+
|
|
25
|
+
const viewport: ComponentFunction<SelectStyleProps> = (_props, ...etc) => mx(...etc);
|
|
26
|
+
|
|
27
|
+
const item: ComponentFunction<SelectStyleProps> = (_props, ...etc) =>
|
|
28
|
+
mx(
|
|
29
|
+
'flex items-center min-h-[2rem] px-2.5 py-1 gap-2',
|
|
30
|
+
'text-base-fg leading-none select-none outline-hidden',
|
|
31
|
+
'[&>svg]:invisible [&[data-state=checked]>svg]:visible',
|
|
32
|
+
'dx-highlighted',
|
|
33
|
+
...etc,
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const itemIndicator: ComponentFunction<SelectStyleProps> = (_props, ...etc) => mx('items-center', ...etc);
|
|
37
|
+
|
|
38
|
+
const arrow: ComponentFunction<SelectStyleProps> = (_props, ...etc) => mx('fill-separator', ...etc);
|
|
39
|
+
|
|
40
|
+
const separator: ComponentFunction<SelectStyleProps> = (_props, ...etc) =>
|
|
41
|
+
mx('self-stretch border-b my-1 border-separator', ...etc);
|
|
42
|
+
|
|
43
|
+
const scrollButton: ComponentFunction<SelectStyleProps> = (_props, ...etc) =>
|
|
44
|
+
mx('dx-modal-surface flex items-center justify-center cursor-default h-6 w-full', ...etc);
|
|
45
|
+
|
|
46
|
+
export const selectTheme: Theme<SelectStyleProps> = {
|
|
47
|
+
content,
|
|
48
|
+
triggerButton,
|
|
49
|
+
viewport,
|
|
50
|
+
item,
|
|
51
|
+
itemIndicator,
|
|
52
|
+
arrow,
|
|
53
|
+
separator,
|
|
54
|
+
scrollButton,
|
|
55
|
+
};
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
6
6
|
import React, { forwardRef } from 'react';
|
|
7
7
|
|
|
8
|
-
import { useElevationContext, useThemeContext } from '../../hooks';
|
|
9
|
-
import { useSafeCollisionPadding } from '../../hooks/useSafeCollisionPadding';
|
|
8
|
+
import { useSafeCollisionPadding, useElevationContext, useThemeContext } from '../../hooks';
|
|
10
9
|
import { type ThemedClassName } from '../../util';
|
|
11
10
|
import { Button, type ButtonProps } from '../Button';
|
|
12
11
|
import { Icon } from '../Icon';
|
|
@@ -34,12 +33,12 @@ const SelectPortal = SelectPrimitive.Portal;
|
|
|
34
33
|
type SelectTriggerButtonProps = Omit<ButtonProps, 'children'> & Pick<SelectValueProps, 'placeholder' | 'children'>;
|
|
35
34
|
|
|
36
35
|
const SelectTriggerButton = forwardRef<HTMLButtonElement, SelectTriggerButtonProps>(
|
|
37
|
-
({ children, placeholder, ...props }, forwardedRef) => {
|
|
36
|
+
({ children, placeholder, classNames, ...props }, forwardedRef) => {
|
|
37
|
+
const { tx } = useThemeContext();
|
|
38
38
|
return (
|
|
39
39
|
<SelectPrimitive.Trigger asChild ref={forwardedRef}>
|
|
40
|
-
<Button {...props}>
|
|
40
|
+
<Button {...props} classNames={tx('select.triggerButton', {}, classNames)}>
|
|
41
41
|
<SelectPrimitive.Value placeholder={placeholder}>{children}</SelectPrimitive.Value>
|
|
42
|
-
<span className='w-1 flex-1' />
|
|
43
42
|
<SelectPrimitive.Icon asChild>
|
|
44
43
|
<Icon size={3} icon='ph--caret-down--bold' />
|
|
45
44
|
</SelectPrimitive.Icon>
|
|
@@ -49,6 +48,8 @@ const SelectTriggerButton = forwardRef<HTMLButtonElement, SelectTriggerButtonPro
|
|
|
49
48
|
},
|
|
50
49
|
);
|
|
51
50
|
|
|
51
|
+
SelectTriggerButton.displayName = 'Select.TriggerButton';
|
|
52
|
+
|
|
52
53
|
type SelectContentProps = ThemedClassName<SelectPrimitive.SelectContentProps>;
|
|
53
54
|
|
|
54
55
|
const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(
|
|
@@ -71,6 +72,8 @@ const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(
|
|
|
71
72
|
},
|
|
72
73
|
);
|
|
73
74
|
|
|
75
|
+
SelectContent.displayName = 'Select.Content';
|
|
76
|
+
|
|
74
77
|
type SelectScrollUpButtonProps = ThemedClassName<SelectPrimitive.SelectScrollUpButtonProps>;
|
|
75
78
|
|
|
76
79
|
const SelectScrollUpButton = forwardRef<HTMLDivElement, SelectScrollUpButtonProps>(
|
|
@@ -88,6 +91,8 @@ const SelectScrollUpButton = forwardRef<HTMLDivElement, SelectScrollUpButtonProp
|
|
|
88
91
|
},
|
|
89
92
|
);
|
|
90
93
|
|
|
94
|
+
SelectScrollUpButton.displayName = 'Select.ScrollUpButton';
|
|
95
|
+
|
|
91
96
|
type SelectScrollDownButtonProps = ThemedClassName<SelectPrimitive.SelectScrollDownButtonProps>;
|
|
92
97
|
|
|
93
98
|
const SelectScrollDownButton = forwardRef<HTMLDivElement, SelectScrollDownButtonProps>(
|
|
@@ -105,6 +110,8 @@ const SelectScrollDownButton = forwardRef<HTMLDivElement, SelectScrollDownButton
|
|
|
105
110
|
},
|
|
106
111
|
);
|
|
107
112
|
|
|
113
|
+
SelectScrollDownButton.displayName = 'Select.ScrollDownButton';
|
|
114
|
+
|
|
108
115
|
type SelectViewportProps = ThemedClassName<SelectPrimitive.SelectViewportProps>;
|
|
109
116
|
|
|
110
117
|
const SelectViewport = forwardRef<HTMLDivElement, SelectViewportProps>(
|
|
@@ -118,6 +125,8 @@ const SelectViewport = forwardRef<HTMLDivElement, SelectViewportProps>(
|
|
|
118
125
|
},
|
|
119
126
|
);
|
|
120
127
|
|
|
128
|
+
SelectViewport.displayName = 'Select.Viewport';
|
|
129
|
+
|
|
121
130
|
type SelectItemProps = ThemedClassName<SelectPrimitive.SelectItemProps>;
|
|
122
131
|
|
|
123
132
|
const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(({ classNames, ...props }, forwardedRef) => {
|
|
@@ -125,6 +134,8 @@ const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(({ classNames, ..
|
|
|
125
134
|
return <SelectPrimitive.Item {...props} className={tx('select.item', {}, classNames)} ref={forwardedRef} />;
|
|
126
135
|
});
|
|
127
136
|
|
|
137
|
+
SelectItem.displayName = 'Select.Item';
|
|
138
|
+
|
|
128
139
|
type SelectItemTextProps = SelectPrimitive.SelectItemTextProps;
|
|
129
140
|
|
|
130
141
|
const SelectItemText = SelectPrimitive.ItemText;
|
|
@@ -146,22 +157,23 @@ const SelectItemIndicator = forwardRef<HTMLDivElement, SelectItemIndicatorProps>
|
|
|
146
157
|
},
|
|
147
158
|
);
|
|
148
159
|
|
|
160
|
+
SelectItemIndicator.displayName = 'Select.ItemIndicator';
|
|
161
|
+
|
|
149
162
|
type SelectOptionProps = SelectItemProps;
|
|
150
163
|
|
|
151
|
-
// TODO(burdon): Option to show icon on left/right.
|
|
152
164
|
const SelectOption = forwardRef<HTMLDivElement, SelectItemProps>(({ children, classNames, ...props }, forwardedRef) => {
|
|
153
165
|
const { tx } = useThemeContext();
|
|
154
166
|
return (
|
|
155
167
|
<SelectPrimitive.Item {...props} className={tx('select.item', {}, classNames)} ref={forwardedRef}>
|
|
156
168
|
<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
|
|
157
|
-
<span className='grow
|
|
158
|
-
|
|
159
|
-
<Icon icon='ph--check--regular' />
|
|
160
|
-
{/* </SelectPrimitive.ItemIndicator> */}
|
|
169
|
+
<span className='grow' />
|
|
170
|
+
<Icon size={3} icon='ph--check--regular' />
|
|
161
171
|
</SelectPrimitive.Item>
|
|
162
172
|
);
|
|
163
173
|
});
|
|
164
174
|
|
|
175
|
+
SelectOption.displayName = 'Select.Option';
|
|
176
|
+
|
|
165
177
|
type SelectGroupProps = SelectPrimitive.SelectGroupProps;
|
|
166
178
|
|
|
167
179
|
const SelectGroup = SelectPrimitive.Group;
|
|
@@ -177,6 +189,8 @@ const SelectSeparator = forwardRef<HTMLDivElement, SelectSeparatorProps>(({ clas
|
|
|
177
189
|
return <SelectPrimitive.Separator {...props} className={tx('select.separator', {}, classNames)} ref={forwardedRef} />;
|
|
178
190
|
});
|
|
179
191
|
|
|
192
|
+
SelectSeparator.displayName = 'Select.Separator';
|
|
193
|
+
|
|
180
194
|
type SelectArrowProps = ThemedClassName<SelectPrimitive.SelectArrowProps>;
|
|
181
195
|
|
|
182
196
|
const SelectArrow = forwardRef<SVGSVGElement, SelectArrowProps>(({ classNames, ...props }, forwardedRef) => {
|
|
@@ -184,6 +198,8 @@ const SelectArrow = forwardRef<SVGSVGElement, SelectArrowProps>(({ classNames, .
|
|
|
184
198
|
return <SelectPrimitive.Arrow {...props} className={tx('select.arrow', {}, classNames)} ref={forwardedRef} />;
|
|
185
199
|
});
|
|
186
200
|
|
|
201
|
+
SelectArrow.displayName = 'Select.Arrow';
|
|
202
|
+
|
|
187
203
|
export const Select = {
|
|
188
204
|
Root: SelectRoot,
|
|
189
205
|
Trigger: SelectTrigger,
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import { type ComponentFunction, type Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
export type SeparatorStyleProps = {
|
|
9
|
+
orientation?: 'horizontal' | 'vertical';
|
|
10
|
+
subdued?: boolean;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const root: ComponentFunction<SeparatorStyleProps> = ({ orientation, subdued }, ...etc) =>
|
|
14
|
+
mx(
|
|
15
|
+
'self-stretch',
|
|
16
|
+
orientation === 'vertical' ? 'border-e mx-1' : 'border-b my-1',
|
|
17
|
+
subdued ? 'border-subdued-separator' : 'border-separator',
|
|
18
|
+
...etc,
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
export const separatorTheme: Theme<SeparatorStyleProps> = {
|
|
22
|
+
root,
|
|
23
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import type { ComponentFunction, Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
export type SkeletonStyleProps = {
|
|
9
|
+
variant?: 'default' | 'circle' | 'text';
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const root: ComponentFunction<SkeletonStyleProps> = ({ variant = 'default' }, ...etc) =>
|
|
13
|
+
mx(
|
|
14
|
+
'animate-pulse bg-neutral-300 dark:bg-neutral-700 rounded-md',
|
|
15
|
+
variant === 'circle' && 'rounded-full',
|
|
16
|
+
variant === 'text' && 'rounded-sm',
|
|
17
|
+
...etc,
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
export const skeletonTheme: Theme<SkeletonStyleProps> = {
|
|
21
|
+
root,
|
|
22
|
+
};
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import React, { type ComponentPropsWithoutRef, forwardRef, useState } from 'react';
|
|
7
7
|
|
|
8
|
-
import { Panel } from '../../primitives';
|
|
9
8
|
import { withLayout, withTheme } from '../../testing';
|
|
9
|
+
import { Panel } from '../Panel';
|
|
10
10
|
import { ScrollArea } from '../ScrollArea';
|
|
11
11
|
import { Toolbar } from '../Toolbar';
|
|
12
12
|
import { Splitter, type SplitterRootProps } from './Splitter';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import { type ComponentFunction, type Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
export type SplitterStyleProps = {};
|
|
9
|
+
|
|
10
|
+
const root: ComponentFunction<SplitterStyleProps> = (_props, ...etc) => mx('relative h-full overflow-hidden', ...etc);
|
|
11
|
+
|
|
12
|
+
const panel: ComponentFunction<SplitterStyleProps> = (_props, ...etc) =>
|
|
13
|
+
mx('absolute inset-x-0 flex flex-col overflow-hidden', ...etc);
|
|
14
|
+
|
|
15
|
+
export const splitterTheme: Theme<SplitterStyleProps> = {
|
|
16
|
+
root,
|
|
17
|
+
panel,
|
|
18
|
+
};
|
|
@@ -7,9 +7,8 @@ import { Primitive } from '@radix-ui/react-primitive';
|
|
|
7
7
|
import { Slot } from '@radix-ui/react-slot';
|
|
8
8
|
import React from 'react';
|
|
9
9
|
|
|
10
|
-
import { composableProps, slottable } from '@dxos/ui-theme';
|
|
11
|
-
|
|
12
10
|
import { useThemeContext } from '../../hooks';
|
|
11
|
+
import { composableProps, slottable } from '../../util';
|
|
13
12
|
import { ThemedClassName } from '../../util';
|
|
14
13
|
|
|
15
14
|
type ScopedProps<P> = P & { __scopeSplitter?: any };
|
|
@@ -35,11 +34,9 @@ const [SplitterProvider, useSplitterContext] = createSplitterContext<SplitterCon
|
|
|
35
34
|
|
|
36
35
|
const ROOT_NAME = 'Splitter.Root';
|
|
37
36
|
|
|
38
|
-
type
|
|
39
|
-
|
|
40
|
-
type RootProps = RootOwnProps;
|
|
37
|
+
type SplitterRootProps = Partial<SplitterContextValue>;
|
|
41
38
|
|
|
42
|
-
const
|
|
39
|
+
const SplitterRoot = slottable<HTMLDivElement, SplitterRootProps>(
|
|
43
40
|
({ asChild, mode = 'top', ratio = 0.5, transition = 250, children, ...props }, forwardedRef) => {
|
|
44
41
|
const { tx } = useThemeContext();
|
|
45
42
|
const { __scopeSplitter, ...rest } = props as ScopedProps<typeof props>;
|
|
@@ -56,7 +53,7 @@ const Root = slottable<HTMLDivElement, RootOwnProps>(
|
|
|
56
53
|
},
|
|
57
54
|
);
|
|
58
55
|
|
|
59
|
-
|
|
56
|
+
SplitterRoot.displayName = ROOT_NAME;
|
|
60
57
|
|
|
61
58
|
//
|
|
62
59
|
// Panel
|
|
@@ -64,13 +61,11 @@ Root.displayName = ROOT_NAME;
|
|
|
64
61
|
|
|
65
62
|
const PANEL_NAME = 'Splitter.Panel';
|
|
66
63
|
|
|
67
|
-
type
|
|
64
|
+
type SplitterPanelProps = ThemedClassName<{
|
|
68
65
|
position: 'top' | 'bottom';
|
|
69
66
|
}>;
|
|
70
67
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const Panel = slottable<HTMLDivElement, PanelOwnProps>(
|
|
68
|
+
const SplitterPanel = slottable<HTMLDivElement, SplitterPanelProps>(
|
|
74
69
|
({ classNames, asChild, children, position, style, ...props }, forwardedRef) => {
|
|
75
70
|
const { tx } = useThemeContext();
|
|
76
71
|
const { __scopeSplitter, ...rest } = props as ScopedProps<typeof props>;
|
|
@@ -111,17 +106,17 @@ const Panel = slottable<HTMLDivElement, PanelOwnProps>(
|
|
|
111
106
|
},
|
|
112
107
|
);
|
|
113
108
|
|
|
114
|
-
|
|
109
|
+
SplitterPanel.displayName = PANEL_NAME;
|
|
115
110
|
|
|
116
111
|
//
|
|
117
112
|
// Splitter
|
|
118
113
|
//
|
|
119
114
|
|
|
120
115
|
const Splitter = {
|
|
121
|
-
Root,
|
|
122
|
-
Panel,
|
|
116
|
+
Root: SplitterRoot,
|
|
117
|
+
Panel: SplitterPanel,
|
|
123
118
|
};
|
|
124
119
|
|
|
125
120
|
export { Splitter, createSplitterScope };
|
|
126
121
|
|
|
127
|
-
export type { Mode as SplitterMode,
|
|
122
|
+
export type { Mode as SplitterMode, SplitterRootProps, SplitterPanelProps };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import type { ComponentFunction, Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
export type StatusStyleProps = {
|
|
9
|
+
variant?: 'default' | 'main-bottom';
|
|
10
|
+
indeterminate?: boolean;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const root: ComponentFunction<StatusStyleProps> = ({ variant = 'default' }, ...etc) =>
|
|
14
|
+
mx(
|
|
15
|
+
'h-1 relative rounded-full overflow-hidden',
|
|
16
|
+
variant === 'main-bottom' ? 'w-full block' : 'inline-20 inline-block bg-base-surface',
|
|
17
|
+
...etc,
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
const bar: ComponentFunction<StatusStyleProps> = ({ variant = 'default', indeterminate }, ...etc) =>
|
|
21
|
+
mx(
|
|
22
|
+
'absolute inset-y-0 block rounded-full',
|
|
23
|
+
variant === 'main-bottom' ? 'bg-composer-300' : 'bg-un-accent',
|
|
24
|
+
indeterminate ? 'animate-progress-indeterminate' : 'start-0',
|
|
25
|
+
...etc,
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
export const statusTheme: Theme<StatusStyleProps> = {
|
|
29
|
+
root,
|
|
30
|
+
bar,
|
|
31
|
+
};
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { type ComponentPropsWithRef, forwardRef } from 'react';
|
|
6
6
|
|
|
7
|
-
import { type StatusStyleProps } from '@dxos/ui-theme';
|
|
8
|
-
|
|
9
7
|
import { useThemeContext } from '../../hooks';
|
|
8
|
+
import { type StatusStyleProps } from '../../theme';
|
|
10
9
|
import { type ThemedClassName } from '../../util';
|
|
11
10
|
|
|
12
11
|
type StatusProps = ThemedClassName<
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import {
|
|
7
|
+
type ChromaticPalette,
|
|
8
|
+
type ComponentFunction,
|
|
9
|
+
type MessageValence,
|
|
10
|
+
type NeutralPalette,
|
|
11
|
+
type Theme,
|
|
12
|
+
} from '@dxos/ui-types';
|
|
13
|
+
|
|
14
|
+
export type TagStyleProps = {
|
|
15
|
+
palette?: ChromaticPalette | NeutralPalette | MessageValence;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const root: ComponentFunction<TagStyleProps> = (_, ...etc) => mx('dx-tag', ...etc);
|
|
19
|
+
|
|
20
|
+
export const tagTheme: Theme<TagStyleProps> = {
|
|
21
|
+
root,
|
|
22
|
+
};
|