@dxos/react-ui 0.8.4-main.d05673bc65 → 0.8.4-main.e00bdcdb52
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-2FKSMWNY.mjs → chunk-BDBC6H6V.mjs} +79 -5
- package/dist/lib/browser/chunk-BDBC6H6V.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +921 -736
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +30 -18
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/translations.mjs +18 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ZNBLTSHI.mjs → chunk-3JSJK2ZY.mjs} +79 -5
- package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +921 -736
- 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 +30 -18
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/translations.mjs +20 -0
- package/dist/lib/node-esm/translations.mjs.map +7 -0
- 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.map +1 -1
- package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/Button.d.ts +2 -2
- package/dist/types/src/components/Button/Button.d.ts.map +1 -1
- package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
- package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.d.ts +1 -0
- package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.stories.d.ts +3 -0
- package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/Toggle.d.ts +2 -2
- package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
- package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
- package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
- package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
- package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
- package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.d.ts +70 -50
- package/dist/types/src/components/Card/Card.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.stories.d.ts +2 -2
- package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/index.d.ts +10 -1
- package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
- package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/AlertDialog.d.ts +42 -31
- package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.d.ts +47 -30
- package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts +3 -2
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +14 -3
- package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
- package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
- package/dist/types/src/components/Focus/Focus.d.ts +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 +3 -0
- package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
- package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
- package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
- package/dist/types/src/components/Image/Image.d.ts +2 -1
- package/dist/types/src/components/Image/Image.d.ts.map +1 -1
- package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
- package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.d.ts +14 -17
- package/dist/types/src/components/Input/Input.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.stories.d.ts +3 -3
- package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
- package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
- package/dist/types/src/components/List/List.d.ts +5 -3
- package/dist/types/src/components/List/List.d.ts.map +1 -1
- package/dist/types/src/components/List/List.stories.d.ts +3 -1
- package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
- package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
- package/dist/types/src/components/List/Tree.d.ts +2 -2
- package/dist/types/src/components/List/Tree.d.ts.map +1 -1
- package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
- package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
- package/dist/types/src/components/List/Treegrid.d.ts +5 -9
- package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
- package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.d.ts +7 -3
- package/dist/types/src/components/Main/Main.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
- package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
- package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
- package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
- package/dist/types/src/components/Menu/DropdownMenu.d.ts +58 -49
- package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.stories.d.ts +2 -2
- package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.d.ts +38 -22
- package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +12 -9
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +18 -5
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +42 -13
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +5 -6
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
- package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
- package/dist/types/src/components/Separator/Separator.d.ts +3 -3
- package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
- package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
- package/dist/types/src/components/Splitter/Splitter.d.ts +19 -17
- package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
- package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
- package/dist/types/src/components/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.map +1 -1
- package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +54 -55
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts +1 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.d.ts +16 -16
- package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +11 -19
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.d.ts +10 -10
- package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/exemplars/generics.stories.d.ts +6 -5
- package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
- package/dist/types/src/exemplars/slot.stories.d.ts +1 -0
- package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
- package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
- package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- 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.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.map +1 -1
- package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
- package/dist/types/src/playground/Custom.stories.d.ts +1 -1
- package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
- package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Column/Column.d.ts +21 -14
- package/dist/types/src/primitives/Column/Column.d.ts.map +1 -1
- package/dist/types/src/primitives/Column/Column.stories.d.ts +19 -0
- package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Container/Container.d.ts +4 -5
- package/dist/types/src/primitives/Container/Container.d.ts.map +1 -1
- package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Flex/Flex.d.ts +5 -7
- package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
- package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Grid/Grid.d.ts +3 -8
- package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
- package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
- package/dist/types/src/primitives/Panel/Panel.d.ts +24 -15
- package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -1
- package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -1
- package/dist/types/src/testing/Loading.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withTheme.d.ts +1 -1
- package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +3 -3
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/util/usePx.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +28 -25
- package/src/components/Avatars/Avatar.stories.tsx +2 -3
- package/src/components/Avatars/Avatar.tsx +1 -2
- package/src/components/Avatars/AvatarGroup.stories.tsx +0 -1
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -2
- package/src/components/Button/Button.stories.tsx +0 -1
- package/src/components/Button/Button.tsx +5 -13
- package/src/components/Button/IconButton.stories.tsx +6 -4
- package/src/components/Button/IconButton.tsx +3 -4
- package/src/components/Button/Toggle.stories.tsx +0 -1
- package/src/components/Button/Toggle.tsx +4 -4
- package/src/components/Button/ToggleGroup.stories.tsx +0 -1
- package/src/components/Button/ToggleGroup.tsx +12 -16
- package/src/components/Card/Card.stories.tsx +12 -12
- package/src/components/Card/Card.tsx +266 -108
- package/src/components/Clipboard/CopyButton.tsx +3 -4
- package/src/components/Dialog/AlertDialog.stories.tsx +5 -6
- package/src/components/Dialog/AlertDialog.tsx +67 -126
- package/src/components/Dialog/Dialog.stories.tsx +64 -9
- package/src/components/Dialog/Dialog.tsx +84 -88
- package/src/components/ErrorFallback/ErrorFallback.stories.tsx +3 -8
- package/src/components/ErrorFallback/ErrorStack.tsx +36 -2
- 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 +43 -13
- package/src/components/Icon/Icon.tsx +5 -1
- package/src/components/Image/Image.stories.tsx +3 -3
- package/src/components/Image/Image.tsx +31 -8
- package/src/components/Input/Input.stories.tsx +3 -4
- package/src/components/Input/Input.tsx +7 -7
- package/src/components/Link/Link.stories.tsx +0 -1
- package/src/components/List/List.stories.tsx +0 -1
- package/src/components/List/List.tsx +6 -5
- package/src/components/List/Tree.stories.tsx +1 -2
- package/src/components/List/Tree.tsx +0 -1
- package/src/components/List/Treegrid.stories.tsx +26 -27
- package/src/components/List/Treegrid.tsx +14 -14
- package/src/components/Main/Main.stories.tsx +0 -1
- package/src/components/Main/Main.tsx +1 -2
- package/src/components/Menu/ContextMenu.stories.tsx +0 -1
- package/src/components/Menu/DropdownMenu.stories.tsx +0 -1
- package/src/components/Menu/DropdownMenu.tsx +48 -42
- package/src/components/Message/Message.stories.tsx +6 -7
- package/src/components/Message/Message.tsx +1 -5
- package/src/components/Popover/Popover.stories.tsx +4 -5
- package/src/components/Popover/Popover.tsx +42 -42
- package/src/components/ScrollArea/ScrollArea.stories.tsx +93 -30
- package/src/components/ScrollArea/ScrollArea.tsx +39 -23
- package/src/components/ScrollContainer/ScrollContainer.stories.tsx +20 -18
- package/src/components/ScrollContainer/ScrollContainer.tsx +200 -91
- package/src/components/Select/Select.stories.tsx +5 -6
- package/src/components/Separator/Separator.tsx +4 -7
- package/src/components/Skeleton/Skeleton.stories.tsx +0 -1
- package/src/components/Splitter/Splitter.stories.tsx +29 -29
- package/src/components/Splitter/Splitter.tsx +35 -34
- package/src/components/Status/Status.stories.tsx +0 -1
- package/src/components/Status/Status.tsx +8 -5
- package/src/components/Tag/Tag.stories.tsx +0 -1
- package/src/components/ThemeProvider/ThemeProvider.stories.tsx +0 -1
- package/src/components/ThemeProvider/ThemeProvider.tsx +5 -4
- package/src/components/ThemeProvider/index.ts +1 -1
- package/src/components/Toast/Toast.stories.tsx +0 -1
- package/src/components/Toast/Toast.tsx +16 -31
- package/src/components/Toolbar/Toolbar.stories.tsx +0 -1
- package/src/components/Toolbar/Toolbar.tsx +21 -35
- package/src/components/Tooltip/Tooltip.stories.tsx +6 -7
- package/src/components/Tooltip/Tooltip.tsx +15 -16
- package/src/components/index.ts +1 -0
- package/src/exemplars/generics.stories.tsx +7 -15
- package/src/exemplars/slot.stories.tsx +67 -57
- package/src/exemplars/tabster.stories.tsx +1 -1
- package/src/exemplars/virtualizer.stories.tsx +4 -4
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useDensityContext.ts +2 -2
- package/src/playground/Custom.stories.tsx +6 -9
- package/src/primitives/Column/AUDIT.md +148 -0
- package/src/primitives/Column/Column.stories.tsx +122 -19
- package/src/primitives/Column/Column.tsx +73 -42
- package/src/primitives/Container/Container.stories.tsx +0 -1
- package/src/primitives/Container/Container.tsx +5 -8
- package/src/primitives/Flex/Flex.stories.tsx +0 -1
- package/src/primitives/Flex/Flex.tsx +10 -12
- package/src/primitives/Grid/Grid.stories.tsx +0 -1
- package/src/primitives/Grid/Grid.tsx +4 -9
- package/src/primitives/Panel/Panel.stories.tsx +9 -8
- package/src/primitives/Panel/Panel.tsx +64 -63
- package/src/testing/Loading.tsx +25 -4
- package/src/testing/decorators/withLayout.tsx +6 -6
- package/src/testing/decorators/withTheme.tsx +10 -7
- package/src/translations.ts +3 -3
- package/src/util/usePx.ts +1 -0
- package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +0 -7
|
@@ -5,22 +5,21 @@
|
|
|
5
5
|
import { createContextScope } from '@radix-ui/react-context';
|
|
6
6
|
import { Primitive } from '@radix-ui/react-primitive';
|
|
7
7
|
import { Slot } from '@radix-ui/react-slot';
|
|
8
|
-
import React
|
|
8
|
+
import React from 'react';
|
|
9
9
|
|
|
10
|
-
import { composableProps } from '@dxos/ui-theme';
|
|
11
|
-
import { type SlottableProps } from '@dxos/ui-types';
|
|
10
|
+
import { composableProps, slottable } from '@dxos/ui-theme';
|
|
12
11
|
|
|
13
12
|
import { useThemeContext } from '../../hooks';
|
|
13
|
+
import { ThemedClassName } from '../../util';
|
|
14
14
|
|
|
15
15
|
type ScopedProps<P> = P & { __scopeSplitter?: any };
|
|
16
16
|
|
|
17
|
-
// TODO(burdon): Enable resize.
|
|
18
17
|
// TODO(burdon): Generalize horizontal/vertical and change to start/end.
|
|
19
|
-
type Mode = '
|
|
18
|
+
type Mode = 'top' | 'bottom' | 'split';
|
|
20
19
|
|
|
21
20
|
type SplitterContextValue = {
|
|
22
21
|
mode: Mode;
|
|
23
|
-
ratio
|
|
22
|
+
ratio?: number;
|
|
24
23
|
transition: number;
|
|
25
24
|
};
|
|
26
25
|
|
|
@@ -36,16 +35,20 @@ const [SplitterProvider, useSplitterContext] = createSplitterContext<SplitterCon
|
|
|
36
35
|
|
|
37
36
|
const ROOT_NAME = 'Splitter.Root';
|
|
38
37
|
|
|
39
|
-
type
|
|
38
|
+
type RootOwnProps = Partial<SplitterContextValue>;
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
type RootProps = RootOwnProps;
|
|
41
|
+
|
|
42
|
+
const Root = slottable<HTMLDivElement, RootOwnProps>(
|
|
43
|
+
({ asChild, mode = 'top', ratio = 0.5, transition = 250, children, ...props }, forwardedRef) => {
|
|
45
44
|
const { tx } = useThemeContext();
|
|
45
|
+
const { __scopeSplitter, ...rest } = props as ScopedProps<typeof props>;
|
|
46
|
+
const { className, ...restProps } = composableProps(rest);
|
|
47
|
+
const Comp = asChild ? Slot : Primitive.div;
|
|
48
|
+
|
|
46
49
|
return (
|
|
47
50
|
<SplitterProvider scope={__scopeSplitter} mode={mode} ratio={ratio} transition={transition}>
|
|
48
|
-
<Comp
|
|
51
|
+
<Comp {...restProps} ref={forwardedRef} className={tx('splitter.root', {}, className)}>
|
|
49
52
|
{children}
|
|
50
53
|
</Comp>
|
|
51
54
|
</SplitterProvider>
|
|
@@ -61,44 +64,42 @@ Root.displayName = ROOT_NAME;
|
|
|
61
64
|
|
|
62
65
|
const PANEL_NAME = 'Splitter.Panel';
|
|
63
66
|
|
|
64
|
-
type
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
position: 'upper' | 'lower';
|
|
68
|
-
}
|
|
69
|
-
>;
|
|
67
|
+
type PanelOwnProps = ThemedClassName<{
|
|
68
|
+
position: 'top' | 'bottom';
|
|
69
|
+
}>;
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const { mode, ratio, transition } = useSplitterContext(PANEL_NAME, __scopeSplitter);
|
|
71
|
+
type PanelProps = PanelOwnProps;
|
|
72
|
+
|
|
73
|
+
const Panel = slottable<HTMLDivElement, PanelOwnProps>(
|
|
74
|
+
({ classNames, asChild, children, position, style, ...props }, forwardedRef) => {
|
|
76
75
|
const { tx } = useThemeContext();
|
|
76
|
+
const { __scopeSplitter, ...rest } = props as ScopedProps<typeof props>;
|
|
77
|
+
const Comp = asChild ? Slot : Primitive.div;
|
|
78
|
+
const { mode, ratio = 0.5, transition } = useSplitterContext(PANEL_NAME, __scopeSplitter);
|
|
79
|
+
const { className, ...restProps } = composableProps(rest);
|
|
77
80
|
|
|
78
81
|
// Calculate position and height based on mode and ratio.
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
? mode === 'upper'
|
|
82
|
+
const isTopPanel = position === 'top';
|
|
83
|
+
const topOffset = isTopPanel ? '0%' : mode === 'top' ? '100%' : mode === 'bottom' ? '0%' : `${ratio * 100}%`;
|
|
84
|
+
const height = isTopPanel
|
|
85
|
+
? mode === 'top'
|
|
84
86
|
? '100%'
|
|
85
|
-
: mode === '
|
|
87
|
+
: mode === 'bottom'
|
|
86
88
|
? '0%'
|
|
87
89
|
: `${ratio * 100}%`
|
|
88
|
-
: mode === '
|
|
90
|
+
: mode === 'bottom'
|
|
89
91
|
? '100%'
|
|
90
|
-
: mode === '
|
|
92
|
+
: mode === 'top'
|
|
91
93
|
? '0%'
|
|
92
94
|
: `${(1 - ratio) * 100}%`;
|
|
93
95
|
|
|
94
96
|
return (
|
|
95
97
|
<Comp
|
|
96
|
-
|
|
97
|
-
{...rest}
|
|
98
|
+
{...restProps}
|
|
98
99
|
ref={forwardedRef}
|
|
99
100
|
className={tx('splitter.panel', {}, className)}
|
|
100
101
|
style={{
|
|
101
|
-
top,
|
|
102
|
+
top: topOffset,
|
|
102
103
|
height,
|
|
103
104
|
transition: `top ${transition}ms, height ${transition}ms ease-out`,
|
|
104
105
|
...style,
|
|
@@ -4,14 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { type ComponentPropsWithRef, forwardRef } from 'react';
|
|
6
6
|
|
|
7
|
+
import { type StatusStyleProps } from '@dxos/ui-theme';
|
|
8
|
+
|
|
7
9
|
import { useThemeContext } from '../../hooks';
|
|
8
10
|
import { type ThemedClassName } from '../../util';
|
|
9
11
|
|
|
10
|
-
type StatusProps = ThemedClassName<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
12
|
+
type StatusProps = ThemedClassName<
|
|
13
|
+
ComponentPropsWithRef<'span'> &
|
|
14
|
+
StatusStyleProps & {
|
|
15
|
+
progress?: number;
|
|
16
|
+
}
|
|
17
|
+
>;
|
|
15
18
|
|
|
16
19
|
const Status = forwardRef<HTMLSpanElement, StatusProps>(
|
|
17
20
|
({ classNames, children, progress = 0, indeterminate, variant, ...props }, forwardedRef) => {
|
|
@@ -9,7 +9,6 @@ import { hues } from '@dxos/ui-theme';
|
|
|
9
9
|
import { type ChromaticPalette, type MessageValence } from '@dxos/ui-types';
|
|
10
10
|
|
|
11
11
|
import { withLayout, withTheme } from '../../testing';
|
|
12
|
-
|
|
13
12
|
import { Tag } from './Tag';
|
|
14
13
|
|
|
15
14
|
const palettes = ['neutral', 'success', 'info', 'warning', 'error', ...hues] as (ChromaticPalette | MessageValence)[];
|
|
@@ -11,7 +11,6 @@ import { type SafeAreaPadding, useSafeArea } from '../../hooks';
|
|
|
11
11
|
import { hasIosKeyboard } from '../../util';
|
|
12
12
|
import { DensityProvider } from '../DensityProvider';
|
|
13
13
|
import { ElevationProvider } from '../ElevationProvider';
|
|
14
|
-
|
|
15
14
|
import { TranslationsProvider, type TranslationsProviderProps } from './TranslationsProvider';
|
|
16
15
|
|
|
17
16
|
export type ThemeContextValue = {
|
|
@@ -43,7 +42,8 @@ export const ThemeProvider = ({
|
|
|
43
42
|
tx = (_path, _styleProps, ..._options) => undefined,
|
|
44
43
|
themeMode = 'dark',
|
|
45
44
|
rootDensity = 'fine',
|
|
46
|
-
|
|
45
|
+
noCache,
|
|
46
|
+
platform,
|
|
47
47
|
}: ThemeProviderProps) => {
|
|
48
48
|
useEffect(() => {
|
|
49
49
|
if (document.defaultView) {
|
|
@@ -54,9 +54,10 @@ export const ThemeProvider = ({
|
|
|
54
54
|
}, []);
|
|
55
55
|
|
|
56
56
|
const safeAreaPadding = useSafeArea();
|
|
57
|
+
// Destructure all props explicitly so useMemo deps are stable primitives, not a new `rest` object every render.
|
|
57
58
|
const contextValue = useMemo(
|
|
58
|
-
() => ({ tx, themeMode, hasIosKeyboard: hasIosKeyboard(), safeAreaPadding,
|
|
59
|
-
[tx, themeMode, safeAreaPadding,
|
|
59
|
+
() => ({ tx, themeMode, hasIosKeyboard: hasIosKeyboard(), safeAreaPadding, noCache, platform }),
|
|
60
|
+
[tx, themeMode, safeAreaPadding, noCache, platform],
|
|
60
61
|
);
|
|
61
62
|
|
|
62
63
|
return (
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export { type Label, isLabel, toLocalizedString } from '@dxos/ui-types';
|
|
5
|
+
export { type Label, isLabel, toLocalizedString } from '@dxos/ui-types/translations';
|
|
6
6
|
|
|
7
7
|
export * from './ThemeProvider';
|
|
8
8
|
export { useTranslation } from './TranslationsProvider';
|
|
@@ -4,47 +4,32 @@
|
|
|
4
4
|
|
|
5
5
|
import { Primitive } from '@radix-ui/react-primitive';
|
|
6
6
|
import { Slot } from '@radix-ui/react-slot';
|
|
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,
|
|
14
|
-
ToastProvider as ToastProviderPrimitive,
|
|
15
|
-
type ToastProviderProps as ToastProviderPrimitiveProps,
|
|
16
|
-
Root as ToastRootPrimitive,
|
|
17
|
-
type ToastProps as ToastRootPrimitiveProps,
|
|
18
|
-
ToastTitle as ToastTitlePrimitive,
|
|
19
|
-
type ToastTitleProps as ToastTitlePrimitiveProps,
|
|
20
|
-
ToastViewport as ToastViewportPrimitive,
|
|
21
|
-
type ToastViewportProps as ToastViewportPrimitiveProps,
|
|
22
|
-
} from '@radix-ui/react-toast';
|
|
7
|
+
import * as ToastPrimitive from '@radix-ui/react-toast';
|
|
23
8
|
import React, { type ComponentPropsWithRef, type FunctionComponent, forwardRef } from 'react';
|
|
24
9
|
|
|
25
10
|
import { useThemeContext } from '../../hooks';
|
|
26
11
|
import { type ThemedClassName } from '../../util';
|
|
27
12
|
import { ElevationProvider } from '../ElevationProvider';
|
|
28
13
|
|
|
29
|
-
type ToastProviderProps =
|
|
14
|
+
type ToastProviderProps = ToastPrimitive.ToastProviderProps;
|
|
30
15
|
|
|
31
|
-
const ToastProvider: FunctionComponent<ToastProviderProps> =
|
|
16
|
+
const ToastProvider: FunctionComponent<ToastProviderProps> = ToastPrimitive.Provider;
|
|
32
17
|
|
|
33
|
-
type ToastViewportProps = ThemedClassName<
|
|
18
|
+
type ToastViewportProps = ThemedClassName<ToastPrimitive.ToastViewportProps>;
|
|
34
19
|
|
|
35
20
|
const ToastViewport = forwardRef<HTMLOListElement, ToastViewportProps>(({ classNames, ...props }, forwardedRef) => {
|
|
36
21
|
const { tx } = useThemeContext();
|
|
37
|
-
return <
|
|
22
|
+
return <ToastPrimitive.Viewport {...props} className={tx('toast.viewport', {}, classNames)} ref={forwardedRef} />;
|
|
38
23
|
});
|
|
39
24
|
|
|
40
|
-
type ToastRootProps = ThemedClassName<
|
|
25
|
+
type ToastRootProps = ThemedClassName<ToastPrimitive.ToastProps>;
|
|
41
26
|
|
|
42
27
|
const ToastRoot = forwardRef<HTMLLIElement, ToastRootProps>(({ classNames, children, ...props }, forwardedRef) => {
|
|
43
28
|
const { tx } = useThemeContext();
|
|
44
29
|
return (
|
|
45
|
-
<
|
|
30
|
+
<ToastPrimitive.Root {...props} className={tx('toast.root', {}, classNames)} ref={forwardedRef}>
|
|
46
31
|
<ElevationProvider elevation='toast'>{children}</ElevationProvider>
|
|
47
|
-
</
|
|
32
|
+
</ToastPrimitive.Root>
|
|
48
33
|
);
|
|
49
34
|
});
|
|
50
35
|
|
|
@@ -56,22 +41,22 @@ const ToastBody = forwardRef<HTMLDivElement, ToastBodyProps>(({ asChild, classNa
|
|
|
56
41
|
return <Comp {...props} className={tx('toast.body', {}, classNames)} ref={forwardedRef} />;
|
|
57
42
|
});
|
|
58
43
|
|
|
59
|
-
type ToastTitleProps = ThemedClassName<
|
|
44
|
+
type ToastTitleProps = ThemedClassName<ToastPrimitive.ToastTitleProps>;
|
|
60
45
|
|
|
61
46
|
const ToastTitle = forwardRef<HTMLHeadingElement, ToastTitleProps>(
|
|
62
47
|
({ asChild, classNames, ...props }, forwardedRef) => {
|
|
63
48
|
const { tx } = useThemeContext();
|
|
64
|
-
const Comp = asChild ? Slot :
|
|
49
|
+
const Comp = asChild ? Slot : ToastPrimitive.Title;
|
|
65
50
|
return <Comp {...props} className={tx('toast.title', {}, classNames)} ref={forwardedRef} />;
|
|
66
51
|
},
|
|
67
52
|
);
|
|
68
53
|
|
|
69
|
-
type ToastDescriptionProps = ThemedClassName<
|
|
54
|
+
type ToastDescriptionProps = ThemedClassName<ToastPrimitive.ToastDescriptionProps>;
|
|
70
55
|
|
|
71
56
|
const ToastDescription = forwardRef<HTMLParagraphElement, ToastDescriptionProps>(
|
|
72
57
|
({ asChild, classNames, ...props }, forwardedRef) => {
|
|
73
58
|
const { tx } = useThemeContext();
|
|
74
|
-
const Comp = asChild ? Slot :
|
|
59
|
+
const Comp = asChild ? Slot : ToastPrimitive.Description;
|
|
75
60
|
return <Comp {...props} className={tx('toast.description', {}, classNames)} ref={forwardedRef} />;
|
|
76
61
|
},
|
|
77
62
|
);
|
|
@@ -86,13 +71,13 @@ const ToastActions = forwardRef<HTMLDivElement, ToastActionsProps>(
|
|
|
86
71
|
},
|
|
87
72
|
);
|
|
88
73
|
|
|
89
|
-
type ToastActionProps =
|
|
74
|
+
type ToastActionProps = ToastPrimitive.ToastActionProps;
|
|
90
75
|
|
|
91
|
-
const ToastAction: FunctionComponent<ToastActionProps> =
|
|
76
|
+
const ToastAction: FunctionComponent<ToastActionProps> = ToastPrimitive.Action;
|
|
92
77
|
|
|
93
|
-
type ToastCloseProps =
|
|
78
|
+
type ToastCloseProps = ToastPrimitive.ToastCloseProps;
|
|
94
79
|
|
|
95
|
-
const ToastClose: FunctionComponent<ToastCloseProps> =
|
|
80
|
+
const ToastClose: FunctionComponent<ToastCloseProps> = ToastPrimitive.Close;
|
|
96
81
|
|
|
97
82
|
export const Toast = {
|
|
98
83
|
Provider: ToastProvider,
|
|
@@ -6,15 +6,15 @@ import { Primitive } from '@radix-ui/react-primitive';
|
|
|
6
6
|
import { Slot } from '@radix-ui/react-slot';
|
|
7
7
|
import type { ToggleGroupItemProps as ToggleGroupItemPrimitiveProps } from '@radix-ui/react-toggle-group';
|
|
8
8
|
import * as ToolbarPrimitive from '@radix-ui/react-toolbar';
|
|
9
|
-
import React, {
|
|
9
|
+
import React, { forwardRef } from 'react';
|
|
10
10
|
import { useTranslation } from 'react-i18next';
|
|
11
11
|
|
|
12
|
-
import { composableProps, type ToolbarStyleProps } from '@dxos/ui-theme';
|
|
12
|
+
import { composable, composableProps, slottable, type ToolbarStyleProps } from '@dxos/ui-theme';
|
|
13
13
|
import { type SlottableProps } from '@dxos/ui-types';
|
|
14
14
|
|
|
15
|
+
import { translationKey } from '#translations';
|
|
16
|
+
|
|
15
17
|
import { useThemeContext } from '../../hooks';
|
|
16
|
-
import { translationKey } from '../../translations';
|
|
17
|
-
import { type ThemedClassName } from '../../util';
|
|
18
18
|
import {
|
|
19
19
|
Button,
|
|
20
20
|
ButtonGroup,
|
|
@@ -34,38 +34,24 @@ import { Separator, type SeparatorProps } from '../Separator';
|
|
|
34
34
|
// Root
|
|
35
35
|
//
|
|
36
36
|
|
|
37
|
-
type ToolbarRootProps =
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
>;
|
|
43
|
-
|
|
44
|
-
// TODO(burdon): Implement asChild property.
|
|
45
|
-
const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
|
|
46
|
-
(
|
|
47
|
-
{ children, density, disabled, layoutManaged, textBlockWidth: textBlockWidthProp, orientation, ...props },
|
|
48
|
-
forwardedRef,
|
|
49
|
-
) => {
|
|
50
|
-
const { className, dir: _, ...rest } = composableProps(props);
|
|
37
|
+
type ToolbarRootProps = ToolbarPrimitive.ToolbarProps & ToolbarStyleProps;
|
|
38
|
+
|
|
39
|
+
const ToolbarRoot = composable<HTMLDivElement, ToolbarRootProps>(
|
|
40
|
+
({ children, density, disabled, layoutManaged, orientation, ...props }, forwardedRef) => {
|
|
41
|
+
const { className, role, ...rest } = composableProps(props);
|
|
51
42
|
const { tx } = useThemeContext();
|
|
52
|
-
const InnerRoot = textBlockWidthProp ? 'div' : Fragment;
|
|
53
|
-
const innerRootProps = textBlockWidthProp
|
|
54
|
-
? {
|
|
55
|
-
role: 'none',
|
|
56
|
-
className: tx('toolbar.inner', { layoutManaged }, className),
|
|
57
|
-
}
|
|
58
|
-
: {};
|
|
59
43
|
|
|
60
44
|
return (
|
|
61
45
|
<ToolbarPrimitive.Root
|
|
62
46
|
{...rest}
|
|
47
|
+
// Only pass role when explicitly set; radix provides role="toolbar" by default.
|
|
48
|
+
{...(role !== 'none' && { role })}
|
|
63
49
|
orientation={orientation}
|
|
64
50
|
data-arrow-keys={orientation === 'vertical' ? 'up down' : 'left right'}
|
|
65
51
|
className={tx('toolbar.root', { density, disabled, layoutManaged }, className)}
|
|
66
52
|
ref={forwardedRef}
|
|
67
53
|
>
|
|
68
|
-
|
|
54
|
+
{children}
|
|
69
55
|
</ToolbarPrimitive.Root>
|
|
70
56
|
);
|
|
71
57
|
},
|
|
@@ -75,9 +61,9 @@ const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
|
|
|
75
61
|
// Text
|
|
76
62
|
//
|
|
77
63
|
|
|
78
|
-
type ToolbarTextProps = SlottableProps
|
|
64
|
+
type ToolbarTextProps = SlottableProps;
|
|
79
65
|
|
|
80
|
-
const ToolbarText =
|
|
66
|
+
const ToolbarText = slottable<HTMLDivElement>(({ children, asChild, ...props }, forwardedRef) => {
|
|
81
67
|
const { className, ...rest } = composableProps(props);
|
|
82
68
|
const Comp = asChild ? Slot : Primitive.div;
|
|
83
69
|
const { tx } = useThemeContext();
|
|
@@ -205,7 +191,7 @@ const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(
|
|
|
205
191
|
({ variant = 'gap', ...props }, forwardedRef) => {
|
|
206
192
|
return variant === 'line' ? (
|
|
207
193
|
<ToolbarPrimitive.Separator asChild>
|
|
208
|
-
<Separator {...props} ref={forwardedRef} />
|
|
194
|
+
<Separator orientation='vertical' {...props} ref={forwardedRef} />
|
|
209
195
|
</ToolbarPrimitive.Separator>
|
|
210
196
|
) : (
|
|
211
197
|
<ToolbarPrimitive.Separator className='grow' ref={forwardedRef} />
|
|
@@ -225,13 +211,13 @@ const ToolbarDragHandle = forwardRef<HTMLButtonElement, ToolbarDragHandleProps>(
|
|
|
225
211
|
return (
|
|
226
212
|
<ToolbarIconButton
|
|
227
213
|
data-testid={testId}
|
|
214
|
+
tabIndex={-1}
|
|
228
215
|
noTooltip
|
|
229
216
|
iconOnly
|
|
230
217
|
icon='ph--dots-six-vertical--regular'
|
|
231
218
|
variant='ghost'
|
|
232
|
-
label={label ?? t('toolbar
|
|
233
|
-
classNames='cursor-pointer'
|
|
234
|
-
size={5}
|
|
219
|
+
label={label ?? t('toolbar-drag-handle.label')}
|
|
220
|
+
classNames='dx-focus-ring-none cursor-pointer'
|
|
235
221
|
disabled={!forwardedRef}
|
|
236
222
|
ref={forwardedRef}
|
|
237
223
|
/>
|
|
@@ -248,14 +234,14 @@ type ToolbarCloseIconButtonProps = { onClick?: () => void; label?: string };
|
|
|
248
234
|
const ToolbarCloseIconButton = forwardRef<HTMLButtonElement, ToolbarCloseIconButtonProps>(
|
|
249
235
|
({ onClick, label }, forwardedRef) => {
|
|
250
236
|
const { t } = useTranslation(translationKey);
|
|
237
|
+
|
|
251
238
|
return (
|
|
252
239
|
<ToolbarIconButton
|
|
253
240
|
iconOnly
|
|
254
241
|
icon='ph--x--regular'
|
|
255
242
|
variant='ghost'
|
|
256
|
-
label={label ?? t('toolbar
|
|
243
|
+
label={label ?? t('toolbar-close.label')}
|
|
257
244
|
classNames='cursor-pointer'
|
|
258
|
-
size={5}
|
|
259
245
|
onClick={onClick}
|
|
260
246
|
ref={forwardedRef}
|
|
261
247
|
/>
|
|
@@ -288,7 +274,7 @@ const ToolbarMenu = <T extends any | void = void>({ context, items }: ToolbarMen
|
|
|
288
274
|
iconOnly
|
|
289
275
|
variant='ghost'
|
|
290
276
|
icon='ph--dots-three-vertical--regular'
|
|
291
|
-
label={t('toolbar
|
|
277
|
+
label={t('toolbar-menu.label')}
|
|
292
278
|
/>
|
|
293
279
|
</DropdownMenu.Trigger>
|
|
294
280
|
{(items?.length ?? 0) > 0 && (
|
|
@@ -5,19 +5,18 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import React from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { random } from '@dxos/random';
|
|
9
9
|
|
|
10
10
|
import { withTheme } from '../../testing';
|
|
11
11
|
import { Button } from '../Button';
|
|
12
|
-
|
|
13
12
|
import { Tooltip } from './Tooltip';
|
|
14
13
|
|
|
15
|
-
type
|
|
14
|
+
type DefaultStoryProps = {
|
|
16
15
|
tooltips: { label: string; content: string }[];
|
|
17
16
|
defaultOpen?: boolean;
|
|
18
17
|
};
|
|
19
18
|
|
|
20
|
-
const DefaultStory = ({ tooltips, defaultOpen }:
|
|
19
|
+
const DefaultStory = ({ tooltips, defaultOpen }: DefaultStoryProps) => {
|
|
21
20
|
return (
|
|
22
21
|
<Tooltip.Provider defaultOpen={defaultOpen}>
|
|
23
22
|
<div role='none' className='w-32'>
|
|
@@ -74,10 +73,10 @@ export const DefaultOpen: Story = {
|
|
|
74
73
|
export const StressTest: Story = {
|
|
75
74
|
args: {
|
|
76
75
|
defaultOpen: true,
|
|
77
|
-
tooltips:
|
|
76
|
+
tooltips: random.helpers.multiple(
|
|
78
77
|
() => ({
|
|
79
|
-
label:
|
|
80
|
-
content:
|
|
78
|
+
label: random.lorem.words(2),
|
|
79
|
+
content: random.lorem.words(5),
|
|
81
80
|
}),
|
|
82
81
|
{ count: 32 },
|
|
83
82
|
),
|
|
@@ -22,9 +22,8 @@ import { useControllableState } from '@radix-ui/react-use-controllable-state';
|
|
|
22
22
|
import * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';
|
|
23
23
|
import React, {
|
|
24
24
|
type ComponentPropsWithoutRef,
|
|
25
|
-
type
|
|
25
|
+
type ComponentRef,
|
|
26
26
|
type FC,
|
|
27
|
-
type MutableRefObject,
|
|
28
27
|
type ReactNode,
|
|
29
28
|
type RefObject,
|
|
30
29
|
type SyntheticEvent,
|
|
@@ -61,13 +60,13 @@ type TooltipContextValue = {
|
|
|
61
60
|
onOpen(): void;
|
|
62
61
|
onClose(): void;
|
|
63
62
|
onPointerInTransitChange(inTransit: boolean): void;
|
|
64
|
-
isPointerInTransitRef:
|
|
63
|
+
isPointerInTransitRef: RefObject<boolean>;
|
|
65
64
|
disableHoverableContent: boolean;
|
|
66
65
|
};
|
|
67
66
|
|
|
68
67
|
const [TooltipContextProvider, useTooltipContext] = createTooltipContext<TooltipContextValue>(TOOLTIP_NAME);
|
|
69
68
|
|
|
70
|
-
|
|
69
|
+
type TooltipProviderProps = {
|
|
71
70
|
children?: ReactNode;
|
|
72
71
|
open?: boolean;
|
|
73
72
|
defaultOpen?: boolean;
|
|
@@ -88,7 +87,7 @@ interface TooltipProviderProps {
|
|
|
88
87
|
* @defaultValue 300
|
|
89
88
|
*/
|
|
90
89
|
skipDelayDuration?: number;
|
|
91
|
-
}
|
|
90
|
+
};
|
|
92
91
|
|
|
93
92
|
const TooltipProvider: FC<TooltipProviderProps> = (props: TooltipScopedProps<TooltipProviderProps>) => {
|
|
94
93
|
const {
|
|
@@ -247,7 +246,7 @@ const TooltipVirtualTrigger = ({
|
|
|
247
246
|
|
|
248
247
|
const TRIGGER_NAME = 'TooltipTrigger';
|
|
249
248
|
|
|
250
|
-
type TooltipTriggerElement =
|
|
249
|
+
type TooltipTriggerElement = ComponentRef<typeof Primitive.button>;
|
|
251
250
|
type PrimitiveButtonProps = ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
252
251
|
type TooltipTriggerProps = PrimitiveButtonProps &
|
|
253
252
|
Pick<TooltipProps, 'delayDuration'> & {
|
|
@@ -335,7 +334,7 @@ const [PortalProvider, usePortalContext] = createTooltipContext<PortalContextVal
|
|
|
335
334
|
});
|
|
336
335
|
|
|
337
336
|
type PortalProps = ComponentPropsWithoutRef<typeof PortalPrimitive>;
|
|
338
|
-
|
|
337
|
+
type TooltipPortalProps = {
|
|
339
338
|
children?: ReactNode;
|
|
340
339
|
/**
|
|
341
340
|
* Specify a container element to portal the content into.
|
|
@@ -346,7 +345,7 @@ interface TooltipPortalProps {
|
|
|
346
345
|
* controlling animation with React animation libraries.
|
|
347
346
|
*/
|
|
348
347
|
forceMount?: true;
|
|
349
|
-
}
|
|
348
|
+
};
|
|
350
349
|
|
|
351
350
|
const TooltipPortal: FC<TooltipPortalProps> = (props: TooltipScopedProps<TooltipPortalProps>) => {
|
|
352
351
|
const { __scopeTooltip, forceMount, children, container } = props;
|
|
@@ -371,13 +370,13 @@ TooltipPortal.displayName = PORTAL_NAME;
|
|
|
371
370
|
const CONTENT_NAME = 'TooltipContent';
|
|
372
371
|
|
|
373
372
|
type TooltipContentElement = TooltipContentImplElement;
|
|
374
|
-
|
|
373
|
+
type TooltipContentProps = TooltipContentImplProps & {
|
|
375
374
|
/**
|
|
376
375
|
* Used to force mounting when more control is needed. Useful when
|
|
377
376
|
* controlling animation with React animation libraries.
|
|
378
377
|
*/
|
|
379
378
|
forceMount?: true;
|
|
380
|
-
}
|
|
379
|
+
};
|
|
381
380
|
|
|
382
381
|
const TooltipContent = forwardRef<TooltipContentElement, TooltipContentProps>(
|
|
383
382
|
(props: TooltipScopedProps<TooltipContentProps>, forwardedRef) => {
|
|
@@ -401,7 +400,7 @@ type Point = { x: number; y: number };
|
|
|
401
400
|
type Polygon = Point[];
|
|
402
401
|
|
|
403
402
|
type TooltipContentHoverableElement = TooltipContentImplElement;
|
|
404
|
-
|
|
403
|
+
type TooltipContentHoverableProps = TooltipContentImplProps;
|
|
405
404
|
|
|
406
405
|
const TooltipContentHoverable = forwardRef<TooltipContentHoverableElement, TooltipContentHoverableProps>(
|
|
407
406
|
(props: TooltipScopedProps<TooltipContentHoverableProps>, forwardedRef) => {
|
|
@@ -480,10 +479,10 @@ const [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] =
|
|
|
480
479
|
isInside: false,
|
|
481
480
|
});
|
|
482
481
|
|
|
483
|
-
type TooltipContentImplElement =
|
|
482
|
+
type TooltipContentImplElement = ComponentRef<typeof PopperPrimitive.Content>;
|
|
484
483
|
type DismissableLayerProps = ComponentPropsWithoutRef<typeof DismissableLayer>;
|
|
485
484
|
type PopperContentProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;
|
|
486
|
-
|
|
485
|
+
type TooltipContentImplProps = Omit<PopperContentProps, 'onPlaced'> & {
|
|
487
486
|
/**
|
|
488
487
|
* A more descriptive label for accessibility purpose
|
|
489
488
|
*/
|
|
@@ -499,7 +498,7 @@ interface TooltipContentImplProps extends Omit<PopperContentProps, 'onPlaced'> {
|
|
|
499
498
|
* Can be prevented.
|
|
500
499
|
*/
|
|
501
500
|
onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];
|
|
502
|
-
}
|
|
501
|
+
};
|
|
503
502
|
|
|
504
503
|
const TooltipContentImpl = forwardRef<TooltipContentImplElement, TooltipContentImplProps>(
|
|
505
504
|
(props: TooltipScopedProps<TooltipContentImplProps>, forwardedRef) => {
|
|
@@ -581,9 +580,9 @@ TooltipContent.displayName = CONTENT_NAME;
|
|
|
581
580
|
|
|
582
581
|
const ARROW_NAME = 'TooltipArrow';
|
|
583
582
|
|
|
584
|
-
type TooltipArrowElement =
|
|
583
|
+
type TooltipArrowElement = ComponentRef<typeof PopperPrimitive.Arrow>;
|
|
585
584
|
type PopperArrowProps = ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;
|
|
586
|
-
|
|
585
|
+
type TooltipArrowProps = PopperArrowProps;
|
|
587
586
|
|
|
588
587
|
const TooltipArrow = forwardRef<TooltipArrowElement, TooltipArrowProps>(
|
|
589
588
|
(props: TooltipScopedProps<TooltipArrowProps>, forwardedRef) => {
|
package/src/components/index.ts
CHANGED