@dxos/react-ui 0.8.4-main.84f28bd → 0.8.4-main.8baae0fced
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-A5QCIG5R.mjs +24 -0
- package/dist/lib/browser/chunk-A5QCIG5R.mjs.map +7 -0
- package/dist/lib/browser/chunk-LY5XDQR5.mjs +846 -0
- package/dist/lib/browser/chunk-LY5XDQR5.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +4427 -61
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +106 -61
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/browser/translations.mjs +9 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-NGKLIKP3.mjs +848 -0
- package/dist/lib/node-esm/chunk-NGKLIKP3.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-XCFLA74M.mjs +26 -0
- package/dist/lib/node-esm/chunk-XCFLA74M.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +4427 -61
- 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 +106 -61
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- 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 +2 -2
- package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
- package/dist/types/src/components/Avatars/Avatar.stories.d.ts +5 -31
- package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
- package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +5 -11
- package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -20
- package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
- package/dist/types/src/components/{Buttons → Button}/Button.d.ts +4 -4
- package/dist/types/src/components/Button/Button.d.ts.map +1 -0
- package/dist/types/src/components/Button/Button.stories.d.ts +17 -0
- package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
- package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +5 -4
- package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
- package/dist/types/src/components/Button/IconButton.stories.d.ts +16 -0
- package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
- package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +2 -2
- package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
- package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
- package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
- package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
- package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
- package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
- package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
- package/dist/types/src/components/Button/index.d.ts.map +1 -0
- package/dist/types/src/components/Card/Card.d.ts +124 -0
- package/dist/types/src/components/Card/Card.d.ts.map +1 -0
- package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
- package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
- package/dist/types/src/components/Card/index.d.ts +2 -0
- package/dist/types/src/components/Card/index.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/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 +1 -1
- package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/index.d.ts +10 -1
- package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
- package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
- package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/AlertDialog.d.ts +51 -0
- package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
- package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts +11 -0
- package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
- package/dist/types/src/components/Dialog/Dialog.d.ts +64 -0
- package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts +25 -0
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
- package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
- package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
- package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
- package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
- package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
- package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +19 -0
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
- package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
- package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
- package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
- package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
- package/dist/types/src/components/Focus/Focus.d.ts +36 -0
- package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
- package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
- package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
- package/dist/types/src/components/Focus/index.d.ts +2 -0
- package/dist/types/src/components/Focus/index.d.ts.map +1 -0
- package/dist/types/src/components/Icon/Icon.d.ts +6 -2
- package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
- package/dist/types/src/components/Icon/Icon.stories.d.ts +25 -0
- package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
- package/dist/types/src/components/Image/Image.d.ts +15 -0
- package/dist/types/src/components/Image/Image.d.ts.map +1 -0
- package/dist/types/src/components/Image/Image.stories.d.ts +34 -0
- package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
- package/dist/types/src/components/Image/index.d.ts +2 -0
- package/dist/types/src/components/Image/index.d.ts.map +1 -0
- package/dist/types/src/components/Input/Input.d.ts +19 -24
- package/dist/types/src/components/Input/Input.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.stories.d.ts +17 -18
- package/dist/types/src/components/Input/Input.stories.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 +8 -8
- package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
- package/dist/types/src/components/{Lists → List}/List.d.ts +8 -6
- package/dist/types/src/components/List/List.d.ts.map +1 -0
- package/dist/types/src/components/List/List.stories.d.ts +16 -0
- package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
- package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
- package/dist/types/src/components/{Lists → List}/Tree.d.ts +3 -3
- package/dist/types/src/components/List/Tree.d.ts.map +1 -0
- package/dist/types/src/components/List/Tree.stories.d.ts +15 -0
- package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
- package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
- package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +6 -10
- package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
- package/dist/types/src/components/List/Treegrid.stories.d.ts +12 -0
- package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
- package/dist/types/src/components/List/index.d.ts.map +1 -0
- package/dist/types/src/components/Main/Main.d.ts +25 -31
- package/dist/types/src/components/Main/Main.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.stories.d.ts +6 -10
- package/dist/types/src/components/Main/Main.stories.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 +46 -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/{Menus → Menu}/ContextMenu.d.ts +6 -6
- package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
- package/dist/types/src/components/Menu/ContextMenu.stories.d.ts +12 -0
- package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
- package/dist/types/src/components/Menu/DropdownMenu.d.ts +121 -0
- package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +28 -0
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
- package/dist/types/src/components/Menu/index.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 +12 -22
- package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.d.ts +41 -24
- package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
- package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +27 -27
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +50 -27
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +68 -0
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +23 -0
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
- package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
- package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
- package/dist/types/src/components/Select/Select.d.ts +10 -10
- package/dist/types/src/components/Select/Select.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.stories.d.ts +6 -11
- package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
- package/dist/types/src/components/Separator/Separator.d.ts +4 -4
- package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
- package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
- package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
- package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
- package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
- package/dist/types/src/components/Skeleton/index.d.ts +2 -0
- package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
- package/dist/types/src/components/Splitter/Splitter.d.ts +34 -0
- package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
- package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
- package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
- package/dist/types/src/components/Splitter/index.d.ts +2 -0
- package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
- package/dist/types/src/components/Status/Status.d.ts +3 -4
- package/dist/types/src/components/Status/Status.d.ts.map +1 -1
- package/dist/types/src/components/Status/Status.stories.d.ts +6 -10
- package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
- package/dist/types/src/components/Tag/Tag.d.ts +1 -1
- package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
- package/dist/types/src/components/Tag/Tag.stories.d.ts +8 -13
- package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +4 -4
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
- package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +55 -63
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.d.ts +20 -20
- package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
- package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +41 -23
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
- package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.d.ts +16 -18
- package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +10 -63
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +16 -8
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/exemplars/generics.stories.d.ts +19 -0
- package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
- package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
- package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
- package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
- package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
- package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
- package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useDensityContext.d.ts +2 -2
- package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
- package/dist/types/src/hooks/useElevationContext.d.ts +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/useVisualViewport.d.ts +2 -2
- package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/playground/Controls.stories.d.ts +5 -9
- package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
- package/dist/types/src/playground/Custom.stories.d.ts +12 -4
- package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
- package/dist/types/src/playground/Typography.stories.d.ts +5 -11
- package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Column/Column.d.ts +33 -0
- package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
- package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
- package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/Column/index.d.ts +2 -0
- package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/Container.d.ts +7 -0
- package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
- package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/index.d.ts +2 -0
- package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
- package/dist/types/src/primitives/Flex/Flex.d.ts +11 -0
- package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
- package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
- package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/Flex/index.d.ts +2 -0
- package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
- package/dist/types/src/primitives/Grid/Grid.d.ts +10 -0
- package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
- package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
- package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/Grid/index.d.ts +2 -0
- package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
- package/dist/types/src/primitives/Panel/Panel.d.ts +35 -0
- package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
- package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
- package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/Panel/index.d.ts +2 -0
- package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
- package/dist/types/src/primitives/index.d.ts +6 -0
- package/dist/types/src/primitives/index.d.ts.map +1 -0
- package/dist/types/src/testing/Loading.d.ts +9 -0
- package/dist/types/src/testing/Loading.d.ts.map +1 -0
- package/dist/types/src/testing/decorators/index.d.ts +2 -1
- package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
- package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
- package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
- package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
- 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/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +16 -0
- package/dist/types/src/translations.d.ts.map +1 -0
- 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/usePx.d.ts +8 -0
- package/dist/types/src/util/usePx.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +55 -40
- package/src/components/Avatars/Avatar.stories.tsx +23 -16
- package/src/components/Avatars/Avatar.tsx +10 -18
- package/src/components/Avatars/AvatarGroup.stories.tsx +11 -8
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +19 -15
- package/src/components/Breadcrumb/Breadcrumb.tsx +14 -40
- package/src/components/{Buttons → Button}/Button.stories.tsx +11 -13
- package/src/components/{Buttons → Button}/Button.tsx +12 -26
- package/src/components/{Buttons → Button}/IconButton.stories.tsx +18 -13
- package/src/components/{Buttons → Button}/IconButton.tsx +22 -16
- package/src/components/Button/Toggle.stories.tsx +36 -0
- package/src/components/{Buttons → Button}/Toggle.tsx +4 -4
- package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +14 -12
- package/src/components/Button/ToggleGroup.tsx +50 -0
- package/src/components/Card/Card.stories.tsx +151 -0
- package/src/components/Card/Card.tsx +514 -0
- package/src/components/Card/index.ts +5 -0
- package/src/components/Carousel/Carousel.tsx +379 -0
- package/src/components/Carousel/index.ts +5 -0
- package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
- package/src/components/Clipboard/CopyButton.tsx +11 -11
- package/src/components/DensityProvider/DensityProvider.tsx +2 -2
- package/src/components/Dialog/AlertDialog.stories.tsx +68 -0
- package/src/components/Dialog/AlertDialog.tsx +213 -0
- package/src/components/Dialog/Dialog.stories.tsx +177 -0
- package/src/components/Dialog/Dialog.tsx +285 -0
- package/src/components/ElevationProvider/ElevationProvider.tsx +2 -2
- package/src/components/ErrorFallback/ErrorFallback.stories.tsx +45 -0
- package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
- package/src/components/ErrorFallback/ErrorStack.tsx +114 -0
- package/src/components/ErrorFallback/ThrowError.tsx +37 -0
- package/src/components/ErrorFallback/index.ts +9 -0
- package/src/components/Focus/AUDIT.md +43 -0
- package/src/components/Focus/Focus.stories.tsx +230 -0
- package/src/components/Focus/Focus.tsx +201 -0
- package/src/components/Focus/index.ts +5 -0
- package/src/components/Icon/Icon.stories.tsx +143 -0
- package/src/components/Icon/Icon.tsx +15 -4
- package/src/components/Image/Image.stories.tsx +86 -0
- package/src/components/Image/Image.tsx +246 -0
- package/src/components/Image/index.ts +5 -0
- package/src/components/Input/Input.stories.tsx +27 -49
- package/src/components/Input/Input.tsx +51 -87
- package/src/components/Link/Link.stories.tsx +11 -8
- package/src/components/Link/Link.tsx +11 -3
- package/src/components/{Lists → List}/List.stories.tsx +46 -48
- package/src/components/{Lists → List}/List.tsx +30 -35
- package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -8
- package/src/components/{Lists → List}/Tree.stories.tsx +16 -14
- package/src/components/{Lists → List}/Tree.tsx +3 -3
- package/src/components/{Lists → List}/TreeDropIndicator.tsx +7 -7
- package/src/components/{Lists → List}/Treegrid.stories.tsx +39 -34
- package/src/components/List/Treegrid.tsx +188 -0
- package/src/components/Main/Main.stories.tsx +52 -27
- package/src/components/Main/Main.tsx +176 -105
- package/src/components/MediaPlayer/MediaPlayer.stories.tsx +50 -0
- package/src/components/MediaPlayer/MediaPlayer.tsx +153 -0
- package/src/components/MediaPlayer/index.ts +5 -0
- package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +12 -10
- package/src/components/{Menus → Menu}/ContextMenu.tsx +10 -33
- package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +13 -11
- package/src/components/{Menus → Menu}/DropdownMenu.tsx +157 -120
- package/src/components/Message/Message.stories.tsx +36 -18
- package/src/components/Message/Message.tsx +59 -33
- package/src/components/Popover/Popover.stories.tsx +18 -16
- package/src/components/Popover/Popover.tsx +124 -102
- package/src/components/ScrollArea/ScrollArea.stories.tsx +221 -33
- package/src/components/ScrollArea/ScrollArea.tsx +97 -79
- package/src/components/ScrollArea/index.ts +1 -1
- package/src/components/ScrollContainer/ScrollContainer.stories.tsx +91 -0
- package/src/components/ScrollContainer/ScrollContainer.tsx +345 -0
- package/src/components/ScrollContainer/index.ts +5 -0
- package/src/components/Select/Select.stories.tsx +19 -17
- package/src/components/Select/Select.tsx +16 -32
- package/src/components/Separator/Separator.tsx +5 -8
- package/src/components/Skeleton/Skeleton.stories.tsx +51 -0
- package/src/components/Skeleton/Skeleton.tsx +26 -0
- package/src/components/Skeleton/index.ts +5 -0
- package/src/components/Splitter/Splitter.stories.tsx +83 -0
- package/src/components/Splitter/Splitter.tsx +127 -0
- package/src/components/Splitter/index.ts +5 -0
- package/src/components/Status/Status.stories.tsx +29 -23
- package/src/components/Status/Status.tsx +10 -7
- package/src/components/Tag/Tag.stories.tsx +16 -13
- package/src/components/Tag/Tag.tsx +3 -8
- package/src/components/ThemeProvider/ThemeProvider.stories.tsx +31 -0
- package/src/components/ThemeProvider/ThemeProvider.tsx +12 -11
- package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -18
- package/src/components/ThemeProvider/index.ts +3 -3
- package/src/components/Toast/Toast.stories.tsx +13 -11
- package/src/components/Toast/Toast.tsx +23 -42
- package/src/components/Toolbar/Toolbar.stories.tsx +22 -21
- package/src/components/Toolbar/Toolbar.tsx +190 -14
- package/src/components/Tooltip/Tooltip.stories.tsx +35 -30
- package/src/components/Tooltip/Tooltip.tsx +58 -54
- package/src/components/index.ts +17 -9
- package/src/exemplars/generics.stories.tsx +41 -0
- package/src/exemplars/slot.stories.tsx +115 -0
- package/src/exemplars/tabster.stories.tsx +127 -0
- package/src/exemplars/virtualizer.stories.tsx +136 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useDensityContext.ts +3 -3
- package/src/hooks/useElevationContext.ts +1 -1
- package/src/hooks/useSafeArea.ts +3 -2
- package/src/hooks/useSafeCollisionPadding.ts +1 -1
- package/src/hooks/useVisualViewport.ts +4 -4
- package/src/index.ts +2 -1
- package/src/playground/Controls.stories.tsx +20 -24
- package/src/playground/Custom.stories.tsx +20 -34
- package/src/playground/Typography.stories.tsx +11 -9
- package/src/primitives/Column/AUDIT.md +148 -0
- package/src/primitives/Column/Column.stories.tsx +181 -0
- package/src/primitives/Column/Column.tsx +165 -0
- package/src/primitives/Column/index.ts +5 -0
- package/src/primitives/Container/Container.stories.tsx +29 -0
- package/src/primitives/Container/Container.tsx +19 -0
- package/src/primitives/Container/index.ts +5 -0
- package/src/primitives/Flex/Flex.stories.tsx +57 -0
- package/src/primitives/Flex/Flex.tsx +27 -0
- package/src/primitives/Flex/index.ts +5 -0
- package/src/primitives/Grid/Grid.stories.tsx +56 -0
- package/src/primitives/Grid/Grid.tsx +30 -0
- package/src/primitives/Grid/index.ts +5 -0
- package/src/primitives/Panel/Panel.stories.tsx +68 -0
- package/src/primitives/Panel/Panel.tsx +120 -0
- package/src/primitives/Panel/index.ts +5 -0
- package/src/primitives/index.ts +9 -0
- package/src/testing/Loading.tsx +47 -0
- package/src/testing/decorators/index.ts +2 -1
- package/src/testing/decorators/withLayout.tsx +67 -0
- package/src/testing/decorators/withLayoutVariants.tsx +48 -0
- package/src/testing/decorators/withTheme.tsx +37 -0
- package/src/testing/index.ts +2 -0
- package/src/translations.ts +24 -0
- package/src/util/index.ts +3 -1
- package/src/util/usePx.ts +62 -0
- package/dist/lib/browser/chunk-T6YPS45E.mjs +0 -4376
- package/dist/lib/browser/chunk-T6YPS45E.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs +0 -4378
- package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs.map +0 -7
- package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
- package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
- package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
- package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
- package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
- package/dist/types/src/components/Buttons/Button.stories.d.ts +0 -12
- package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
- package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
- package/dist/types/src/components/Buttons/IconButton.stories.d.ts +0 -22
- package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
- package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
- package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
- package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
- package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -28
- package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
- package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -39
- package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
- package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
- package/dist/types/src/components/Dialogs/AlertDialog.d.ts +0 -31
- package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
- package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +0 -43
- package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
- package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
- package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
- package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -48
- package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
- package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
- package/dist/types/src/components/Lists/List.d.ts.map +0 -1
- package/dist/types/src/components/Lists/List.stories.d.ts +0 -37
- package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
- package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
- package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
- package/dist/types/src/components/Lists/Tree.stories.d.ts +0 -41
- package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
- package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
- package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
- package/dist/types/src/components/Lists/Treegrid.stories.d.ts +0 -10
- package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
- package/dist/types/src/components/Lists/index.d.ts.map +0 -1
- package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
- package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +0 -50
- package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
- package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -112
- package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
- package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -50
- package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
- package/dist/types/src/components/Menus/index.d.ts.map +0 -1
- package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
- package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
- package/dist/types/src/util/ThemedClassName.d.ts +0 -5
- package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
- package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
- package/src/components/AnchoredOverflow/index.ts +0 -5
- package/src/components/Buttons/Toggle.stories.tsx +0 -33
- package/src/components/Buttons/ToggleGroup.tsx +0 -41
- package/src/components/Dialogs/AlertDialog.stories.tsx +0 -66
- package/src/components/Dialogs/AlertDialog.tsx +0 -172
- package/src/components/Dialogs/Dialog.stories.tsx +0 -65
- package/src/components/Dialogs/Dialog.tsx +0 -159
- package/src/components/Lists/Treegrid.tsx +0 -152
- package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
- package/src/testing/decorators/withTheme.ts +0 -22
- package/src/util/ThemedClassName.ts +0 -7
- /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
- /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
- /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
- /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
- /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
- /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
- /package/src/components/{Buttons → Button}/index.ts +0 -0
- /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
- /package/src/components/{Lists → List}/index.ts +0 -0
- /package/src/components/{Menus → Menu}/index.ts +0 -0
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
// This is based upon `@radix-ui/react-tooltip` fetched 17 March 2025 at https://github.com/radix-ui/primitives at commit 6e75e11.
|
|
6
|
+
// TODO(burdon): Replace with https://ui.shadcn.com/docs/components/radix/tooltip
|
|
6
7
|
|
|
7
8
|
import { composeEventHandlers } from '@radix-ui/primitive';
|
|
8
9
|
import { useComposedRefs } from '@radix-ui/react-compose-refs';
|
|
@@ -11,7 +12,7 @@ import type { Scope } from '@radix-ui/react-context';
|
|
|
11
12
|
import { DismissableLayer } from '@radix-ui/react-dismissable-layer';
|
|
12
13
|
import { useId } from '@radix-ui/react-id';
|
|
13
14
|
import * as PopperPrimitive from '@radix-ui/react-popper';
|
|
14
|
-
import {
|
|
15
|
+
import { type PopperAnchorProps, createPopperScope } from '@radix-ui/react-popper';
|
|
15
16
|
import { Portal as PortalPrimitive } from '@radix-ui/react-portal';
|
|
16
17
|
import { Presence } from '@radix-ui/react-presence';
|
|
17
18
|
import { Primitive } from '@radix-ui/react-primitive';
|
|
@@ -21,12 +22,12 @@ import { useControllableState } from '@radix-ui/react-use-controllable-state';
|
|
|
21
22
|
import * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';
|
|
22
23
|
import React, {
|
|
23
24
|
type ComponentPropsWithoutRef,
|
|
24
|
-
type
|
|
25
|
+
type ComponentRef,
|
|
25
26
|
type FC,
|
|
27
|
+
type ReactNode,
|
|
28
|
+
type RefObject,
|
|
26
29
|
type SyntheticEvent,
|
|
27
30
|
forwardRef,
|
|
28
|
-
type MutableRefObject,
|
|
29
|
-
type ReactNode,
|
|
30
31
|
useCallback,
|
|
31
32
|
useEffect,
|
|
32
33
|
useMemo,
|
|
@@ -40,9 +41,9 @@ type TooltipScopedProps<P = {}> = P & { __scopeTooltip?: Scope };
|
|
|
40
41
|
const [createTooltipContext, createTooltipScope] = createContextScope('Tooltip', [createPopperScope]);
|
|
41
42
|
const usePopperScope = createPopperScope();
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
//
|
|
45
|
+
// Tooltip
|
|
46
|
+
//
|
|
46
47
|
|
|
47
48
|
const DEFAULT_DELAY_DURATION = 700;
|
|
48
49
|
const TOOLTIP_OPEN = 'tooltip.open';
|
|
@@ -53,19 +54,19 @@ type TooltipContextValue = {
|
|
|
53
54
|
open: boolean;
|
|
54
55
|
stateAttribute: 'closed' | 'delayed-open' | 'instant-open';
|
|
55
56
|
trigger: TooltipTriggerElement | null;
|
|
56
|
-
onTriggerChange(trigger: TooltipTriggerElement | null): void;
|
|
57
|
+
onTriggerChange(trigger: TooltipTriggerElement | null, content?: ReactNode, side?: TooltipSide): void;
|
|
57
58
|
onTriggerEnter(): void;
|
|
58
59
|
onTriggerLeave(): void;
|
|
59
60
|
onOpen(): void;
|
|
60
61
|
onClose(): void;
|
|
61
62
|
onPointerInTransitChange(inTransit: boolean): void;
|
|
62
|
-
isPointerInTransitRef:
|
|
63
|
+
isPointerInTransitRef: RefObject<boolean>;
|
|
63
64
|
disableHoverableContent: boolean;
|
|
64
65
|
};
|
|
65
66
|
|
|
66
67
|
const [TooltipContextProvider, useTooltipContext] = createTooltipContext<TooltipContextValue>(TOOLTIP_NAME);
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
type TooltipProviderProps = {
|
|
69
70
|
children?: ReactNode;
|
|
70
71
|
open?: boolean;
|
|
71
72
|
defaultOpen?: boolean;
|
|
@@ -86,7 +87,7 @@ interface TooltipProviderProps {
|
|
|
86
87
|
* @defaultValue 300
|
|
87
88
|
*/
|
|
88
89
|
skipDelayDuration?: number;
|
|
89
|
-
}
|
|
90
|
+
};
|
|
90
91
|
|
|
91
92
|
const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<TooltipProviderProps>) => {
|
|
92
93
|
const {
|
|
@@ -110,15 +111,18 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
|
|
|
110
111
|
|
|
111
112
|
const popperScope = usePopperScope(__scopeTooltip);
|
|
112
113
|
const [trigger, setTrigger] = useState<HTMLButtonElement | null>(null);
|
|
113
|
-
const [content, setContent] = useState<
|
|
114
|
+
const [content, setContent] = useState<ReactNode>(null);
|
|
114
115
|
const [side, setSide] = useState<TooltipSide | undefined>(undefined);
|
|
115
116
|
const triggerRef = useRef<HTMLButtonElement | null>(trigger);
|
|
116
|
-
const handleTriggerChange = useCallback(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
117
|
+
const handleTriggerChange = useCallback(
|
|
118
|
+
(nextTrigger: HTMLButtonElement | null, nextContent?: ReactNode, nextSide?: TooltipSide) => {
|
|
119
|
+
setTrigger(nextTrigger);
|
|
120
|
+
triggerRef.current = nextTrigger;
|
|
121
|
+
setContent(nextContent ?? null);
|
|
122
|
+
setSide(nextSide);
|
|
123
|
+
},
|
|
124
|
+
[],
|
|
125
|
+
);
|
|
122
126
|
const contentId = useId();
|
|
123
127
|
const openTimerRef = useRef(0);
|
|
124
128
|
const wasOpenDelayedRef = useRef(false);
|
|
@@ -214,11 +218,11 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
|
|
|
214
218
|
isPointerInTransitRef.current = inTransit;
|
|
215
219
|
}, [])}
|
|
216
220
|
>
|
|
217
|
-
<TooltipContent side={side} className={tx('tooltip.content',
|
|
221
|
+
<TooltipContent side={side} className={tx('tooltip.content', { elevation })}>
|
|
218
222
|
{content}
|
|
219
|
-
<TooltipArrow className={tx('tooltip.arrow'
|
|
223
|
+
<TooltipArrow className={tx('tooltip.arrow')} />
|
|
220
224
|
</TooltipContent>
|
|
221
|
-
<TooltipVirtualTrigger virtualRef={triggerRef} />
|
|
225
|
+
<TooltipVirtualTrigger virtualRef={triggerRef as RefObject<HTMLButtonElement>} />
|
|
222
226
|
{children}
|
|
223
227
|
</TooltipContextProvider>
|
|
224
228
|
</PopperPrimitive.Root>
|
|
@@ -227,9 +231,9 @@ const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<Too
|
|
|
227
231
|
|
|
228
232
|
TooltipProvider.displayName = TOOLTIP_NAME;
|
|
229
233
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
234
|
+
//
|
|
235
|
+
// TooltipVirtualTrigger
|
|
236
|
+
//
|
|
233
237
|
|
|
234
238
|
const TooltipVirtualTrigger = ({
|
|
235
239
|
virtualRef,
|
|
@@ -239,17 +243,17 @@ const TooltipVirtualTrigger = ({
|
|
|
239
243
|
return <PopperPrimitive.Anchor asChild {...popperScope} virtualRef={virtualRef} />;
|
|
240
244
|
};
|
|
241
245
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
246
|
+
//
|
|
247
|
+
// TooltipTrigger
|
|
248
|
+
//
|
|
245
249
|
|
|
246
250
|
const TRIGGER_NAME = 'TooltipTrigger';
|
|
247
251
|
|
|
248
|
-
type TooltipTriggerElement =
|
|
252
|
+
type TooltipTriggerElement = ComponentRef<typeof Primitive.button>;
|
|
249
253
|
type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
250
|
-
type TooltipTriggerProps = PrimitiveButtonProps &
|
|
254
|
+
type TooltipTriggerProps = Omit<PrimitiveButtonProps, 'content'> &
|
|
251
255
|
Pick<TooltipProps, 'delayDuration'> & {
|
|
252
|
-
content?:
|
|
256
|
+
content?: ReactNode;
|
|
253
257
|
side?: TooltipSide;
|
|
254
258
|
onInteract?: (event: SyntheticEvent) => void;
|
|
255
259
|
};
|
|
@@ -282,8 +286,6 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
|
|
|
282
286
|
// commonly anchors and the anchor `type` attribute signifies MIME type.
|
|
283
287
|
aria-describedby={context.open ? context.contentId : undefined}
|
|
284
288
|
data-state={context.stateAttribute}
|
|
285
|
-
data-tooltip-content={content}
|
|
286
|
-
data-tooltip-side={side}
|
|
287
289
|
{...triggerProps}
|
|
288
290
|
ref={composedRefs}
|
|
289
291
|
onPointerMove={composeEventHandlers(props.onPointerMove, (event) => {
|
|
@@ -295,7 +297,7 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
|
|
|
295
297
|
if (event.defaultPrevented) {
|
|
296
298
|
return;
|
|
297
299
|
}
|
|
298
|
-
context.onTriggerChange(ref.current);
|
|
300
|
+
context.onTriggerChange(ref.current, content, side);
|
|
299
301
|
context.onTriggerEnter();
|
|
300
302
|
hasPointerMoveOpenedRef.current = true;
|
|
301
303
|
}
|
|
@@ -321,9 +323,9 @@ const TooltipTrigger = forwardRef<TooltipTriggerElement, TooltipTriggerProps>(
|
|
|
321
323
|
|
|
322
324
|
TooltipTrigger.displayName = TRIGGER_NAME;
|
|
323
325
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
326
|
+
//
|
|
327
|
+
// TooltipPortal
|
|
328
|
+
//
|
|
327
329
|
|
|
328
330
|
const PORTAL_NAME = 'TooltipPortal';
|
|
329
331
|
|
|
@@ -333,7 +335,7 @@ const [PortalProvider, usePortalContext] = createTooltipContext<PortalContextVal
|
|
|
333
335
|
});
|
|
334
336
|
|
|
335
337
|
type PortalProps = ComponentPropsWithoutRef<typeof PortalPrimitive>;
|
|
336
|
-
|
|
338
|
+
type TooltipPortalProps = {
|
|
337
339
|
children?: ReactNode;
|
|
338
340
|
/**
|
|
339
341
|
* Specify a container element to portal the content into.
|
|
@@ -344,7 +346,7 @@ interface TooltipPortalProps {
|
|
|
344
346
|
* controlling animation with React animation libraries.
|
|
345
347
|
*/
|
|
346
348
|
forceMount?: true;
|
|
347
|
-
}
|
|
349
|
+
};
|
|
348
350
|
|
|
349
351
|
const TooltipPortal: FC<TooltipPortalProps> = (props: TooltipScopedProps<TooltipPortalProps>) => {
|
|
350
352
|
const { __scopeTooltip, forceMount, children, container } = props;
|
|
@@ -362,20 +364,20 @@ const TooltipPortal: FC<TooltipPortalProps> = (props: TooltipScopedProps<Tooltip
|
|
|
362
364
|
|
|
363
365
|
TooltipPortal.displayName = PORTAL_NAME;
|
|
364
366
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
367
|
+
//
|
|
368
|
+
// TooltipContent
|
|
369
|
+
//
|
|
368
370
|
|
|
369
371
|
const CONTENT_NAME = 'TooltipContent';
|
|
370
372
|
|
|
371
373
|
type TooltipContentElement = TooltipContentImplElement;
|
|
372
|
-
|
|
374
|
+
type TooltipContentProps = TooltipContentImplProps & {
|
|
373
375
|
/**
|
|
374
376
|
* Used to force mounting when more control is needed. Useful when
|
|
375
377
|
* controlling animation with React animation libraries.
|
|
376
378
|
*/
|
|
377
379
|
forceMount?: true;
|
|
378
|
-
}
|
|
380
|
+
};
|
|
379
381
|
|
|
380
382
|
const TooltipContent = forwardRef<TooltipContentElement, TooltipContentProps>(
|
|
381
383
|
(props: TooltipScopedProps<TooltipContentProps>, forwardedRef) => {
|
|
@@ -399,7 +401,7 @@ type Point = { x: number; y: number };
|
|
|
399
401
|
type Polygon = Point[];
|
|
400
402
|
|
|
401
403
|
type TooltipContentHoverableElement = TooltipContentImplElement;
|
|
402
|
-
|
|
404
|
+
type TooltipContentHoverableProps = TooltipContentImplProps;
|
|
403
405
|
|
|
404
406
|
const TooltipContentHoverable = forwardRef<TooltipContentHoverableElement, TooltipContentHoverableProps>(
|
|
405
407
|
(props: TooltipScopedProps<TooltipContentHoverableProps>, forwardedRef) => {
|
|
@@ -478,10 +480,10 @@ const [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] =
|
|
|
478
480
|
isInside: false,
|
|
479
481
|
});
|
|
480
482
|
|
|
481
|
-
type TooltipContentImplElement =
|
|
483
|
+
type TooltipContentImplElement = ComponentRef<typeof PopperPrimitive.Content>;
|
|
482
484
|
type DismissableLayerProps = ComponentPropsWithoutRef<typeof DismissableLayer>;
|
|
483
485
|
type PopperContentProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;
|
|
484
|
-
|
|
486
|
+
type TooltipContentImplProps = Omit<PopperContentProps, 'onPlaced'> & {
|
|
485
487
|
/**
|
|
486
488
|
* A more descriptive label for accessibility purpose
|
|
487
489
|
*/
|
|
@@ -497,7 +499,7 @@ interface TooltipContentImplProps extends Omit<PopperContentProps, 'onPlaced'> {
|
|
|
497
499
|
* Can be prevented.
|
|
498
500
|
*/
|
|
499
501
|
onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];
|
|
500
|
-
}
|
|
502
|
+
};
|
|
501
503
|
|
|
502
504
|
const TooltipContentImpl = forwardRef<TooltipContentImplElement, TooltipContentImplProps>(
|
|
503
505
|
(props: TooltipScopedProps<TooltipContentImplProps>, forwardedRef) => {
|
|
@@ -573,15 +575,15 @@ const TooltipContentImpl = forwardRef<TooltipContentImplElement, TooltipContentI
|
|
|
573
575
|
|
|
574
576
|
TooltipContent.displayName = CONTENT_NAME;
|
|
575
577
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
578
|
+
//
|
|
579
|
+
// TooltipArrow
|
|
580
|
+
//
|
|
579
581
|
|
|
580
582
|
const ARROW_NAME = 'TooltipArrow';
|
|
581
583
|
|
|
582
|
-
type TooltipArrowElement =
|
|
584
|
+
type TooltipArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;
|
|
583
585
|
type PopperArrowProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;
|
|
584
|
-
|
|
586
|
+
type TooltipArrowProps = PopperArrowProps;
|
|
585
587
|
|
|
586
588
|
const TooltipArrow = forwardRef<TooltipArrowElement, TooltipArrowProps>(
|
|
587
589
|
(props: TooltipScopedProps<TooltipArrowProps>, forwardedRef) => {
|
|
@@ -598,8 +600,6 @@ const TooltipArrow = forwardRef<TooltipArrowElement, TooltipArrowProps>(
|
|
|
598
600
|
|
|
599
601
|
TooltipArrow.displayName = ARROW_NAME;
|
|
600
602
|
|
|
601
|
-
/* ----------------------------------------------------------------------------------------------- */
|
|
602
|
-
|
|
603
603
|
type TooltipSide = NonNullable<TooltipContentProps['side']>;
|
|
604
604
|
|
|
605
605
|
const getExitSideFromRect = (point: Point, rect: DOMRect): TooltipSide => {
|
|
@@ -754,6 +754,10 @@ const getHullPresorted = <P extends Point>(points: Readonly<Array<P>>): Array<P>
|
|
|
754
754
|
}
|
|
755
755
|
};
|
|
756
756
|
|
|
757
|
+
//
|
|
758
|
+
// Tooltip
|
|
759
|
+
//
|
|
760
|
+
|
|
757
761
|
export const Tooltip = {
|
|
758
762
|
Provider: TooltipProvider,
|
|
759
763
|
Trigger: TooltipTrigger,
|
package/src/components/index.ts
CHANGED
|
@@ -2,29 +2,37 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export * from './
|
|
5
|
+
export * from './DensityProvider';
|
|
6
|
+
export * from './ElevationProvider';
|
|
7
|
+
export * from './ThemeProvider';
|
|
8
|
+
|
|
6
9
|
export * from './Avatars';
|
|
7
10
|
export * from './Breadcrumb';
|
|
8
|
-
export * from './
|
|
11
|
+
export * from './Button';
|
|
12
|
+
export * from './Card';
|
|
13
|
+
export * from './Carousel';
|
|
9
14
|
export * from './Clipboard';
|
|
10
|
-
export * from './
|
|
15
|
+
export * from './Dialog';
|
|
16
|
+
export * from './ErrorFallback';
|
|
17
|
+
export * from './Focus';
|
|
11
18
|
export * from './Icon';
|
|
19
|
+
export * from './Image';
|
|
12
20
|
export * from './Input';
|
|
13
21
|
export * from './Link';
|
|
14
|
-
export * from './
|
|
22
|
+
export * from './List';
|
|
15
23
|
export * from './Main';
|
|
16
|
-
export * from './
|
|
24
|
+
export * from './MediaPlayer';
|
|
25
|
+
export * from './Menu';
|
|
17
26
|
export * from './Message';
|
|
18
27
|
export * from './Popover';
|
|
19
28
|
export * from './Status';
|
|
20
29
|
export * from './ScrollArea';
|
|
30
|
+
export * from './ScrollContainer';
|
|
21
31
|
export * from './Select';
|
|
22
32
|
export * from './Separator';
|
|
33
|
+
export * from './Skeleton';
|
|
34
|
+
export * from './Splitter';
|
|
23
35
|
export * from './Tag';
|
|
24
36
|
export * from './Toast';
|
|
25
37
|
export * from './Toolbar';
|
|
26
38
|
export * from './Tooltip';
|
|
27
|
-
|
|
28
|
-
export * from './DensityProvider';
|
|
29
|
-
export * from './ElevationProvider';
|
|
30
|
-
export * from './ThemeProvider';
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
|
|
8
|
+
import { slottable } from '@dxos/ui-theme';
|
|
9
|
+
|
|
10
|
+
import { withTheme } from '../testing';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Generic component pattern using the slottable factory.
|
|
14
|
+
*/
|
|
15
|
+
const Component = slottable<HTMLDivElement>(({ children, ...props }, forwardedRef) => {
|
|
16
|
+
return (
|
|
17
|
+
<div {...props} ref={forwardedRef}>
|
|
18
|
+
{children}
|
|
19
|
+
</div>
|
|
20
|
+
);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const meta = {
|
|
24
|
+
title: 'ui/react-ui-core/exemplars/generics',
|
|
25
|
+
component: Component,
|
|
26
|
+
render: (props) => <Component {...props} />,
|
|
27
|
+
decorators: [withTheme()],
|
|
28
|
+
parameters: {
|
|
29
|
+
layout: 'centered',
|
|
30
|
+
},
|
|
31
|
+
} satisfies Meta;
|
|
32
|
+
|
|
33
|
+
export default meta;
|
|
34
|
+
|
|
35
|
+
type Story = StoryObj<typeof meta>;
|
|
36
|
+
|
|
37
|
+
export const Default: Story = {
|
|
38
|
+
args: {
|
|
39
|
+
children: 'Hello',
|
|
40
|
+
},
|
|
41
|
+
};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Primitive } from '@radix-ui/react-primitive';
|
|
6
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
7
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
8
|
+
import React, { PropsWithChildren } from 'react';
|
|
9
|
+
|
|
10
|
+
import { composable, composableProps, mx, slottable } from '@dxos/ui-theme';
|
|
11
|
+
|
|
12
|
+
import { withTheme } from '../testing';
|
|
13
|
+
import { ThemedClassName } from '../util';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Radix-style composition.
|
|
17
|
+
* All Radix primitive parts that render a DOM element accept an asChild prop.
|
|
18
|
+
* When asChild is set to true, Radix will not render a default DOM element,
|
|
19
|
+
* instead cloning the part's child and passing it the props and behavior required to make it functional.
|
|
20
|
+
* https://www.radix-ui.com/primitives/docs/guides/composition
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
const Outer = slottable<HTMLDivElement, { priority?: number }>(
|
|
24
|
+
({ children, asChild, priority, ...props }, forwardedRef) => {
|
|
25
|
+
const Comp = asChild ? Slot : Primitive.div;
|
|
26
|
+
return (
|
|
27
|
+
<Comp
|
|
28
|
+
{...composableProps<HTMLDivElement>(props, { classNames: 'p-2 border border-red-500 rounded' })}
|
|
29
|
+
ref={forwardedRef}
|
|
30
|
+
>
|
|
31
|
+
{children}
|
|
32
|
+
</Comp>
|
|
33
|
+
);
|
|
34
|
+
},
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const Middle = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
|
|
38
|
+
const Comp = asChild ? Slot : Primitive.div;
|
|
39
|
+
return (
|
|
40
|
+
<Comp
|
|
41
|
+
{...composableProps<HTMLDivElement>(props, { classNames: 'p-2 border border-red-500 rounded' })}
|
|
42
|
+
ref={forwardedRef}
|
|
43
|
+
>
|
|
44
|
+
{children}
|
|
45
|
+
</Comp>
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const Leaf = composable<HTMLButtonElement>(({ children, ...props }, forwardedRef) => {
|
|
50
|
+
return (
|
|
51
|
+
<button
|
|
52
|
+
{...composableProps<HTMLButtonElement>(props, { classNames: 'p-2 border border-red-500 rounded' })}
|
|
53
|
+
ref={forwardedRef}
|
|
54
|
+
>
|
|
55
|
+
{children}
|
|
56
|
+
</button>
|
|
57
|
+
);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
/** This isn't a valid child for a `slottable` component. */
|
|
61
|
+
const Simple = ({ children, classNames }: ThemedClassName<PropsWithChildren>) => (
|
|
62
|
+
<div className={mx(classNames)}>{children}</div>
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
const meta = {
|
|
66
|
+
title: 'ui/react-ui-core/exemplars/slot',
|
|
67
|
+
decorators: [withTheme()],
|
|
68
|
+
parameters: {
|
|
69
|
+
layout: 'centered',
|
|
70
|
+
},
|
|
71
|
+
} satisfies Meta;
|
|
72
|
+
|
|
73
|
+
export default meta;
|
|
74
|
+
|
|
75
|
+
type Story = StoryObj<typeof meta>;
|
|
76
|
+
|
|
77
|
+
export const Single: Story = {
|
|
78
|
+
render: () => (
|
|
79
|
+
<Outer asChild role='article' classNames='border-green-500' priority={1}>
|
|
80
|
+
<Leaf>Single asChild (non-compliant — see console)</Leaf>
|
|
81
|
+
</Outer>
|
|
82
|
+
),
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export const Nested: Story = {
|
|
86
|
+
render: () => (
|
|
87
|
+
<Outer asChild role='article' classNames='border-blue-500'>
|
|
88
|
+
<Middle asChild>
|
|
89
|
+
<Leaf>Nested asChild</Leaf>
|
|
90
|
+
</Middle>
|
|
91
|
+
</Outer>
|
|
92
|
+
),
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const Inner: Story = {
|
|
96
|
+
render: () => (
|
|
97
|
+
<Outer asChild role='article' classNames='border-orange-500'>
|
|
98
|
+
<Middle asChild>
|
|
99
|
+
<Leaf>
|
|
100
|
+
<div>Leaf</div>
|
|
101
|
+
</Leaf>
|
|
102
|
+
</Middle>
|
|
103
|
+
</Outer>
|
|
104
|
+
),
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export const Error: Story = {
|
|
108
|
+
render: () => (
|
|
109
|
+
<Outer asChild role='none' classNames='p-2 border border-green-500 rounded'>
|
|
110
|
+
<Middle asChild>
|
|
111
|
+
<Simple>Simple</Simple>
|
|
112
|
+
</Middle>
|
|
113
|
+
</Outer>
|
|
114
|
+
),
|
|
115
|
+
};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
useArrowNavigationGroup,
|
|
7
|
+
useFocusFinders,
|
|
8
|
+
useFocusableGroup,
|
|
9
|
+
useMergedTabsterAttributes_unstable,
|
|
10
|
+
} from '@fluentui/react-tabster';
|
|
11
|
+
import { type Decorator, type Meta, type StoryObj } from '@storybook/react-vite';
|
|
12
|
+
import React, { forwardRef, useEffect, useMemo, useRef } from 'react';
|
|
13
|
+
import { createTabster, disposeTabster } from 'tabster';
|
|
14
|
+
|
|
15
|
+
import { Input, ScrollArea } from '@dxos/react-ui';
|
|
16
|
+
import { withLayout, withTheme } from '@dxos/react-ui/testing';
|
|
17
|
+
import { mx } from '@dxos/ui-theme';
|
|
18
|
+
|
|
19
|
+
// TODO(burdon): Factor out styles (incl. tabster debugging).
|
|
20
|
+
// TODO(burdon): Implement horizontal movement between columns when column is selected.
|
|
21
|
+
// TODO(burdon): Prevent tab out of app.
|
|
22
|
+
|
|
23
|
+
const border =
|
|
24
|
+
'rounded-xs outline-hidden border border-subdued-separator focus:border-primary-500 focus-within:border-rose-500';
|
|
25
|
+
|
|
26
|
+
const Board = forwardRef<HTMLDivElement, { columns: string[][] }>(({ columns }, ref) => {
|
|
27
|
+
const arrowNavigationAttrs = useArrowNavigationGroup({ axis: 'horizontal', memorizeCurrent: true, tabbable: true });
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<div ref={ref} tabIndex={0} {...arrowNavigationAttrs} className='flex h-full w-full overflow-hidden'>
|
|
31
|
+
<div className={mx('flex h-full overflow-x-auto p-4 gap-4')}>
|
|
32
|
+
{columns.map((column) => (
|
|
33
|
+
<Column key={column[0]} items={column} />
|
|
34
|
+
))}
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const Column = forwardRef<HTMLDivElement, { items: string[] }>(({ items }, ref) => {
|
|
41
|
+
const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });
|
|
42
|
+
const arrowNavigationAttrs = useArrowNavigationGroup({ axis: 'vertical', memorizeCurrent: true });
|
|
43
|
+
const tabsterAttrs = useMergedTabsterAttributes_unstable(focusableGroupAttrs, arrowNavigationAttrs);
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<ScrollArea.Root orientation='vertical' classNames={mx('w-[25rem]', border)}>
|
|
47
|
+
<ScrollArea.Viewport {...tabsterAttrs} classNames='p-4 gap-4' ref={ref}>
|
|
48
|
+
{items.map((item) => (
|
|
49
|
+
<Item key={item} value={item} />
|
|
50
|
+
))}
|
|
51
|
+
</ScrollArea.Viewport>
|
|
52
|
+
</ScrollArea.Root>
|
|
53
|
+
);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const Item = forwardRef<HTMLDivElement, { value: string }>(({ value }, ref) => {
|
|
57
|
+
const focusableGroupAttrs = useFocusableGroup();
|
|
58
|
+
|
|
59
|
+
return (
|
|
60
|
+
<div
|
|
61
|
+
ref={ref}
|
|
62
|
+
tabIndex={0}
|
|
63
|
+
{...focusableGroupAttrs}
|
|
64
|
+
className={mx('flex shrink-0 w-full gap-4 p-4 items-center', border)}
|
|
65
|
+
>
|
|
66
|
+
<Input.Root>
|
|
67
|
+
<Input.Checkbox />
|
|
68
|
+
</Input.Root>
|
|
69
|
+
<Input.Root>
|
|
70
|
+
<Input.TextInput defaultValue={value} />
|
|
71
|
+
</Input.Root>
|
|
72
|
+
</div>
|
|
73
|
+
);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const DefaultStory = () => {
|
|
77
|
+
const columns = useMemo(() => {
|
|
78
|
+
return [['A1', 'A2', 'A3'], ['B1'], ['C1', 'C2', 'C3', 'C4', 'C5', 'C6'], ['D1', 'D2']];
|
|
79
|
+
}, []);
|
|
80
|
+
|
|
81
|
+
const ref = useRef<HTMLDivElement>(null);
|
|
82
|
+
const { findFirstFocusable } = useFocusFinders();
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
if (ref.current) {
|
|
85
|
+
findFirstFocusable(ref.current)?.focus();
|
|
86
|
+
}
|
|
87
|
+
}, []);
|
|
88
|
+
|
|
89
|
+
return <Board columns={columns} ref={ref} />;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
// TODO(burdon): This doesn't seem to be necessary or recongized; memoization doesn't work.
|
|
93
|
+
const withTabster: Decorator = (Story) => {
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
const tabster = createTabster(window, {
|
|
96
|
+
autoRoot: {},
|
|
97
|
+
// TODO(burdon): Not called.
|
|
98
|
+
// checkUncontrolledCompletely: (el) => {
|
|
99
|
+
// console.log(el);
|
|
100
|
+
// return true;
|
|
101
|
+
// },
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
return () => {
|
|
105
|
+
disposeTabster(tabster);
|
|
106
|
+
};
|
|
107
|
+
}, []);
|
|
108
|
+
|
|
109
|
+
return <Story />;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const meta: Meta<typeof DefaultStory> = {
|
|
113
|
+
title: 'ui/react-ui-core/exemplars/tabster',
|
|
114
|
+
component: DefaultStory,
|
|
115
|
+
decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withTabster],
|
|
116
|
+
parameters: {
|
|
117
|
+
layout: 'fullscreen',
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export default meta;
|
|
122
|
+
|
|
123
|
+
type Story = StoryObj<typeof meta>;
|
|
124
|
+
|
|
125
|
+
export const Default: Story = {
|
|
126
|
+
args: {},
|
|
127
|
+
};
|