@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.
Files changed (149) hide show
  1. package/dist/lib/browser/chunk-CEKVHJ27.mjs +774 -0
  2. package/dist/lib/browser/chunk-CEKVHJ27.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3065 -66
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +31 -43
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node-esm/chunk-2NHEX4AD.mjs +776 -0
  9. package/dist/lib/node-esm/chunk-2NHEX4AD.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +3065 -66
  11. package/dist/lib/node-esm/index.mjs.map +4 -4
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/testing/index.mjs +31 -43
  14. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  15. package/dist/types/src/components/Button/Button.d.ts +1 -1
  16. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  17. package/dist/types/src/components/Button/IconButton.d.ts +2 -1
  18. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  19. package/dist/types/src/components/Button/ToggleGroup.d.ts +4 -4
  20. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +4 -4
  21. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  22. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  23. package/dist/types/src/components/Dialog/Dialog.d.ts +18 -9
  24. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  25. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +7 -5
  26. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  27. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  28. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  29. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  30. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  31. package/dist/types/src/components/Input/Input.d.ts +5 -2
  32. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  33. package/dist/types/src/components/Input/Input.stories.d.ts +1 -1
  34. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  35. package/dist/types/src/components/List/List.d.ts +1 -1
  36. package/dist/types/src/components/List/List.d.ts.map +1 -1
  37. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  38. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  39. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  40. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  41. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +1 -1
  42. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  43. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  44. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  45. package/dist/types/src/components/Message/Message.d.ts +1 -1
  46. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  47. package/dist/types/src/components/Message/Message.stories.d.ts +1 -1
  48. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  49. package/dist/types/src/components/Popover/Popover.d.ts +1 -1
  50. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  51. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +9 -7
  52. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  53. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +4 -0
  54. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +4 -2
  56. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  57. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +2 -1
  58. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/Select/Select.d.ts +9 -9
  60. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  61. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  62. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  63. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -2
  64. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  65. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  66. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  67. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  68. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  69. package/dist/types/src/components/Toast/Toast.d.ts +4 -4
  70. package/dist/types/src/components/Toolbar/Toolbar.d.ts +10 -10
  71. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  72. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  73. package/dist/types/src/components/index.d.ts +1 -1
  74. package/dist/types/src/components/index.d.ts.map +1 -1
  75. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  76. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  77. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  78. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  79. package/dist/types/src/index.d.ts +1 -1
  80. package/dist/types/src/index.d.ts.map +1 -1
  81. package/dist/types/src/testing/decorators/withLayout.d.ts +3 -3
  82. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  83. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +1 -1
  84. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  85. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  86. package/dist/types/src/util/index.d.ts +1 -2
  87. package/dist/types/src/util/index.d.ts.map +1 -1
  88. package/dist/types/tsconfig.tsbuildinfo +1 -1
  89. package/package.json +31 -26
  90. package/src/components/Avatars/Avatar.stories.tsx +2 -2
  91. package/src/components/Avatars/Avatar.tsx +1 -1
  92. package/src/components/Button/Button.tsx +1 -1
  93. package/src/components/Button/IconButton.tsx +8 -3
  94. package/src/components/Clipboard/CopyButton.tsx +3 -3
  95. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  96. package/src/components/Dialog/Dialog.stories.tsx +47 -17
  97. package/src/components/Dialog/Dialog.tsx +140 -40
  98. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  99. package/src/components/Icon/Icon.stories.tsx +1 -1
  100. package/src/components/Icon/Icon.tsx +1 -1
  101. package/src/components/Input/Input.stories.tsx +2 -2
  102. package/src/components/Input/Input.tsx +13 -4
  103. package/src/components/List/List.stories.tsx +16 -12
  104. package/src/components/List/List.tsx +1 -1
  105. package/src/components/{Menus → Menu}/DropdownMenu.tsx +57 -55
  106. package/src/components/Message/Message.stories.tsx +1 -1
  107. package/src/components/Message/Message.tsx +30 -5
  108. package/src/components/Popover/Popover.tsx +35 -33
  109. package/src/components/ScrollArea/ScrollArea.stories.tsx +53 -3
  110. package/src/components/ScrollArea/ScrollArea.tsx +50 -4
  111. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +2 -1
  112. package/src/components/ScrollContainer/ScrollContainer.tsx +90 -88
  113. package/src/components/Tag/Tag.stories.tsx +2 -2
  114. package/src/components/Tag/Tag.tsx +1 -1
  115. package/src/components/ThemeProvider/ThemeProvider.tsx +1 -3
  116. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  117. package/src/components/ThemeProvider/index.ts +3 -3
  118. package/src/components/Toolbar/Toolbar.tsx +23 -8
  119. package/src/components/Tooltip/Tooltip.tsx +22 -20
  120. package/src/components/index.ts +1 -1
  121. package/src/hooks/useDensityContext.ts +1 -1
  122. package/src/hooks/useElevationContext.ts +1 -1
  123. package/src/index.ts +1 -1
  124. package/src/testing/decorators/withLayout.tsx +22 -15
  125. package/src/testing/decorators/withLayoutVariants.tsx +3 -3
  126. package/src/testing/decorators/withTheme.tsx +3 -2
  127. package/src/util/index.ts +2 -2
  128. package/dist/lib/browser/chunk-N5GDJTT2.mjs +0 -4707
  129. package/dist/lib/browser/chunk-N5GDJTT2.mjs.map +0 -7
  130. package/dist/lib/node-esm/chunk-SP7VQH72.mjs +0 -4709
  131. package/dist/lib/node-esm/chunk-SP7VQH72.mjs.map +0 -7
  132. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  133. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  134. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  135. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  136. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  137. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  138. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  139. package/dist/types/src/util/domino.d.ts +0 -18
  140. package/dist/types/src/util/domino.d.ts.map +0 -1
  141. package/src/util/ThemedClassName.ts +0 -7
  142. package/src/util/domino.ts +0 -53
  143. /package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -0
  144. /package/dist/types/src/components/{Menus → Menu}/DropdownMenu.stories.d.ts +0 -0
  145. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  146. /package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +0 -0
  147. /package/src/components/{Menus → Menu}/ContextMenu.tsx +0 -0
  148. /package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +0 -0
  149. /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/react-ui-types';
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
- * DropdownMenu
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
- * DropdownMenuTrigger
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
- * DropdownMenuVirtualTrigger
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
- * DropdownMenuPortal
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
- * DropdownMenuViewport
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
- * DropdownMenuContent
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
- * DropdownMenuGroup
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
- * DropdownMenuLabel
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
- * DropdownMenuItem
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
- * DropdownMenuCheckboxItem
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
- * DropdownMenuRadioGroup
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
- * DropdownMenuRadioItem
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
- * DropdownMenuItemIndicator
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
- * DropdownMenuSeparator
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
- * DropdownMenuArrow
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
- * DropdownMenuSub
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
- * DropdownMenuSubTrigger
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
- * DropdownMenuSubContent
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/react-ui-types';
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/react-ui-types';
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 MESSAGE_BODY_NAME = 'MessageContent';
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(MESSAGE_BODY_NAME);
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 = MESSAGE_BODY_NAME;
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
- * Popover
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
- * PopoverAnchor
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
- * PopoverTrigger
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
- * PopoverVirtualTrigger
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
- * PopoverPortal
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
- * PopoverContent
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
- * PopoverClose
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
- * PopoverArrow
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
- * PopoverViewport
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/react-ui-theme';
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
+ };