@dxos/react-ui 0.8.4-main.66e292d → 0.8.4-main.69d29f4
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-CEKVHJ27.mjs +774 -0
- package/dist/lib/browser/chunk-CEKVHJ27.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +3065 -66
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +31 -43
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/chunk-2NHEX4AD.mjs +776 -0
- package/dist/lib/node-esm/chunk-2NHEX4AD.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +3065 -66
- 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 +31 -43
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/components/Button/Button.d.ts +1 -1
- package/dist/types/src/components/Button/Button.d.ts.map +1 -1
- package/dist/types/src/components/Button/IconButton.d.ts +2 -1
- package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
- package/dist/types/src/components/Button/ToggleGroup.d.ts +4 -4
- package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +4 -4
- package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
- package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.d.ts +18 -9
- package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts +7 -5
- package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
- package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
- package/dist/types/src/components/Icon/Icon.d.ts +1 -1
- package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.d.ts +5 -2
- package/dist/types/src/components/Input/Input.d.ts.map +1 -1
- package/dist/types/src/components/Input/Input.stories.d.ts +1 -1
- package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
- package/dist/types/src/components/List/List.d.ts +1 -1
- package/dist/types/src/components/List/List.d.ts.map +1 -1
- package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
- package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
- package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
- package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
- package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +1 -1
- package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
- package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
- package/dist/types/src/components/Menu/index.d.ts.map +1 -0
- package/dist/types/src/components/Message/Message.d.ts +1 -1
- package/dist/types/src/components/Message/Message.d.ts.map +1 -1
- package/dist/types/src/components/Message/Message.stories.d.ts +1 -1
- package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
- package/dist/types/src/components/Popover/Popover.d.ts +1 -1
- package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +9 -7
- package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +4 -0
- package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +4 -2
- package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +2 -1
- package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Select/Select.d.ts +9 -9
- package/dist/types/src/components/Separator/Separator.d.ts +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/ThemeProvider/ThemeProvider.d.ts +1 -2
- package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
- package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
- package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
- package/dist/types/src/components/Toast/Toast.d.ts +4 -4
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +10 -10
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Tooltip/Tooltip.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 +1 -1
- package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
- package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
- package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withLayout.d.ts +3 -3
- package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +1 -1
- package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
- package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
- package/dist/types/src/util/index.d.ts +1 -2
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +31 -26
- package/src/components/Avatars/Avatar.stories.tsx +2 -2
- package/src/components/Avatars/Avatar.tsx +1 -1
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Button/IconButton.tsx +8 -3
- package/src/components/Clipboard/CopyButton.tsx +3 -3
- package/src/components/DensityProvider/DensityProvider.tsx +1 -1
- package/src/components/Dialog/Dialog.stories.tsx +47 -17
- package/src/components/Dialog/Dialog.tsx +140 -40
- package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
- package/src/components/Icon/Icon.stories.tsx +1 -1
- package/src/components/Icon/Icon.tsx +1 -1
- package/src/components/Input/Input.stories.tsx +2 -2
- package/src/components/Input/Input.tsx +13 -4
- package/src/components/List/List.stories.tsx +16 -12
- package/src/components/List/List.tsx +1 -1
- package/src/components/{Menus → Menu}/DropdownMenu.tsx +57 -55
- package/src/components/Message/Message.stories.tsx +1 -1
- package/src/components/Message/Message.tsx +30 -5
- package/src/components/Popover/Popover.tsx +35 -33
- package/src/components/ScrollArea/ScrollArea.stories.tsx +53 -3
- package/src/components/ScrollArea/ScrollArea.tsx +50 -4
- package/src/components/ScrollContainer/ScrollContainer.stories.tsx +2 -1
- package/src/components/ScrollContainer/ScrollContainer.tsx +90 -88
- package/src/components/Tag/Tag.stories.tsx +2 -2
- package/src/components/Tag/Tag.tsx +1 -1
- package/src/components/ThemeProvider/ThemeProvider.tsx +1 -3
- package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
- package/src/components/ThemeProvider/index.ts +3 -3
- package/src/components/Toolbar/Toolbar.tsx +23 -8
- package/src/components/Tooltip/Tooltip.tsx +22 -20
- package/src/components/index.ts +1 -1
- package/src/hooks/useDensityContext.ts +1 -1
- package/src/hooks/useElevationContext.ts +1 -1
- package/src/index.ts +1 -1
- package/src/testing/decorators/withLayout.tsx +22 -15
- package/src/testing/decorators/withLayoutVariants.tsx +3 -3
- package/src/testing/decorators/withTheme.tsx +3 -2
- package/src/util/index.ts +2 -2
- package/dist/lib/browser/chunk-N5GDJTT2.mjs +0 -4707
- package/dist/lib/browser/chunk-N5GDJTT2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SP7VQH72.mjs +0 -4709
- package/dist/lib/node-esm/chunk-SP7VQH72.mjs.map +0 -7
- package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
- package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
- package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
- package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
- package/dist/types/src/components/Menus/index.d.ts.map +0 -1
- package/dist/types/src/util/ThemedClassName.d.ts +0 -5
- package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
- package/dist/types/src/util/domino.d.ts +0 -18
- package/dist/types/src/util/domino.d.ts.map +0 -1
- package/src/util/ThemedClassName.ts +0 -7
- package/src/util/domino.ts +0 -53
- /package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -0
- /package/dist/types/src/components/{Menus → Menu}/DropdownMenu.stories.d.ts +0 -0
- /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
- /package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +0 -0
- /package/src/components/{Menus → Menu}/ContextMenu.tsx +0 -0
- /package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +0 -0
- /package/src/components/{Menus → Menu}/index.ts +0 -0
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
useListContext,
|
|
24
24
|
useListItemContext,
|
|
25
25
|
} from '@dxos/react-list';
|
|
26
|
-
import { type Density } from '@dxos/
|
|
26
|
+
import { type Density } from '@dxos/ui-types';
|
|
27
27
|
|
|
28
28
|
import { useDensityContext, useThemeContext } from '../../hooks';
|
|
29
29
|
import { type ThemedClassName } from '../../util';
|
|
@@ -35,9 +35,9 @@ import { type ThemedClassName } from '../../util';
|
|
|
35
35
|
|
|
36
36
|
type Direction = 'ltr' | 'rtl';
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
//
|
|
39
|
+
// DropdownMenu
|
|
40
|
+
//
|
|
41
41
|
|
|
42
42
|
const DROPDOWN_MENU_NAME = 'DropdownMenu';
|
|
43
43
|
|
|
@@ -97,9 +97,9 @@ const DropdownMenuRoot: FC<DropdownMenuRootProps> = (props: ScopedProps<Dropdown
|
|
|
97
97
|
|
|
98
98
|
DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
//
|
|
101
|
+
// DropdownMenuTrigger
|
|
102
|
+
//
|
|
103
103
|
|
|
104
104
|
const TRIGGER_NAME = 'DropdownMenuTrigger';
|
|
105
105
|
|
|
@@ -162,9 +162,9 @@ const DropdownMenuTrigger = forwardRef<DropdownMenuTriggerElement, DropdownMenuT
|
|
|
162
162
|
|
|
163
163
|
DropdownMenuTrigger.displayName = TRIGGER_NAME;
|
|
164
164
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
165
|
+
//
|
|
166
|
+
// DropdownMenuVirtualTrigger
|
|
167
|
+
//
|
|
168
168
|
|
|
169
169
|
const VIRTUAL_TRIGGER_NAME = 'DropdownMenuVirtualTrigger';
|
|
170
170
|
|
|
@@ -186,9 +186,9 @@ const DropdownMenuVirtualTrigger = (props: ScopedProps<DropdownMenuVirtualTrigge
|
|
|
186
186
|
|
|
187
187
|
DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
|
|
188
188
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
//
|
|
190
|
+
// DropdownMenuPortal
|
|
191
|
+
//
|
|
192
192
|
|
|
193
193
|
const PORTAL_NAME = 'DropdownMenuPortal';
|
|
194
194
|
|
|
@@ -203,9 +203,9 @@ const DropdownMenuPortal: FC<DropdownMenuPortalProps> = (props: ScopedProps<Drop
|
|
|
203
203
|
|
|
204
204
|
DropdownMenuPortal.displayName = PORTAL_NAME;
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
206
|
+
//
|
|
207
|
+
// DropdownMenuViewport
|
|
208
|
+
//
|
|
209
209
|
|
|
210
210
|
type DropdownMenuViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
|
|
211
211
|
asChild?: boolean;
|
|
@@ -223,9 +223,9 @@ const DropdownMenuViewport = forwardRef<HTMLDivElement, DropdownMenuViewportProp
|
|
|
223
223
|
},
|
|
224
224
|
);
|
|
225
225
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
226
|
+
//
|
|
227
|
+
// DropdownMenuContent
|
|
228
|
+
//
|
|
229
229
|
|
|
230
230
|
const CONTENT_NAME = 'DropdownMenuContent';
|
|
231
231
|
|
|
@@ -302,9 +302,9 @@ const DropdownMenuContent = forwardRef<DropdownMenuContentElement, DropdownMenuC
|
|
|
302
302
|
|
|
303
303
|
DropdownMenuContent.displayName = CONTENT_NAME;
|
|
304
304
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
305
|
+
//
|
|
306
|
+
// DropdownMenuGroup
|
|
307
|
+
//
|
|
308
308
|
|
|
309
309
|
const GROUP_NAME = 'DropdownMenuGroup';
|
|
310
310
|
|
|
@@ -322,9 +322,9 @@ const DropdownMenuGroup = forwardRef<DropdownMenuGroupElement, DropdownMenuGroup
|
|
|
322
322
|
|
|
323
323
|
DropdownMenuGroup.displayName = GROUP_NAME;
|
|
324
324
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
325
|
+
//
|
|
326
|
+
// DropdownMenuLabel
|
|
327
|
+
//
|
|
328
328
|
|
|
329
329
|
const LABEL_NAME = 'DropdownMenuLabel';
|
|
330
330
|
|
|
@@ -350,9 +350,9 @@ const DropdownMenuGroupLabel = forwardRef<DropdownMenuLabelElement, DropdownMenu
|
|
|
350
350
|
|
|
351
351
|
DropdownMenuGroupLabel.displayName = LABEL_NAME;
|
|
352
352
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
353
|
+
//
|
|
354
|
+
// DropdownMenuItem
|
|
355
|
+
//
|
|
356
356
|
|
|
357
357
|
const ITEM_NAME = 'DropdownMenuItem';
|
|
358
358
|
|
|
@@ -378,9 +378,9 @@ const DropdownMenuItem = forwardRef<DropdownMenuItemElement, DropdownMenuItemPro
|
|
|
378
378
|
|
|
379
379
|
DropdownMenuItem.displayName = ITEM_NAME;
|
|
380
380
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
381
|
+
//
|
|
382
|
+
// DropdownMenuCheckboxItem
|
|
383
|
+
//
|
|
384
384
|
|
|
385
385
|
const CHECKBOX_ITEM_NAME = 'DropdownMenuCheckboxItem';
|
|
386
386
|
|
|
@@ -406,9 +406,9 @@ const DropdownMenuCheckboxItem = forwardRef<DropdownMenuCheckboxItemElement, Dro
|
|
|
406
406
|
|
|
407
407
|
DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
|
|
408
408
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
409
|
+
//
|
|
410
|
+
// DropdownMenuRadioGroup
|
|
411
|
+
//
|
|
412
412
|
|
|
413
413
|
const RADIO_GROUP_NAME = 'DropdownMenuRadioGroup';
|
|
414
414
|
|
|
@@ -426,9 +426,9 @@ const DropdownMenuRadioGroup = forwardRef<DropdownMenuRadioGroupElement, Dropdow
|
|
|
426
426
|
|
|
427
427
|
DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
|
|
428
428
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
429
|
+
//
|
|
430
|
+
// DropdownMenuRadioItem
|
|
431
|
+
//
|
|
432
432
|
|
|
433
433
|
const RADIO_ITEM_NAME = 'DropdownMenuRadioItem';
|
|
434
434
|
|
|
@@ -454,9 +454,9 @@ const DropdownMenuRadioItem = forwardRef<DropdownMenuRadioItemElement, DropdownM
|
|
|
454
454
|
|
|
455
455
|
DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
|
|
456
456
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
457
|
+
//
|
|
458
|
+
// DropdownMenuItemIndicator
|
|
459
|
+
//
|
|
460
460
|
|
|
461
461
|
const INDICATOR_NAME = 'DropdownMenuItemIndicator';
|
|
462
462
|
|
|
@@ -474,9 +474,9 @@ const DropdownMenuItemIndicator = forwardRef<DropdownMenuItemIndicatorElement, D
|
|
|
474
474
|
|
|
475
475
|
DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
|
|
476
476
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
477
|
+
//
|
|
478
|
+
// DropdownMenuSeparator
|
|
479
|
+
//
|
|
480
480
|
|
|
481
481
|
const SEPARATOR_NAME = 'DropdownMenuSeparator';
|
|
482
482
|
|
|
@@ -502,9 +502,9 @@ const DropdownMenuSeparator = forwardRef<DropdownMenuSeparatorElement, DropdownM
|
|
|
502
502
|
|
|
503
503
|
DropdownMenuSeparator.displayName = SEPARATOR_NAME;
|
|
504
504
|
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
505
|
+
//
|
|
506
|
+
// DropdownMenuArrow
|
|
507
|
+
//
|
|
508
508
|
|
|
509
509
|
const ARROW_NAME = 'DropdownMenuArrow';
|
|
510
510
|
|
|
@@ -530,9 +530,9 @@ const DropdownMenuArrow = forwardRef<DropdownMenuArrowElement, DropdownMenuArrow
|
|
|
530
530
|
|
|
531
531
|
DropdownMenuArrow.displayName = ARROW_NAME;
|
|
532
532
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
533
|
+
//
|
|
534
|
+
// DropdownMenuSub
|
|
535
|
+
//
|
|
536
536
|
|
|
537
537
|
interface DropdownMenuSubProps {
|
|
538
538
|
children?: ReactNode;
|
|
@@ -557,9 +557,9 @@ const DropdownMenuSub: FC<DropdownMenuSubProps> = (props: ScopedProps<DropdownMe
|
|
|
557
557
|
);
|
|
558
558
|
};
|
|
559
559
|
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
560
|
+
//
|
|
561
|
+
// DropdownMenuSubTrigger
|
|
562
|
+
//
|
|
563
563
|
|
|
564
564
|
const SUB_TRIGGER_NAME = 'DropdownMenuSubTrigger';
|
|
565
565
|
|
|
@@ -577,9 +577,9 @@ const DropdownMenuSubTrigger = forwardRef<DropdownMenuSubTriggerElement, Dropdow
|
|
|
577
577
|
|
|
578
578
|
DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
|
|
579
579
|
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
580
|
+
//
|
|
581
|
+
// DropdownMenuSubContent
|
|
582
|
+
//
|
|
583
583
|
|
|
584
584
|
const SUB_CONTENT_NAME = 'DropdownMenuSubContent';
|
|
585
585
|
|
|
@@ -615,7 +615,9 @@ const DropdownMenuSubContent = forwardRef<DropdownMenuSubContentElement, Dropdow
|
|
|
615
615
|
|
|
616
616
|
DropdownMenuSubContent.displayName = SUB_CONTENT_NAME;
|
|
617
617
|
|
|
618
|
-
|
|
618
|
+
//
|
|
619
|
+
// DropdownMenu
|
|
620
|
+
//
|
|
619
621
|
|
|
620
622
|
export const DropdownMenu = {
|
|
621
623
|
Root: DropdownMenuRoot,
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import React from 'react';
|
|
7
7
|
|
|
8
|
-
import { type MessageValence } from '@dxos/
|
|
8
|
+
import { type MessageValence } from '@dxos/ui-types';
|
|
9
9
|
|
|
10
10
|
import { withTheme } from '../../testing';
|
|
11
11
|
|
|
@@ -8,7 +8,7 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
8
8
|
import React, { type ComponentPropsWithRef, forwardRef } from 'react';
|
|
9
9
|
|
|
10
10
|
import { useId } from '@dxos/react-hooks';
|
|
11
|
-
import { type Elevation, type MessageValence } from '@dxos/
|
|
11
|
+
import { type Elevation, type MessageValence } from '@dxos/ui-types';
|
|
12
12
|
|
|
13
13
|
import { useElevationContext, useThemeContext } from '../../hooks';
|
|
14
14
|
import { type ThemedClassName } from '../../util';
|
|
@@ -31,9 +31,15 @@ type MessageRootProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.d
|
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
type MessageContextValue = { titleId?: string; descriptionId: string; valence: MessageValence };
|
|
34
|
+
|
|
34
35
|
const MESSAGE_NAME = 'Message';
|
|
36
|
+
|
|
35
37
|
const [MessageProvider, useMessageContext] = createContext<MessageContextValue>(MESSAGE_NAME);
|
|
36
38
|
|
|
39
|
+
//
|
|
40
|
+
// Root
|
|
41
|
+
//
|
|
42
|
+
|
|
37
43
|
const MessageRoot = forwardRef<HTMLDivElement, MessageRootProps>(
|
|
38
44
|
(
|
|
39
45
|
{
|
|
@@ -53,6 +59,7 @@ const MessageRoot = forwardRef<HTMLDivElement, MessageRootProps>(
|
|
|
53
59
|
const descriptionId = useId('message__description', propsDescriptionId);
|
|
54
60
|
const elevation = useElevationContext(propsElevation);
|
|
55
61
|
const Root = asChild ? Slot : Primitive.div;
|
|
62
|
+
|
|
56
63
|
return (
|
|
57
64
|
<MessageProvider {...{ titleId, descriptionId, valence }}>
|
|
58
65
|
<Root
|
|
@@ -72,6 +79,10 @@ const MessageRoot = forwardRef<HTMLDivElement, MessageRootProps>(
|
|
|
72
79
|
|
|
73
80
|
MessageRoot.displayName = MESSAGE_NAME;
|
|
74
81
|
|
|
82
|
+
//
|
|
83
|
+
// Title
|
|
84
|
+
//
|
|
85
|
+
|
|
75
86
|
type MessageTitleProps = Omit<ThemedClassName<ComponentPropsWithRef<typeof Primitive.h2>>, 'id'> & {
|
|
76
87
|
asChild?: boolean;
|
|
77
88
|
icon?: string;
|
|
@@ -84,6 +95,7 @@ const MessageTitle = forwardRef<HTMLHeadingElement, MessageTitleProps>(
|
|
|
84
95
|
const { tx } = useThemeContext();
|
|
85
96
|
const { titleId, valence } = useMessageContext(MESSAGE_TITLE_NAME);
|
|
86
97
|
const Root = asChild ? Slot : Primitive.h2;
|
|
98
|
+
|
|
87
99
|
return (
|
|
88
100
|
<Root
|
|
89
101
|
{...props}
|
|
@@ -106,16 +118,20 @@ const MessageTitle = forwardRef<HTMLHeadingElement, MessageTitleProps>(
|
|
|
106
118
|
|
|
107
119
|
MessageTitle.displayName = MESSAGE_TITLE_NAME;
|
|
108
120
|
|
|
121
|
+
//
|
|
122
|
+
// Content
|
|
123
|
+
//
|
|
124
|
+
|
|
109
125
|
type MessageContentProps = Omit<ThemedClassName<ComponentPropsWithRef<typeof Primitive.h2>>, 'id'> & {
|
|
110
126
|
asChild?: boolean;
|
|
111
127
|
};
|
|
112
128
|
|
|
113
|
-
const
|
|
129
|
+
const MESSAGE_CONTENT_NAME = 'MessageContent';
|
|
114
130
|
|
|
115
131
|
const MessageContent = forwardRef<HTMLParagraphElement, MessageContentProps>(
|
|
116
132
|
({ asChild, classNames, children, ...props }, forwardedRef) => {
|
|
117
133
|
const { tx } = useThemeContext();
|
|
118
|
-
const { descriptionId } = useMessageContext(
|
|
134
|
+
const { descriptionId } = useMessageContext(MESSAGE_CONTENT_NAME);
|
|
119
135
|
const Root = asChild ? Slot : Primitive.p;
|
|
120
136
|
return (
|
|
121
137
|
<Root
|
|
@@ -130,9 +146,18 @@ const MessageContent = forwardRef<HTMLParagraphElement, MessageContentProps>(
|
|
|
130
146
|
},
|
|
131
147
|
);
|
|
132
148
|
|
|
133
|
-
MessageContent.displayName =
|
|
149
|
+
MessageContent.displayName = MESSAGE_CONTENT_NAME;
|
|
150
|
+
|
|
151
|
+
//
|
|
152
|
+
// Message
|
|
153
|
+
//
|
|
154
|
+
|
|
155
|
+
export const Message = {
|
|
156
|
+
Root: MessageRoot,
|
|
157
|
+
Title: MessageTitle,
|
|
158
|
+
Content: MessageContent,
|
|
159
|
+
};
|
|
134
160
|
|
|
135
|
-
export const Message = { Root: MessageRoot, Title: MessageTitle, Content: MessageContent };
|
|
136
161
|
export const Callout = Message;
|
|
137
162
|
|
|
138
163
|
export type { MessageRootProps, MessageTitleProps, MessageContentProps };
|
|
@@ -41,9 +41,9 @@ import { useElevationContext, useThemeContext } from '../../hooks';
|
|
|
41
41
|
import { useSafeCollisionPadding } from '../../hooks/useSafeCollisionPadding';
|
|
42
42
|
import { type ThemedClassName } from '../../util';
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
//
|
|
45
|
+
// Context
|
|
46
|
+
//
|
|
47
47
|
|
|
48
48
|
const POPOVER_NAME = 'Popover';
|
|
49
49
|
|
|
@@ -65,6 +65,10 @@ type PopoverContextValue = {
|
|
|
65
65
|
|
|
66
66
|
const [PopoverProvider, usePopoverContext] = createPopoverContext<PopoverContextValue>(POPOVER_NAME);
|
|
67
67
|
|
|
68
|
+
//
|
|
69
|
+
// PopoverRoot
|
|
70
|
+
//
|
|
71
|
+
|
|
68
72
|
interface PopoverRootProps {
|
|
69
73
|
children?: ReactNode;
|
|
70
74
|
open?: boolean;
|
|
@@ -106,9 +110,9 @@ const PopoverRoot: FC<PopoverRootProps> = (props: ScopedProps<PopoverRootProps>)
|
|
|
106
110
|
|
|
107
111
|
PopoverRoot.displayName = POPOVER_NAME;
|
|
108
112
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
//
|
|
114
|
+
// PopoverAnchor
|
|
115
|
+
//
|
|
112
116
|
|
|
113
117
|
const ANCHOR_NAME = 'PopoverAnchor';
|
|
114
118
|
|
|
@@ -134,9 +138,9 @@ const PopoverAnchor = forwardRef<PopoverAnchorElement, PopoverAnchorProps>(
|
|
|
134
138
|
|
|
135
139
|
PopoverAnchor.displayName = ANCHOR_NAME;
|
|
136
140
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
141
|
+
//
|
|
142
|
+
// PopoverTrigger
|
|
143
|
+
//
|
|
140
144
|
|
|
141
145
|
const TRIGGER_NAME = 'PopoverTrigger';
|
|
142
146
|
|
|
@@ -176,9 +180,9 @@ const PopoverTrigger = forwardRef<PopoverTriggerElement, PopoverTriggerProps>(
|
|
|
176
180
|
|
|
177
181
|
PopoverTrigger.displayName = TRIGGER_NAME;
|
|
178
182
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
183
|
+
//
|
|
184
|
+
// PopoverVirtualTrigger
|
|
185
|
+
//
|
|
182
186
|
|
|
183
187
|
const VIRTUAL_TRIGGER_NAME = 'PopoverVirtualTrigger';
|
|
184
188
|
|
|
@@ -200,9 +204,9 @@ const PopoverVirtualTrigger = (props: ScopedProps<PopoverVirtualTriggerProps>) =
|
|
|
200
204
|
|
|
201
205
|
PopoverVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
|
|
202
206
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
207
|
+
//
|
|
208
|
+
// PopoverPortal
|
|
209
|
+
//
|
|
206
210
|
|
|
207
211
|
const PORTAL_NAME = 'PopoverPortal';
|
|
208
212
|
|
|
@@ -241,9 +245,9 @@ const PopoverPortal: FC<PopoverPortalProps> = (props: ScopedProps<PopoverPortalP
|
|
|
241
245
|
|
|
242
246
|
PopoverPortal.displayName = PORTAL_NAME;
|
|
243
247
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
248
|
+
//
|
|
249
|
+
// PopoverContent
|
|
250
|
+
//
|
|
247
251
|
|
|
248
252
|
const CONTENT_NAME = 'PopoverContent';
|
|
249
253
|
|
|
@@ -275,8 +279,6 @@ const PopoverContent = forwardRef<PopoverContentTypeElement, PopoverContentProps
|
|
|
275
279
|
|
|
276
280
|
PopoverContent.displayName = CONTENT_NAME;
|
|
277
281
|
|
|
278
|
-
/* ----------------------------------------------------------------------------------------------- */
|
|
279
|
-
|
|
280
282
|
type PopoverContentTypeElement = PopoverContentImplElement;
|
|
281
283
|
export interface PopoverContentTypeProps
|
|
282
284
|
extends Omit<PopoverContentImplProps, 'trapFocus' | 'disableOutsidePointerEvents'> {}
|
|
@@ -391,8 +393,6 @@ const PopoverContentNonModal = forwardRef<PopoverContentTypeElement, PopoverCont
|
|
|
391
393
|
},
|
|
392
394
|
);
|
|
393
395
|
|
|
394
|
-
/* ----------------------------------------------------------------------------------------------- */
|
|
395
|
-
|
|
396
396
|
type PopoverContentImplElement = ElementRef<typeof PopperPrimitive.Content>;
|
|
397
397
|
type FocusScopeProps = ComponentPropsWithoutRef<typeof FocusScope>;
|
|
398
398
|
type DismissableLayerProps = ComponentPropsWithoutRef<typeof DismissableLayer>;
|
|
@@ -505,9 +505,9 @@ const PopoverContentImpl = forwardRef<PopoverContentImplElement, PopoverContentI
|
|
|
505
505
|
},
|
|
506
506
|
);
|
|
507
507
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
508
|
+
//
|
|
509
|
+
// PopoverClose
|
|
510
|
+
//
|
|
511
511
|
|
|
512
512
|
const CLOSE_NAME = 'PopoverClose';
|
|
513
513
|
|
|
@@ -531,9 +531,9 @@ const PopoverClose = forwardRef<PopoverCloseElement, PopoverCloseProps>(
|
|
|
531
531
|
|
|
532
532
|
PopoverClose.displayName = CLOSE_NAME;
|
|
533
533
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
534
|
+
//
|
|
535
|
+
// PopoverArrow
|
|
536
|
+
//
|
|
537
537
|
|
|
538
538
|
const ARROW_NAME = 'PopoverArrow';
|
|
539
539
|
|
|
@@ -559,9 +559,9 @@ const PopoverArrow = forwardRef<PopoverArrowElement, PopoverArrowProps>(
|
|
|
559
559
|
|
|
560
560
|
PopoverArrow.displayName = ARROW_NAME;
|
|
561
561
|
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
562
|
+
//
|
|
563
|
+
// PopoverViewport
|
|
564
|
+
//
|
|
565
565
|
|
|
566
566
|
type PopoverViewportProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & {
|
|
567
567
|
asChild?: boolean;
|
|
@@ -585,12 +585,14 @@ const PopoverViewport = forwardRef<HTMLDivElement, PopoverViewportProps>(
|
|
|
585
585
|
},
|
|
586
586
|
);
|
|
587
587
|
|
|
588
|
-
/* ----------------------------------------------------------------------------------------------- */
|
|
589
|
-
|
|
590
588
|
const getState = (open: boolean) => (open ? 'open' : 'closed');
|
|
591
589
|
|
|
592
590
|
type PopoverContentInteractOutsideEvent = Parameters<NonNullable<PopoverContentProps['onInteractOutside']>>[0];
|
|
593
591
|
|
|
592
|
+
//
|
|
593
|
+
// Popver
|
|
594
|
+
//
|
|
595
|
+
|
|
594
596
|
export const Popover = {
|
|
595
597
|
Root: PopoverRoot,
|
|
596
598
|
Anchor: PopoverAnchor,
|
|
@@ -6,9 +6,9 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
|
6
6
|
import React, { type PropsWithChildren } from 'react';
|
|
7
7
|
|
|
8
8
|
import { faker } from '@dxos/random';
|
|
9
|
-
import { activeSurface, surfaceShadow } from '@dxos/
|
|
9
|
+
import { activeSurface, surfaceShadow } from '@dxos/ui-theme';
|
|
10
10
|
|
|
11
|
-
import { withTheme } from '../../testing';
|
|
11
|
+
import { withLayout, withTheme } from '../../testing';
|
|
12
12
|
|
|
13
13
|
import { ScrollArea } from './ScrollArea';
|
|
14
14
|
|
|
@@ -37,7 +37,10 @@ const meta = {
|
|
|
37
37
|
title: 'ui/react-ui-core/ScrollArea',
|
|
38
38
|
component: ScrollArea as any,
|
|
39
39
|
render: DefaultStory,
|
|
40
|
-
decorators: [withTheme],
|
|
40
|
+
decorators: [withTheme, withLayout({ layout: 'fullscreen' })],
|
|
41
|
+
parameters: {
|
|
42
|
+
layout: 'fullscreen',
|
|
43
|
+
},
|
|
41
44
|
} satisfies Meta<typeof DefaultStory>;
|
|
42
45
|
|
|
43
46
|
export default meta;
|
|
@@ -49,3 +52,50 @@ export const Default: Story = {
|
|
|
49
52
|
children: faker.lorem.paragraphs(5),
|
|
50
53
|
},
|
|
51
54
|
};
|
|
55
|
+
|
|
56
|
+
export const NestedScrollAreas: Story = {
|
|
57
|
+
render: () => {
|
|
58
|
+
const columns = Array.from({ length: 3 }).map((_, index) => ({
|
|
59
|
+
id: String(index),
|
|
60
|
+
itemCount: 20,
|
|
61
|
+
}));
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<div className='p-4 bs-full is-full overflow-hidden'>
|
|
65
|
+
<div className='flex bs-full is-full overflow-hidden border border-sky-500'>
|
|
66
|
+
<ScrollArea.Root>
|
|
67
|
+
<ScrollArea.Viewport>
|
|
68
|
+
<div className='flex gap-4 p-3 bs-full overflow-hidden'>
|
|
69
|
+
{columns.map((column) => (
|
|
70
|
+
<div key={column.id} className='flex flex-col gap-1 bs-full overflow-hidden is-[300px]'>
|
|
71
|
+
<div className='flex shrink-0 p-2 border border-separator'>Column {column.id}</div>
|
|
72
|
+
<ScrollArea.Expander classNames='border border-rose-500'>
|
|
73
|
+
<ScrollArea.Root>
|
|
74
|
+
<ScrollArea.Viewport>
|
|
75
|
+
<div className='flex flex-col p-3 space-y-2'>
|
|
76
|
+
{Array.from({ length: column.itemCount }, (_, i) => (
|
|
77
|
+
<div key={i} className={`p-3 border border-separator rounded-sm`}>
|
|
78
|
+
Item {i + 1}
|
|
79
|
+
</div>
|
|
80
|
+
))}
|
|
81
|
+
</div>
|
|
82
|
+
</ScrollArea.Viewport>
|
|
83
|
+
<ScrollArea.Scrollbar orientation='vertical'>
|
|
84
|
+
<ScrollArea.Thumb />
|
|
85
|
+
</ScrollArea.Scrollbar>
|
|
86
|
+
</ScrollArea.Root>
|
|
87
|
+
</ScrollArea.Expander>
|
|
88
|
+
<div className={`p-2 border border-separator`}>Footer</div>
|
|
89
|
+
</div>
|
|
90
|
+
))}
|
|
91
|
+
</div>
|
|
92
|
+
</ScrollArea.Viewport>
|
|
93
|
+
<ScrollArea.Scrollbar orientation='horizontal'>
|
|
94
|
+
<ScrollArea.Thumb />
|
|
95
|
+
</ScrollArea.Scrollbar>
|
|
96
|
+
</ScrollArea.Root>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
);
|
|
100
|
+
},
|
|
101
|
+
};
|