@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
|
@@ -15,14 +15,13 @@ import React, {
|
|
|
15
15
|
useCallback,
|
|
16
16
|
} from 'react';
|
|
17
17
|
|
|
18
|
-
import { composable, composableProps } from '@dxos/ui-theme';
|
|
19
|
-
|
|
20
18
|
import { useThemeContext } from '../../hooks';
|
|
19
|
+
import { composable, composableProps } from '../../util';
|
|
21
20
|
import { type ThemedClassName } from '../../util';
|
|
22
21
|
|
|
23
22
|
// TODO(thure): https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/treegrid_role
|
|
24
23
|
|
|
25
|
-
const TREEGRID_ROW_NAME = '
|
|
24
|
+
const TREEGRID_ROW_NAME = 'Treegrid.Row';
|
|
26
25
|
|
|
27
26
|
type TreegridRowScopedProps<P> = P & { __treegridRowScope?: Scope };
|
|
28
27
|
|
|
@@ -41,7 +40,7 @@ export const TREEGRID_PATH_SEPARATOR = '~';
|
|
|
41
40
|
export const TREEGRID_PARENT_OF_SEPARATOR = ' ';
|
|
42
41
|
|
|
43
42
|
type TreegridRootProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
|
|
44
|
-
gridTemplateColumns
|
|
43
|
+
gridTemplateColumns?: CSSProperties['gridTemplateColumns'];
|
|
45
44
|
asChild?: boolean;
|
|
46
45
|
};
|
|
47
46
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx } from '@dxos/ui-theme';
|
|
6
|
+
import { type ComponentFunction } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
import { mainPaddingTransitions } from './constants';
|
|
9
|
+
|
|
10
|
+
const padding = 'dx-main-content-padding';
|
|
11
|
+
|
|
12
|
+
export type MainStyleProps = Partial<{
|
|
13
|
+
bounce: boolean;
|
|
14
|
+
handlesFocus: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
|
|
17
|
+
const content: ComponentFunction<MainStyleProps> = ({ bounce }, ...etc) =>
|
|
18
|
+
mx(padding, mainPaddingTransitions, bounce && 'dx-main-bounce-layout', 'dx-focus-ring-main', ...etc);
|
|
19
|
+
|
|
20
|
+
const sidebar: ComponentFunction<MainStyleProps> = (_, ...etc) =>
|
|
21
|
+
mx('dx-main-sidebar', 'dx-focus-ring-inset-over-all', ...etc);
|
|
22
|
+
|
|
23
|
+
const overlay: ComponentFunction<MainStyleProps> = (_, ...etc) => mx('dx-main-overlay', ...etc);
|
|
24
|
+
|
|
25
|
+
export const mainTheme = {
|
|
26
|
+
content,
|
|
27
|
+
sidebar,
|
|
28
|
+
overlay,
|
|
29
|
+
};
|
|
@@ -25,18 +25,20 @@ import React, {
|
|
|
25
25
|
import { addEventListener } from '@dxos/async';
|
|
26
26
|
import { log } from '@dxos/log';
|
|
27
27
|
import { useForwardedRef, useMediaQuery } from '@dxos/react-hooks';
|
|
28
|
-
import {
|
|
28
|
+
import { osTranslations } from '@dxos/ui-theme';
|
|
29
29
|
|
|
30
30
|
import { useThemeContext } from '../../hooks';
|
|
31
|
+
import { type Label, toLocalizedString, useTranslation } from '../../primitives';
|
|
32
|
+
import { type MainStyleProps } from '../../theme';
|
|
31
33
|
import { type ThemedClassName } from '../../util';
|
|
32
|
-
import { type Label, toLocalizedString, useTranslation } from '../ThemeProvider';
|
|
33
34
|
import { useSwipeToDismiss } from './useSwipeToDismiss';
|
|
34
35
|
|
|
35
36
|
const MAIN_NAME = 'Main';
|
|
36
|
-
const MAIN_ROOT_NAME = '
|
|
37
|
-
const MAIN_OVERLAY_NAME = '
|
|
38
|
-
const
|
|
39
|
-
const
|
|
37
|
+
const MAIN_ROOT_NAME = 'Main.Root';
|
|
38
|
+
const MAIN_OVERLAY_NAME = 'Main.Overlay';
|
|
39
|
+
const MAIN_CONTENT_NAME = 'Main.Content';
|
|
40
|
+
const NAVIGATION_SIDEBAR_NAME = 'Main.NavigationSidebar';
|
|
41
|
+
const COMPLEMENTARY_SIDEBAR_NAME = 'Main.ComplementarySidebar';
|
|
40
42
|
|
|
41
43
|
const handleOpenAutoFocus = (event: Event) => {
|
|
42
44
|
!document.body.hasAttribute('data-w-keyboard') && event.preventDefault();
|
|
@@ -412,7 +414,7 @@ const MainContent = forwardRef<HTMLDivElement, MainContentProps>(
|
|
|
412
414
|
},
|
|
413
415
|
);
|
|
414
416
|
|
|
415
|
-
MainContent.displayName =
|
|
417
|
+
MainContent.displayName = MAIN_CONTENT_NAME;
|
|
416
418
|
|
|
417
419
|
//
|
|
418
420
|
// Main
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
|
+
|
|
7
|
+
import { withTheme } from '@dxos/react-ui/testing';
|
|
8
|
+
|
|
9
|
+
import { MediaPlayer } from './MediaPlayer';
|
|
10
|
+
|
|
11
|
+
const meta = {
|
|
12
|
+
title: 'ui/react-ui-core/components/MediaPlayer',
|
|
13
|
+
component: MediaPlayer,
|
|
14
|
+
decorators: [withTheme()],
|
|
15
|
+
parameters: { layout: 'centered' },
|
|
16
|
+
} satisfies Meta<typeof MediaPlayer>;
|
|
17
|
+
|
|
18
|
+
export default meta;
|
|
19
|
+
|
|
20
|
+
type Story = StoryObj<typeof meta>;
|
|
21
|
+
|
|
22
|
+
export const Video: Story = {
|
|
23
|
+
args: {
|
|
24
|
+
// TODO(burdon): CORS issue.
|
|
25
|
+
src: 'https://customer-5rxcjpyab08avpmn.cloudflarestream.com/f58459bcdf3a6f3e93644a4e0f39b22a/downloads/default.mp4',
|
|
26
|
+
classNames: 'max-w-[640px]',
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const Audio: Story = {
|
|
31
|
+
args: {
|
|
32
|
+
src: 'https://commondatastorage.googleapis.com/codeskulptor-demos/DDR_assets/Kangaroo_MusiQue_-_The_Neverwritten_Role_Playing_Game.mp3',
|
|
33
|
+
classNames: 'min-w-[480px]',
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const ExplicitKind: Story = {
|
|
38
|
+
args: {
|
|
39
|
+
src: 'https://commondatastorage.googleapis.com/codeskulptor-demos/DDR_assets/Kangaroo_MusiQue_-_The_Neverwritten_Role_Playing_Game.mp3',
|
|
40
|
+
kind: 'audio',
|
|
41
|
+
classNames: 'min-w-[480px]',
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const Streaming: Story = {
|
|
46
|
+
args: {
|
|
47
|
+
src: 'https://customer-5rxcjpyab08avpmn.cloudflarestream.com/f58459bcdf3a6f3e93644a4e0f39b22a/iframe?poster=https%3A%2F%2Fcustomer-5rxcjpyab08avpmn.cloudflarestream.com%2Ff58459bcdf3a6f3e93644a4e0f39b22a%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600',
|
|
48
|
+
classNames: 'min-w-[480px]',
|
|
49
|
+
},
|
|
50
|
+
};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { useState } from 'react';
|
|
6
|
+
|
|
7
|
+
import { mx } from '@dxos/ui-theme';
|
|
8
|
+
|
|
9
|
+
import { type ThemedClassName } from '../../util';
|
|
10
|
+
|
|
11
|
+
export type MediaKind = 'video' | 'audio';
|
|
12
|
+
|
|
13
|
+
export type MediaFit = 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
|
|
14
|
+
|
|
15
|
+
/** Static map to keep Tailwind's class scanner happy (no dynamic `object-${fit}`). */
|
|
16
|
+
const FIT_CLASS: Record<MediaFit, string> = {
|
|
17
|
+
cover: 'object-cover',
|
|
18
|
+
contain: 'object-contain',
|
|
19
|
+
fill: 'object-fill',
|
|
20
|
+
none: 'object-none',
|
|
21
|
+
'scale-down': 'object-scale-down',
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const VIDEO_EXTENSIONS = ['.mp4', '.webm', '.ogv', '.mov', '.m4v'];
|
|
25
|
+
const AUDIO_EXTENSIONS = ['.mp3', '.wav', '.ogg', '.m4a', '.aac', '.flac'];
|
|
26
|
+
|
|
27
|
+
/** iframe sandbox flags compatible with typical oEmbed-style players. */
|
|
28
|
+
const DEFAULT_IFRAME_SANDBOX = 'allow-scripts allow-same-origin allow-presentation';
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Best-effort detection of `video` vs `audio` from a media URL.
|
|
32
|
+
* Inspects the pathname's extension (ignoring query/hash). Returns `undefined`
|
|
33
|
+
* when the URL doesn't look like a recognised media file — callers should
|
|
34
|
+
* default to 'video' or render a fallback (e.g. iframe / img).
|
|
35
|
+
*/
|
|
36
|
+
export const detectMediaKind = (src: string): MediaKind | undefined => {
|
|
37
|
+
// Strip query and hash, then take the last path segment's extension.
|
|
38
|
+
const pathname = src.split(/[?#]/, 1)[0]!;
|
|
39
|
+
const lower = pathname.toLowerCase();
|
|
40
|
+
if (VIDEO_EXTENSIONS.some((extension) => lower.endsWith(extension))) {
|
|
41
|
+
return 'video';
|
|
42
|
+
}
|
|
43
|
+
if (AUDIO_EXTENSIONS.some((extension) => lower.endsWith(extension))) {
|
|
44
|
+
return 'audio';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return undefined;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Heuristic match for URLs that should render as native `<video>` / `<audio>`
|
|
52
|
+
* (i.e. URLs ending in a recognised media extension).
|
|
53
|
+
*
|
|
54
|
+
* NB: Cloudflare Stream embed URLs serve an HTML player page, **not** a media
|
|
55
|
+
* stream, so they cannot be loaded via `<video>`. Those are detected by
|
|
56
|
+
* {@link isCloudflareStreamEmbed} and rendered via `<iframe>` instead.
|
|
57
|
+
*/
|
|
58
|
+
export const isEmbedUrl = (src: string): boolean => detectMediaKind(src) !== undefined;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Match Cloudflare Stream `/iframe` embed URLs of the form
|
|
62
|
+
* `https://customer-<code>.cloudflarestream.com/<32-hex-uid>/iframe[?…]`.
|
|
63
|
+
*/
|
|
64
|
+
const CLOUDFLARE_STREAM_IFRAME_PATTERN =
|
|
65
|
+
/^https:\/\/[a-z0-9-]+\.cloudflarestream\.com\/[a-f0-9]{32}\/iframe(?:[/?#]|$)/i;
|
|
66
|
+
|
|
67
|
+
const isCloudflareStreamEmbed = (src: string): boolean => CLOUDFLARE_STREAM_IFRAME_PATTERN.test(src);
|
|
68
|
+
|
|
69
|
+
export type MediaPlayerProps = ThemedClassName<{
|
|
70
|
+
src: string;
|
|
71
|
+
alt?: string;
|
|
72
|
+
/** Override auto-detection. When omitted, `detectMediaKind(src)` is used and falls back to 'video'. */
|
|
73
|
+
kind?: MediaKind;
|
|
74
|
+
controls?: boolean;
|
|
75
|
+
autoPlay?: boolean;
|
|
76
|
+
loop?: boolean;
|
|
77
|
+
muted?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* CORS mode for `<video>`/`<audio>`. Omitted by default — plain playback needs no CORS, and
|
|
80
|
+
* forcing it breaks sources whose response/redirect lacks `access-control-allow-origin` (e.g.
|
|
81
|
+
* Cloudflare Stream's signed MP4 redirect). Set 'anonymous' only when reading frames into a canvas.
|
|
82
|
+
*/
|
|
83
|
+
crossOrigin?: 'anonymous' | 'use-credentials' | '';
|
|
84
|
+
/** CSS `object-fit` for `<img>` and `<video>`. Ignored for `<iframe>`/`<audio>`. Defaults to 'cover'. */
|
|
85
|
+
fit?: MediaFit;
|
|
86
|
+
}>;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Renders a media URL using the appropriate element:
|
|
90
|
+
* - Direct media URLs (mp4, mp3, …) → native `<video>` / `<audio>`.
|
|
91
|
+
* - Cloudflare Stream `/iframe` embed URLs → `<iframe>`.
|
|
92
|
+
* - Everything else → `<img>` that hides itself on load failure (broken images
|
|
93
|
+
* are common in feeds and the placeholder is uglier than nothing).
|
|
94
|
+
*/
|
|
95
|
+
export const MediaPlayer = ({
|
|
96
|
+
classNames,
|
|
97
|
+
src,
|
|
98
|
+
kind,
|
|
99
|
+
controls = true,
|
|
100
|
+
autoPlay = false,
|
|
101
|
+
loop = false,
|
|
102
|
+
muted = false,
|
|
103
|
+
alt,
|
|
104
|
+
crossOrigin,
|
|
105
|
+
fit = 'cover',
|
|
106
|
+
}: MediaPlayerProps) => {
|
|
107
|
+
const fitClass = FIT_CLASS[fit];
|
|
108
|
+
if (isEmbedUrl(src)) {
|
|
109
|
+
const resolved = kind ?? detectMediaKind(src) ?? 'video';
|
|
110
|
+
if (resolved === 'audio') {
|
|
111
|
+
return (
|
|
112
|
+
<audio
|
|
113
|
+
className={mx('w-full', classNames)}
|
|
114
|
+
src={src}
|
|
115
|
+
controls={controls}
|
|
116
|
+
autoPlay={autoPlay}
|
|
117
|
+
loop={loop}
|
|
118
|
+
muted={muted}
|
|
119
|
+
crossOrigin={crossOrigin}
|
|
120
|
+
aria-label={alt}
|
|
121
|
+
/>
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return (
|
|
126
|
+
<video
|
|
127
|
+
className={mx('max-w-full max-h-full aspect-video', fitClass, classNames)}
|
|
128
|
+
src={src}
|
|
129
|
+
controls={controls}
|
|
130
|
+
autoPlay={autoPlay}
|
|
131
|
+
loop={loop}
|
|
132
|
+
muted={muted}
|
|
133
|
+
crossOrigin={crossOrigin}
|
|
134
|
+
aria-label={alt}
|
|
135
|
+
/>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (isCloudflareStreamEmbed(src)) {
|
|
140
|
+
return <IframePlayer key={src} classNames={classNames} src={src} alt={alt} />;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return (
|
|
144
|
+
<img
|
|
145
|
+
className={mx(fitClass, classNames)}
|
|
146
|
+
src={src}
|
|
147
|
+
alt={alt ?? ''}
|
|
148
|
+
loading='lazy'
|
|
149
|
+
onError={(event) => {
|
|
150
|
+
event.currentTarget.style.display = 'none';
|
|
151
|
+
}}
|
|
152
|
+
/>
|
|
153
|
+
);
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
type IframePlayerProps = ThemedClassName<{
|
|
157
|
+
src: string;
|
|
158
|
+
alt?: string;
|
|
159
|
+
}>;
|
|
160
|
+
|
|
161
|
+
const IframePlayer = ({ src, alt, classNames }: IframePlayerProps) => {
|
|
162
|
+
const [loaded, setLoaded] = useState(false);
|
|
163
|
+
return (
|
|
164
|
+
<div className={mx('relative bg-baseSurface', classNames)}>
|
|
165
|
+
<iframe
|
|
166
|
+
src={src}
|
|
167
|
+
title={alt ?? 'Embedded media'}
|
|
168
|
+
loading='lazy'
|
|
169
|
+
className={mx(
|
|
170
|
+
'border-none w-full h-full transition-opacity duration-150',
|
|
171
|
+
loaded ? 'opacity-100' : 'opacity-0',
|
|
172
|
+
)}
|
|
173
|
+
style={{ colorScheme: 'dark' }}
|
|
174
|
+
sandbox={DEFAULT_IFRAME_SANDBOX}
|
|
175
|
+
referrerPolicy='no-referrer'
|
|
176
|
+
allow='accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture;'
|
|
177
|
+
allowFullScreen
|
|
178
|
+
onLoad={() => setLoaded(true)}
|
|
179
|
+
/>
|
|
180
|
+
</div>
|
|
181
|
+
);
|
|
182
|
+
};
|
|
@@ -107,7 +107,7 @@ DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
|
|
|
107
107
|
// DropdownMenuTrigger
|
|
108
108
|
//
|
|
109
109
|
|
|
110
|
-
const TRIGGER_NAME = '
|
|
110
|
+
const TRIGGER_NAME = 'DropdownMenu.Trigger';
|
|
111
111
|
|
|
112
112
|
type DropdownMenuTriggerElement = ComponentRef<typeof Primitive.button>;
|
|
113
113
|
type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
@@ -172,7 +172,7 @@ DropdownMenuTrigger.displayName = TRIGGER_NAME;
|
|
|
172
172
|
// DropdownMenuVirtualTrigger
|
|
173
173
|
//
|
|
174
174
|
|
|
175
|
-
const VIRTUAL_TRIGGER_NAME = '
|
|
175
|
+
const VIRTUAL_TRIGGER_NAME = 'DropdownMenu.VirtualTrigger';
|
|
176
176
|
|
|
177
177
|
type DropdownMenuVirtualTriggerProps = {
|
|
178
178
|
virtualRef: RefObject<DropdownMenuTriggerElement | null>;
|
|
@@ -196,7 +196,7 @@ DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
|
|
|
196
196
|
// DropdownMenuPortal
|
|
197
197
|
//
|
|
198
198
|
|
|
199
|
-
const PORTAL_NAME = '
|
|
199
|
+
const PORTAL_NAME = 'DropdownMenu.Portal';
|
|
200
200
|
|
|
201
201
|
type MenuPortalProps = ComponentPropsWithoutRef<typeof MenuPrimitive.Portal>;
|
|
202
202
|
type DropdownMenuPortalProps = MenuPortalProps;
|
|
@@ -233,7 +233,7 @@ const DropdownMenuViewport = forwardRef<HTMLDivElement, DropdownMenuViewportProp
|
|
|
233
233
|
// DropdownMenuContent
|
|
234
234
|
//
|
|
235
235
|
|
|
236
|
-
const CONTENT_NAME = '
|
|
236
|
+
const CONTENT_NAME = 'DropdownMenu.Content';
|
|
237
237
|
|
|
238
238
|
type DropdownMenuContentElement = ComponentRef<typeof MenuPrimitive.Content>;
|
|
239
239
|
type MenuContentProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Content>>;
|
|
@@ -312,7 +312,7 @@ DropdownMenuContent.displayName = CONTENT_NAME;
|
|
|
312
312
|
// DropdownMenuGroup
|
|
313
313
|
//
|
|
314
314
|
|
|
315
|
-
const GROUP_NAME = '
|
|
315
|
+
const GROUP_NAME = 'DropdownMenu.Group';
|
|
316
316
|
|
|
317
317
|
type DropdownMenuGroupElement = ComponentRef<typeof MenuPrimitive.Group>;
|
|
318
318
|
type MenuGroupProps = ComponentPropsWithoutRef<typeof MenuPrimitive.Group>;
|
|
@@ -332,7 +332,7 @@ DropdownMenuGroup.displayName = GROUP_NAME;
|
|
|
332
332
|
// DropdownMenuLabel
|
|
333
333
|
//
|
|
334
334
|
|
|
335
|
-
const LABEL_NAME = '
|
|
335
|
+
const LABEL_NAME = 'DropdownMenu.Label';
|
|
336
336
|
|
|
337
337
|
type DropdownMenuLabelElement = ComponentRef<typeof MenuPrimitive.Label>;
|
|
338
338
|
type MenuLabelProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Label>>;
|
|
@@ -360,7 +360,7 @@ DropdownMenuGroupLabel.displayName = LABEL_NAME;
|
|
|
360
360
|
// DropdownMenuItem
|
|
361
361
|
//
|
|
362
362
|
|
|
363
|
-
const ITEM_NAME = '
|
|
363
|
+
const ITEM_NAME = 'DropdownMenu.Item';
|
|
364
364
|
|
|
365
365
|
type DropdownMenuItemElement = ComponentRef<typeof MenuPrimitive.Item>;
|
|
366
366
|
type MenuItemProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Item>>;
|
|
@@ -388,7 +388,7 @@ DropdownMenuItem.displayName = ITEM_NAME;
|
|
|
388
388
|
// DropdownMenuCheckboxItem
|
|
389
389
|
//
|
|
390
390
|
|
|
391
|
-
const CHECKBOX_ITEM_NAME = '
|
|
391
|
+
const CHECKBOX_ITEM_NAME = 'DropdownMenu.CheckboxItem';
|
|
392
392
|
|
|
393
393
|
type DropdownMenuCheckboxItemElement = ComponentRef<typeof MenuPrimitive.CheckboxItem>;
|
|
394
394
|
type MenuCheckboxItemProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>>;
|
|
@@ -416,7 +416,7 @@ DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
|
|
|
416
416
|
// DropdownMenuRadioGroup
|
|
417
417
|
//
|
|
418
418
|
|
|
419
|
-
const RADIO_GROUP_NAME = '
|
|
419
|
+
const RADIO_GROUP_NAME = 'DropdownMenu.RadioGroup';
|
|
420
420
|
|
|
421
421
|
type DropdownMenuRadioGroupElement = ComponentRef<typeof MenuPrimitive.RadioGroup>;
|
|
422
422
|
type MenuRadioGroupProps = ComponentPropsWithoutRef<typeof MenuPrimitive.RadioGroup>;
|
|
@@ -436,7 +436,7 @@ DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
|
|
|
436
436
|
// DropdownMenuRadioItem
|
|
437
437
|
//
|
|
438
438
|
|
|
439
|
-
const RADIO_ITEM_NAME = '
|
|
439
|
+
const RADIO_ITEM_NAME = 'DropdownMenu.RadioItem';
|
|
440
440
|
|
|
441
441
|
type DropdownMenuRadioItemElement = ComponentRef<typeof MenuPrimitive.RadioItem>;
|
|
442
442
|
type MenuRadioItemProps = ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>;
|
|
@@ -464,7 +464,7 @@ DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
|
|
|
464
464
|
// DropdownMenuItemIndicator
|
|
465
465
|
//
|
|
466
466
|
|
|
467
|
-
const INDICATOR_NAME = '
|
|
467
|
+
const INDICATOR_NAME = 'DropdownMenu.ItemIndicator';
|
|
468
468
|
|
|
469
469
|
type DropdownMenuItemIndicatorElement = ComponentRef<typeof MenuPrimitive.ItemIndicator>;
|
|
470
470
|
type MenuItemIndicatorProps = ComponentPropsWithoutRef<typeof MenuPrimitive.ItemIndicator>;
|
|
@@ -484,7 +484,7 @@ DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
|
|
|
484
484
|
// DropdownMenuSeparator
|
|
485
485
|
//
|
|
486
486
|
|
|
487
|
-
const SEPARATOR_NAME = '
|
|
487
|
+
const SEPARATOR_NAME = 'DropdownMenu.Separator';
|
|
488
488
|
|
|
489
489
|
type DropdownMenuSeparatorElement = ComponentRef<typeof MenuPrimitive.Separator>;
|
|
490
490
|
type MenuSeparatorProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>>;
|
|
@@ -512,7 +512,7 @@ DropdownMenuSeparator.displayName = SEPARATOR_NAME;
|
|
|
512
512
|
// DropdownMenuArrow
|
|
513
513
|
//
|
|
514
514
|
|
|
515
|
-
const ARROW_NAME = '
|
|
515
|
+
const ARROW_NAME = 'DropdownMenu.Arrow';
|
|
516
516
|
|
|
517
517
|
type DropdownMenuArrowElement = ComponentRef<typeof MenuPrimitive.Arrow>;
|
|
518
518
|
type MenuArrowProps = ThemedClassName<ComponentPropsWithoutRef<typeof MenuPrimitive.Arrow>>;
|
|
@@ -567,7 +567,7 @@ const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMe
|
|
|
567
567
|
// DropdownMenuSubTrigger
|
|
568
568
|
//
|
|
569
569
|
|
|
570
|
-
const SUB_TRIGGER_NAME = '
|
|
570
|
+
const SUB_TRIGGER_NAME = 'DropdownMenu.SubTrigger';
|
|
571
571
|
|
|
572
572
|
type DropdownMenuSubTriggerElement = ComponentRef<typeof MenuPrimitive.SubTrigger>;
|
|
573
573
|
type MenuSubTriggerProps = ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger>;
|
|
@@ -587,7 +587,7 @@ DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
|
|
|
587
587
|
// DropdownMenuSubContent
|
|
588
588
|
//
|
|
589
589
|
|
|
590
|
-
const SUB_CONTENT_NAME = '
|
|
590
|
+
const SUB_CONTENT_NAME = 'DropdownMenu.SubContent';
|
|
591
591
|
|
|
592
592
|
type DropdownMenuSubContentElement = ComponentRef<typeof MenuPrimitive.Content>;
|
|
593
593
|
type MenuSubContentProps = ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { dataDisabled } from '@dxos/ui-theme';
|
|
6
|
+
import { mx, surfaceShadow, surfaceZIndex } from '@dxos/ui-theme';
|
|
7
|
+
import { type ComponentFunction, type Elevation, type Theme } from '@dxos/ui-types';
|
|
8
|
+
|
|
9
|
+
export type MenuStyleProps = Partial<{
|
|
10
|
+
constrainBlockSize: boolean;
|
|
11
|
+
elevation: Elevation;
|
|
12
|
+
}>;
|
|
13
|
+
|
|
14
|
+
const content: ComponentFunction<MenuStyleProps> = ({ elevation }, ...etc) =>
|
|
15
|
+
mx(
|
|
16
|
+
'dx-popover-surface w-48 rounded-sm md:w-56 border border-separator',
|
|
17
|
+
surfaceZIndex({ elevation, level: 'menu' }),
|
|
18
|
+
surfaceShadow({ elevation: 'positioned' }),
|
|
19
|
+
...etc,
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
const viewport: ComponentFunction<MenuStyleProps> = (_props, ...etc) =>
|
|
23
|
+
mx('rounded-sm p-1 max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto', ...etc);
|
|
24
|
+
|
|
25
|
+
const item: ComponentFunction<MenuStyleProps> = (_props, ...etc) =>
|
|
26
|
+
mx(
|
|
27
|
+
'flex cursor-pointer select-none items-center gap-2 rounded-xs px-2 py-2 text-sm',
|
|
28
|
+
'hover:bg-hover-surface data-[highlighted]:bg-hover-surface',
|
|
29
|
+
'dx-focus-subdued',
|
|
30
|
+
dataDisabled,
|
|
31
|
+
...etc,
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const separator: ComponentFunction<MenuStyleProps> = (_props, ...etc) => mx('my-1 mx-2 h-px bg-separator', ...etc);
|
|
35
|
+
|
|
36
|
+
const groupLabel: ComponentFunction<MenuStyleProps> = (_props, ...etc) =>
|
|
37
|
+
mx('text-description', 'select-none px-2 py-2', ...etc);
|
|
38
|
+
|
|
39
|
+
const arrow: ComponentFunction<MenuStyleProps> = (_props, ...etc) => mx('fill-separator', ...etc);
|
|
40
|
+
|
|
41
|
+
export const menuTheme: Theme<MenuStyleProps> = {
|
|
42
|
+
content,
|
|
43
|
+
viewport,
|
|
44
|
+
item,
|
|
45
|
+
separator,
|
|
46
|
+
groupLabel,
|
|
47
|
+
arrow,
|
|
48
|
+
};
|
|
@@ -9,6 +9,7 @@ import { random } from '@dxos/random';
|
|
|
9
9
|
import { type MessageValence } from '@dxos/ui-types';
|
|
10
10
|
|
|
11
11
|
import { withTheme } from '../../testing';
|
|
12
|
+
import { Button } from '../Button';
|
|
12
13
|
import { Message } from './Message';
|
|
13
14
|
|
|
14
15
|
random.seed(123);
|
|
@@ -17,13 +18,21 @@ type DefaultStoryProps = {
|
|
|
17
18
|
valence: MessageValence;
|
|
18
19
|
title: string;
|
|
19
20
|
body: string;
|
|
21
|
+
button?: boolean;
|
|
20
22
|
};
|
|
21
23
|
|
|
22
|
-
const DefaultStory = ({ valence, title, body }: DefaultStoryProps) => (
|
|
24
|
+
const DefaultStory = ({ valence, title, body, button }: DefaultStoryProps) => (
|
|
23
25
|
<div className='w-[30rem]'>
|
|
24
26
|
<Message.Root valence={valence}>
|
|
25
|
-
{title && <Message.Title>{title}</Message.Title>}
|
|
26
|
-
{body &&
|
|
27
|
+
{title && <Message.Title onClose={() => console.log('close')}>{title}</Message.Title>}
|
|
28
|
+
{body && (
|
|
29
|
+
<Message.Content asChild classNames='gap-2'>
|
|
30
|
+
<div>
|
|
31
|
+
<p>{body}</p>
|
|
32
|
+
{button && <Button>Test</Button>}
|
|
33
|
+
</div>
|
|
34
|
+
</Message.Content>
|
|
35
|
+
)}
|
|
27
36
|
</Message.Root>
|
|
28
37
|
</div>
|
|
29
38
|
);
|
|
@@ -51,15 +60,44 @@ type Story = StoryObj<typeof meta>;
|
|
|
51
60
|
export const Default: Story = {
|
|
52
61
|
args: {
|
|
53
62
|
valence: 'neutral',
|
|
54
|
-
title: '
|
|
63
|
+
title: 'Default',
|
|
55
64
|
body: random.lorem.paragraphs(1),
|
|
65
|
+
button: true,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export const Success: Story = {
|
|
70
|
+
args: {
|
|
71
|
+
valence: 'success',
|
|
72
|
+
title: 'Success',
|
|
73
|
+
body: random.lorem.paragraphs(1),
|
|
74
|
+
button: true,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export const Info: Story = {
|
|
79
|
+
args: {
|
|
80
|
+
valence: 'info',
|
|
81
|
+
title: 'Info',
|
|
82
|
+
body: random.lorem.paragraphs(1),
|
|
83
|
+
button: true,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const Warning: Story = {
|
|
88
|
+
args: {
|
|
89
|
+
valence: 'warning',
|
|
90
|
+
title: 'Warning',
|
|
91
|
+
body: random.lorem.paragraphs(1),
|
|
92
|
+
button: true,
|
|
56
93
|
},
|
|
57
94
|
};
|
|
58
95
|
|
|
59
96
|
export const Error: Story = {
|
|
60
97
|
args: {
|
|
61
98
|
valence: 'error',
|
|
62
|
-
title: 'Error
|
|
99
|
+
title: 'Error',
|
|
63
100
|
body: random.lorem.paragraphs(1),
|
|
101
|
+
button: true,
|
|
64
102
|
},
|
|
65
103
|
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { mx, messageValence } from '@dxos/ui-theme';
|
|
6
|
+
import { type ComponentFunction, type Elevation, type MessageValence, type Theme } from '@dxos/ui-types';
|
|
7
|
+
|
|
8
|
+
export type MessageStyleProps = {
|
|
9
|
+
valence?: MessageValence;
|
|
10
|
+
elevation?: Elevation;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const root: ComponentFunction<MessageStyleProps> = ({ valence }, etc) => {
|
|
14
|
+
return mx('p-1 rounded-sm', messageValence(valence), etc);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const header: ComponentFunction<MessageStyleProps> = (_, etc) => {
|
|
18
|
+
return mx('items-center', etc);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const title: ComponentFunction<MessageStyleProps> = (_, etc) => {
|
|
22
|
+
return mx('col-start-2 overflow-hidden truncate', etc);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const icon: ComponentFunction<MessageStyleProps> = (_, etc) => {
|
|
26
|
+
return mx('col-start-1 grid place-items-center', etc);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const close: ComponentFunction<MessageStyleProps> = (_, etc) => {
|
|
30
|
+
return mx('col-start-3', etc);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const content: ComponentFunction<MessageStyleProps> = (_, etc) => {
|
|
34
|
+
return mx('col-start-2 flex flex-col first:font-medium pb-1.5', etc);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const messageTheme: Theme<MessageStyleProps> = {
|
|
38
|
+
root,
|
|
39
|
+
header,
|
|
40
|
+
icon,
|
|
41
|
+
title,
|
|
42
|
+
close,
|
|
43
|
+
content,
|
|
44
|
+
};
|