@dxos/react-ui 0.8.3 → 0.8.4-main.1068cf700f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/chunk-6DTBPJE4.mjs +774 -0
- package/dist/lib/browser/chunk-6DTBPJE4.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +3203 -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 +66 -50
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node-esm/chunk-JKHQSGNU.mjs +776 -0
- package/dist/lib/node-esm/chunk-JKHQSGNU.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +3203 -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 +66 -50
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +7 -0
- package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +1 -1
- package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
- 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 +2 -2
- 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 +4 -4
- package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
- package/dist/types/src/components/Button/IconButton.stories.d.ts +13 -0
- package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
- 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/Clipboard/ClipboardProvider.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/CopyButton.d.ts +5 -6
- package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/index.d.ts +2 -3
- 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/{Dialogs → Dialog}/AlertDialog.d.ts +1 -1
- 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 +46 -0
- package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts +27 -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/Icon/Icon.d.ts +2 -2
- package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
- package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
- package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
- package/dist/types/src/components/Input/Input.d.ts +6 -5
- package/dist/types/src/components/Input/Input.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.stories.d.ts +12 -13
- package/dist/types/src/components/Input/Input.stories.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 +3 -3
- package/dist/types/src/components/List/List.d.ts.map +1 -0
- package/dist/types/src/components/List/List.stories.d.ts +14 -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 +1 -1
- 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 +1 -1
- package/dist/types/src/components/{Lists → List}/Treegrid.d.ts.map +1 -1
- 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 +17 -27
- package/dist/types/src/components/Main/Main.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.stories.d.ts +6 -7
- package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
- 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/{Menus → Menu}/DropdownMenu.d.ts +8 -8
- package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +15 -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 +1 -1
- package/dist/types/src/components/Message/Message.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.stories.d.ts +8 -17
- package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.d.ts +4 -4
- 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 +25 -26
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +37 -25
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +39 -0
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +19 -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 +5 -10
- package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
- package/dist/types/src/components/Separator/Separator.d.ts +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 +26 -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.stories.d.ts +2 -8
- 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 +12 -12
- package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +3 -3
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
- 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 +5 -5
- 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 +20 -19
- 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 +2 -4
- package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +8 -61
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
- 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 +17 -0
- package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
- package/dist/types/src/exemplars/slot.stories.d.ts +14 -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/hooks/useDensityContext.d.ts +1 -1
- 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/useSafeArea.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 +3 -2
- 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/Container/Container.d.ts +23 -0
- package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/Container.stories.d.ts +11 -0
- package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/Layout.d.ts +18 -0
- package/dist/types/src/primitives/Container/Layout.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/Layout.stories.d.ts +10 -0
- package/dist/types/src/primitives/Container/Layout.stories.d.ts.map +1 -0
- package/dist/types/src/primitives/Container/index.d.ts +3 -0
- package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
- package/dist/types/src/primitives/Flex/Flex.d.ts +8 -0
- package/dist/types/src/primitives/Flex/Flex.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/index.d.ts +3 -0
- package/dist/types/src/primitives/index.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/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 +39 -31
- package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +10 -12
- package/src/components/Avatars/Avatar.stories.tsx +23 -14
- package/src/components/Avatars/Avatar.tsx +6 -13
- package/src/components/Avatars/AvatarGroup.stories.tsx +12 -8
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +19 -14
- package/src/components/Breadcrumb/Breadcrumb.tsx +8 -34
- package/src/components/{Buttons → Button}/Button.stories.tsx +11 -12
- package/src/components/{Buttons → Button}/Button.tsx +3 -8
- package/src/components/{Buttons → Button}/IconButton.stories.tsx +13 -10
- package/src/components/{Buttons → Button}/IconButton.tsx +23 -16
- package/src/components/Button/Toggle.stories.tsx +37 -0
- package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +15 -12
- package/src/components/{Buttons → Button}/ToggleGroup.tsx +17 -4
- package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
- package/src/components/Clipboard/CopyButton.tsx +17 -18
- package/src/components/DensityProvider/DensityProvider.tsx +2 -2
- package/src/components/{Dialogs → Dialog}/AlertDialog.stories.tsx +17 -14
- package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +16 -21
- package/src/components/Dialog/Dialog.stories.tsx +101 -0
- package/src/components/{Dialogs → Dialog}/Dialog.tsx +182 -57
- package/src/components/ElevationProvider/ElevationProvider.tsx +2 -2
- package/src/components/Icon/Icon.stories.tsx +113 -0
- package/src/components/Icon/Icon.tsx +3 -3
- package/src/components/Input/Input.stories.tsx +22 -23
- package/src/components/Input/Input.tsx +38 -44
- package/src/components/Link/Link.stories.tsx +12 -8
- package/src/components/Link/Link.tsx +1 -1
- package/src/components/{Lists → List}/List.stories.tsx +40 -34
- package/src/components/{Lists → List}/List.tsx +22 -29
- package/src/components/{Lists → List}/ListDropIndicator.tsx +1 -1
- package/src/components/{Lists → List}/Tree.stories.tsx +13 -10
- package/src/components/{Lists → List}/Tree.tsx +4 -3
- package/src/components/{Lists → List}/TreeDropIndicator.tsx +1 -1
- package/src/components/{Lists → List}/Treegrid.stories.tsx +14 -8
- package/src/components/{Lists → List}/Treegrid.tsx +61 -25
- package/src/components/Main/Main.stories.tsx +56 -27
- package/src/components/Main/Main.tsx +166 -94
- package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +13 -10
- package/src/components/{Menus → Menu}/ContextMenu.tsx +8 -31
- package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +14 -11
- package/src/components/{Menus → Menu}/DropdownMenu.tsx +109 -78
- package/src/components/Message/Message.stories.tsx +14 -10
- package/src/components/Message/Message.tsx +34 -23
- package/src/components/Popover/Popover.stories.tsx +14 -11
- package/src/components/Popover/Popover.tsx +68 -49
- package/src/components/ScrollArea/ScrollArea.stories.tsx +163 -34
- package/src/components/ScrollArea/ScrollArea.tsx +80 -82
- package/src/components/ScrollArea/index.ts +1 -1
- package/src/components/ScrollContainer/ScrollContainer.stories.tsx +70 -0
- package/src/components/ScrollContainer/ScrollContainer.tsx +238 -0
- package/src/components/ScrollContainer/index.ts +5 -0
- package/src/components/Select/Select.stories.tsx +15 -12
- package/src/components/Select/Select.tsx +18 -34
- package/src/components/Separator/Separator.tsx +1 -1
- package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
- package/src/components/Skeleton/Skeleton.tsx +26 -0
- package/src/components/Skeleton/index.ts +5 -0
- package/src/components/Splitter/Splitter.stories.tsx +73 -0
- package/src/components/Splitter/Splitter.tsx +123 -0
- package/src/components/Splitter/index.ts +5 -0
- package/src/components/Status/Status.stories.tsx +11 -8
- package/src/components/Status/Status.tsx +2 -2
- package/src/components/Tag/Tag.stories.tsx +21 -12
- package/src/components/Tag/Tag.tsx +2 -7
- package/src/components/ThemeProvider/ThemeProvider.tsx +5 -6
- package/src/components/ThemeProvider/TranslationsProvider.tsx +4 -19
- package/src/components/ThemeProvider/index.ts +3 -1
- package/src/components/Toast/Toast.stories.tsx +14 -11
- package/src/components/Toast/Toast.tsx +15 -19
- package/src/components/Toolbar/Toolbar.stories.tsx +23 -21
- package/src/components/Toolbar/Toolbar.tsx +41 -10
- package/src/components/Tooltip/Tooltip.stories.tsx +18 -14
- package/src/components/Tooltip/Tooltip.tsx +29 -26
- package/src/components/index.ts +7 -4
- package/src/exemplars/generics.stories.tsx +44 -0
- package/src/exemplars/slot.stories.tsx +108 -0
- package/src/exemplars/tabster.stories.tsx +127 -0
- package/src/hooks/useDensityContext.ts +1 -1
- 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 +3 -2
- package/src/playground/Controls.stories.tsx +20 -18
- package/src/playground/Custom.stories.tsx +15 -26
- package/src/playground/Typography.stories.tsx +10 -8
- package/src/primitives/Container/Container.stories.tsx +67 -0
- package/src/primitives/Container/Container.tsx +79 -0
- package/src/primitives/Container/Layout.stories.tsx +57 -0
- package/src/primitives/Container/Layout.tsx +61 -0
- package/src/primitives/Container/index.ts +6 -0
- package/src/primitives/Flex/Flex.tsx +26 -0
- package/src/primitives/Flex/index.ts +5 -0
- package/src/primitives/index.ts +6 -0
- package/src/testing/decorators/index.ts +2 -1
- package/src/testing/decorators/withLayout.tsx +63 -0
- package/src/testing/decorators/{withSurfaceVariantsLayout.tsx → withLayoutVariants.tsx} +4 -4
- package/src/testing/decorators/withTheme.tsx +34 -0
- package/src/util/index.ts +3 -1
- package/src/util/usePx.ts +61 -0
- package/README.yml +0 -1
- package/dist/lib/browser/chunk-WXW6KSRL.mjs +0 -4376
- package/dist/lib/browser/chunk-WXW6KSRL.mjs.map +0 -7
- package/dist/lib/node/chunk-3E3QKWX4.cjs +0 -4363
- package/dist/lib/node/chunk-3E3QKWX4.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -175
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/testing/index.cjs +0 -114
- package/dist/lib/node/testing/index.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-EQ7EG74H.mjs +0 -4378
- package/dist/lib/node-esm/chunk-EQ7EG74H.mjs.map +0 -7
- 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.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.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.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/Buttons/Toggle.stories.tsx +0 -33
- package/src/components/Dialogs/Dialog.stories.tsx +0 -65
- package/src/testing/decorators/withTheme.ts +0 -22
- package/src/util/ThemedClassName.ts +0 -7
- /package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
- /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}/Toggle.tsx +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
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { createContextScope } from '@radix-ui/react-context';
|
|
6
|
+
import React, { type ComponentPropsWithoutRef, forwardRef } from 'react';
|
|
7
|
+
|
|
8
|
+
import { mx } from '@dxos/ui-theme';
|
|
9
|
+
|
|
10
|
+
import { type ThemedClassName } from '../../util';
|
|
11
|
+
|
|
12
|
+
type ScopedProps<P> = P & { __scopeSplitter?: any };
|
|
13
|
+
|
|
14
|
+
// TODO(burdon): Generalize styles.
|
|
15
|
+
// TODO(burdon): Enalbe resize.
|
|
16
|
+
// TODO(burdon): Generalize horizontal/vertical and change to start/end.
|
|
17
|
+
type Mode = 'upper' | 'lower' | 'both';
|
|
18
|
+
|
|
19
|
+
type SplitterContextValue = {
|
|
20
|
+
mode: Mode;
|
|
21
|
+
ratio: number;
|
|
22
|
+
transition: number;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const SPLITTER_NAME = 'Splitter';
|
|
26
|
+
|
|
27
|
+
const [createSplitterContext, createSplitterScope] = createContextScope(SPLITTER_NAME);
|
|
28
|
+
|
|
29
|
+
const [SplitterProvider, useSplitterContext] = createSplitterContext<SplitterContextValue>(SPLITTER_NAME);
|
|
30
|
+
|
|
31
|
+
//
|
|
32
|
+
// Root
|
|
33
|
+
//
|
|
34
|
+
|
|
35
|
+
const ROOT_NAME = 'Splitter.Root';
|
|
36
|
+
|
|
37
|
+
type RootProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & Partial<SplitterContextValue>;
|
|
38
|
+
|
|
39
|
+
const Root = forwardRef<HTMLDivElement, ScopedProps<RootProps>>(
|
|
40
|
+
(
|
|
41
|
+
{ __scopeSplitter, classNames, mode = 'upper', ratio = 0.5, transition = 250, children, ...rootProps },
|
|
42
|
+
forwardedRef,
|
|
43
|
+
) => {
|
|
44
|
+
return (
|
|
45
|
+
<SplitterProvider scope={__scopeSplitter} mode={mode} ratio={ratio} transition={transition}>
|
|
46
|
+
<div
|
|
47
|
+
role='none'
|
|
48
|
+
{...rootProps}
|
|
49
|
+
ref={forwardedRef}
|
|
50
|
+
className={mx('relative bs-full overflow-hidden', classNames)}
|
|
51
|
+
>
|
|
52
|
+
{children}
|
|
53
|
+
</div>
|
|
54
|
+
</SplitterProvider>
|
|
55
|
+
);
|
|
56
|
+
},
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
Root.displayName = ROOT_NAME;
|
|
60
|
+
|
|
61
|
+
//
|
|
62
|
+
// Panel
|
|
63
|
+
//
|
|
64
|
+
|
|
65
|
+
const PANEL_NAME = 'Splitter.Panel';
|
|
66
|
+
|
|
67
|
+
interface PanelProps extends ThemedClassName<ComponentPropsWithoutRef<'div'>> {
|
|
68
|
+
position: 'upper' | 'lower';
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const Panel = forwardRef<HTMLDivElement, ScopedProps<PanelProps>>(
|
|
72
|
+
({ __scopeSplitter, classNames, children, position, style, ...panelProps }, forwardedRef) => {
|
|
73
|
+
const context = useSplitterContext(PANEL_NAME, __scopeSplitter);
|
|
74
|
+
const { mode, ratio, transition } = context;
|
|
75
|
+
|
|
76
|
+
// Calculate position and height based on mode and ratio.
|
|
77
|
+
const isUpper = position === 'upper';
|
|
78
|
+
const top = isUpper ? '0%' : mode === 'upper' ? '100%' : mode === 'lower' ? '0%' : `${ratio * 100}%`;
|
|
79
|
+
|
|
80
|
+
const height = isUpper
|
|
81
|
+
? mode === 'upper'
|
|
82
|
+
? '100%'
|
|
83
|
+
: mode === 'lower'
|
|
84
|
+
? '0%'
|
|
85
|
+
: `${ratio * 100}%`
|
|
86
|
+
: mode === 'lower'
|
|
87
|
+
? '100%'
|
|
88
|
+
: mode === 'upper'
|
|
89
|
+
? '0%'
|
|
90
|
+
: `${(1 - ratio) * 100}%`;
|
|
91
|
+
|
|
92
|
+
return (
|
|
93
|
+
<div
|
|
94
|
+
{...panelProps}
|
|
95
|
+
ref={forwardedRef}
|
|
96
|
+
className={mx('absolute inset-inline-0 flex flex-col overflow-hidden', classNames)}
|
|
97
|
+
style={{
|
|
98
|
+
top,
|
|
99
|
+
height,
|
|
100
|
+
transition: `top ${transition}ms, height ${transition}ms ease-out`,
|
|
101
|
+
...style,
|
|
102
|
+
}}
|
|
103
|
+
>
|
|
104
|
+
{children}
|
|
105
|
+
</div>
|
|
106
|
+
);
|
|
107
|
+
},
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
Panel.displayName = PANEL_NAME;
|
|
111
|
+
|
|
112
|
+
//
|
|
113
|
+
// Splitter
|
|
114
|
+
//
|
|
115
|
+
|
|
116
|
+
const Splitter = {
|
|
117
|
+
Root,
|
|
118
|
+
Panel,
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export { Splitter, createSplitterScope };
|
|
122
|
+
|
|
123
|
+
export type { Mode as SplitterMode, RootProps as SplitterRootProps, PanelProps as SplitterPanelProps };
|
|
@@ -2,19 +2,22 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import '@
|
|
6
|
-
|
|
5
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
7
6
|
import React from 'react';
|
|
8
7
|
|
|
9
|
-
import { Status } from './Status';
|
|
10
8
|
import { withTheme } from '../../testing';
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
import { Status } from './Status';
|
|
11
|
+
|
|
12
|
+
const meta = {
|
|
13
|
+
title: 'ui/react-ui-core/components/Status',
|
|
14
14
|
component: Status,
|
|
15
|
-
decorators: [withTheme],
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
decorators: [withTheme()],
|
|
16
|
+
} satisfies Meta<typeof Status>;
|
|
17
|
+
|
|
18
|
+
export default meta;
|
|
19
|
+
|
|
20
|
+
type Story = StoryObj<typeof meta>;
|
|
18
21
|
|
|
19
22
|
export const Normal = (props: any) => {
|
|
20
23
|
return (
|
|
@@ -20,12 +20,12 @@ const Status = forwardRef<HTMLSpanElement, StatusProps>(
|
|
|
20
20
|
<span
|
|
21
21
|
role='status'
|
|
22
22
|
{...props}
|
|
23
|
-
className={tx('status.root',
|
|
23
|
+
className={tx('status.root', { indeterminate, variant }, classNames)}
|
|
24
24
|
ref={forwardedRef}
|
|
25
25
|
>
|
|
26
26
|
<span
|
|
27
27
|
role='none'
|
|
28
|
-
className={tx('status.bar',
|
|
28
|
+
className={tx('status.bar', { indeterminate, variant }, classNames)}
|
|
29
29
|
{...(!indeterminate && { style: { width: `${Math.round(progress * 100)}%` } })}
|
|
30
30
|
/>
|
|
31
31
|
{children}
|
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
//
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
|
+
|
|
5
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
4
6
|
import React from 'react';
|
|
5
7
|
|
|
6
|
-
import { hues } from '@dxos/
|
|
7
|
-
import '@dxos-
|
|
8
|
-
import { type ChromaticPalette, type MessageValence } from '@dxos/react-ui-types';
|
|
8
|
+
import { hues } from '@dxos/ui-theme';
|
|
9
|
+
import { type ChromaticPalette, type MessageValence } from '@dxos/ui-types';
|
|
9
10
|
|
|
10
|
-
import { Tag } from './Tag';
|
|
11
11
|
import { withTheme } from '../../testing';
|
|
12
12
|
|
|
13
|
+
import { Tag } from './Tag';
|
|
14
|
+
|
|
13
15
|
const palettes = ['neutral', 'success', 'info', 'warning', 'error', ...hues] as (ChromaticPalette | MessageValence)[];
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
title: 'ui/react-ui-core/Tag',
|
|
17
|
+
const meta = {
|
|
18
|
+
title: 'ui/react-ui-core/components/Tag',
|
|
17
19
|
component: Tag,
|
|
18
|
-
decorators: [withTheme],
|
|
19
|
-
parameters: { chromatic: { disableSnapshot: false } },
|
|
20
|
-
} as const;
|
|
21
|
-
|
|
22
|
-
export const Default = {
|
|
23
20
|
render: () => (
|
|
24
21
|
<div role='grid' className='grid grid-cols-5 gap-2 max-is-screen-md'>
|
|
25
22
|
{palettes.map((palette) => (
|
|
@@ -29,4 +26,16 @@ export const Default = {
|
|
|
29
26
|
))}
|
|
30
27
|
</div>
|
|
31
28
|
),
|
|
32
|
-
|
|
29
|
+
decorators: [withTheme()],
|
|
30
|
+
parameters: {
|
|
31
|
+
chromatic: {
|
|
32
|
+
disableSnapshot: false,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
} satisfies Meta<typeof Tag>;
|
|
36
|
+
|
|
37
|
+
export default meta;
|
|
38
|
+
|
|
39
|
+
type Story = StoryObj<typeof meta>;
|
|
40
|
+
|
|
41
|
+
export const Default: Story = {};
|
|
@@ -6,7 +6,7 @@ import { Primitive } from '@radix-ui/react-primitive';
|
|
|
6
6
|
import { Slot } from '@radix-ui/react-slot';
|
|
7
7
|
import React, { type ComponentPropsWithRef, forwardRef } from 'react';
|
|
8
8
|
|
|
9
|
-
import { type ChromaticPalette, type MessageValence, type NeutralPalette } from '@dxos/
|
|
9
|
+
import { type ChromaticPalette, type MessageValence, type NeutralPalette } from '@dxos/ui-types';
|
|
10
10
|
|
|
11
11
|
import { useThemeContext } from '../../hooks';
|
|
12
12
|
import { type ThemedClassName } from '../../util';
|
|
@@ -21,12 +21,7 @@ export const Tag = forwardRef<HTMLSpanElement, TagProps>(
|
|
|
21
21
|
const { tx } = useThemeContext();
|
|
22
22
|
const Root = asChild ? Slot : Primitive.span;
|
|
23
23
|
return (
|
|
24
|
-
<Root
|
|
25
|
-
{...props}
|
|
26
|
-
className={tx('tag.root', 'dx-tag', { palette }, classNames)}
|
|
27
|
-
data-hue={palette}
|
|
28
|
-
ref={forwardedRef}
|
|
29
|
-
/>
|
|
24
|
+
<Root {...props} className={tx('tag.root', { palette }, classNames)} data-hue={palette} ref={forwardedRef} />
|
|
30
25
|
);
|
|
31
26
|
},
|
|
32
27
|
);
|
|
@@ -3,17 +3,16 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { createKeyborg } from 'keyborg';
|
|
6
|
-
import React, {
|
|
6
|
+
import React, { type PropsWithChildren, createContext, useEffect, useMemo } from 'react';
|
|
7
7
|
|
|
8
|
-
import { type Density, type Elevation, type ThemeFunction } from '@dxos/
|
|
8
|
+
import { type Density, type Elevation, type ThemeFunction, type ThemeMode } from '@dxos/ui-types';
|
|
9
9
|
|
|
10
|
-
import { TranslationsProvider, type TranslationsProviderProps } from './TranslationsProvider';
|
|
11
10
|
import { type SafeAreaPadding, useSafeArea } from '../../hooks';
|
|
12
11
|
import { hasIosKeyboard } from '../../util';
|
|
13
12
|
import { DensityProvider } from '../DensityProvider';
|
|
14
13
|
import { ElevationProvider } from '../ElevationProvider';
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
import { TranslationsProvider, type TranslationsProviderProps } from './TranslationsProvider';
|
|
17
16
|
|
|
18
17
|
export type ThemeContextValue = {
|
|
19
18
|
tx: ThemeFunction<any>;
|
|
@@ -21,6 +20,7 @@ export type ThemeContextValue = {
|
|
|
21
20
|
hasIosKeyboard: boolean;
|
|
22
21
|
safeAreaPadding?: SafeAreaPadding;
|
|
23
22
|
noCache?: boolean;
|
|
23
|
+
platform?: 'mobile' | 'desktop';
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
/**
|
|
@@ -40,7 +40,7 @@ export const ThemeProvider = ({
|
|
|
40
40
|
fallback = null,
|
|
41
41
|
resourceExtensions,
|
|
42
42
|
appNs,
|
|
43
|
-
tx = (_path,
|
|
43
|
+
tx = (_path, _styleProps, ..._options) => undefined,
|
|
44
44
|
themeMode = 'dark',
|
|
45
45
|
rootDensity = 'fine',
|
|
46
46
|
...rest
|
|
@@ -54,7 +54,6 @@ export const ThemeProvider = ({
|
|
|
54
54
|
}, []);
|
|
55
55
|
|
|
56
56
|
const safeAreaPadding = useSafeArea();
|
|
57
|
-
|
|
58
57
|
const contextValue = useMemo(
|
|
59
58
|
() => ({ tx, themeMode, hasIosKeyboard: hasIosKeyboard(), safeAreaPadding, ...rest }),
|
|
60
59
|
[tx, themeMode, safeAreaPadding, rest],
|
|
@@ -2,37 +2,22 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { enUS as dtLocaleEnUs
|
|
6
|
-
import i18Next, { type
|
|
7
|
-
import React, { type ReactNode,
|
|
5
|
+
import { type Locale, enUS as dtLocaleEnUs } from 'date-fns/locale';
|
|
6
|
+
import i18Next, { type Resource } from 'i18next';
|
|
7
|
+
import React, { type ReactNode, Suspense, createContext, useContext, useEffect, useState } from 'react';
|
|
8
8
|
import { initReactI18next, useTranslation as useI18NextTranslation } from 'react-i18next';
|
|
9
9
|
|
|
10
10
|
const initialLng = 'en-US';
|
|
11
11
|
const initialNs = 'dxos-common';
|
|
12
12
|
const initialDtLocale = dtLocaleEnUs;
|
|
13
13
|
|
|
14
|
-
// TODO(thure): `Parameters<TFunction>` causes typechecking issues because `TFunction` has so many signatures.
|
|
15
|
-
export type Label = string | [string, { ns: string; count?: number; defaultValue?: string }];
|
|
16
|
-
|
|
17
|
-
export const isLabel = (o: any): o is Label =>
|
|
18
|
-
typeof o === 'string' ||
|
|
19
|
-
(Array.isArray(o) &&
|
|
20
|
-
o.length === 2 &&
|
|
21
|
-
typeof o[0] === 'string' &&
|
|
22
|
-
!!o[1] &&
|
|
23
|
-
typeof o[1] === 'object' &&
|
|
24
|
-
'ns' in o[1] &&
|
|
25
|
-
typeof o[1].ns === 'string');
|
|
26
|
-
|
|
27
|
-
export const toLocalizedString = (label: Label, t: TFunction) => (Array.isArray(label) ? t(...label) : label);
|
|
28
|
-
|
|
29
14
|
export const resources = {
|
|
30
15
|
[initialLng]: {
|
|
31
16
|
[initialNs]: {
|
|
32
17
|
'loading translations': 'Loading translations…',
|
|
33
18
|
},
|
|
34
19
|
},
|
|
35
|
-
} as const;
|
|
20
|
+
} as const satisfies Resource;
|
|
36
21
|
|
|
37
22
|
void i18Next.use(initReactI18next).init({
|
|
38
23
|
resources,
|
|
@@ -2,5 +2,7 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
export { type Label, isLabel, toLocalizedString } from '@dxos/ui-types';
|
|
6
|
+
|
|
5
7
|
export * from './ThemeProvider';
|
|
6
|
-
export {
|
|
8
|
+
export { useTranslation } from './TranslationsProvider';
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import '@
|
|
6
|
-
|
|
5
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
7
6
|
import React, { type ReactNode, useState } from 'react';
|
|
8
7
|
|
|
9
|
-
import { Toast } from './Toast';
|
|
10
8
|
import { withTheme } from '../../testing';
|
|
11
|
-
import { Button } from '../
|
|
9
|
+
import { Button } from '../Button';
|
|
10
|
+
|
|
11
|
+
import { Toast } from './Toast';
|
|
12
12
|
|
|
13
13
|
type ActionTriggerProps = { altText: string; trigger: ReactNode };
|
|
14
14
|
|
|
@@ -44,15 +44,18 @@ const DefaultStory = ({ title, description, actionTriggers, openTrigger, closeTr
|
|
|
44
44
|
);
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
title: 'ui/react-ui-core/Toast',
|
|
49
|
-
component: Toast,
|
|
47
|
+
const meta = {
|
|
48
|
+
title: 'ui/react-ui-core/components/Toast',
|
|
49
|
+
component: Toast as any,
|
|
50
50
|
render: DefaultStory,
|
|
51
|
-
decorators: [withTheme],
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
decorators: [withTheme()],
|
|
52
|
+
} satisfies Meta<typeof DefaultStory>;
|
|
53
|
+
|
|
54
|
+
export default meta;
|
|
55
|
+
|
|
56
|
+
type Story = StoryObj<typeof meta>;
|
|
54
57
|
|
|
55
|
-
export const Default = {
|
|
58
|
+
export const Default: Story = {
|
|
56
59
|
args: {
|
|
57
60
|
openTrigger: 'Open toast',
|
|
58
61
|
title: 'This is a toast',
|
|
@@ -5,22 +5,22 @@
|
|
|
5
5
|
import { Primitive } from '@radix-ui/react-primitive';
|
|
6
6
|
import { Slot } from '@radix-ui/react-slot';
|
|
7
7
|
import {
|
|
8
|
+
ToastAction as ToastActionPrimitive,
|
|
9
|
+
type ToastActionProps as ToastActionPrimitiveProps,
|
|
10
|
+
ToastClose as ToastClosePrimitive,
|
|
11
|
+
type ToastCloseProps as ToastClosePrimitiveProps,
|
|
12
|
+
ToastDescription as ToastDescriptionPrimitive,
|
|
13
|
+
type ToastDescriptionProps as ToastDescriptionPrimitiveProps,
|
|
8
14
|
ToastProvider as ToastProviderPrimitive,
|
|
9
15
|
type ToastProviderProps as ToastProviderPrimitiveProps,
|
|
10
|
-
ToastViewport as ToastViewportPrimitive,
|
|
11
|
-
type ToastViewportProps as ToastViewportPrimitiveProps,
|
|
12
16
|
Root as ToastRootPrimitive,
|
|
13
17
|
type ToastProps as ToastRootPrimitiveProps,
|
|
14
18
|
ToastTitle as ToastTitlePrimitive,
|
|
15
19
|
type ToastTitleProps as ToastTitlePrimitiveProps,
|
|
16
|
-
|
|
17
|
-
type
|
|
18
|
-
ToastAction as ToastActionPrimitive,
|
|
19
|
-
type ToastActionProps as ToastActionPrimitiveProps,
|
|
20
|
-
ToastClose as ToastClosePrimitive,
|
|
21
|
-
type ToastCloseProps as ToastClosePrimitiveProps,
|
|
20
|
+
ToastViewport as ToastViewportPrimitive,
|
|
21
|
+
type ToastViewportProps as ToastViewportPrimitiveProps,
|
|
22
22
|
} from '@radix-ui/react-toast';
|
|
23
|
-
import React, { type ComponentPropsWithRef,
|
|
23
|
+
import React, { type ComponentPropsWithRef, type FunctionComponent, forwardRef } from 'react';
|
|
24
24
|
|
|
25
25
|
import { useThemeContext } from '../../hooks';
|
|
26
26
|
import { type ThemedClassName } from '../../util';
|
|
@@ -34,9 +34,7 @@ type ToastViewportProps = ThemedClassName<ToastViewportPrimitiveProps>;
|
|
|
34
34
|
|
|
35
35
|
const ToastViewport = forwardRef<HTMLOListElement, ToastViewportProps>(({ classNames, ...props }, forwardedRef) => {
|
|
36
36
|
const { tx } = useThemeContext();
|
|
37
|
-
return (
|
|
38
|
-
<ToastViewportPrimitive className={tx('toast.viewport', 'toast-viewport', {}, classNames)} ref={forwardedRef} />
|
|
39
|
-
);
|
|
37
|
+
return <ToastViewportPrimitive className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
|
|
40
38
|
});
|
|
41
39
|
|
|
42
40
|
type ToastRootProps = ThemedClassName<ToastRootPrimitiveProps>;
|
|
@@ -44,7 +42,7 @@ type ToastRootProps = ThemedClassName<ToastRootPrimitiveProps>;
|
|
|
44
42
|
const ToastRoot = forwardRef<HTMLLIElement, ToastRootProps>(({ classNames, children, ...props }, forwardedRef) => {
|
|
45
43
|
const { tx } = useThemeContext();
|
|
46
44
|
return (
|
|
47
|
-
<ToastRootPrimitive {...props} className={tx('toast.root',
|
|
45
|
+
<ToastRootPrimitive {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
|
|
48
46
|
<ElevationProvider elevation='toast'>{children}</ElevationProvider>
|
|
49
47
|
</ToastRootPrimitive>
|
|
50
48
|
);
|
|
@@ -55,7 +53,7 @@ type ToastBodyProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div
|
|
|
55
53
|
const ToastBody = forwardRef<HTMLDivElement, ToastBodyProps>(({ asChild, classNames, ...props }, forwardedRef) => {
|
|
56
54
|
const { tx } = useThemeContext();
|
|
57
55
|
const Root = asChild ? Slot : Primitive.div;
|
|
58
|
-
return <Root {...props} className={tx('toast.body',
|
|
56
|
+
return <Root {...props} className={tx('toast.body', {}, classNames)} ref={forwardedRef} />;
|
|
59
57
|
});
|
|
60
58
|
|
|
61
59
|
type ToastTitleProps = ThemedClassName<ToastTitlePrimitiveProps>;
|
|
@@ -64,7 +62,7 @@ const ToastTitle = forwardRef<HTMLHeadingElement, ToastTitleProps>(
|
|
|
64
62
|
({ asChild, classNames, ...props }, forwardedRef) => {
|
|
65
63
|
const { tx } = useThemeContext();
|
|
66
64
|
const Root = asChild ? Slot : ToastTitlePrimitive;
|
|
67
|
-
return <Root {...props} className={tx('toast.title',
|
|
65
|
+
return <Root {...props} className={tx('toast.title', {}, classNames)} ref={forwardedRef} />;
|
|
68
66
|
},
|
|
69
67
|
);
|
|
70
68
|
|
|
@@ -74,9 +72,7 @@ const ToastDescription = forwardRef<HTMLParagraphElement, ToastDescriptionProps>
|
|
|
74
72
|
({ asChild, classNames, ...props }, forwardedRef) => {
|
|
75
73
|
const { tx } = useThemeContext();
|
|
76
74
|
const Root = asChild ? Slot : ToastDescriptionPrimitive;
|
|
77
|
-
return (
|
|
78
|
-
<Root {...props} className={tx('toast.description', 'toast__description', {}, classNames)} ref={forwardedRef} />
|
|
79
|
-
);
|
|
75
|
+
return <Root {...props} className={tx('toast.description', {}, classNames)} ref={forwardedRef} />;
|
|
80
76
|
},
|
|
81
77
|
);
|
|
82
78
|
|
|
@@ -86,7 +82,7 @@ const ToastActions = forwardRef<HTMLDivElement, ToastActionsProps>(
|
|
|
86
82
|
({ asChild, classNames, ...props }, forwardedRef) => {
|
|
87
83
|
const { tx } = useThemeContext();
|
|
88
84
|
const Root = asChild ? Slot : Primitive.div;
|
|
89
|
-
return <Root {...props} className={tx('toast.actions',
|
|
85
|
+
return <Root {...props} className={tx('toast.actions', {}, classNames)} ref={forwardedRef} />;
|
|
90
86
|
},
|
|
91
87
|
);
|
|
92
88
|
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import '@
|
|
6
|
-
|
|
7
|
-
import { ArrowClockwise, Bug, FileJs, FileTs, TextB, TextItalic, TextUnderline } from '@phosphor-icons/react';
|
|
5
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
8
6
|
import React from 'react';
|
|
9
7
|
|
|
10
|
-
import { Toolbar } from './Toolbar';
|
|
11
8
|
import { withTheme } from '../../testing';
|
|
12
|
-
import { Toggle } from '../
|
|
9
|
+
import { Toggle } from '../Button';
|
|
10
|
+
import { Icon } from '../Icon';
|
|
13
11
|
import { Select } from '../Select';
|
|
14
12
|
|
|
13
|
+
import { Toolbar } from './Toolbar';
|
|
14
|
+
|
|
15
15
|
type StorybookToolbarProps = {};
|
|
16
16
|
|
|
17
17
|
const DefaultStory = (props: StorybookToolbarProps) => {
|
|
@@ -29,6 +29,7 @@ const DefaultStory = (props: StorybookToolbarProps) => {
|
|
|
29
29
|
<Select.Option value={'b'}>B</Select.Option>
|
|
30
30
|
<Select.Option value={'c'}>C</Select.Option>
|
|
31
31
|
</Select.Viewport>
|
|
32
|
+
<Select.Arrow />
|
|
32
33
|
</Select.Content>
|
|
33
34
|
</Select.Portal>
|
|
34
35
|
</Select.Root>
|
|
@@ -37,46 +38,47 @@ const DefaultStory = (props: StorybookToolbarProps) => {
|
|
|
37
38
|
{/* TODO(burdon): Icon sizes should adapt to density. */}
|
|
38
39
|
<Toolbar.ToggleGroup type='multiple'>
|
|
39
40
|
<Toolbar.ToggleGroupItem value='a'>
|
|
40
|
-
<
|
|
41
|
+
<Icon icon='ph--text-b--regular' />
|
|
41
42
|
</Toolbar.ToggleGroupItem>
|
|
42
43
|
<Toolbar.ToggleGroupItem value='b'>
|
|
43
|
-
<
|
|
44
|
+
<Icon icon='ph--text-italic--regular' />
|
|
44
45
|
</Toolbar.ToggleGroupItem>
|
|
45
46
|
<Toolbar.ToggleGroupItem value='c'>
|
|
46
|
-
<
|
|
47
|
+
<Icon icon='ph--text-underline--regular' />
|
|
47
48
|
</Toolbar.ToggleGroupItem>
|
|
48
49
|
</Toolbar.ToggleGroup>
|
|
49
50
|
{/* TODO(burdon): Highlight isn't shown. */}
|
|
50
51
|
<Toolbar.ToggleGroup type='single' defaultValue='a'>
|
|
51
52
|
<Toolbar.ToggleGroupItem value='a'>
|
|
52
|
-
<
|
|
53
|
+
<Icon icon='ph--file-ts--regular' />
|
|
53
54
|
</Toolbar.ToggleGroupItem>
|
|
54
55
|
<Toolbar.ToggleGroupItem value='b'>
|
|
55
|
-
<
|
|
56
|
+
<Icon icon='ph--file-js--regular' />
|
|
56
57
|
</Toolbar.ToggleGroupItem>
|
|
57
58
|
</Toolbar.ToggleGroup>
|
|
58
59
|
<Toolbar.Button asChild>
|
|
59
60
|
<Toggle>
|
|
60
|
-
<
|
|
61
|
+
<Icon icon='ph--bug--regular' />
|
|
61
62
|
</Toggle>
|
|
62
63
|
</Toolbar.Button>
|
|
63
64
|
<Toolbar.Separator />
|
|
64
65
|
<Toolbar.Button>Test</Toolbar.Button>
|
|
65
|
-
<Toolbar.
|
|
66
|
-
<ArrowClockwise />
|
|
67
|
-
</Toolbar.Button>
|
|
66
|
+
<Toolbar.IconButton icon='ph--arrow-clockwise--regular' label='Refresh' iconOnly />
|
|
68
67
|
</Toolbar.Root>
|
|
69
68
|
);
|
|
70
69
|
};
|
|
71
70
|
|
|
72
|
-
|
|
73
|
-
title: 'ui/react-ui-core/Toolbar',
|
|
74
|
-
component: Toolbar,
|
|
71
|
+
const meta = {
|
|
72
|
+
title: 'ui/react-ui-core/components/Toolbar',
|
|
73
|
+
component: Toolbar as any,
|
|
75
74
|
render: DefaultStory,
|
|
76
|
-
decorators: [withTheme],
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
decorators: [withTheme()],
|
|
76
|
+
} satisfies Meta<typeof DefaultStory>;
|
|
77
|
+
|
|
78
|
+
export default meta;
|
|
79
|
+
|
|
80
|
+
type Story = StoryObj<typeof meta>;
|
|
79
81
|
|
|
80
|
-
export const Default = {
|
|
82
|
+
export const Default: Story = {
|
|
81
83
|
args: {},
|
|
82
84
|
};
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
import type { ToggleGroupItemProps as ToggleGroupItemPrimitiveProps } from '@radix-ui/react-toggle-group';
|
|
6
6
|
import * as ToolbarPrimitive from '@radix-ui/react-toolbar';
|
|
7
|
-
import React, { forwardRef } from 'react';
|
|
7
|
+
import React, { Fragment, forwardRef } from 'react';
|
|
8
|
+
|
|
9
|
+
import { type ToolbarStyleProps } from '@dxos/ui-theme';
|
|
8
10
|
|
|
9
11
|
import { useThemeContext } from '../../hooks';
|
|
10
12
|
import { type ThemedClassName } from '../../util';
|
|
@@ -13,27 +15,45 @@ import {
|
|
|
13
15
|
ButtonGroup,
|
|
14
16
|
type ButtonGroupProps,
|
|
15
17
|
type ButtonProps,
|
|
18
|
+
IconButton,
|
|
19
|
+
type IconButtonProps,
|
|
16
20
|
Toggle,
|
|
17
21
|
type ToggleGroupItemProps,
|
|
18
22
|
type ToggleProps,
|
|
19
|
-
|
|
20
|
-
type IconButtonProps,
|
|
21
|
-
} from '../Buttons';
|
|
23
|
+
} from '../Button';
|
|
22
24
|
import { Link, type LinkProps } from '../Link';
|
|
23
25
|
import { Separator, type SeparatorProps } from '../Separator';
|
|
24
26
|
|
|
25
|
-
type ToolbarRootProps = ThemedClassName<
|
|
27
|
+
type ToolbarRootProps = ThemedClassName<
|
|
28
|
+
ToolbarPrimitive.ToolbarProps &
|
|
29
|
+
ToolbarStyleProps & {
|
|
30
|
+
textBlockWidth?: boolean;
|
|
31
|
+
}
|
|
32
|
+
>;
|
|
26
33
|
|
|
34
|
+
// TODO(burdon): Implement asChild property.
|
|
27
35
|
const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
|
|
28
|
-
(
|
|
36
|
+
(
|
|
37
|
+
{ classNames, children, density, disabled, layoutManaged, textBlockWidth: textBlockWidthProp, ...props },
|
|
38
|
+
forwardedRef,
|
|
39
|
+
) => {
|
|
29
40
|
const { tx } = useThemeContext();
|
|
41
|
+
const InnerRoot = textBlockWidthProp ? 'div' : Fragment;
|
|
42
|
+
const innerRootProps = textBlockWidthProp
|
|
43
|
+
? {
|
|
44
|
+
role: 'none',
|
|
45
|
+
className: tx('toolbar.inner', { layoutManaged }, classNames),
|
|
46
|
+
}
|
|
47
|
+
: {};
|
|
48
|
+
|
|
30
49
|
return (
|
|
31
50
|
<ToolbarPrimitive.Root
|
|
32
51
|
{...props}
|
|
33
|
-
|
|
52
|
+
data-arrow-keys={props.orientation === 'vertical' ? 'up down' : 'left right'}
|
|
53
|
+
className={tx('toolbar.root', { density, disabled, layoutManaged }, classNames)}
|
|
34
54
|
ref={forwardedRef}
|
|
35
55
|
>
|
|
36
|
-
{children}
|
|
56
|
+
<InnerRoot {...innerRootProps}>{children}</InnerRoot>
|
|
37
57
|
</ToolbarPrimitive.Root>
|
|
38
58
|
);
|
|
39
59
|
},
|
|
@@ -54,7 +74,7 @@ type ToolbarIconButtonProps = IconButtonProps;
|
|
|
54
74
|
const ToolbarIconButton = forwardRef<HTMLButtonElement, ToolbarIconButtonProps>((props, forwardedRef) => {
|
|
55
75
|
return (
|
|
56
76
|
<ToolbarPrimitive.Button asChild>
|
|
57
|
-
<IconButton {...props} ref={forwardedRef} />
|
|
77
|
+
<IconButton {...props} noTooltip ref={forwardedRef} />
|
|
58
78
|
</ToolbarPrimitive.Button>
|
|
59
79
|
);
|
|
60
80
|
});
|
|
@@ -113,7 +133,18 @@ const ToolbarToggleGroupIconItem = forwardRef<HTMLButtonElement, ToolbarToggleGr
|
|
|
113
133
|
({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
|
|
114
134
|
return (
|
|
115
135
|
<ToolbarPrimitive.ToolbarToggleItem {...props} asChild>
|
|
116
|
-
<IconButton
|
|
136
|
+
<IconButton
|
|
137
|
+
{...{
|
|
138
|
+
variant,
|
|
139
|
+
density,
|
|
140
|
+
elevation,
|
|
141
|
+
classNames,
|
|
142
|
+
icon,
|
|
143
|
+
label,
|
|
144
|
+
iconOnly,
|
|
145
|
+
}}
|
|
146
|
+
ref={forwardedRef}
|
|
147
|
+
/>
|
|
117
148
|
</ToolbarPrimitive.ToolbarToggleItem>
|
|
118
149
|
);
|
|
119
150
|
},
|