@dxos/react-ui 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a
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-HFJYTGHU.mjs → chunk-CMHHVHX3.mjs} +4 -1
- package/dist/lib/browser/chunk-CMHHVHX3.mjs.map +7 -0
- package/dist/lib/browser/{chunk-F3PLXTDA.mjs → chunk-GTHV4WYK.mjs} +123 -232
- package/dist/lib/browser/chunk-GTHV4WYK.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1069 -976
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +5 -5
- package/dist/lib/browser/testing/index.mjs.map +2 -2
- package/dist/lib/browser/translations.mjs +1 -1
- package/dist/lib/node-esm/{chunk-LLVUYLAM.mjs → chunk-3VSKWNCQ.mjs} +123 -232
- package/dist/lib/node-esm/chunk-3VSKWNCQ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-OJYUPUCY.mjs → chunk-P4KFQGJI.mjs} +4 -1
- package/dist/lib/node-esm/chunk-P4KFQGJI.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1069 -976
- 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 +5 -5
- package/dist/lib/node-esm/testing/index.mjs.map +2 -2
- package/dist/lib/node-esm/translations.mjs +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/Breadcrumb/Breadcrumb.d.ts +3 -3
- package/dist/types/src/components/Breadcrumb/Breadcrumb.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/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/MicButton.d.ts +24 -0
- package/dist/types/src/components/Button/MicButton.d.ts.map +1 -0
- package/dist/types/src/components/Button/MicButton.stories.d.ts +57 -0
- package/dist/types/src/components/Button/MicButton.stories.d.ts.map +1 -0
- package/dist/types/src/components/Button/SystemIconButton.d.ts +15 -2
- package/dist/types/src/components/Button/SystemIconButton.d.ts.map +1 -1
- package/dist/types/src/components/Button/SystemIconButton.stories.d.ts +51 -0
- package/dist/types/src/components/Button/SystemIconButton.stories.d.ts.map +1 -0
- package/dist/types/src/components/Button/ToggleGroup.d.ts +2 -2
- package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
- package/dist/types/src/components/Button/index.d.ts +1 -0
- package/dist/types/src/components/Button/index.d.ts.map +1 -1
- package/dist/types/src/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/types/src/components/Calendar/Calendar.theme.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.d.ts +8 -8
- 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/Carousel/Carousel.d.ts +29 -6
- package/dist/types/src/components/Carousel/Carousel.d.ts.map +1 -1
- package/dist/types/src/components/Carousel/Carousel.stories.d.ts +48 -2
- package/dist/types/src/components/Carousel/Carousel.stories.d.ts.map +1 -1
- package/dist/types/src/components/Column/Column.d.ts +2 -2
- package/dist/types/src/components/Column/Column.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/AlertDialog.d.ts +2 -2
- package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.d.ts +1 -1
- package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts +2 -2
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/Icon/Icon.stories.d.ts +5 -0
- package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.d.ts +4 -1
- 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/Input/Input.theme.d.ts +10 -10
- package/dist/types/src/components/Input/Input.theme.d.ts.map +1 -1
- package/dist/types/src/components/Input/SegmentedInput.d.ts +8 -8
- package/dist/types/src/components/Input/SegmentedInput.d.ts.map +1 -1
- package/dist/types/src/components/Input/index.d.ts +0 -1
- package/dist/types/src/components/Input/index.d.ts.map +1 -1
- package/dist/types/src/components/Main/Main.d.ts +3 -3
- package/dist/types/src/components/Main/Main.d.ts.map +1 -1
- package/dist/types/src/components/Menu/ContextMenu.d.ts +1 -1
- package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
- package/dist/types/src/components/Menu/DropdownMenu.d.ts +2 -2
- package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
- 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 +2 -2
- package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
- package/dist/types/src/components/Panel/Panel.d.ts +1 -1
- package/dist/types/src/components/Panel/Panel.d.ts.map +1 -1
- package/dist/types/src/components/Panel/Panel.theme.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.d.ts +2 -2
- package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +2 -0
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +1 -0
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +2 -2
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.d.ts +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.map +1 -1
- package/dist/types/src/components/Splitter/Splitter.d.ts +30 -16
- package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
- package/dist/types/src/components/Splitter/Splitter.stories.d.ts +6 -1
- package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
- package/dist/types/src/components/Splitter/Splitter.theme.d.ts +3 -1
- package/dist/types/src/components/Splitter/Splitter.theme.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.theme.d.ts +1 -1
- package/dist/types/src/components/Tag/Tag.theme.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.d.ts +1 -1
- package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.theme.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.d.ts +3 -3
- 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 +0 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts +1 -8
- package/dist/types/src/primitives/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
- package/dist/types/src/theme/defaultTheme.d.ts.map +1 -1
- package/dist/types/src/theme/index.d.ts +0 -2
- package/dist/types/src/theme/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +3 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/util/slots.d.ts +1 -1
- package/dist/types/src/util/slots.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +22 -21
- package/src/components/Avatars/Avatar.stories.tsx +2 -2
- package/src/components/Avatars/Avatar.theme.ts +1 -1
- package/src/components/Avatars/Avatar.tsx +3 -3
- package/src/components/Breadcrumb/Breadcrumb.tsx +6 -6
- package/src/components/Button/Button.tsx +2 -2
- package/src/components/Button/MicButton.stories.tsx +60 -0
- package/src/components/Button/MicButton.tsx +117 -0
- package/src/components/Button/SystemIconButton.stories.tsx +91 -0
- package/src/components/Button/SystemIconButton.tsx +113 -2
- package/src/components/Button/ToggleGroup.tsx +2 -2
- package/src/components/Button/index.ts +1 -0
- package/src/components/Calendar/Calendar.theme.ts +2 -0
- package/src/components/Calendar/Calendar.tsx +3 -3
- package/src/components/Card/Card.stories.tsx +2 -2
- package/src/components/Card/Card.tsx +11 -11
- package/src/components/Carousel/Carousel.stories.tsx +42 -18
- package/src/components/Carousel/Carousel.tsx +169 -33
- package/src/components/Column/Column.tsx +4 -7
- package/src/components/Dialog/AlertDialog.stories.tsx +2 -2
- package/src/components/Dialog/AlertDialog.tsx +13 -13
- package/src/components/Dialog/Dialog.stories.tsx +3 -4
- package/src/components/Dialog/Dialog.theme.ts +1 -1
- package/src/components/Dialog/Dialog.tsx +12 -12
- package/src/components/Icon/Icon.stories.tsx +23 -0
- package/src/components/Icon/Icon.theme.ts +1 -1
- package/src/components/Input/Input.stories.tsx +13 -5
- package/src/components/Input/Input.theme.ts +17 -39
- package/src/components/Input/Input.tsx +30 -13
- package/src/components/Input/SegmentedInput.tsx +50 -41
- package/src/components/Input/index.ts +0 -1
- package/src/components/Main/Main.tsx +3 -3
- package/src/components/MediaPlayer/MediaPlayer.tsx +4 -4
- package/src/components/Menu/ContextMenu.tsx +8 -8
- package/src/components/Menu/DropdownMenu.tsx +12 -13
- package/src/components/Message/Message.stories.tsx +2 -2
- package/src/components/Message/Message.theme.ts +1 -1
- package/src/components/Message/Message.tsx +2 -2
- package/src/components/Panel/Panel.theme.ts +2 -1
- package/src/components/Panel/Panel.tsx +1 -1
- package/src/components/Popover/Popover.tsx +9 -9
- package/src/components/ScrollArea/ScrollArea.tsx +7 -4
- package/src/components/ScrollContainer/ScrollContainer.stories.tsx +2 -2
- package/src/components/ScrollContainer/ScrollContainer.tsx +2 -2
- package/src/components/Select/Select.stories.tsx +2 -2
- package/src/components/Select/Select.theme.ts +1 -1
- package/src/components/Select/Select.tsx +14 -14
- package/src/components/Separator/Separator.tsx +1 -0
- package/src/components/Splitter/Splitter.stories.tsx +84 -20
- package/src/components/Splitter/Splitter.theme.ts +20 -3
- package/src/components/Splitter/Splitter.tsx +320 -47
- package/src/components/Tag/Tag.stories.tsx +1 -1
- package/src/components/Tag/Tag.theme.ts +1 -1
- package/src/components/Tag/Tag.tsx +3 -5
- package/src/components/Toast/Toast.theme.ts +3 -2
- package/src/components/Toast/Toast.tsx +5 -5
- package/src/components/Toolbar/Toolbar.tsx +10 -10
- package/src/components/Tooltip/Tooltip.stories.tsx +2 -2
- package/src/components/Tooltip/Tooltip.tsx +3 -3
- package/src/components/index.ts +0 -1
- package/src/exemplars/tabster.stories.tsx +1 -1
- package/src/index.ts +1 -1
- package/src/primitives/ThemeProvider/TranslationsProvider.tsx +10 -30
- package/src/testing/decorators/withLayout.tsx +4 -4
- package/src/theme/defaultTheme.ts +0 -4
- package/src/theme/index.ts +0 -2
- package/src/translations.ts +8 -0
- package/src/util/slots.ts +5 -5
- package/dist/lib/browser/chunk-F3PLXTDA.mjs.map +0 -7
- package/dist/lib/browser/chunk-HFJYTGHU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LLVUYLAM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OJYUPUCY.mjs.map +0 -7
- package/dist/types/src/components/Input/constants.d.ts +0 -5
- package/dist/types/src/components/Input/constants.d.ts.map +0 -1
- package/dist/types/src/components/List/List.d.ts +0 -29
- package/dist/types/src/components/List/List.d.ts.map +0 -1
- package/dist/types/src/components/List/List.stories.d.ts +0 -16
- package/dist/types/src/components/List/List.stories.d.ts.map +0 -1
- package/dist/types/src/components/List/List.theme.d.ts +0 -7
- package/dist/types/src/components/List/List.theme.d.ts.map +0 -1
- package/dist/types/src/components/List/ListDropIndicator.d.ts +0 -13
- package/dist/types/src/components/List/ListDropIndicator.d.ts.map +0 -1
- package/dist/types/src/components/List/Tree.d.ts +0 -23
- package/dist/types/src/components/List/Tree.d.ts.map +0 -1
- package/dist/types/src/components/List/Tree.stories.d.ts +0 -15
- package/dist/types/src/components/List/Tree.stories.d.ts.map +0 -1
- package/dist/types/src/components/List/TreeDropIndicator.d.ts +0 -8
- package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +0 -1
- package/dist/types/src/components/List/Treegrid.d.ts +0 -33
- package/dist/types/src/components/List/Treegrid.d.ts.map +0 -1
- package/dist/types/src/components/List/Treegrid.stories.d.ts +0 -12
- package/dist/types/src/components/List/Treegrid.stories.d.ts.map +0 -1
- package/dist/types/src/components/List/Treegrid.theme.d.ts +0 -7
- package/dist/types/src/components/List/Treegrid.theme.d.ts.map +0 -1
- package/dist/types/src/components/List/index.d.ts +0 -4
- package/dist/types/src/components/List/index.d.ts.map +0 -1
- package/src/components/Input/constants.ts +0 -8
- package/src/components/List/List.stories.tsx +0 -234
- package/src/components/List/List.theme.ts +0 -47
- package/src/components/List/List.tsx +0 -171
- package/src/components/List/ListDropIndicator.tsx +0 -69
- package/src/components/List/Tree.stories.tsx +0 -87
- package/src/components/List/Tree.tsx +0 -74
- package/src/components/List/TreeDropIndicator.tsx +0 -70
- package/src/components/List/Treegrid.stories.tsx +0 -156
- package/src/components/List/Treegrid.theme.ts +0 -35
- package/src/components/List/Treegrid.tsx +0 -187
- package/src/components/List/index.ts +0 -7
|
@@ -25,8 +25,9 @@ const root: ComponentFunction<PanelStyleProps> = (_, ...etc) =>
|
|
|
25
25
|
...etc,
|
|
26
26
|
);
|
|
27
27
|
|
|
28
|
+
// Toolbars default to the bar surface (tier 5); callers can still override via the trailing classes.
|
|
28
29
|
const toolbar: ComponentFunction<PanelStyleProps> = ({ size = 'md' }, ...etc) =>
|
|
29
|
-
mx('[grid-area:toolbar]', 'shrink-0', sizes[size], ...etc);
|
|
30
|
+
mx('[grid-area:toolbar]', 'shrink-0', 'bg-toolbar-surface', sizes[size], ...etc);
|
|
30
31
|
|
|
31
32
|
const content: ComponentFunction<PanelStyleProps> = (_, ...etc) => mx('[grid-area:content] min-h-0', ...etc);
|
|
32
33
|
|
|
@@ -21,8 +21,8 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
21
21
|
import { useControllableState } from '@radix-ui/react-use-controllable-state';
|
|
22
22
|
import { hideOthers } from 'aria-hidden';
|
|
23
23
|
import React, {
|
|
24
|
-
type ComponentPropsWithRef,
|
|
25
24
|
type ComponentPropsWithoutRef,
|
|
25
|
+
type ComponentPropsWithRef,
|
|
26
26
|
type ComponentRef,
|
|
27
27
|
type FC,
|
|
28
28
|
type ReactNode,
|
|
@@ -36,7 +36,7 @@ import React, {
|
|
|
36
36
|
} from 'react';
|
|
37
37
|
import { RemoveScroll } from 'react-remove-scroll';
|
|
38
38
|
|
|
39
|
-
import {
|
|
39
|
+
import { useElevationContext, useSafeCollisionPadding, useThemeContext } from '../../hooks';
|
|
40
40
|
import { type ThemedClassName } from '../../util';
|
|
41
41
|
|
|
42
42
|
//
|
|
@@ -611,14 +611,14 @@ export const Popover = {
|
|
|
611
611
|
export { createPopoverScope };
|
|
612
612
|
|
|
613
613
|
export type {
|
|
614
|
-
PopoverRootProps,
|
|
615
614
|
PopoverAnchorProps,
|
|
616
|
-
PopoverTriggerProps,
|
|
617
|
-
PopoverVirtualTriggerProps,
|
|
618
|
-
PopoverPortalProps,
|
|
619
|
-
PopoverContentProps,
|
|
620
|
-
PopoverCloseProps,
|
|
621
615
|
PopoverArrowProps,
|
|
622
|
-
|
|
616
|
+
PopoverCloseProps,
|
|
623
617
|
PopoverContentInteractOutsideEvent,
|
|
618
|
+
PopoverContentProps,
|
|
619
|
+
PopoverPortalProps,
|
|
620
|
+
PopoverRootProps,
|
|
621
|
+
PopoverTriggerProps,
|
|
622
|
+
PopoverViewportProps,
|
|
623
|
+
PopoverVirtualTriggerProps,
|
|
624
624
|
};
|
|
@@ -24,6 +24,8 @@ type ScrollAreaContextType = {
|
|
|
24
24
|
orientation: AllowedAxis;
|
|
25
25
|
/** Hide scrollbars when not scrolling. */
|
|
26
26
|
autoHide: boolean;
|
|
27
|
+
/** Show scrollbars. */
|
|
28
|
+
scrollbars?: boolean;
|
|
27
29
|
/** Apply padding to opposite side of scrollbar. */
|
|
28
30
|
centered?: boolean;
|
|
29
31
|
/** Apply padding. */
|
|
@@ -54,6 +56,7 @@ const ScrollAreaRoot = slottable<HTMLDivElement, ScrollAreaRootProps>(
|
|
|
54
56
|
asChild,
|
|
55
57
|
orientation = 'vertical',
|
|
56
58
|
autoHide = true,
|
|
59
|
+
scrollbars = true,
|
|
57
60
|
centered = false,
|
|
58
61
|
padding = false,
|
|
59
62
|
thin = false,
|
|
@@ -66,8 +69,8 @@ const ScrollAreaRoot = slottable<HTMLDivElement, ScrollAreaRootProps>(
|
|
|
66
69
|
const { className, ...rest } = composableProps(props);
|
|
67
70
|
const Comp = asChild ? Slot : Primitive.div;
|
|
68
71
|
const options = useMemo(
|
|
69
|
-
() => ({ orientation, autoHide, centered, padding, thin, snap }),
|
|
70
|
-
[orientation, autoHide, centered, padding, thin, snap],
|
|
72
|
+
() => ({ orientation, autoHide, scrollbars, centered, padding, thin, snap }),
|
|
73
|
+
[orientation, autoHide, scrollbars, centered, padding, thin, snap],
|
|
71
74
|
);
|
|
72
75
|
|
|
73
76
|
return (
|
|
@@ -103,8 +106,8 @@ const ScrollAreaViewport = slottable<HTMLDivElement>(({ children, asChild, ...pr
|
|
|
103
106
|
{...restWithoutStyle}
|
|
104
107
|
style={
|
|
105
108
|
{
|
|
106
|
-
'--scroll-width': `${density.size}px
|
|
107
|
-
'--scroll-padding': `${density.padding}px
|
|
109
|
+
'--scroll-width': options.scrollbars ? `${density.size}px` : '0px',
|
|
110
|
+
'--scroll-padding': options.scrollbars ? `${density.padding}px` : '0px',
|
|
108
111
|
...style,
|
|
109
112
|
} as CSSProperties
|
|
110
113
|
}
|
|
@@ -13,9 +13,9 @@ import { Panel } from '../Panel';
|
|
|
13
13
|
import { Toolbar } from '../Toolbar';
|
|
14
14
|
import { ScrollContainer, type ScrollContainerRootProps, type ScrollController } from './ScrollContainer';
|
|
15
15
|
|
|
16
|
-
type
|
|
16
|
+
type StoryArgs = ScrollContainerRootProps & { running?: boolean; initialLines?: number };
|
|
17
17
|
|
|
18
|
-
const DefaultStory = ({ initialLines = 0, running: runningProp, ...props }:
|
|
18
|
+
const DefaultStory = ({ initialLines = 0, running: runningProp, ...props }: StoryArgs) => {
|
|
19
19
|
const [lines, setLines] = useState<string[]>([]);
|
|
20
20
|
const [running, setRunning] = useState(runningProp);
|
|
21
21
|
const scroller = useRef<ScrollController>(null);
|
|
@@ -339,9 +339,9 @@ export const ScrollContainer = {
|
|
|
339
339
|
};
|
|
340
340
|
|
|
341
341
|
export type {
|
|
342
|
-
ScrollContainerRootProps,
|
|
343
342
|
ScrollContainerContentProps,
|
|
344
|
-
ScrollContainerViewportProps,
|
|
345
343
|
ScrollContainerFadeProps,
|
|
344
|
+
ScrollContainerRootProps,
|
|
346
345
|
ScrollContainerScrollDownButtonProps,
|
|
346
|
+
ScrollContainerViewportProps,
|
|
347
347
|
};
|
|
@@ -15,9 +15,9 @@ random.seed(1234);
|
|
|
15
15
|
|
|
16
16
|
type ItemProps = { id: string; text: string };
|
|
17
17
|
|
|
18
|
-
type
|
|
18
|
+
type StoryArgs = { items: ItemProps[] };
|
|
19
19
|
|
|
20
|
-
const DefaultStory = ({ items = [] }:
|
|
20
|
+
const DefaultStory = ({ items = [] }: StoryArgs) => {
|
|
21
21
|
const [value, setValue] = useState<string>();
|
|
22
22
|
return (
|
|
23
23
|
<Select.Root value={value} onValueChange={setValue}>
|
|
@@ -20,7 +20,7 @@ const content: ComponentFunction<SelectStyleProps> = ({ elevation }, ...etc) =>
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
const triggerButton: ComponentFunction<SelectStyleProps> = (_props, ...etc) =>
|
|
23
|
-
mx('grid grid-cols-[1fr_auto] [&>span]:text-left', ...etc);
|
|
23
|
+
mx('bg-input-surface grid grid-cols-[1fr_auto] [&>span]:text-left', ...etc);
|
|
24
24
|
|
|
25
25
|
const viewport: ComponentFunction<SelectStyleProps> = (_props, ...etc) => mx(...etc);
|
|
26
26
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
6
6
|
import React, { forwardRef } from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { useElevationContext, useSafeCollisionPadding, useThemeContext } from '../../hooks';
|
|
9
9
|
import { type ThemedClassName } from '../../util';
|
|
10
10
|
import { Button, type ButtonProps } from '../Button';
|
|
11
11
|
import { Icon } from '../Icon';
|
|
@@ -222,22 +222,22 @@ export const Select = {
|
|
|
222
222
|
};
|
|
223
223
|
|
|
224
224
|
export type {
|
|
225
|
-
|
|
226
|
-
SelectTriggerProps,
|
|
227
|
-
SelectTriggerButtonProps,
|
|
228
|
-
SelectValueProps,
|
|
229
|
-
SelectIconProps,
|
|
230
|
-
SelectPortalProps,
|
|
225
|
+
SelectArrowProps,
|
|
231
226
|
SelectContentProps,
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
227
|
+
SelectGroupProps,
|
|
228
|
+
SelectIconProps,
|
|
229
|
+
SelectItemIndicatorProps,
|
|
235
230
|
SelectItemProps,
|
|
236
231
|
SelectItemTextProps,
|
|
237
|
-
SelectItemIndicatorProps,
|
|
238
|
-
SelectOptionProps,
|
|
239
|
-
SelectGroupProps,
|
|
240
232
|
SelectLabelProps,
|
|
233
|
+
SelectOptionProps,
|
|
234
|
+
SelectPortalProps,
|
|
235
|
+
SelectRootProps,
|
|
236
|
+
SelectScrollDownButtonProps,
|
|
237
|
+
SelectScrollUpButtonProps,
|
|
241
238
|
SelectSeparatorProps,
|
|
242
|
-
|
|
239
|
+
SelectTriggerButtonProps,
|
|
240
|
+
SelectTriggerProps,
|
|
241
|
+
SelectValueProps,
|
|
242
|
+
SelectViewportProps,
|
|
243
243
|
};
|
|
@@ -9,7 +9,7 @@ import { withLayout, withTheme } from '../../testing';
|
|
|
9
9
|
import { Panel } from '../Panel';
|
|
10
10
|
import { ScrollArea } from '../ScrollArea';
|
|
11
11
|
import { Toolbar } from '../Toolbar';
|
|
12
|
-
import { Splitter, type SplitterRootProps } from './Splitter';
|
|
12
|
+
import { Splitter, type SplitterMode, type SplitterRootProps } from './Splitter';
|
|
13
13
|
|
|
14
14
|
const PanelContent = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'> & { label: string }>(
|
|
15
15
|
({ label, ...props }, forwardedRef) => (
|
|
@@ -32,29 +32,44 @@ const PanelContent = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>
|
|
|
32
32
|
),
|
|
33
33
|
);
|
|
34
34
|
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
const Panes = () => (
|
|
36
|
+
<>
|
|
37
|
+
<Splitter.Panel position='start'>
|
|
38
|
+
<PanelContent label='A' />
|
|
39
|
+
</Splitter.Panel>
|
|
40
|
+
<Splitter.Handle />
|
|
41
|
+
<Splitter.Panel position='end'>
|
|
42
|
+
<PanelContent label='B' />
|
|
43
|
+
</Splitter.Panel>
|
|
44
|
+
</>
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
// Renders the splitter with no surrounding chrome (Panel.Root keeps the height chain without a toolbar).
|
|
48
|
+
const BasicStory = (args: SplitterRootProps) => (
|
|
49
|
+
<Panel.Root>
|
|
50
|
+
<Panel.Content asChild>
|
|
51
|
+
<Splitter.Root {...args}>
|
|
52
|
+
<Panes />
|
|
53
|
+
</Splitter.Root>
|
|
54
|
+
</Panel.Content>
|
|
55
|
+
</Panel.Root>
|
|
56
|
+
);
|
|
38
57
|
|
|
58
|
+
// Toolbar drives the animated collapse via `mode`.
|
|
59
|
+
const ToolbarStory = (args: SplitterRootProps) => {
|
|
60
|
+
const [mode, setMode] = useState<SplitterMode>(args.mode ?? 'split');
|
|
39
61
|
return (
|
|
40
62
|
<Panel.Root>
|
|
41
63
|
<Panel.Toolbar asChild>
|
|
42
64
|
<Toolbar.Root>
|
|
43
|
-
<Toolbar.Button onClick={() => setMode('
|
|
65
|
+
<Toolbar.Button onClick={() => setMode('start')}>A</Toolbar.Button>
|
|
44
66
|
<Toolbar.Button onClick={() => setMode('split')}>A+B</Toolbar.Button>
|
|
45
|
-
<Toolbar.Button onClick={() => setMode('
|
|
46
|
-
<Toolbar.Separator />
|
|
47
|
-
<Toolbar.Button onClick={() => setRatio((r) => 1 - r)}>Toggle</Toolbar.Button>
|
|
67
|
+
<Toolbar.Button onClick={() => setMode('end')}>B</Toolbar.Button>
|
|
48
68
|
</Toolbar.Root>
|
|
49
69
|
</Panel.Toolbar>
|
|
50
70
|
<Panel.Content asChild>
|
|
51
|
-
<Splitter.Root
|
|
52
|
-
<
|
|
53
|
-
<PanelContent label='A' />
|
|
54
|
-
</Splitter.Panel>
|
|
55
|
-
<Splitter.Panel asChild position='bottom'>
|
|
56
|
-
<PanelContent label='B' />
|
|
57
|
-
</Splitter.Panel>
|
|
71
|
+
<Splitter.Root {...args} mode={mode}>
|
|
72
|
+
<Panes />
|
|
58
73
|
</Splitter.Root>
|
|
59
74
|
</Panel.Content>
|
|
60
75
|
</Panel.Root>
|
|
@@ -64,8 +79,8 @@ const DefaultStory = (props: SplitterRootProps) => {
|
|
|
64
79
|
const meta: Meta<SplitterRootProps> = {
|
|
65
80
|
title: 'ui/react-ui-core/components/Splitter',
|
|
66
81
|
component: Splitter.Root,
|
|
67
|
-
render:
|
|
68
|
-
decorators: [withTheme(), withLayout({ layout: '
|
|
82
|
+
render: BasicStory,
|
|
83
|
+
decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
|
|
69
84
|
parameters: {
|
|
70
85
|
layout: 'fullscreen',
|
|
71
86
|
},
|
|
@@ -75,9 +90,58 @@ export default meta;
|
|
|
75
90
|
|
|
76
91
|
type Story = StoryObj<SplitterRootProps>;
|
|
77
92
|
|
|
78
|
-
export const
|
|
93
|
+
export const VerticalStart: Story = {
|
|
94
|
+
args: {
|
|
95
|
+
orientation: 'vertical',
|
|
96
|
+
anchor: 'start',
|
|
97
|
+
resizable: true,
|
|
98
|
+
defaultSize: 20,
|
|
99
|
+
minSize: 6,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export const VerticalEnd: Story = {
|
|
104
|
+
args: {
|
|
105
|
+
orientation: 'vertical',
|
|
106
|
+
anchor: 'end',
|
|
107
|
+
resizable: true,
|
|
108
|
+
defaultSize: 20,
|
|
109
|
+
minSize: 6,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export const VerticalAnimated: Story = {
|
|
114
|
+
render: ToolbarStory,
|
|
115
|
+
args: {
|
|
116
|
+
orientation: 'vertical',
|
|
117
|
+
transition: 250,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export const HorizontalStart: Story = {
|
|
122
|
+
args: {
|
|
123
|
+
orientation: 'horizontal',
|
|
124
|
+
anchor: 'start',
|
|
125
|
+
resizable: true,
|
|
126
|
+
defaultSize: 30,
|
|
127
|
+
minSize: 6,
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export const HorizontalEnd: Story = {
|
|
132
|
+
args: {
|
|
133
|
+
orientation: 'horizontal',
|
|
134
|
+
anchor: 'end',
|
|
135
|
+
resizable: true,
|
|
136
|
+
defaultSize: 30,
|
|
137
|
+
minSize: 6,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export const HorizontalAnimated: Story = {
|
|
142
|
+
render: ToolbarStory,
|
|
79
143
|
args: {
|
|
80
|
-
|
|
81
|
-
|
|
144
|
+
orientation: 'horizontal',
|
|
145
|
+
transition: 250,
|
|
82
146
|
},
|
|
83
147
|
};
|
|
@@ -5,14 +5,31 @@
|
|
|
5
5
|
import { mx } from '@dxos/ui-theme';
|
|
6
6
|
import { type ComponentFunction, type Theme } from '@dxos/ui-types';
|
|
7
7
|
|
|
8
|
-
export type SplitterStyleProps = {
|
|
8
|
+
export type SplitterStyleProps = {
|
|
9
|
+
orientation?: 'horizontal' | 'vertical';
|
|
10
|
+
};
|
|
9
11
|
|
|
10
|
-
const root: ComponentFunction<SplitterStyleProps> = (
|
|
12
|
+
const root: ComponentFunction<SplitterStyleProps> = ({ orientation }, ...etc) =>
|
|
13
|
+
mx('relative flex w-full h-full overflow-hidden', orientation === 'vertical' ? 'flex-col' : 'flex-row', ...etc);
|
|
11
14
|
|
|
12
15
|
const panel: ComponentFunction<SplitterStyleProps> = (_props, ...etc) =>
|
|
13
|
-
mx('
|
|
16
|
+
mx('relative grid overflow-hidden min-w-0 min-h-0', ...etc);
|
|
17
|
+
|
|
18
|
+
// A 7px grab area, absolutely positioned and centered on the split point (the component sets the offset),
|
|
19
|
+
// containing a persistent 1px divider line that brightens on hover/focus/active.
|
|
20
|
+
const handle: ComponentFunction<SplitterStyleProps> = ({ orientation }, ...etc) =>
|
|
21
|
+
mx(
|
|
22
|
+
'group absolute z-10 touch-none select-none',
|
|
23
|
+
'before:absolute before:block before:bg-separator',
|
|
24
|
+
'before:transition-colors before:duration-100 before:ease-in-out hover:before:bg-focus-ring-subtle focus-visible:before:bg-focus-ring-subtle active:before:bg-focus-ring-subtle',
|
|
25
|
+
orientation === 'vertical'
|
|
26
|
+
? 'h-[7px] cursor-row-resize before:inset-x-0 before:top-1/2 before:-translate-y-1/2 before:h-px'
|
|
27
|
+
: 'w-[7px] cursor-col-resize before:inset-y-0 before:left-1/2 before:-translate-x-1/2 before:w-px',
|
|
28
|
+
...etc,
|
|
29
|
+
);
|
|
14
30
|
|
|
15
31
|
export const splitterTheme: Theme<SplitterStyleProps> = {
|
|
16
32
|
root,
|
|
17
33
|
panel,
|
|
34
|
+
handle,
|
|
18
35
|
};
|