@dxos/react-ui 0.8.4-staging.ac66bdf99f → 0.9.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 +102 -5
- package/README.md +1 -1
- package/dist/lib/browser/chunk-5SPBSIWS.mjs +33 -0
- package/dist/lib/browser/chunk-5SPBSIWS.mjs.map +7 -0
- package/dist/lib/browser/chunk-7JFD5ZHZ.mjs +1612 -0
- package/dist/lib/browser/chunk-7JFD5ZHZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +3039 -1891
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +10 -13
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/translations.mjs +9 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-FPVTVXND.mjs +35 -0
- package/dist/lib/node-esm/chunk-FPVTVXND.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-TTEL2FP2.mjs +1614 -0
- package/dist/lib/node-esm/chunk-TTEL2FP2.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +3039 -1891
- 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 +10 -13
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/translations.mjs +10 -0
- package/dist/lib/node-esm/translations.mjs.map +7 -0
- package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
- package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +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/Avatars/AvatarGroup.stories.d.ts.map +1 -1
- 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.stories.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.stories.d.ts +1 -1
- package/dist/types/src/components/Button/Button.stories.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.d.ts +1 -0
- package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
- 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/Button/Toggle.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/ToggleGroup.d.ts +2 -2
- package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
- package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
- 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 +63 -57
- 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 +106 -0
- package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -0
- package/dist/types/src/components/Carousel/Carousel.stories.d.ts +14 -0
- package/dist/types/src/components/Carousel/Carousel.stories.d.ts.map +1 -0
- package/dist/types/src/components/Carousel/index.d.ts +2 -0
- package/dist/types/src/components/Carousel/index.d.ts.map +1 -0
- package/dist/types/src/components/Clipboard/ClipboardProvider.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/components/Clipboard/index.d.ts.map +1 -1
- package/dist/types/src/{primitives → components}/Column/Column.d.ts +4 -4
- package/dist/types/src/components/Column/Column.d.ts.map +1 -0
- package/dist/types/src/components/Column/Column.stories.d.ts.map +1 -0
- 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 +20 -20
- package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.d.ts +21 -19
- package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.stories.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/ErrorFallback.stories.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
- package/dist/types/src/components/Focus/Focus.d.ts +2 -2
- package/dist/types/src/components/Focus/Focus.d.ts.map +1 -1
- package/dist/types/src/components/Focus/Focus.stories.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.d.ts +1 -0
- package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
- package/dist/types/src/components/Icon/Icon.stories.d.ts +1 -1
- package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
- 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/Image/Image.d.ts +8 -1
- package/dist/types/src/components/Image/Image.d.ts.map +1 -1
- package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
- package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.d.ts +88 -13
- 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.d.ts.map +1 -1
- package/dist/types/src/components/Link/Link.stories.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 +2 -2
- package/dist/types/src/components/List/List.d.ts.map +1 -1
- package/dist/types/src/components/List/List.stories.d.ts +1 -1
- package/dist/types/src/components/List/List.stories.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/ListDropIndicator.d.ts.map +1 -1
- package/dist/types/src/components/List/Tree.d.ts +2 -2
- package/dist/types/src/components/List/Tree.d.ts.map +1 -1
- package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
- package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
- package/dist/types/src/components/List/Treegrid.d.ts +2 -2
- package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
- package/dist/types/src/components/List/Treegrid.stories.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 +9 -5
- package/dist/types/src/components/Main/Main.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.stories.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/Main/useSwipeToDismiss.d.ts.map +1 -1
- package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts +47 -0
- package/dist/types/src/components/MediaPlayer/MediaPlayer.d.ts.map +1 -0
- package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts +16 -0
- package/dist/types/src/components/MediaPlayer/MediaPlayer.stories.d.ts.map +1 -0
- package/dist/types/src/components/MediaPlayer/index.d.ts +2 -0
- package/dist/types/src/components/MediaPlayer/index.d.ts.map +1 -0
- package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
- package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
- package/dist/types/src/components/Menu/DropdownMenu.d.ts +11 -3
- package/dist/types/src/components/Menu/DropdownMenu.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 +3 -3
- 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 +5 -5
- package/dist/types/src/components/Panel/Panel.d.ts.map +1 -0
- package/dist/types/src/components/Panel/Panel.stories.d.ts.map +1 -0
- 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.d.ts +10 -2
- package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
- 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 +2 -2
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +2 -2
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.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 +20 -18
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.stories.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.stories.d.ts.map +1 -1
- 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 +6 -8
- package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
- package/dist/types/src/components/Splitter/Splitter.stories.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.stories.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.stories.d.ts.map +1 -1
- 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 +12 -9
- 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 +24 -12
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.stories.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.d.ts +8 -8
- package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
- 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 +7 -4
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/exemplars/generics.stories.d.ts +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/exemplars/tabster.stories.d.ts.map +1 -1
- package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
- package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
- package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
- package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
- package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
- package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
- package/dist/types/src/hooks/useTranslationsContext.d.ts +1 -1
- package/dist/types/src/hooks/useVisualViewport.d.ts.map +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/Controls.stories.d.ts.map +1 -1
- package/dist/types/src/playground/Custom.stories.d.ts +1 -1
- package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
- package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Container/Container.d.ts +1 -1
- package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
- package/dist/types/src/primitives/Container/Container.stories.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 +1 -1
- package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
- package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Grid/Grid.d.ts +1 -1
- package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
- package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
- package/dist/types/src/{components → primitives}/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/src/primitives/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts +128 -0
- package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts.map +1 -0
- package/dist/types/src/primitives/ThemeProvider/index.d.ts +4 -0
- 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/Loading.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withLayoutVariants.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 +17 -3
- 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 +29 -25
- 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 +2 -2
- package/src/components/Button/IconButton.stories.tsx +51 -3
- package/src/components/Button/IconButton.theme.ts +21 -0
- package/src/components/Button/IconButton.tsx +3 -2
- 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 +43 -22
- package/src/components/Card/Card.theme.ts +93 -0
- package/src/components/Card/Card.tsx +161 -169
- package/src/components/Carousel/Carousel.stories.tsx +47 -0
- package/src/components/Carousel/Carousel.tsx +373 -0
- package/src/components/Carousel/index.ts +5 -0
- package/src/components/Clipboard/CopyButton.tsx +3 -3
- 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 -16
- 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/Icon.tsx +10 -3
- 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/Image/Image.tsx +38 -9
- package/src/components/Input/Input.stories.tsx +132 -29
- package/src/components/Input/Input.theme.ts +191 -0
- package/src/components/Input/Input.tsx +208 -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/Link/Link.tsx +10 -2
- package/src/components/List/List.stories.tsx +1 -1
- package/src/components/List/List.theme.ts +47 -0
- package/src/components/List/List.tsx +3 -3
- package/src/components/List/ListDropIndicator.tsx +1 -2
- package/src/components/List/Tree.stories.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.stories.tsx +50 -0
- package/src/components/MediaPlayer/MediaPlayer.tsx +182 -0
- package/src/components/MediaPlayer/index.ts +5 -0
- 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 +43 -5
- package/src/components/Message/Message.theme.ts +44 -0
- package/src/components/Message/Message.tsx +76 -16
- package/src/{primitives → components}/Panel/Panel.stories.tsx +2 -3
- package/src/components/Panel/Panel.theme.ts +41 -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 +2 -6
- 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 +58 -58
- 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 +67 -15
- package/src/components/Tooltip/Tooltip.stories.tsx +1 -10
- package/src/components/Tooltip/Tooltip.theme.ts +19 -0
- package/src/components/Tooltip/Tooltip.tsx +18 -17
- package/src/components/Tooltip/index.ts +1 -0
- package/src/components/Tooltip/tooltipContent.ts +16 -0
- package/src/components/index.ts +7 -5
- package/src/exemplars/generics.stories.tsx +1 -2
- package/src/exemplars/slot.stories.tsx +5 -6
- package/src/exemplars/virtualizer.stories.tsx +0 -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 +2 -2
- package/src/primitives/index.ts +4 -2
- package/src/testing/decorators/withLayout.tsx +7 -17
- 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 +14 -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-OCVRIJCH.mjs +0 -848
- package/dist/lib/browser/chunk-OCVRIJCH.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QUD5P3RU.mjs +0 -850
- package/dist/lib/node-esm/chunk-QUD5P3RU.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/ThemeProvider.stories.d.ts.map +0 -1
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +0 -129
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +0 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts +0 -4
- package/dist/types/src/components/ThemeProvider/index.d.ts.map +0 -1
- package/dist/types/src/primitives/Column/Column.d.ts.map +0 -1
- package/dist/types/src/primitives/Column/Column.stories.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/Panel.stories.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.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/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
|
@@ -5,13 +5,18 @@
|
|
|
5
5
|
import { createContext } from '@radix-ui/react-context';
|
|
6
6
|
import { Primitive } from '@radix-ui/react-primitive';
|
|
7
7
|
import { Slot } from '@radix-ui/react-slot';
|
|
8
|
-
import React, { type ComponentPropsWithRef, forwardRef } from 'react';
|
|
8
|
+
import React, { type CSSProperties, type ComponentPropsWithRef, forwardRef } from 'react';
|
|
9
|
+
import { useTranslation } from 'react-i18next';
|
|
9
10
|
|
|
10
11
|
import { useId } from '@dxos/react-hooks';
|
|
11
12
|
import { type Elevation, type MessageValence } from '@dxos/ui-types';
|
|
12
13
|
|
|
14
|
+
import { translationKey } from '#translations';
|
|
15
|
+
|
|
13
16
|
import { useElevationContext, useThemeContext } from '../../hooks';
|
|
14
17
|
import { type ThemedClassName } from '../../util';
|
|
18
|
+
import { IconButton } from '../Button';
|
|
19
|
+
import { Column } from '../Column';
|
|
15
20
|
import { Icon } from '../Icon';
|
|
16
21
|
|
|
17
22
|
const messageIcons: Record<MessageValence, string> = {
|
|
@@ -34,6 +39,42 @@ type MessageContextValue = { titleId?: string; descriptionId: string; valence: M
|
|
|
34
39
|
|
|
35
40
|
const MESSAGE_NAME = 'Message';
|
|
36
41
|
|
|
42
|
+
// CSS custom properties for valence color inheritance — consumed by Button variant='valence'.
|
|
43
|
+
// Extending CSSProperties so entries satisfy the style prop type without a cast at the use site.
|
|
44
|
+
type ValenceCSSVars = CSSProperties & {
|
|
45
|
+
'--dx-valence-bg': string;
|
|
46
|
+
'--dx-valence-bg-hover': string;
|
|
47
|
+
'--dx-valence-text': string;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const valenceVars: Record<MessageValence, ValenceCSSVars> = {
|
|
51
|
+
success: {
|
|
52
|
+
'--dx-valence-bg': 'var(--color-success-bg)',
|
|
53
|
+
'--dx-valence-bg-hover': 'var(--color-success-bg-hover)',
|
|
54
|
+
'--dx-valence-text': 'var(--color-success-text)',
|
|
55
|
+
},
|
|
56
|
+
info: {
|
|
57
|
+
'--dx-valence-bg': 'var(--color-info-bg)',
|
|
58
|
+
'--dx-valence-bg-hover': 'var(--color-info-bg-hover)',
|
|
59
|
+
'--dx-valence-text': 'var(--color-info-text)',
|
|
60
|
+
},
|
|
61
|
+
warning: {
|
|
62
|
+
'--dx-valence-bg': 'var(--color-warning-bg)',
|
|
63
|
+
'--dx-valence-bg-hover': 'var(--color-warning-bg-hover)',
|
|
64
|
+
'--dx-valence-text': 'var(--color-warning-text)',
|
|
65
|
+
},
|
|
66
|
+
error: {
|
|
67
|
+
'--dx-valence-bg': 'var(--color-error-bg)',
|
|
68
|
+
'--dx-valence-bg-hover': 'var(--color-error-bg-hover)',
|
|
69
|
+
'--dx-valence-text': 'var(--color-error-text)',
|
|
70
|
+
},
|
|
71
|
+
neutral: {
|
|
72
|
+
'--dx-valence-bg': 'var(--color-neutral-bg)',
|
|
73
|
+
'--dx-valence-bg-hover': 'var(--color-neutral-bg-hover)',
|
|
74
|
+
'--dx-valence-text': 'var(--color-neutral-text)',
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
|
|
37
78
|
const [MessageProvider, useMessageContext] = createContext<MessageContextValue>(MESSAGE_NAME);
|
|
38
79
|
|
|
39
80
|
//
|
|
@@ -58,20 +99,21 @@ const MessageRoot = forwardRef<HTMLDivElement, MessageRootProps>(
|
|
|
58
99
|
const titleId = useId('message__title', propsTitleId);
|
|
59
100
|
const descriptionId = useId('message__description', propsDescriptionId);
|
|
60
101
|
const elevation = useElevationContext(propsElevation);
|
|
61
|
-
const Comp = asChild ? Slot : Primitive.div;
|
|
62
102
|
|
|
63
103
|
return (
|
|
64
104
|
<MessageProvider {...{ titleId, descriptionId, valence }}>
|
|
65
|
-
<
|
|
105
|
+
<Column.Root
|
|
106
|
+
asChild={asChild}
|
|
66
107
|
role={valence === 'neutral' ? 'paragraph' : 'alert'}
|
|
67
|
-
{...props}
|
|
68
|
-
className={tx('message.root', { valence, elevation }, classNames)}
|
|
69
108
|
aria-labelledby={titleId}
|
|
70
109
|
aria-describedby={descriptionId}
|
|
110
|
+
{...props}
|
|
111
|
+
style={{ ...valenceVars[valence], ...(props.style || {}) }}
|
|
112
|
+
classNames={tx('message.root', { valence, elevation }, classNames)}
|
|
71
113
|
ref={forwardedRef}
|
|
72
114
|
>
|
|
73
115
|
{children}
|
|
74
|
-
</
|
|
116
|
+
</Column.Root>
|
|
75
117
|
</MessageProvider>
|
|
76
118
|
);
|
|
77
119
|
},
|
|
@@ -84,23 +126,41 @@ MessageRoot.displayName = MESSAGE_NAME;
|
|
|
84
126
|
//
|
|
85
127
|
|
|
86
128
|
type MessageTitleProps = Omit<ThemedClassName<ComponentPropsWithRef<typeof Primitive.h2>>, 'id'> & {
|
|
87
|
-
asChild?: boolean;
|
|
88
129
|
icon?: string;
|
|
130
|
+
onClose?: () => void;
|
|
89
131
|
};
|
|
90
132
|
|
|
91
|
-
const MESSAGE_TITLE_NAME = '
|
|
133
|
+
const MESSAGE_TITLE_NAME = 'Message.Title';
|
|
92
134
|
|
|
93
|
-
const MessageTitle = forwardRef<
|
|
94
|
-
({
|
|
135
|
+
const MessageTitle = forwardRef<HTMLDivElement, MessageTitleProps>(
|
|
136
|
+
({ classNames, children, icon: iconProp, onClose }, forwardedRef) => {
|
|
137
|
+
const { t } = useTranslation(translationKey);
|
|
95
138
|
const { tx } = useThemeContext();
|
|
96
139
|
const { titleId, valence } = useMessageContext(MESSAGE_TITLE_NAME);
|
|
97
|
-
const Comp = asChild ? Slot : Primitive.h2;
|
|
98
140
|
const icon = iconProp ?? messageIcons[valence];
|
|
99
141
|
return (
|
|
100
|
-
<
|
|
101
|
-
{
|
|
102
|
-
|
|
103
|
-
|
|
142
|
+
<Column.Row classNames={tx('message.header', {}, classNames)} ref={forwardedRef}>
|
|
143
|
+
{icon && (
|
|
144
|
+
<div className={tx('message.icon', { valence })}>
|
|
145
|
+
<Icon icon={icon} />
|
|
146
|
+
</div>
|
|
147
|
+
)}
|
|
148
|
+
<h2 className={tx('message.title', {}, classNames)} id={titleId}>
|
|
149
|
+
{children}
|
|
150
|
+
</h2>
|
|
151
|
+
{onClose && (
|
|
152
|
+
<div className={tx('message.close', {})}>
|
|
153
|
+
<IconButton
|
|
154
|
+
variant='ghost'
|
|
155
|
+
icon='ph--x--regular'
|
|
156
|
+
iconOnly
|
|
157
|
+
density='sm'
|
|
158
|
+
label={t('toolbar-close.label')}
|
|
159
|
+
onClick={onClose}
|
|
160
|
+
/>
|
|
161
|
+
</div>
|
|
162
|
+
)}
|
|
163
|
+
</Column.Row>
|
|
104
164
|
);
|
|
105
165
|
},
|
|
106
166
|
);
|
|
@@ -115,7 +175,7 @@ type MessageContentProps = Omit<ThemedClassName<ComponentPropsWithRef<typeof Pri
|
|
|
115
175
|
asChild?: boolean;
|
|
116
176
|
};
|
|
117
177
|
|
|
118
|
-
const MESSAGE_CONTENT_NAME = '
|
|
178
|
+
const MESSAGE_CONTENT_NAME = 'Message.Content';
|
|
119
179
|
|
|
120
180
|
const MessageContent = forwardRef<HTMLParagraphElement, MessageContentProps>(
|
|
121
181
|
({ asChild, classNames, children, ...props }, forwardedRef) => {
|
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import React from 'react';
|
|
7
7
|
|
|
8
|
-
import { composable, composableProps } from '@dxos/ui-theme';
|
|
9
|
-
|
|
10
8
|
import { Input, ScrollArea, ScrollAreaRootProps, Toolbar } from '../../components';
|
|
11
9
|
import { withLayout, withTheme } from '../../testing';
|
|
10
|
+
import { composable, composableProps } from '../../util';
|
|
12
11
|
import { Panel } from './Panel';
|
|
13
12
|
|
|
14
13
|
const List = composable<HTMLDivElement, ScrollAreaRootProps>((props, forwardedRef) => {
|
|
@@ -53,7 +52,7 @@ const DefaultStory = () => {
|
|
|
53
52
|
};
|
|
54
53
|
|
|
55
54
|
const meta: Meta = {
|
|
56
|
-
title: 'ui/react-ui-core/
|
|
55
|
+
title: 'ui/react-ui-core/components/Panel',
|
|
57
56
|
render: DefaultStory,
|
|
58
57
|
decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
|
|
59
58
|
parameters: {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import { type ComponentFunction } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
type Size = 'lg' | 'md' | 'sm';
|
|
9
|
+
|
|
10
|
+
export type PanelStyleProps = {
|
|
11
|
+
size?: Size;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const sizes: Record<Size, string> = {
|
|
15
|
+
lg: 'h-(--dx-topbar-size)',
|
|
16
|
+
md: 'h-(--dx-toolbar-size)',
|
|
17
|
+
sm: 'h-(--dx-statusbar-size)',
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const root: ComponentFunction<PanelStyleProps> = (_, ...etc) =>
|
|
21
|
+
mx(
|
|
22
|
+
'dx-container grid grid-cols-[100%] overflow-hidden',
|
|
23
|
+
// Add uncategorized children to content slot.
|
|
24
|
+
'[&>*:not([data-slot])]:[grid-area:content]',
|
|
25
|
+
...etc,
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
const toolbar: ComponentFunction<PanelStyleProps> = ({ size = 'md' }, ...etc) =>
|
|
29
|
+
mx('[grid-area:toolbar]', 'shrink-0', sizes[size], ...etc);
|
|
30
|
+
|
|
31
|
+
const content: ComponentFunction<PanelStyleProps> = (_, ...etc) => mx('[grid-area:content] min-h-0', ...etc);
|
|
32
|
+
|
|
33
|
+
const statusbar: ComponentFunction<PanelStyleProps> = ({ size = 'md' }, ...etc) =>
|
|
34
|
+
mx('[grid-area:statusbar]', 'shrink-0', sizes[size], ...etc);
|
|
35
|
+
|
|
36
|
+
export const panelTheme = {
|
|
37
|
+
root,
|
|
38
|
+
toolbar,
|
|
39
|
+
content,
|
|
40
|
+
statusbar,
|
|
41
|
+
};
|
|
@@ -6,10 +6,11 @@ import { Primitive } from '@radix-ui/react-primitive';
|
|
|
6
6
|
import { Slot } from '@radix-ui/react-slot';
|
|
7
7
|
import React, { type CSSProperties } from 'react';
|
|
8
8
|
|
|
9
|
-
import { composableProps, PanelStyleProps, slottable } from '@dxos/ui-theme';
|
|
10
9
|
import { type SlottableProps } from '@dxos/ui-types';
|
|
11
10
|
|
|
12
11
|
import { useThemeContext } from '../../hooks';
|
|
12
|
+
import { PanelStyleProps } from '../../theme';
|
|
13
|
+
import { composableProps, slottable } from '../../util';
|
|
13
14
|
|
|
14
15
|
//
|
|
15
16
|
// Root
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 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 PopoverStyleProps = Partial<{
|
|
9
|
+
constrainBlock: boolean;
|
|
10
|
+
constrainInline: boolean;
|
|
11
|
+
elevation: Elevation;
|
|
12
|
+
}>;
|
|
13
|
+
|
|
14
|
+
const content: ComponentFunction<PopoverStyleProps> = ({ elevation }, ...etc) =>
|
|
15
|
+
mx(
|
|
16
|
+
'dx-popover-surface border border-separator rounded-sm',
|
|
17
|
+
surfaceShadow({ elevation: 'positioned' }),
|
|
18
|
+
surfaceZIndex({ elevation, level: 'menu' }),
|
|
19
|
+
'dx-focus-ring',
|
|
20
|
+
...etc,
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
const viewport: ComponentFunction<PopoverStyleProps> = ({ constrainBlock, constrainInline }, ...etc) =>
|
|
24
|
+
mx(
|
|
25
|
+
'grid grid-rows-[1fr] min-h-0 min-w-popover-min-width',
|
|
26
|
+
(constrainBlock || constrainInline) && 'overflow-hidden',
|
|
27
|
+
constrainBlock && 'max-h-(--radix-popover-content-available-height)',
|
|
28
|
+
constrainBlock &&
|
|
29
|
+
'max-h-[min(var(--radix-popover-content-available-height),calc(100dvh-var(--spacing-screen-border)*2))]',
|
|
30
|
+
constrainInline && 'max-w-(--radix-popover-content-available-width)',
|
|
31
|
+
...etc,
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const arrow: ComponentFunction<PopoverStyleProps> = (_props, ...etc) => mx('fill-separator', ...etc);
|
|
35
|
+
|
|
36
|
+
export const popoverTheme: Theme<PopoverStyleProps> = {
|
|
37
|
+
content,
|
|
38
|
+
viewport,
|
|
39
|
+
arrow,
|
|
40
|
+
};
|
|
@@ -114,7 +114,7 @@ PopoverRoot.displayName = POPOVER_NAME;
|
|
|
114
114
|
// PopoverAnchor
|
|
115
115
|
//
|
|
116
116
|
|
|
117
|
-
const ANCHOR_NAME = '
|
|
117
|
+
const ANCHOR_NAME = 'Popover.Anchor';
|
|
118
118
|
|
|
119
119
|
type PopoverAnchorElement = ComponentRef<typeof PopperPrimitive.Anchor>;
|
|
120
120
|
type PopperAnchorProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Anchor>;
|
|
@@ -142,7 +142,7 @@ PopoverAnchor.displayName = ANCHOR_NAME;
|
|
|
142
142
|
// PopoverTrigger
|
|
143
143
|
//
|
|
144
144
|
|
|
145
|
-
const TRIGGER_NAME = '
|
|
145
|
+
const TRIGGER_NAME = 'Popover.Trigger';
|
|
146
146
|
|
|
147
147
|
type PopoverTriggerElement = ComponentRef<typeof Primitive.button>;
|
|
148
148
|
type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
@@ -187,7 +187,7 @@ PopoverTrigger.displayName = TRIGGER_NAME;
|
|
|
187
187
|
// PopoverVirtualTrigger
|
|
188
188
|
//
|
|
189
189
|
|
|
190
|
-
const VIRTUAL_TRIGGER_NAME = '
|
|
190
|
+
const VIRTUAL_TRIGGER_NAME = 'Popover.VirtualTrigger';
|
|
191
191
|
|
|
192
192
|
type PopoverVirtualTriggerProps = {
|
|
193
193
|
virtualRef: RefObject<PopoverTriggerElement | null>;
|
|
@@ -211,7 +211,7 @@ PopoverVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
|
|
|
211
211
|
// PopoverPortal
|
|
212
212
|
//
|
|
213
213
|
|
|
214
|
-
const PORTAL_NAME = '
|
|
214
|
+
const PORTAL_NAME = 'Popover.Portal';
|
|
215
215
|
|
|
216
216
|
type PortalContextValue = { forceMount?: true };
|
|
217
217
|
const [PortalProvider, usePortalContext] = createPopoverContext<PortalContextValue>(PORTAL_NAME, {
|
|
@@ -252,7 +252,7 @@ PopoverPortal.displayName = PORTAL_NAME;
|
|
|
252
252
|
// PopoverContent
|
|
253
253
|
//
|
|
254
254
|
|
|
255
|
-
const CONTENT_NAME = '
|
|
255
|
+
const CONTENT_NAME = 'Popover.Content';
|
|
256
256
|
|
|
257
257
|
type PopoverContentProps = ThemedClassName<PopoverContentTypeProps> & {
|
|
258
258
|
/**
|
|
@@ -512,7 +512,7 @@ const PopoverContentImpl = forwardRef<PopoverContentImplElement, PopoverContentI
|
|
|
512
512
|
// PopoverClose
|
|
513
513
|
//
|
|
514
514
|
|
|
515
|
-
const CLOSE_NAME = '
|
|
515
|
+
const CLOSE_NAME = 'Popover.Close';
|
|
516
516
|
|
|
517
517
|
type PopoverCloseElement = ComponentRef<typeof Primitive.button>;
|
|
518
518
|
type PopoverCloseProps = PrimitiveButtonProps;
|
|
@@ -538,7 +538,7 @@ PopoverClose.displayName = CLOSE_NAME;
|
|
|
538
538
|
// PopoverArrow
|
|
539
539
|
//
|
|
540
540
|
|
|
541
|
-
const ARROW_NAME = '
|
|
541
|
+
const ARROW_NAME = 'Popover.Arrow';
|
|
542
542
|
|
|
543
543
|
type PopoverArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;
|
|
544
544
|
type PopperArrowProps = ThemedClassName<ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>>;
|
|
@@ -8,8 +8,8 @@ import { random } from '@dxos/random';
|
|
|
8
8
|
import { mx } from '@dxos/ui-theme';
|
|
9
9
|
import { ThemedClassName } from '@dxos/ui-types';
|
|
10
10
|
|
|
11
|
-
import { Column } from '../../primitives';
|
|
12
11
|
import { withLayout, withTheme } from '../../testing';
|
|
12
|
+
import { Column } from '../Column';
|
|
13
13
|
import { Input } from '../Input';
|
|
14
14
|
import { ScrollArea } from './ScrollArea';
|
|
15
15
|
|
|
@@ -48,11 +48,7 @@ const Row = ({ items = 50 }: { items?: number }) => (
|
|
|
48
48
|
);
|
|
49
49
|
|
|
50
50
|
const Container = ({ classNames, children }: ThemedClassName<PropsWithChildren>) => {
|
|
51
|
-
return (
|
|
52
|
-
<div role='none' className={mx('border border-separator rounded-md overflow-hidden', classNames)}>
|
|
53
|
-
{children}
|
|
54
|
-
</div>
|
|
55
|
-
);
|
|
51
|
+
return <div className={mx('border border-separator rounded-md overflow-hidden', classNames)}>{children}</div>;
|
|
56
52
|
};
|
|
57
53
|
|
|
58
54
|
export const Vertical = {
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import { type AllowedAxis, type ComponentFunction, type Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
import { withColumn } from '../Column/withColumn';
|
|
9
|
+
|
|
10
|
+
export type ScrollAreaStyleProps = {
|
|
11
|
+
orientation?: AllowedAxis;
|
|
12
|
+
autoHide?: boolean;
|
|
13
|
+
/** Balance left/right, top/bottom offset with scrollbar. */
|
|
14
|
+
centered?: boolean;
|
|
15
|
+
/** Add default padding. */
|
|
16
|
+
/** TODO(burdon): Integrate with Column.Root padding. */
|
|
17
|
+
padding?: boolean;
|
|
18
|
+
/** Use thin scrollbars. */
|
|
19
|
+
/** TODO(burdon): Density fine/course. */
|
|
20
|
+
thin?: boolean;
|
|
21
|
+
/** Enable snap scrolling. */
|
|
22
|
+
snap?: boolean;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const root: ComponentFunction<ScrollAreaStyleProps> = ({ orientation }, ...etc) =>
|
|
26
|
+
mx(
|
|
27
|
+
// Expand
|
|
28
|
+
'dx-container',
|
|
29
|
+
|
|
30
|
+
orientation === 'vertical' && 'group/scroll-v flex flex-col',
|
|
31
|
+
orientation === 'horizontal' && 'group/scroll-h flex',
|
|
32
|
+
// `flex flex-col` is required (as in `vertical`) so the viewport's `flex-1 min-h-0` can
|
|
33
|
+
// bound its height; without it the viewport grows to content height and only scrolls
|
|
34
|
+
// horizontally (the root clips the vertical overflow instead of scrolling it).
|
|
35
|
+
orientation === 'all' && 'group/scroll-all flex flex-col',
|
|
36
|
+
|
|
37
|
+
// Apply col-span-full only when inside a Column.Root grid (detected via dx-column-root marker).
|
|
38
|
+
'[.dx-column-root_&]:col-span-full',
|
|
39
|
+
|
|
40
|
+
...etc,
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* NOTE: The browser reserves space for scrollbars.
|
|
45
|
+
*/
|
|
46
|
+
const viewport: ComponentFunction<ScrollAreaStyleProps> = (
|
|
47
|
+
{ orientation, centered, padding, snap, autoHide },
|
|
48
|
+
...etc
|
|
49
|
+
) => {
|
|
50
|
+
return mx(
|
|
51
|
+
'flex-1 min-h-0 w-full',
|
|
52
|
+
|
|
53
|
+
// Reset --dx-col so nested components don't try to grid-position themselves.
|
|
54
|
+
// ScrollArea has already consumed --gutter for padding.
|
|
55
|
+
withColumn.consumed(),
|
|
56
|
+
|
|
57
|
+
orientation === 'vertical' && 'overflow-y-scroll',
|
|
58
|
+
orientation === 'horizontal' && 'flex overflow-x-scroll overscroll-x-contain',
|
|
59
|
+
orientation === 'all' && 'overflow-scroll',
|
|
60
|
+
|
|
61
|
+
'[&::-webkit-scrollbar-corner]:bg-transparent',
|
|
62
|
+
'[&::-webkit-scrollbar-track]:bg-transparent',
|
|
63
|
+
'[&::-webkit-scrollbar-thumb]:rounded-none',
|
|
64
|
+
|
|
65
|
+
'[&::-webkit-scrollbar]:w-[var(--scroll-width)] [&::-webkit-scrollbar]:h-[var(--scroll-width)]',
|
|
66
|
+
|
|
67
|
+
// If contained within Column.Root grid the gutter is set by that component (--gutter CSS variable).
|
|
68
|
+
// If centered, left padding compensates for scrollbar width so content is visually centered.
|
|
69
|
+
(orientation === 'vertical' || orientation === 'all') &&
|
|
70
|
+
(padding
|
|
71
|
+
? [
|
|
72
|
+
centered ? 'pl-[var(--gutter,calc(var(--scroll-width)+var(--scroll-padding)))]' : 'pl-[var(--gutter,0)]',
|
|
73
|
+
'pr-[calc(var(--gutter,calc(var(--scroll-width)+var(--scroll-padding)))-var(--scroll-width))]',
|
|
74
|
+
]
|
|
75
|
+
: centered && 'pl-[var(--scroll-width)]'),
|
|
76
|
+
|
|
77
|
+
(orientation === 'horizontal' || orientation === 'all') &&
|
|
78
|
+
(padding
|
|
79
|
+
? [centered && 'pt-[calc(var(--scroll-width)+var(--scroll-padding))]', 'pb-[var(--scroll-padding)]']
|
|
80
|
+
: centered && 'pt-[var(--scroll-width)]'),
|
|
81
|
+
|
|
82
|
+
snap && [
|
|
83
|
+
orientation === 'vertical' && 'snap-y snap-mandatory',
|
|
84
|
+
orientation === 'horizontal' && 'snap-x snap-mandatory',
|
|
85
|
+
orientation === 'all' && 'snap-both snap-mandatory',
|
|
86
|
+
],
|
|
87
|
+
|
|
88
|
+
autoHide
|
|
89
|
+
? [
|
|
90
|
+
orientation === 'vertical' && 'group-hover/scroll-v:[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb',
|
|
91
|
+
orientation === 'horizontal' && 'group-hover/scroll-h:[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb',
|
|
92
|
+
orientation === 'all' && 'group-hover/scroll-all:[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb',
|
|
93
|
+
]
|
|
94
|
+
: [
|
|
95
|
+
orientation === 'vertical' && '[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb',
|
|
96
|
+
orientation === 'horizontal' && '[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb',
|
|
97
|
+
orientation === 'all' && '[&::-webkit-scrollbar-thumb]:bg-scrollbar-thumb',
|
|
98
|
+
],
|
|
99
|
+
|
|
100
|
+
...etc,
|
|
101
|
+
);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export const scrollAreaTheme: Theme<ScrollAreaStyleProps> = {
|
|
105
|
+
root,
|
|
106
|
+
viewport,
|
|
107
|
+
};
|
|
@@ -7,10 +7,11 @@ import { Primitive } from '@radix-ui/react-primitive';
|
|
|
7
7
|
import { Slot } from '@radix-ui/react-slot';
|
|
8
8
|
import React, { CSSProperties, useMemo } from 'react';
|
|
9
9
|
|
|
10
|
-
import { composableProps, scrollbar, slottable } from '@dxos/ui-theme';
|
|
11
10
|
import { type AllowedAxis, type SlottableProps } from '@dxos/ui-types';
|
|
12
11
|
|
|
13
12
|
import { useThemeContext } from '../../hooks';
|
|
13
|
+
import { composableProps, slottable } from '../../util';
|
|
14
|
+
import { scrollbar } from './scrollbar';
|
|
14
15
|
|
|
15
16
|
//
|
|
16
17
|
// Context
|
|
@@ -92,7 +93,7 @@ type ScrollAreaViewportProps = SlottableProps;
|
|
|
92
93
|
const ScrollAreaViewport = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
|
|
93
94
|
const { tx } = useThemeContext();
|
|
94
95
|
const options = useScrollAreaContext(SCROLLAREA_VIEWPORT_NAME);
|
|
95
|
-
const density = options.thin ? scrollbar.
|
|
96
|
+
const density = options.thin ? scrollbar.md : scrollbar.lg;
|
|
96
97
|
const { className, ...rest } = composableProps(props);
|
|
97
98
|
const { style, ...restWithoutStyle } = rest as { style?: CSSProperties; [key: string]: any };
|
|
98
99
|
const Comp = asChild ? Slot : Primitive.div;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Scrollbar sizing presets keyed by density tier.
|
|
7
|
+
*/
|
|
8
|
+
export const scrollbar = {
|
|
9
|
+
sm: {
|
|
10
|
+
size: 2,
|
|
11
|
+
padding: 2,
|
|
12
|
+
},
|
|
13
|
+
md: {
|
|
14
|
+
size: 4,
|
|
15
|
+
padding: 4,
|
|
16
|
+
},
|
|
17
|
+
lg: {
|
|
18
|
+
size: 8,
|
|
19
|
+
padding: 8,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
@@ -7,9 +7,9 @@ import React, { useEffect, useRef, useState } from 'react';
|
|
|
7
7
|
|
|
8
8
|
import { random } from '@dxos/random';
|
|
9
9
|
|
|
10
|
-
import { Panel } from '../../primitives';
|
|
11
10
|
import { withLayout, withTheme } from '../../testing';
|
|
12
11
|
import { Button } from '../Button';
|
|
12
|
+
import { Panel } from '../Panel';
|
|
13
13
|
import { Toolbar } from '../Toolbar';
|
|
14
14
|
import { ScrollContainer, type ScrollContainerRootProps, type ScrollController } from './ScrollContainer';
|
|
15
15
|
|