@dxos/react-ui 0.9.0 → 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-5SPBSIWS.mjs → chunk-CMHHVHX3.mjs} +14 -1
- package/dist/lib/browser/chunk-CMHHVHX3.mjs.map +7 -0
- package/dist/lib/browser/{chunk-7JFD5ZHZ.mjs → chunk-GTHV4WYK.mjs} +141 -254
- package/dist/lib/browser/chunk-GTHV4WYK.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1553 -1274
- 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-TTEL2FP2.mjs → chunk-3VSKWNCQ.mjs} +141 -254
- package/dist/lib/node-esm/chunk-3VSKWNCQ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FPVTVXND.mjs → chunk-P4KFQGJI.mjs} +14 -1
- package/dist/lib/node-esm/chunk-P4KFQGJI.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1553 -1274
- 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 +4 -2
- package/dist/types/src/components/Button/Button.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.d.ts +0 -1
- package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.stories.d.ts +37 -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 +33 -0
- package/dist/types/src/components/Button/SystemIconButton.d.ts.map +1 -0
- 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/ToggleIconButton.d.ts +15 -0
- package/dist/types/src/components/Button/ToggleIconButton.d.ts.map +1 -0
- package/dist/types/src/components/Button/index.d.ts +3 -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 +32 -26
- package/dist/types/src/components/Card/Card.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.stories.d.ts +3 -3
- package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
- package/dist/types/src/components/Card/Card.theme.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/Clipboard/index.d.ts +1 -0
- package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
- package/dist/types/src/components/Column/Column.d.ts +20 -2
- package/dist/types/src/components/Column/Column.d.ts.map +1 -1
- package/dist/types/src/components/Column/Column.theme.d.ts +8 -0
- package/dist/types/src/components/Column/Column.theme.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/Message/Message.theme.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/TextTooltip.d.ts +19 -0
- package/dist/types/src/components/Tooltip/TextTooltip.d.ts.map +1 -0
- 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/Tooltip/index.d.ts +1 -0
- package/dist/types/src/components/Tooltip/index.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/testing/Loading.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 +13 -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 +25 -4
- package/src/components/Button/IconButton.stories.tsx +81 -1
- package/src/components/Button/IconButton.tsx +2 -4
- 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 +264 -0
- package/src/components/Button/ToggleGroup.tsx +2 -2
- package/src/components/Button/ToggleIconButton.tsx +32 -0
- package/src/components/Button/index.ts +3 -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 +71 -29
- package/src/components/Card/Card.theme.ts +27 -9
- package/src/components/Card/Card.tsx +176 -99
- package/src/components/Carousel/Carousel.stories.tsx +42 -18
- package/src/components/Carousel/Carousel.tsx +169 -33
- package/src/components/Column/Column.theme.ts +32 -4
- package/src/components/Column/Column.tsx +39 -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 -11
- package/src/components/Message/Message.tsx +6 -6
- package/src/components/Panel/Panel.theme.ts +2 -1
- package/src/components/Panel/Panel.tsx +1 -1
- package/src/components/Popover/Popover.theme.ts +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 -8
- package/src/components/Toast/Toast.tsx +16 -15
- package/src/components/Toolbar/Toolbar.tsx +10 -10
- package/src/components/Tooltip/TextTooltip.tsx +54 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +2 -2
- package/src/components/Tooltip/Tooltip.tsx +3 -3
- package/src/components/Tooltip/index.ts +1 -0
- 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/Loading.tsx +2 -1
- package/src/testing/decorators/withLayout.tsx +2 -2
- package/src/theme/defaultTheme.ts +0 -4
- package/src/theme/index.ts +0 -2
- package/src/translations.ts +18 -0
- package/src/util/slots.ts +5 -5
- package/dist/lib/browser/chunk-5SPBSIWS.mjs.map +0 -7
- package/dist/lib/browser/chunk-7JFD5ZHZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FPVTVXND.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TTEL2FP2.mjs.map +0 -7
- package/dist/types/src/components/Input/constants.d.ts +0 -2
- 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 -5
- 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
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { createContext } 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, { type
|
|
8
|
+
import React, { type ComponentPropsWithRef, type CSSProperties, forwardRef } from 'react';
|
|
9
9
|
import { useTranslation } from 'react-i18next';
|
|
10
10
|
|
|
11
11
|
import { useId } from '@dxos/react-hooks';
|
|
@@ -141,15 +141,15 @@ const MessageTitle = forwardRef<HTMLDivElement, MessageTitleProps>(
|
|
|
141
141
|
return (
|
|
142
142
|
<Column.Row classNames={tx('message.header', {}, classNames)} ref={forwardedRef}>
|
|
143
143
|
{icon && (
|
|
144
|
-
<
|
|
144
|
+
<Column.Block>
|
|
145
145
|
<Icon icon={icon} />
|
|
146
|
-
</
|
|
146
|
+
</Column.Block>
|
|
147
147
|
)}
|
|
148
148
|
<h2 className={tx('message.title', {}, classNames)} id={titleId}>
|
|
149
149
|
{children}
|
|
150
150
|
</h2>
|
|
151
151
|
{onClose && (
|
|
152
|
-
<
|
|
152
|
+
<Column.Block end>
|
|
153
153
|
<IconButton
|
|
154
154
|
variant='ghost'
|
|
155
155
|
icon='ph--x--regular'
|
|
@@ -158,7 +158,7 @@ const MessageTitle = forwardRef<HTMLDivElement, MessageTitleProps>(
|
|
|
158
158
|
label={t('toolbar-close.label')}
|
|
159
159
|
onClick={onClose}
|
|
160
160
|
/>
|
|
161
|
-
</
|
|
161
|
+
</Column.Block>
|
|
162
162
|
)}
|
|
163
163
|
</Column.Row>
|
|
164
164
|
);
|
|
@@ -204,6 +204,6 @@ export const Message = {
|
|
|
204
204
|
|
|
205
205
|
export const Callout = Message;
|
|
206
206
|
|
|
207
|
-
export type { MessageRootProps, MessageTitleProps
|
|
207
|
+
export type { MessageContentProps, MessageRootProps, MessageTitleProps };
|
|
208
208
|
|
|
209
209
|
export { messageIcons };
|
|
@@ -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
|
|
|
@@ -13,7 +13,7 @@ export type PopoverStyleProps = Partial<{
|
|
|
13
13
|
|
|
14
14
|
const content: ComponentFunction<PopoverStyleProps> = ({ elevation }, ...etc) =>
|
|
15
15
|
mx(
|
|
16
|
-
'dx-popover-surface border border-separator rounded-sm',
|
|
16
|
+
'dx-popover-surface overflow-hidden border border-separator rounded-sm',
|
|
17
17
|
surfaceShadow({ elevation: 'positioned' }),
|
|
18
18
|
surfaceZIndex({ elevation, level: 'menu' }),
|
|
19
19
|
'dx-focus-ring',
|
|
@@ -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
|
};
|