@dxos/react-ui 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0
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/index.mjs +1606 -1073
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +1941 -1406
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +1606 -1073
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/Avatars/Avatar.stories.d.ts +2 -2
- package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
- package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +0 -1
- package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
- package/dist/types/src/components/Buttons/Button.stories.d.ts +10 -44
- package/dist/types/src/components/Buttons/Button.stories.d.ts.map +1 -1
- package/dist/types/src/components/Buttons/IconButton.d.ts +4 -5
- package/dist/types/src/components/Buttons/IconButton.d.ts.map +1 -1
- package/dist/types/src/components/Buttons/IconButton.stories.d.ts +7 -6
- package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +1 -1
- package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +1 -1
- package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +1 -4
- package/dist/types/src/components/Buttons/ToggleGroup.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 +2 -1
- package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
- package/dist/types/src/components/Clipboard/index.d.ts +2 -2
- package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
- package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +2 -2
- package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/Dialogs/Dialog.d.ts +2 -2
- package/dist/types/src/components/Dialogs/Dialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +2 -2
- package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.d.ts +1 -1
- package/dist/types/src/components/Input/Input.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.stories.d.ts +33 -159
- package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
- package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +1 -1
- package/dist/types/src/components/Lists/Tree.stories.d.ts.map +1 -1
- package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +1 -1
- package/dist/types/src/components/Lists/Treegrid.stories.d.ts +1 -1
- package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +1 -1
- 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/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 +15 -6
- package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.stories.d.ts +5 -1
- package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
- package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -1
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.stories.d.ts +2 -2
- package/dist/types/src/components/Toast/Toast.stories.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 +94 -20
- package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +41 -17
- package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +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/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 +1 -1
- package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
- package/dist/types/src/playground/Custom.stories.d.ts +8 -0
- package/dist/types/src/playground/Custom.stories.d.ts.map +1 -0
- package/dist/types/src/testing/decorators/withVariants.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -13
- package/src/components/Avatars/Avatar.stories.tsx +27 -27
- package/src/components/Avatars/Avatar.tsx +1 -1
- package/src/components/Avatars/AvatarGroup.stories.tsx +4 -5
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +2 -2
- package/src/components/Buttons/Button.stories.tsx +19 -14
- package/src/components/Buttons/IconButton.stories.tsx +9 -10
- package/src/components/Buttons/IconButton.tsx +8 -33
- package/src/components/Buttons/Toggle.stories.tsx +2 -2
- package/src/components/Buttons/ToggleGroup.stories.tsx +3 -7
- package/src/components/Clipboard/CopyButton.tsx +22 -24
- package/src/components/Dialogs/AlertDialog.stories.tsx +4 -11
- package/src/components/Dialogs/Dialog.stories.tsx +3 -3
- package/src/components/Dialogs/Dialog.tsx +7 -4
- package/src/components/Input/Input.stories.tsx +67 -56
- package/src/components/Input/Input.tsx +1 -0
- package/src/components/Lists/Tree.stories.tsx +2 -2
- package/src/components/Lists/Treegrid.stories.tsx +12 -12
- package/src/components/Main/Main.stories.tsx +2 -2
- package/src/components/Menus/ContextMenu.stories.tsx +2 -2
- package/src/components/Menus/DropdownMenu.stories.tsx +2 -2
- package/src/components/Message/Message.stories.tsx +3 -3
- package/src/components/Popover/Popover.stories.tsx +2 -2
- package/src/components/Popover/Popover.tsx +8 -4
- package/src/components/ScrollArea/ScrollArea.stories.tsx +2 -2
- package/src/components/ScrollArea/ScrollArea.tsx +3 -0
- package/src/components/Toast/Toast.stories.tsx +15 -10
- package/src/components/Toolbar/Toolbar.stories.tsx +2 -2
- package/src/components/Tooltip/Tooltip.stories.tsx +43 -18
- package/src/components/Tooltip/Tooltip.tsx +748 -58
- package/src/components/index.ts +1 -1
- package/src/playground/Controls.stories.tsx +2 -2
- package/src/playground/Custom.stories.tsx +137 -0
- package/src/playground/Typography.stories.tsx +2 -2
|
@@ -6,7 +6,7 @@ import React from 'react';
|
|
|
6
6
|
|
|
7
7
|
import { faker } from '@dxos/random';
|
|
8
8
|
|
|
9
|
-
import { Treegrid
|
|
9
|
+
import { Treegrid } from './Treegrid';
|
|
10
10
|
import { withTheme } from '../../testing';
|
|
11
11
|
import { Icon } from '../Icon';
|
|
12
12
|
|
|
@@ -122,30 +122,30 @@ const flattenedContent = Array.from(visitor(content, () => true));
|
|
|
122
122
|
|
|
123
123
|
const DefaultStory = () => {
|
|
124
124
|
return (
|
|
125
|
-
<
|
|
125
|
+
<Treegrid.Root gridTemplateColumns='1fr'>
|
|
126
126
|
{flattenedContent.map(({ node, parentOf, path }) => {
|
|
127
127
|
return (
|
|
128
|
-
<
|
|
128
|
+
<Treegrid.Row
|
|
129
129
|
key={node.id}
|
|
130
|
-
id={path.join(
|
|
131
|
-
{...(parentOf && { parentOf: parentOf.join(
|
|
130
|
+
id={path.join(Treegrid.PATH_SEPARATOR)}
|
|
131
|
+
{...(parentOf && { parentOf: parentOf.join(Treegrid.PARENT_OF_SEPARATOR) })}
|
|
132
132
|
>
|
|
133
|
-
<
|
|
133
|
+
<Treegrid.Cell indent classNames='flex items-center'>
|
|
134
134
|
{node.icon && <Icon icon={node.icon} classNames='is-[1em] bs-[1em] mlb-1' />}
|
|
135
135
|
{node.title}
|
|
136
|
-
</
|
|
137
|
-
</
|
|
136
|
+
</Treegrid.Cell>
|
|
137
|
+
</Treegrid.Row>
|
|
138
138
|
);
|
|
139
139
|
})}
|
|
140
|
-
</
|
|
140
|
+
</Treegrid.Root>
|
|
141
141
|
);
|
|
142
142
|
};
|
|
143
143
|
|
|
144
|
-
export const Default = {};
|
|
145
|
-
|
|
146
144
|
export default {
|
|
147
145
|
title: 'ui/react-ui-core/Treegrid',
|
|
148
|
-
component:
|
|
146
|
+
component: Treegrid.Root,
|
|
149
147
|
render: DefaultStory,
|
|
150
148
|
decorators: [withTheme],
|
|
151
149
|
};
|
|
150
|
+
|
|
151
|
+
export const Default = {};
|
|
@@ -22,7 +22,7 @@ const ComplementarySidebarToggle = () => {
|
|
|
22
22
|
return <Button onClick={toggleComplementarySidebar}>Toggle complementary sidebar</Button>;
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
const
|
|
25
|
+
const DefaultStory = (_args: StoryMainArgs) => {
|
|
26
26
|
return (
|
|
27
27
|
<Main.Root>
|
|
28
28
|
<Main.Overlay />
|
|
@@ -48,7 +48,7 @@ const StoryMain = (_args: StoryMainArgs) => {
|
|
|
48
48
|
export default {
|
|
49
49
|
title: 'ui/react-ui-core/Main',
|
|
50
50
|
component: Main.Root,
|
|
51
|
-
render:
|
|
51
|
+
render: DefaultStory,
|
|
52
52
|
decorators: [withTheme],
|
|
53
53
|
parameters: { chromatic: { disableSnapshot: false } },
|
|
54
54
|
};
|
|
@@ -9,7 +9,7 @@ import React from 'react';
|
|
|
9
9
|
import { ContextMenu } from './ContextMenu';
|
|
10
10
|
import { withTheme } from '../../testing';
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const DefaultStory = () => {
|
|
13
13
|
// NOTE(thure): Since long-tap will select text in some OSs, apply `select-none` to `ContextMenu.Trigger` where possible.
|
|
14
14
|
return (
|
|
15
15
|
<ContextMenu.Root>
|
|
@@ -94,7 +94,7 @@ const StorybookContextMenu = () => {
|
|
|
94
94
|
export default {
|
|
95
95
|
title: 'ui/react-ui-core/ContextMenu',
|
|
96
96
|
component: ContextMenu,
|
|
97
|
-
render:
|
|
97
|
+
render: DefaultStory,
|
|
98
98
|
decorators: [withTheme],
|
|
99
99
|
parameters: { chromatic: { disableSnapshot: false } },
|
|
100
100
|
};
|
|
@@ -10,7 +10,7 @@ import { DropdownMenu } from './DropdownMenu';
|
|
|
10
10
|
import { withTheme } from '../../testing';
|
|
11
11
|
import { Button } from '../Buttons';
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const DefaultStory = () => {
|
|
14
14
|
return (
|
|
15
15
|
<DropdownMenu.Root defaultOpen>
|
|
16
16
|
<DropdownMenu.Trigger asChild>
|
|
@@ -94,7 +94,7 @@ const StorybookDropdownMenu = () => {
|
|
|
94
94
|
export default {
|
|
95
95
|
title: 'ui/react-ui-core/DropdownMenu',
|
|
96
96
|
component: DropdownMenu,
|
|
97
|
-
render:
|
|
97
|
+
render: DefaultStory,
|
|
98
98
|
decorators: [withTheme],
|
|
99
99
|
parameters: { chromatic: { disableSnapshot: false } },
|
|
100
100
|
};
|
|
@@ -12,13 +12,13 @@ import { type MessageValence } from '@dxos/react-ui-types';
|
|
|
12
12
|
import { Message } from './Message';
|
|
13
13
|
import { withTheme } from '../../testing';
|
|
14
14
|
|
|
15
|
-
type
|
|
15
|
+
type StoryProps = {
|
|
16
16
|
valence: MessageValence;
|
|
17
17
|
title: string;
|
|
18
18
|
body: string;
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const
|
|
21
|
+
const DefaultStory = ({ valence, title, body }: StoryProps) => (
|
|
22
22
|
<Message.Root valence={valence}>
|
|
23
23
|
<Message.Title>
|
|
24
24
|
<Info className='inline w-5 h-5 mb-1' weight='duotone' /> {title}
|
|
@@ -30,7 +30,7 @@ const StoryMessage = ({ valence, title, body }: StoryMessageProps) => (
|
|
|
30
30
|
export default {
|
|
31
31
|
title: 'ui/react-ui-core/Message',
|
|
32
32
|
component: Message,
|
|
33
|
-
render:
|
|
33
|
+
render: DefaultStory,
|
|
34
34
|
decorators: [withTheme],
|
|
35
35
|
parameters: { chromatic: { disableSnapshot: false } },
|
|
36
36
|
};
|
|
@@ -14,7 +14,7 @@ import { Button } from '../Buttons';
|
|
|
14
14
|
|
|
15
15
|
faker.seed(1234);
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const DefaultStory = ({ openTrigger, children }: PropsWithChildren<{ openTrigger: ReactNode }>) => {
|
|
18
18
|
return (
|
|
19
19
|
<Popover.Root defaultOpen>
|
|
20
20
|
<Popover.Trigger asChild>{openTrigger}</Popover.Trigger>
|
|
@@ -31,7 +31,7 @@ const StorybookPopover = ({ openTrigger, children }: PropsWithChildren<{ openTri
|
|
|
31
31
|
export default {
|
|
32
32
|
title: 'ui/react-ui-core/Popover',
|
|
33
33
|
component: Popover,
|
|
34
|
-
render:
|
|
34
|
+
render: DefaultStory,
|
|
35
35
|
decorators: [withTheme],
|
|
36
36
|
parameters: { chromatic: { disableSnapshot: false } },
|
|
37
37
|
};
|
|
@@ -246,13 +246,13 @@ PopoverPortal.displayName = PORTAL_NAME;
|
|
|
246
246
|
|
|
247
247
|
const CONTENT_NAME = 'PopoverContent';
|
|
248
248
|
|
|
249
|
-
|
|
249
|
+
type PopoverContentProps = ThemedClassName<PopoverContentTypeProps> & {
|
|
250
250
|
/**
|
|
251
251
|
* Used to force mounting when more control is needed. Useful when
|
|
252
252
|
* controlling animation with React animation libraries.
|
|
253
253
|
*/
|
|
254
|
-
forceMount?:
|
|
255
|
-
}
|
|
254
|
+
forceMount?: boolean;
|
|
255
|
+
};
|
|
256
256
|
|
|
257
257
|
const PopoverContent = forwardRef<PopoverContentTypeElement, PopoverContentProps>(
|
|
258
258
|
(props: ScopedProps<PopoverContentProps>, forwardedRef) => {
|
|
@@ -277,7 +277,8 @@ PopoverContent.displayName = CONTENT_NAME;
|
|
|
277
277
|
/* ----------------------------------------------------------------------------------------------- */
|
|
278
278
|
|
|
279
279
|
type PopoverContentTypeElement = PopoverContentImplElement;
|
|
280
|
-
interface PopoverContentTypeProps
|
|
280
|
+
export interface PopoverContentTypeProps
|
|
281
|
+
extends Omit<PopoverContentImplProps, 'trapFocus' | 'disableOutsidePointerEvents'> {}
|
|
281
282
|
|
|
282
283
|
const PopoverContentModal = forwardRef<PopoverContentTypeElement, PopoverContentTypeProps>(
|
|
283
284
|
(props: ScopedProps<PopoverContentTypeProps>, forwardedRef) => {
|
|
@@ -571,6 +572,8 @@ const PopoverViewport = forwardRef<HTMLDivElement, PopoverViewportProps>(
|
|
|
571
572
|
|
|
572
573
|
const getState = (open: boolean) => (open ? 'open' : 'closed');
|
|
573
574
|
|
|
575
|
+
type PopoverContentInteractOutsideEvent = Parameters<NonNullable<PopoverContentProps['onInteractOutside']>>[0];
|
|
576
|
+
|
|
574
577
|
export const Popover = {
|
|
575
578
|
Root: PopoverRoot,
|
|
576
579
|
Anchor: PopoverAnchor,
|
|
@@ -595,4 +598,5 @@ export type {
|
|
|
595
598
|
PopoverCloseProps,
|
|
596
599
|
PopoverArrowProps,
|
|
597
600
|
PopoverViewportProps,
|
|
601
|
+
PopoverContentInteractOutsideEvent,
|
|
598
602
|
};
|
|
@@ -14,7 +14,7 @@ import { withTheme } from '../../testing';
|
|
|
14
14
|
|
|
15
15
|
faker.seed(1234);
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const DefaultStory = ({ children }: PropsWithChildren<{}>) => {
|
|
18
18
|
return (
|
|
19
19
|
<ScrollArea.Root
|
|
20
20
|
classNames={['is-[300px] bs-[400px] rounded', groupSurface, surfaceShadow({ elevation: 'positioned' })]}
|
|
@@ -36,7 +36,7 @@ const StorybookScrollArea = ({ children }: PropsWithChildren<{}>) => {
|
|
|
36
36
|
export default {
|
|
37
37
|
title: 'ui/react-ui-core/Scroll area',
|
|
38
38
|
component: ScrollArea,
|
|
39
|
-
render:
|
|
39
|
+
render: DefaultStory,
|
|
40
40
|
decorators: [withTheme],
|
|
41
41
|
parameters: { chromatic: { disableSnapshot: false } },
|
|
42
42
|
};
|
|
@@ -23,6 +23,9 @@ type ScrollAreaVariant = 'coarse' | 'fine';
|
|
|
23
23
|
|
|
24
24
|
type ScrollAreaRootProps = ThemedClassName<ScrollAreaPrimitiveRootProps>;
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated
|
|
28
|
+
*/
|
|
26
29
|
const ScrollAreaRoot = forwardRef<HTMLDivElement, ScrollAreaRootProps>(({ classNames, ...props }, forwardedRef) => {
|
|
27
30
|
const { tx } = useThemeContext();
|
|
28
31
|
return (
|
|
@@ -13,27 +13,27 @@ import { Button } from '../Buttons';
|
|
|
13
13
|
type ActionTriggerProps = { altText: string; trigger: ReactNode };
|
|
14
14
|
|
|
15
15
|
type StorybookToastProps = Partial<{
|
|
16
|
-
openTrigger: string;
|
|
17
16
|
title: string;
|
|
18
17
|
description: string;
|
|
19
18
|
actionTriggers: ActionTriggerProps[];
|
|
19
|
+
openTrigger: string;
|
|
20
20
|
closeTrigger: ReactNode;
|
|
21
21
|
}>;
|
|
22
22
|
|
|
23
|
-
const
|
|
23
|
+
const DefaultStory = ({ title, description, actionTriggers, openTrigger, closeTrigger }: StorybookToastProps) => {
|
|
24
24
|
const [open, setOpen] = useState(true);
|
|
25
25
|
return (
|
|
26
26
|
<Toast.Provider>
|
|
27
|
-
<Button onClick={() => setOpen(true)}>{
|
|
27
|
+
<Button onClick={() => setOpen(true)}>{openTrigger}</Button>
|
|
28
28
|
<Toast.Viewport />
|
|
29
29
|
<Toast.Root open={open} onOpenChange={setOpen}>
|
|
30
30
|
<Toast.Body>
|
|
31
|
-
<Toast.Title>{
|
|
32
|
-
<Toast.Description>{
|
|
31
|
+
<Toast.Title>{title}</Toast.Title>
|
|
32
|
+
<Toast.Description>{description}</Toast.Description>
|
|
33
33
|
</Toast.Body>
|
|
34
34
|
<Toast.Actions>
|
|
35
|
-
<Toast.Close asChild={typeof
|
|
36
|
-
{(
|
|
35
|
+
<Toast.Close asChild={typeof closeTrigger !== 'string'}>{closeTrigger}</Toast.Close>
|
|
36
|
+
{(actionTriggers || []).map(({ altText, trigger }: ActionTriggerProps, index: number) => (
|
|
37
37
|
<Toast.Action key={index} altText={altText} asChild={typeof trigger !== 'string'}>
|
|
38
38
|
{trigger}
|
|
39
39
|
</Toast.Action>
|
|
@@ -47,7 +47,7 @@ const StorybookToast = (props: StorybookToastProps) => {
|
|
|
47
47
|
export default {
|
|
48
48
|
title: 'ui/react-ui-core/Toast',
|
|
49
49
|
component: Toast,
|
|
50
|
-
render:
|
|
50
|
+
render: DefaultStory,
|
|
51
51
|
decorators: [withTheme],
|
|
52
52
|
parameters: { chromatic: { disableSnapshot: false } },
|
|
53
53
|
};
|
|
@@ -55,9 +55,14 @@ export default {
|
|
|
55
55
|
export const Default = {
|
|
56
56
|
args: {
|
|
57
57
|
openTrigger: 'Open toast',
|
|
58
|
-
title: '
|
|
58
|
+
title: 'This is a toast',
|
|
59
59
|
description: 'This goes away on its own with a timer.',
|
|
60
|
-
actionTriggers: [
|
|
60
|
+
actionTriggers: [
|
|
61
|
+
{
|
|
62
|
+
altText: 'Press F5 to reload the page',
|
|
63
|
+
trigger: <Button variant='primary'>Reload</Button>,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
61
66
|
closeTrigger: <Button>Close</Button>,
|
|
62
67
|
},
|
|
63
68
|
parameters: {
|
|
@@ -14,7 +14,7 @@ import { Select } from '../Select';
|
|
|
14
14
|
|
|
15
15
|
type StorybookToolbarProps = {};
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const DefaultStory = (props: StorybookToolbarProps) => {
|
|
18
18
|
return (
|
|
19
19
|
<Toolbar.Root>
|
|
20
20
|
{/* TODO(burdon): Should be fixed width (regardless of selection). */}
|
|
@@ -72,7 +72,7 @@ const StorybookToolbar = (props: StorybookToolbarProps) => {
|
|
|
72
72
|
export default {
|
|
73
73
|
title: 'ui/react-ui-core/Toolbar',
|
|
74
74
|
component: Toolbar,
|
|
75
|
-
render:
|
|
75
|
+
render: DefaultStory,
|
|
76
76
|
decorators: [withTheme],
|
|
77
77
|
parameters: { chromatic: { disableSnapshot: false } },
|
|
78
78
|
};
|
|
@@ -3,55 +3,80 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import '@dxos-theme';
|
|
6
|
-
|
|
7
6
|
import React from 'react';
|
|
8
7
|
|
|
8
|
+
import { faker } from '@dxos/random';
|
|
9
|
+
|
|
9
10
|
import { Tooltip } from './Tooltip';
|
|
10
11
|
import { withTheme } from '../../testing';
|
|
11
12
|
import { Button } from '../Buttons';
|
|
12
13
|
|
|
13
|
-
type
|
|
14
|
-
content: string;
|
|
14
|
+
type StoryProps = {
|
|
15
|
+
tooltips: { label: string; content: string }[];
|
|
15
16
|
defaultOpen?: boolean;
|
|
16
17
|
};
|
|
17
18
|
|
|
18
|
-
const
|
|
19
|
-
<Tooltip.Provider>
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
</Tooltip.Content>
|
|
28
|
-
</Tooltip.Root>
|
|
19
|
+
const DefaultStory = ({ tooltips, defaultOpen }: StoryProps) => (
|
|
20
|
+
<Tooltip.Provider defaultOpen={defaultOpen}>
|
|
21
|
+
<div role='none' className='is-32'>
|
|
22
|
+
{tooltips.map(({ label, content }, i) => (
|
|
23
|
+
<Tooltip.Trigger asChild key={i} content={content} side='right'>
|
|
24
|
+
<Button classNames='block is-full'>{label}</Button>
|
|
25
|
+
</Tooltip.Trigger>
|
|
26
|
+
))}
|
|
27
|
+
</div>
|
|
29
28
|
</Tooltip.Provider>
|
|
30
29
|
);
|
|
31
30
|
|
|
32
31
|
export default {
|
|
33
32
|
title: 'ui/react-ui-core/Tooltip',
|
|
34
33
|
component: Tooltip,
|
|
35
|
-
render:
|
|
34
|
+
render: DefaultStory,
|
|
36
35
|
decorators: [withTheme],
|
|
37
36
|
parameters: { chromatic: { disableSnapshot: false } },
|
|
38
37
|
};
|
|
39
38
|
|
|
40
39
|
export const Default = {
|
|
41
40
|
args: {
|
|
42
|
-
|
|
41
|
+
tooltips: [
|
|
42
|
+
{
|
|
43
|
+
label: 'Tooltip trigger',
|
|
44
|
+
content: 'This is the tooltip content',
|
|
45
|
+
},
|
|
46
|
+
],
|
|
43
47
|
},
|
|
44
48
|
parameters: {
|
|
45
49
|
chromatic: { delay: 500 },
|
|
46
50
|
},
|
|
47
51
|
};
|
|
48
52
|
|
|
49
|
-
export const
|
|
53
|
+
export const DefaultOpen = {
|
|
50
54
|
args: {
|
|
51
55
|
defaultOption: true,
|
|
52
|
-
|
|
56
|
+
tooltips: [
|
|
57
|
+
{
|
|
58
|
+
label: 'Tooltip trigger',
|
|
59
|
+
content: 'This is the tooltip content',
|
|
60
|
+
},
|
|
61
|
+
],
|
|
53
62
|
},
|
|
54
63
|
parameters: {
|
|
55
64
|
chromatic: { delay: 500 },
|
|
56
65
|
},
|
|
57
66
|
};
|
|
67
|
+
|
|
68
|
+
export const StressTest = {
|
|
69
|
+
args: {
|
|
70
|
+
defaultOption: true,
|
|
71
|
+
tooltips: faker.helpers.multiple(
|
|
72
|
+
() => ({
|
|
73
|
+
label: faker.lorem.words(2),
|
|
74
|
+
content: faker.lorem.words(5),
|
|
75
|
+
}),
|
|
76
|
+
{ count: 32 },
|
|
77
|
+
),
|
|
78
|
+
},
|
|
79
|
+
parameters: {
|
|
80
|
+
chromatic: { disableSnapshot: true },
|
|
81
|
+
},
|
|
82
|
+
};
|