@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
|
@@ -12,32 +12,43 @@ import { Toast } from './Toast';
|
|
|
12
12
|
type ActionTriggerProps = { altText: string; trigger: ReactNode };
|
|
13
13
|
|
|
14
14
|
type StorybookToastProps = Partial<{
|
|
15
|
+
icon: string;
|
|
15
16
|
title: string;
|
|
16
17
|
description: string;
|
|
18
|
+
duration: number;
|
|
17
19
|
actionTriggers: ActionTriggerProps[];
|
|
18
20
|
openTrigger: string;
|
|
19
|
-
|
|
21
|
+
defaultOpen: boolean;
|
|
20
22
|
}>;
|
|
21
23
|
|
|
22
|
-
const DefaultStory = ({
|
|
23
|
-
|
|
24
|
+
const DefaultStory = ({
|
|
25
|
+
icon,
|
|
26
|
+
title,
|
|
27
|
+
description,
|
|
28
|
+
duration,
|
|
29
|
+
actionTriggers,
|
|
30
|
+
openTrigger,
|
|
31
|
+
defaultOpen = true,
|
|
32
|
+
}: StorybookToastProps) => {
|
|
33
|
+
const [open, setOpen] = useState(defaultOpen);
|
|
24
34
|
return (
|
|
25
35
|
<Toast.Provider>
|
|
26
36
|
<Button onClick={() => setOpen(true)}>{openTrigger}</Button>
|
|
27
37
|
<Toast.Viewport />
|
|
28
|
-
<Toast.Root open={open} onOpenChange={setOpen}>
|
|
29
|
-
<Toast.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
</Toast.
|
|
33
|
-
|
|
34
|
-
<Toast.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
<Toast.Root open={open} onOpenChange={setOpen} defaultOpen={defaultOpen} duration={duration}>
|
|
39
|
+
<Toast.Title icon={icon} onClose={() => setOpen(false)}>
|
|
40
|
+
{title}
|
|
41
|
+
</Toast.Title>
|
|
42
|
+
<Toast.Description>{description}</Toast.Description>
|
|
43
|
+
{actionTriggers && actionTriggers.length > 0 && (
|
|
44
|
+
<Toast.Actions>
|
|
45
|
+
{actionTriggers.map(({ altText, trigger }: ActionTriggerProps, index: number) => (
|
|
46
|
+
<Toast.Action key={index} altText={altText} asChild={typeof trigger !== 'string'}>
|
|
47
|
+
{trigger}
|
|
48
|
+
</Toast.Action>
|
|
49
|
+
))}
|
|
50
|
+
</Toast.Actions>
|
|
51
|
+
)}
|
|
41
52
|
</Toast.Root>
|
|
42
53
|
</Toast.Provider>
|
|
43
54
|
);
|
|
@@ -56,18 +67,28 @@ type Story = StoryObj<typeof meta>;
|
|
|
56
67
|
|
|
57
68
|
export const Default: Story = {
|
|
58
69
|
args: {
|
|
70
|
+
defaultOpen: true,
|
|
59
71
|
openTrigger: 'Open toast',
|
|
72
|
+
icon: 'ph--sparkle--regular',
|
|
60
73
|
title: 'This is a toast',
|
|
61
74
|
description: 'This goes away on its own with a timer.',
|
|
75
|
+
duration: 100_000,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export const WithAction: Story = {
|
|
80
|
+
args: {
|
|
81
|
+
defaultOpen: true,
|
|
82
|
+
openTrigger: 'Open toast',
|
|
83
|
+
icon: 'ph--sparkle--regular',
|
|
84
|
+
title: 'This is a toast',
|
|
85
|
+
description: 'This goes away on its own with a timer.',
|
|
86
|
+
duration: 100_000,
|
|
62
87
|
actionTriggers: [
|
|
63
88
|
{
|
|
64
89
|
altText: 'Press F5 to reload the page',
|
|
65
90
|
trigger: <Button variant='primary'>Reload</Button>,
|
|
66
91
|
},
|
|
67
92
|
],
|
|
68
|
-
closeTrigger: <Button>Close</Button>,
|
|
69
|
-
},
|
|
70
|
-
parameters: {
|
|
71
|
-
chromatic: { delay: 800 },
|
|
72
93
|
},
|
|
73
94
|
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx, surfaceShadow } from '@dxos/ui-theme';
|
|
6
|
+
import { type ComponentFunction, type Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
export type ToastStyleProps = {};
|
|
9
|
+
|
|
10
|
+
const viewport: ComponentFunction<ToastStyleProps> = (_props, ...etc) =>
|
|
11
|
+
mx(
|
|
12
|
+
// TODO(burdon): block-end should take into account status bar.
|
|
13
|
+
'z-40 fixed bottom-[calc(env(safe-area-inset-bottom)+1rem)] inset-start-[calc(env(safe-area-inset-left)+1rem)] inset-end-[calc(env(safe-area-inset-right)+1rem)] w-auto md:end-[calc(env(safe-area-inset-right)+1rem)] md:left-auto md:w-full md:max-w-sm',
|
|
14
|
+
'rounded-md flex flex-col gap-2',
|
|
15
|
+
...etc,
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const root: ComponentFunction<ToastStyleProps> = (_props, ...etc) =>
|
|
19
|
+
mx(
|
|
20
|
+
'dx-popover-surface rounded-md p-1',
|
|
21
|
+
surfaceShadow({ elevation: 'toast' }),
|
|
22
|
+
'radix-state-open:animate-toast-slide-in-bottom md:radix-state-open:animate-toast-slide-in-right',
|
|
23
|
+
'radix-state-closed:animate-toast-hide',
|
|
24
|
+
'radix-swipe-end:animate-toast-swipe-out',
|
|
25
|
+
'translate-x-radix-toast-swipe-move-x',
|
|
26
|
+
'radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]',
|
|
27
|
+
'dx-focus-ring',
|
|
28
|
+
...etc,
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
const grid: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('gap-y-1 pbe-1', ...etc);
|
|
32
|
+
|
|
33
|
+
const header: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('items-center', ...etc);
|
|
34
|
+
|
|
35
|
+
const icon: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('col-start-1 grid place-items-center', ...etc);
|
|
36
|
+
|
|
37
|
+
const title: ComponentFunction<ToastStyleProps> = (_props, ...etc) =>
|
|
38
|
+
mx('col-start-2 overflow-hidden truncate font-medium', ...etc);
|
|
39
|
+
|
|
40
|
+
const close: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('col-start-3', ...etc);
|
|
41
|
+
|
|
42
|
+
const description: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('col-start-2 text-description', ...etc);
|
|
43
|
+
|
|
44
|
+
const actions: ComponentFunction<ToastStyleProps> = (_props, ...etc) => mx('flex gap-2 mbs-1', ...etc);
|
|
45
|
+
|
|
46
|
+
export const toastTheme: Theme<ToastStyleProps> = {
|
|
47
|
+
viewport,
|
|
48
|
+
root,
|
|
49
|
+
grid,
|
|
50
|
+
header,
|
|
51
|
+
icon,
|
|
52
|
+
title,
|
|
53
|
+
close,
|
|
54
|
+
description,
|
|
55
|
+
actions,
|
|
56
|
+
};
|
|
@@ -2,18 +2,30 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { Primitive } from '@radix-ui/react-primitive';
|
|
6
|
-
import { Slot } from '@radix-ui/react-slot';
|
|
7
5
|
import * as ToastPrimitive from '@radix-ui/react-toast';
|
|
8
|
-
import React, { type ComponentPropsWithRef,
|
|
6
|
+
import React, { type ComponentPropsWithRef, forwardRef } from 'react';
|
|
7
|
+
import { useTranslation } from 'react-i18next';
|
|
8
|
+
|
|
9
|
+
import { translationKey } from '#translations';
|
|
9
10
|
|
|
10
11
|
import { useThemeContext } from '../../hooks';
|
|
12
|
+
import { DensityProvider, ElevationProvider } from '../../primitives';
|
|
11
13
|
import { type ThemedClassName } from '../../util';
|
|
12
|
-
import {
|
|
14
|
+
import { IconButton } from '../Button';
|
|
15
|
+
import { Column } from '../Column';
|
|
16
|
+
import { Icon } from '../Icon';
|
|
17
|
+
|
|
18
|
+
//
|
|
19
|
+
// Provider
|
|
20
|
+
//
|
|
13
21
|
|
|
14
22
|
type ToastProviderProps = ToastPrimitive.ToastProviderProps;
|
|
15
23
|
|
|
16
|
-
const ToastProvider
|
|
24
|
+
const ToastProvider = ToastPrimitive.Provider;
|
|
25
|
+
|
|
26
|
+
//
|
|
27
|
+
// Viewport
|
|
28
|
+
//
|
|
17
29
|
|
|
18
30
|
type ToastViewportProps = ThemedClassName<ToastPrimitive.ToastViewportProps>;
|
|
19
31
|
|
|
@@ -22,68 +34,125 @@ const ToastViewport = forwardRef<HTMLOListElement, ToastViewportProps>(({ classN
|
|
|
22
34
|
return <ToastPrimitive.Viewport {...props} className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
|
|
23
35
|
});
|
|
24
36
|
|
|
37
|
+
ToastViewport.displayName = 'Toast.Viewport';
|
|
38
|
+
|
|
39
|
+
//
|
|
40
|
+
// Root
|
|
41
|
+
//
|
|
42
|
+
|
|
25
43
|
type ToastRootProps = ThemedClassName<ToastPrimitive.ToastProps>;
|
|
26
44
|
|
|
27
45
|
const ToastRoot = forwardRef<HTMLLIElement, ToastRootProps>(({ classNames, children, ...props }, forwardedRef) => {
|
|
28
46
|
const { tx } = useThemeContext();
|
|
29
47
|
return (
|
|
30
48
|
<ToastPrimitive.Root {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
|
|
31
|
-
<ElevationProvider elevation='toast'>
|
|
49
|
+
<ElevationProvider elevation='toast'>
|
|
50
|
+
<Column.Root classNames={tx('toast.grid', {})}>{children}</Column.Root>
|
|
51
|
+
</ElevationProvider>
|
|
32
52
|
</ToastPrimitive.Root>
|
|
33
53
|
);
|
|
34
54
|
});
|
|
35
55
|
|
|
36
|
-
|
|
56
|
+
ToastRoot.displayName = 'Toast.Root';
|
|
37
57
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return <Comp {...props} className={tx('toast.body', {}, classNames)} ref={forwardedRef} />;
|
|
42
|
-
});
|
|
58
|
+
//
|
|
59
|
+
// Title
|
|
60
|
+
//
|
|
43
61
|
|
|
44
|
-
type ToastTitleProps = ThemedClassName<ToastPrimitive.ToastTitleProps
|
|
62
|
+
type ToastTitleProps = ThemedClassName<ToastPrimitive.ToastTitleProps> & {
|
|
63
|
+
icon?: string;
|
|
64
|
+
onClose?: () => void;
|
|
65
|
+
};
|
|
45
66
|
|
|
46
67
|
const ToastTitle = forwardRef<HTMLHeadingElement, ToastTitleProps>(
|
|
47
|
-
({
|
|
68
|
+
({ classNames, children, icon, onClose, ...props }, forwardedRef) => {
|
|
69
|
+
const { t } = useTranslation(translationKey);
|
|
48
70
|
const { tx } = useThemeContext();
|
|
49
|
-
|
|
50
|
-
|
|
71
|
+
return (
|
|
72
|
+
<Column.Row classNames={tx('toast.header', {})}>
|
|
73
|
+
{icon && (
|
|
74
|
+
<div className={tx('toast.icon', {})}>
|
|
75
|
+
<Icon icon={icon} size={5} />
|
|
76
|
+
</div>
|
|
77
|
+
)}
|
|
78
|
+
<ToastPrimitive.Title {...props} className={tx('toast.title', {}, classNames)} ref={forwardedRef}>
|
|
79
|
+
{children}
|
|
80
|
+
</ToastPrimitive.Title>
|
|
81
|
+
{onClose && (
|
|
82
|
+
<IconButton
|
|
83
|
+
variant='ghost'
|
|
84
|
+
icon='ph--x--regular'
|
|
85
|
+
iconOnly
|
|
86
|
+
label={t('toolbar-close.label')}
|
|
87
|
+
classNames={tx('toast.close', {})}
|
|
88
|
+
onClick={onClose}
|
|
89
|
+
/>
|
|
90
|
+
)}
|
|
91
|
+
</Column.Row>
|
|
92
|
+
);
|
|
51
93
|
},
|
|
52
94
|
);
|
|
53
95
|
|
|
96
|
+
ToastTitle.displayName = 'Toast.Title';
|
|
97
|
+
|
|
98
|
+
//
|
|
99
|
+
// Description
|
|
100
|
+
//
|
|
101
|
+
|
|
54
102
|
type ToastDescriptionProps = ThemedClassName<ToastPrimitive.ToastDescriptionProps>;
|
|
55
103
|
|
|
56
104
|
const ToastDescription = forwardRef<HTMLParagraphElement, ToastDescriptionProps>(
|
|
57
|
-
({
|
|
105
|
+
({ classNames, children, ...props }, forwardedRef) => {
|
|
58
106
|
const { tx } = useThemeContext();
|
|
59
|
-
|
|
60
|
-
|
|
107
|
+
return (
|
|
108
|
+
<ToastPrimitive.Description {...props} className={tx('toast.description', {}, classNames)} ref={forwardedRef}>
|
|
109
|
+
{children}
|
|
110
|
+
</ToastPrimitive.Description>
|
|
111
|
+
);
|
|
61
112
|
},
|
|
62
113
|
);
|
|
63
114
|
|
|
64
|
-
|
|
115
|
+
ToastDescription.displayName = 'Toast.Description';
|
|
116
|
+
|
|
117
|
+
//
|
|
118
|
+
// Actions
|
|
119
|
+
//
|
|
120
|
+
|
|
121
|
+
type ToastActionsProps = ThemedClassName<ComponentPropsWithRef<'div'>>;
|
|
65
122
|
|
|
66
123
|
const ToastActions = forwardRef<HTMLDivElement, ToastActionsProps>(
|
|
67
|
-
({
|
|
124
|
+
({ classNames, children, ...props }, forwardedRef) => {
|
|
68
125
|
const { tx } = useThemeContext();
|
|
69
|
-
|
|
70
|
-
|
|
126
|
+
return (
|
|
127
|
+
<Column.Center classNames={tx('toast.actions', {}, classNames)} ref={forwardedRef} {...props}>
|
|
128
|
+
<DensityProvider density='sm'>{children}</DensityProvider>
|
|
129
|
+
</Column.Center>
|
|
130
|
+
);
|
|
71
131
|
},
|
|
72
132
|
);
|
|
73
133
|
|
|
134
|
+
ToastActions.displayName = 'Toast.Actions';
|
|
135
|
+
|
|
136
|
+
//
|
|
137
|
+
// Action / Close
|
|
138
|
+
//
|
|
139
|
+
|
|
74
140
|
type ToastActionProps = ToastPrimitive.ToastActionProps;
|
|
75
141
|
|
|
76
|
-
const ToastAction
|
|
142
|
+
const ToastAction = ToastPrimitive.Action;
|
|
77
143
|
|
|
78
144
|
type ToastCloseProps = ToastPrimitive.ToastCloseProps;
|
|
79
145
|
|
|
80
|
-
const ToastClose
|
|
146
|
+
const ToastClose = ToastPrimitive.Close;
|
|
147
|
+
|
|
148
|
+
//
|
|
149
|
+
// Toast
|
|
150
|
+
//
|
|
81
151
|
|
|
82
152
|
export const Toast = {
|
|
83
153
|
Provider: ToastProvider,
|
|
84
154
|
Viewport: ToastViewport,
|
|
85
155
|
Root: ToastRoot,
|
|
86
|
-
Body: ToastBody,
|
|
87
156
|
Title: ToastTitle,
|
|
88
157
|
Description: ToastDescription,
|
|
89
158
|
Actions: ToastActions,
|
|
@@ -95,7 +164,6 @@ export type {
|
|
|
95
164
|
ToastProviderProps,
|
|
96
165
|
ToastViewportProps,
|
|
97
166
|
ToastRootProps,
|
|
98
|
-
ToastBodyProps,
|
|
99
167
|
ToastTitleProps,
|
|
100
168
|
ToastDescriptionProps,
|
|
101
169
|
ToastActionsProps,
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2022 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import { type ComponentFunction, type Density, type Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
export type ToolbarStyleProps = Partial<{
|
|
9
|
+
density: Density;
|
|
10
|
+
disabled: boolean;
|
|
11
|
+
layoutManaged: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
|
|
14
|
+
const layout =
|
|
15
|
+
'w-full shrink-0 flex flex-nowrap p-1 gap-1 items-center overflow-x-auto scrollbar-none dx-contain-layout';
|
|
16
|
+
|
|
17
|
+
const root: ComponentFunction<ToolbarStyleProps> = ({ density, disabled, layoutManaged }, ...etc) => {
|
|
18
|
+
return mx(
|
|
19
|
+
'bg-toolbar-surface dx-toolbar shadow-sm',
|
|
20
|
+
density === 'lg' && 'h-(--dx-rail-size) px-3!',
|
|
21
|
+
density === 'sm' && 'h-7 px-2!',
|
|
22
|
+
density === 'xs' && 'h-6 px-1!',
|
|
23
|
+
disabled && '*:opacity-20',
|
|
24
|
+
!layoutManaged && layout,
|
|
25
|
+
...etc,
|
|
26
|
+
);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const text: ComponentFunction<ToolbarStyleProps> = (_, ...etc) => {
|
|
30
|
+
return mx('px-2 grow truncate items-center', ...etc);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const toolbarTheme: Theme<ToolbarStyleProps> = {
|
|
34
|
+
root,
|
|
35
|
+
text,
|
|
36
|
+
};
|
|
@@ -6,15 +6,16 @@ import { Primitive } from '@radix-ui/react-primitive';
|
|
|
6
6
|
import { Slot } from '@radix-ui/react-slot';
|
|
7
7
|
import type { ToggleGroupItemProps as ToggleGroupItemPrimitiveProps } from '@radix-ui/react-toggle-group';
|
|
8
8
|
import * as ToolbarPrimitive from '@radix-ui/react-toolbar';
|
|
9
|
-
import React, { forwardRef } from 'react';
|
|
9
|
+
import React, { type MouseEventHandler, forwardRef } from 'react';
|
|
10
10
|
import { useTranslation } from 'react-i18next';
|
|
11
11
|
|
|
12
|
-
import { composable, composableProps, slottable, type ToolbarStyleProps } from '@dxos/ui-theme';
|
|
13
12
|
import { type SlottableProps } from '@dxos/ui-types';
|
|
14
13
|
|
|
15
14
|
import { translationKey } from '#translations';
|
|
16
15
|
|
|
17
16
|
import { useThemeContext } from '../../hooks';
|
|
17
|
+
import { type ToolbarStyleProps } from '../../theme';
|
|
18
|
+
import { composable, composableProps, slottable } from '../../util';
|
|
18
19
|
import {
|
|
19
20
|
Button,
|
|
20
21
|
ButtonGroup,
|
|
@@ -57,6 +58,8 @@ const ToolbarRoot = composable<HTMLDivElement, ToolbarRootProps>(
|
|
|
57
58
|
},
|
|
58
59
|
);
|
|
59
60
|
|
|
61
|
+
ToolbarRoot.displayName = 'Toolbar.Root';
|
|
62
|
+
|
|
60
63
|
//
|
|
61
64
|
// Text
|
|
62
65
|
//
|
|
@@ -74,6 +77,8 @@ const ToolbarText = slottable<HTMLDivElement>(({ children, asChild, ...props },
|
|
|
74
77
|
);
|
|
75
78
|
});
|
|
76
79
|
|
|
80
|
+
ToolbarText.displayName = 'Toolbar.Text';
|
|
81
|
+
|
|
77
82
|
//
|
|
78
83
|
// Button
|
|
79
84
|
//
|
|
@@ -88,6 +93,8 @@ const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>((props,
|
|
|
88
93
|
);
|
|
89
94
|
});
|
|
90
95
|
|
|
96
|
+
ToolbarButton.displayName = 'Toolbar.Button';
|
|
97
|
+
|
|
91
98
|
//
|
|
92
99
|
// IconButton
|
|
93
100
|
//
|
|
@@ -97,11 +104,13 @@ type ToolbarIconButtonProps = IconButtonProps;
|
|
|
97
104
|
const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>((props, forwardedRef) => {
|
|
98
105
|
return (
|
|
99
106
|
<ToolbarPrimitive.Button asChild>
|
|
100
|
-
<IconButton {...props}
|
|
107
|
+
<IconButton {...props} ref={forwardedRef} />
|
|
101
108
|
</ToolbarPrimitive.Button>
|
|
102
109
|
);
|
|
103
110
|
});
|
|
104
111
|
|
|
112
|
+
ToolbarIconButton.displayName = 'Toolbar.IconButton';
|
|
113
|
+
|
|
105
114
|
type ToolbarToggleProps = ToggleProps;
|
|
106
115
|
|
|
107
116
|
const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props, forwardedRef) => {
|
|
@@ -112,6 +121,8 @@ const ToolbarToggle = forwardRef<HTMLButtonElement, ToolbarToggleProps>((props,
|
|
|
112
121
|
);
|
|
113
122
|
});
|
|
114
123
|
|
|
124
|
+
ToolbarToggle.displayName = 'Toolbar.Toggle';
|
|
125
|
+
|
|
115
126
|
//
|
|
116
127
|
// Link
|
|
117
128
|
//
|
|
@@ -126,6 +137,8 @@ const ToolbarLink = forwardRef<HTMLAnchorElement, ToolbarLinkProps>((props, forw
|
|
|
126
137
|
);
|
|
127
138
|
});
|
|
128
139
|
|
|
140
|
+
ToolbarLink.displayName = 'Toolbar.Link';
|
|
141
|
+
|
|
129
142
|
type ToolbarToggleGroupProps = (
|
|
130
143
|
| Omit<ToolbarPrimitive.ToolbarToggleGroupSingleProps, 'className'>
|
|
131
144
|
| Omit<ToolbarPrimitive.ToolbarToggleGroupMultipleProps, 'className'>
|
|
@@ -146,6 +159,8 @@ const ToolbarToggleGroup = forwardRef<HTMLDivElement, ToolbarToggleGroupProps>(
|
|
|
146
159
|
},
|
|
147
160
|
);
|
|
148
161
|
|
|
162
|
+
ToolbarToggleGroup.displayName = 'Toolbar.ToggleGroup';
|
|
163
|
+
|
|
149
164
|
type ToolbarToggleGroupItemProps = ToggleGroupItemProps;
|
|
150
165
|
|
|
151
166
|
const ToolbarToggleGroupItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupItemProps>(
|
|
@@ -158,6 +173,8 @@ const ToolbarToggleGroupItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupI
|
|
|
158
173
|
},
|
|
159
174
|
);
|
|
160
175
|
|
|
176
|
+
ToolbarToggleGroupItem.displayName = 'Toolbar.ToggleGroupItem';
|
|
177
|
+
|
|
161
178
|
type ToolbarToggleGroupIconItemProps = Omit<ToggleGroupItemPrimitiveProps, 'className'> & IconButtonProps;
|
|
162
179
|
|
|
163
180
|
const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGroupIconItemProps>(
|
|
@@ -182,6 +199,8 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
|
|
|
182
199
|
},
|
|
183
200
|
);
|
|
184
201
|
|
|
202
|
+
ToolbarToggleGroupIconItem.displayName = 'Toolbar.ToggleGroupIconItem';
|
|
203
|
+
|
|
185
204
|
//
|
|
186
205
|
// Separator
|
|
187
206
|
//
|
|
@@ -200,6 +219,8 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
|
|
|
200
219
|
},
|
|
201
220
|
);
|
|
202
221
|
|
|
222
|
+
ToolbarSeparator.displayName = 'Toolbar.Separator';
|
|
223
|
+
|
|
203
224
|
//
|
|
204
225
|
// DragHandle
|
|
205
226
|
//
|
|
@@ -226,22 +247,46 @@ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
|
|
|
226
247
|
},
|
|
227
248
|
);
|
|
228
249
|
|
|
250
|
+
ToolbarDragHandle.displayName = 'Toolbar.DragHandle';
|
|
251
|
+
|
|
229
252
|
//
|
|
230
|
-
//
|
|
253
|
+
// ActionIconButton
|
|
231
254
|
//
|
|
232
255
|
|
|
233
|
-
|
|
256
|
+
/**
|
|
257
|
+
* Known semantic actions a toolbar icon-button can represent. Each action
|
|
258
|
+
* picks its own phosphor icon + default translation key so call sites just
|
|
259
|
+
* declare intent (`action='delete'`) rather than re-specifying the icon /
|
|
260
|
+
* label every time.
|
|
261
|
+
*/
|
|
262
|
+
type ToolbarActionIconButtonAction = 'close' | 'delete';
|
|
263
|
+
|
|
264
|
+
type ToolbarActionIconButtonProps = {
|
|
265
|
+
action: ToolbarActionIconButtonAction;
|
|
266
|
+
onClick?: MouseEventHandler<HTMLButtonElement>;
|
|
267
|
+
label?: string;
|
|
268
|
+
};
|
|
234
269
|
|
|
235
|
-
const
|
|
236
|
-
|
|
270
|
+
const TOOLBAR_ACTION_ICONS: Record<ToolbarActionIconButtonAction, string> = {
|
|
271
|
+
close: 'ph--x--regular',
|
|
272
|
+
delete: 'ph--trash--regular',
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
const TOOLBAR_ACTION_LABEL_KEYS: Record<ToolbarActionIconButtonAction, string> = {
|
|
276
|
+
close: 'toolbar-close.label',
|
|
277
|
+
delete: 'toolbar-delete.label',
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
const ToolbarActionIconButton = forwardRef<HTMLButtonElement, ToolbarActionIconButtonProps>(
|
|
281
|
+
({ action, onClick, label }, forwardedRef) => {
|
|
237
282
|
const { t } = useTranslation(translationKey);
|
|
238
283
|
|
|
239
284
|
return (
|
|
240
285
|
<ToolbarIconButton
|
|
241
286
|
iconOnly
|
|
242
|
-
icon=
|
|
287
|
+
icon={TOOLBAR_ACTION_ICONS[action]}
|
|
243
288
|
variant='ghost'
|
|
244
|
-
label={label ?? t(
|
|
289
|
+
label={label ?? t(TOOLBAR_ACTION_LABEL_KEYS[action])}
|
|
245
290
|
classNames='cursor-pointer'
|
|
246
291
|
onClick={onClick}
|
|
247
292
|
ref={forwardedRef}
|
|
@@ -250,6 +295,8 @@ const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconBut
|
|
|
250
295
|
},
|
|
251
296
|
);
|
|
252
297
|
|
|
298
|
+
ToolbarActionIconButton.displayName = 'Toolbar.ActionIconButton';
|
|
299
|
+
|
|
253
300
|
//
|
|
254
301
|
// Menu
|
|
255
302
|
//
|
|
@@ -265,7 +312,7 @@ type ToolbarMenuProps<T extends any | void = void> = {
|
|
|
265
312
|
};
|
|
266
313
|
|
|
267
314
|
// TODO(burdon): Make slottable.
|
|
268
|
-
|
|
315
|
+
function ToolbarMenu<T extends any | void = void>({ context, items }: ToolbarMenuProps<T>) {
|
|
269
316
|
const { t } = useTranslation(translationKey);
|
|
270
317
|
|
|
271
318
|
return (
|
|
@@ -294,7 +341,9 @@ const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMen
|
|
|
294
341
|
)}
|
|
295
342
|
</DropdownMenu.Root>
|
|
296
343
|
);
|
|
297
|
-
}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
ToolbarMenu.displayName = 'Toolbar.Menu';
|
|
298
347
|
|
|
299
348
|
//
|
|
300
349
|
// Toolbar
|
|
@@ -312,7 +361,7 @@ export const Toolbar = {
|
|
|
312
361
|
ToggleGroupIconItem: ToolbarToggleGroupIconItem,
|
|
313
362
|
Separator: ToolbarSeparator,
|
|
314
363
|
DragHandle: ToolbarDragHandle,
|
|
315
|
-
|
|
364
|
+
ActionIconButton: ToolbarActionIconButton,
|
|
316
365
|
Menu: ToolbarMenu,
|
|
317
366
|
};
|
|
318
367
|
|
|
@@ -328,7 +377,8 @@ export type {
|
|
|
328
377
|
ToolbarToggleGroupIconItemProps,
|
|
329
378
|
ToolbarSeparatorProps,
|
|
330
379
|
ToolbarDragHandleProps,
|
|
331
|
-
|
|
380
|
+
ToolbarActionIconButtonAction,
|
|
381
|
+
ToolbarActionIconButtonProps,
|
|
332
382
|
ToolbarMenuItem,
|
|
333
383
|
ToolbarMenuProps,
|
|
334
384
|
};
|
|
@@ -50,9 +50,6 @@ export const Default: Story = {
|
|
|
50
50
|
},
|
|
51
51
|
],
|
|
52
52
|
},
|
|
53
|
-
parameters: {
|
|
54
|
-
chromatic: { delay: 500 },
|
|
55
|
-
},
|
|
56
53
|
};
|
|
57
54
|
|
|
58
55
|
export const DefaultOpen: Story = {
|
|
@@ -65,9 +62,6 @@ export const DefaultOpen: Story = {
|
|
|
65
62
|
},
|
|
66
63
|
],
|
|
67
64
|
},
|
|
68
|
-
parameters: {
|
|
69
|
-
chromatic: { delay: 500 },
|
|
70
|
-
},
|
|
71
65
|
};
|
|
72
66
|
|
|
73
67
|
export const StressTest: Story = {
|
|
@@ -81,7 +75,4 @@ export const StressTest: Story = {
|
|
|
81
75
|
{ count: 32 },
|
|
82
76
|
),
|
|
83
77
|
},
|
|
84
|
-
parameters: {
|
|
85
|
-
chromatic: { disableSnapshot: true },
|
|
86
|
-
},
|
|
87
78
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import { type ComponentFunction, type Elevation, type Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
import { tooltipContent } from './tooltipContent';
|
|
9
|
+
|
|
10
|
+
export type TooltipStyleProps = Partial<{
|
|
11
|
+
elevation: Elevation;
|
|
12
|
+
}>;
|
|
13
|
+
|
|
14
|
+
const arrow: ComponentFunction<TooltipStyleProps> = (_props, ...etc) => mx('fill-inverse-surface', ...etc);
|
|
15
|
+
|
|
16
|
+
export const tooltipTheme: Theme<TooltipStyleProps> = {
|
|
17
|
+
content: tooltipContent,
|
|
18
|
+
arrow,
|
|
19
|
+
};
|
|
@@ -247,7 +247,7 @@ const TooltipVirtualTrigger = ({
|
|
|
247
247
|
// TooltipTrigger
|
|
248
248
|
//
|
|
249
249
|
|
|
250
|
-
const TRIGGER_NAME = '
|
|
250
|
+
const TRIGGER_NAME = 'Tooltip.Trigger';
|
|
251
251
|
|
|
252
252
|
type TooltipTriggerElement = ComponentRef<typeof Primitive.button>;
|
|
253
253
|
type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
@@ -327,7 +327,7 @@ TooltipTrigger.displayName = TRIGGER_NAME;
|
|
|
327
327
|
// TooltipPortal
|
|
328
328
|
//
|
|
329
329
|
|
|
330
|
-
const PORTAL_NAME = '
|
|
330
|
+
const PORTAL_NAME = 'Tooltip.Portal';
|
|
331
331
|
|
|
332
332
|
type PortalContextValue = { forceMount?: true };
|
|
333
333
|
const [PortalProvider, usePortalContext] = createTooltipContext<PortalContextValue>(PORTAL_NAME, {
|
|
@@ -368,7 +368,7 @@ TooltipPortal.displayName = PORTAL_NAME;
|
|
|
368
368
|
// TooltipContent
|
|
369
369
|
//
|
|
370
370
|
|
|
371
|
-
const CONTENT_NAME = '
|
|
371
|
+
const CONTENT_NAME = 'Tooltip.Content';
|
|
372
372
|
|
|
373
373
|
type TooltipContentElement = TooltipContentImplElement;
|
|
374
374
|
type TooltipContentProps = TooltipContentImplProps & {
|
|
@@ -579,7 +579,7 @@ TooltipContent.displayName = CONTENT_NAME;
|
|
|
579
579
|
// TooltipArrow
|
|
580
580
|
//
|
|
581
581
|
|
|
582
|
-
const ARROW_NAME = '
|
|
582
|
+
const ARROW_NAME = 'Tooltip.Arrow';
|
|
583
583
|
|
|
584
584
|
type TooltipArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;
|
|
585
585
|
type PopperArrowProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;
|