@dxos/react-ui 0.8.4-main.c1de068 → 0.8.4-main.e098934

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 (182) hide show
  1. package/dist/lib/browser/{chunk-2COVUP44.mjs → chunk-Y4PW3CX2.mjs} +56 -27
  2. package/dist/lib/browser/chunk-Y4PW3CX2.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4 -1
  4. package/dist/lib/browser/index.mjs.map +2 -2
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +2 -2
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node-esm/{chunk-GHXHND5V.mjs → chunk-L6LIOSFT.mjs} +56 -27
  9. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +4 -1
  11. package/dist/lib/node-esm/index.mjs.map +2 -2
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/testing/index.mjs +2 -2
  14. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  15. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  16. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  17. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +5 -25
  18. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +5 -5
  20. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  22. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -14
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Buttons/Button.stories.d.ts +14 -3
  26. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +1 -1
  27. package/dist/types/src/components/Buttons/IconButton.d.ts +2 -2
  28. package/dist/types/src/components/Buttons/IconButton.d.ts.map +1 -1
  29. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +6 -9
  30. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +5 -5
  32. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +5 -2
  34. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +1 -1
  35. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +5 -7
  36. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +1 -1
  37. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  38. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  39. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  40. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +1 -1
  41. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +1 -1
  42. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +7 -33
  43. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +1 -1
  44. package/dist/types/src/components/Dialogs/Dialog.d.ts +1 -1
  45. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +1 -1
  46. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +6 -28
  47. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +1 -1
  48. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  49. package/dist/types/src/components/Input/Input.d.ts +2 -2
  50. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  51. package/dist/types/src/components/Input/Input.stories.d.ts +15 -10
  52. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  53. package/dist/types/src/components/Link/Link.stories.d.ts +12 -6
  54. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/Lists/List.d.ts +2 -2
  56. package/dist/types/src/components/Lists/List.d.ts.map +1 -1
  57. package/dist/types/src/components/Lists/List.stories.d.ts +8 -25
  58. package/dist/types/src/components/Lists/List.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/Lists/Tree.d.ts +1 -1
  60. package/dist/types/src/components/Lists/Tree.d.ts.map +1 -1
  61. package/dist/types/src/components/Lists/Tree.stories.d.ts +6 -26
  62. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Lists/Treegrid.d.ts +1 -1
  64. package/dist/types/src/components/Lists/Treegrid.d.ts.map +1 -1
  65. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +6 -4
  66. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/Main/Main.d.ts +1 -1
  68. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  69. package/dist/types/src/components/Main/Main.stories.d.ts +6 -6
  70. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +1 -1
  72. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +6 -38
  73. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/Menus/DropdownMenu.d.ts +5 -4
  75. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +1 -1
  76. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +6 -35
  77. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +1 -1
  78. package/dist/types/src/components/Message/Message.d.ts +1 -1
  79. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  80. package/dist/types/src/components/Message/Message.stories.d.ts +7 -15
  81. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/Popover/Popover.d.ts +1 -1
  83. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  84. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -28
  85. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +1 -1
  87. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  88. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +6 -26
  89. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  91. package/dist/types/src/components/Select/Select.stories.d.ts +4 -3
  92. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/Status/Status.stories.d.ts +2 -2
  94. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/Tag/Tag.stories.d.ts +6 -6
  96. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  97. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  98. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  99. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -1
  100. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  101. package/dist/types/src/components/Toast/Toast.d.ts +1 -1
  102. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  103. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -38
  104. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  105. package/dist/types/src/components/Toolbar/Toolbar.d.ts +1 -1
  106. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  107. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -44
  108. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/Tooltip/Tooltip.d.ts +1 -1
  110. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  111. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +8 -55
  112. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  113. package/dist/types/src/index.d.ts +1 -1
  114. package/dist/types/src/index.d.ts.map +1 -1
  115. package/dist/types/src/playground/Controls.stories.d.ts +5 -3
  116. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  117. package/dist/types/src/playground/Custom.stories.d.ts +12 -3
  118. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  119. package/dist/types/src/playground/Typography.stories.d.ts +5 -5
  120. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  121. package/dist/types/tsconfig.tsbuildinfo +1 -1
  122. package/package.json +16 -14
  123. package/src/components/Avatars/Avatar.stories.tsx +19 -8
  124. package/src/components/Avatars/Avatar.tsx +3 -3
  125. package/src/components/Avatars/AvatarGroup.stories.tsx +11 -4
  126. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +16 -8
  127. package/src/components/Breadcrumb/Breadcrumb.tsx +1 -1
  128. package/src/components/Buttons/Button.stories.tsx +5 -4
  129. package/src/components/Buttons/IconButton.stories.tsx +11 -5
  130. package/src/components/Buttons/IconButton.tsx +4 -3
  131. package/src/components/Buttons/Toggle.stories.tsx +10 -4
  132. package/src/components/Buttons/ToggleGroup.stories.tsx +10 -4
  133. package/src/components/Buttons/ToggleGroup.tsx +17 -4
  134. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  135. package/src/components/Clipboard/CopyButton.tsx +2 -1
  136. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  137. package/src/components/Dialogs/AlertDialog.stories.tsx +14 -8
  138. package/src/components/Dialogs/AlertDialog.tsx +13 -13
  139. package/src/components/Dialogs/Dialog.stories.tsx +11 -11
  140. package/src/components/Dialogs/Dialog.tsx +13 -13
  141. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  142. package/src/components/Input/Input.stories.tsx +12 -11
  143. package/src/components/Input/Input.tsx +13 -13
  144. package/src/components/Link/Link.stories.tsx +11 -4
  145. package/src/components/Lists/List.stories.tsx +14 -8
  146. package/src/components/Lists/List.tsx +16 -12
  147. package/src/components/Lists/Tree.stories.tsx +11 -5
  148. package/src/components/Lists/Tree.tsx +4 -3
  149. package/src/components/Lists/TreeDropIndicator.tsx +1 -1
  150. package/src/components/Lists/Treegrid.stories.tsx +12 -6
  151. package/src/components/Lists/Treegrid.tsx +2 -2
  152. package/src/components/Main/Main.stories.tsx +14 -6
  153. package/src/components/Main/Main.tsx +15 -9
  154. package/src/components/Menus/ContextMenu.stories.tsx +11 -5
  155. package/src/components/Menus/ContextMenu.tsx +1 -0
  156. package/src/components/Menus/DropdownMenu.stories.tsx +11 -5
  157. package/src/components/Menus/DropdownMenu.tsx +21 -11
  158. package/src/components/Message/Message.stories.tsx +11 -5
  159. package/src/components/Message/Message.tsx +1 -1
  160. package/src/components/Popover/Popover.stories.tsx +11 -5
  161. package/src/components/Popover/Popover.tsx +7 -7
  162. package/src/components/ScrollArea/ScrollArea.stories.tsx +11 -5
  163. package/src/components/ScrollArea/ScrollArea.tsx +4 -4
  164. package/src/components/Select/Select.stories.tsx +14 -9
  165. package/src/components/Select/Select.tsx +5 -4
  166. package/src/components/Status/Status.stories.tsx +9 -3
  167. package/src/components/Tag/Tag.stories.tsx +13 -5
  168. package/src/components/ThemeProvider/ThemeProvider.tsx +3 -2
  169. package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -3
  170. package/src/components/Toast/Toast.stories.tsx +11 -5
  171. package/src/components/Toast/Toast.tsx +9 -9
  172. package/src/components/Toolbar/Toolbar.stories.tsx +12 -5
  173. package/src/components/Toolbar/Toolbar.tsx +3 -2
  174. package/src/components/Tooltip/Tooltip.stories.tsx +16 -9
  175. package/src/components/Tooltip/Tooltip.tsx +3 -3
  176. package/src/index.ts +1 -1
  177. package/src/playground/Controls.stories.tsx +10 -4
  178. package/src/playground/Custom.stories.tsx +4 -4
  179. package/src/playground/Typography.stories.tsx +8 -3
  180. package/src/testing/decorators/withTheme.ts +1 -1
  181. package/dist/lib/browser/chunk-2COVUP44.mjs.map +0 -7
  182. package/dist/lib/node-esm/chunk-GHXHND5V.mjs.map +0 -7
@@ -4,24 +4,24 @@
4
4
 
5
5
  import { createContext } from '@radix-ui/react-context';
6
6
  import {
7
- type DialogProps as DialogRootPrimitiveProps,
8
- Root as DialogRootPrimitive,
9
- DialogTrigger as DialogTriggerPrimitive,
10
- type DialogTriggerProps as DialogTriggerPrimitiveProps,
11
- DialogPortal as DialogPortalPrimitive,
12
- type DialogPortalProps as DialogPortalPrimitiveProps,
13
- DialogOverlay as DialogOverlayPrimitive,
14
- type DialogOverlayProps as DialogOverlayPrimitiveProps,
15
- DialogTitle as DialogTitlePrimitive,
16
- type DialogTitleProps as DialogTitlePrimitiveProps,
17
- DialogDescription as DialogDescriptionPrimitive,
18
- type DialogDescriptionProps as DialogDescriptionPrimitiveProps,
19
7
  DialogClose as DialogClosePrimitive,
20
8
  type DialogCloseProps as DialogClosePrimitiveProps,
21
9
  DialogContent as DialogContentPrimitive,
22
10
  type DialogContentProps as DialogContentPrimitiveProps,
11
+ DialogDescription as DialogDescriptionPrimitive,
12
+ type DialogDescriptionProps as DialogDescriptionPrimitiveProps,
13
+ DialogOverlay as DialogOverlayPrimitive,
14
+ type DialogOverlayProps as DialogOverlayPrimitiveProps,
15
+ DialogPortal as DialogPortalPrimitive,
16
+ type DialogPortalProps as DialogPortalPrimitiveProps,
17
+ Root as DialogRootPrimitive,
18
+ type DialogProps as DialogRootPrimitiveProps,
19
+ DialogTitle as DialogTitlePrimitive,
20
+ type DialogTitleProps as DialogTitlePrimitiveProps,
21
+ DialogTrigger as DialogTriggerPrimitive,
22
+ type DialogTriggerProps as DialogTriggerPrimitiveProps,
23
23
  } from '@radix-ui/react-dialog';
24
- import React, { forwardRef, type ForwardRefExoticComponent, type FunctionComponent } from 'react';
24
+ import React, { type ForwardRefExoticComponent, type FunctionComponent, forwardRef } from 'react';
25
25
 
26
26
  import { useThemeContext } from '../../hooks';
27
27
  import { type ThemedClassName } from '../../util';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import React, { createContext, type PropsWithChildren } from 'react';
5
+ import React, { type PropsWithChildren, createContext } from 'react';
6
6
 
7
7
  import { type Elevation } from '@dxos/react-ui-types';
8
8
 
@@ -4,21 +4,22 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type StoryObj, type Meta } from '@storybook/react-vite';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React from 'react';
9
9
 
10
- import { baseSurface, modalSurface, activeSurface, mx, surfaceShadow } from '@dxos/react-ui-theme';
10
+ import { baseSurface, modalSurface, mx, surfaceShadow } from '@dxos/react-ui-theme';
11
11
  import { type MessageValence } from '@dxos/react-ui-types';
12
12
 
13
+ import { withTheme } from '../../testing';
14
+
13
15
  import {
14
16
  type CheckboxProps,
15
17
  Input,
16
18
  type PinInputProps,
17
19
  type SwitchProps,
18
- type TextInputProps,
19
20
  type TextAreaProps,
21
+ type TextInputProps,
20
22
  } from './Input';
21
- import { withTheme } from '../../testing';
22
23
 
23
24
  type VariantMap = {
24
25
  text: TextInputProps;
@@ -75,10 +76,10 @@ const Wrapper = ({
75
76
  const DefaultStory = (props: BaseProps) => {
76
77
  return (
77
78
  <div className='space-b-4'>
78
- <div className={mx(baseSurface, 'p-4')}>
79
+ <div className={mx(baseSurface, 'p-4 rounded-md')}>
79
80
  <Wrapper {...props} />
80
81
  </div>
81
- <div className={mx(activeSurface, 'p-4 rounded-md', surfaceShadow({ elevation: 'positioned' }))}>
82
+ <div className={mx('bg-cardSurface', 'p-4 rounded-md', surfaceShadow({ elevation: 'positioned' }))}>
82
83
  <Wrapper {...props} />
83
84
  </div>
84
85
  <div className={mx(modalSurface, 'p-4 rounded-md', surfaceShadow({ elevation: 'dialog' }))}>
@@ -88,13 +89,13 @@ const DefaultStory = (props: BaseProps) => {
88
89
  );
89
90
  };
90
91
 
91
- const meta: Meta<BaseProps> = {
92
+ const meta = {
92
93
  title: 'ui/react-ui-core/Input',
93
- component: Input.Root,
94
+ component: Input.Root as any,
94
95
  render: DefaultStory,
95
96
  decorators: [withTheme],
96
97
  parameters: { chromatic: { disableSnapshot: false } },
97
- };
98
+ } satisfies Meta<typeof DefaultStory>;
98
99
 
99
100
  export default meta;
100
101
 
@@ -221,10 +222,10 @@ export const Checkbox: Story = {
221
222
  },
222
223
  };
223
224
 
224
- export const Switch = {
225
+ export const Switch: Story = {
225
226
  args: {
226
227
  kind: 'switch',
227
228
  label: 'This is a switch',
228
- description: 'It’s either off... or on.',
229
+ description: "It's either off... or on.",
229
230
  },
230
231
  };
@@ -5,31 +5,31 @@
5
5
  import { type IconWeight } from '@phosphor-icons/react';
6
6
  import { Root as CheckboxPrimitive, type CheckboxProps as CheckboxPrimitiveProps } from '@radix-ui/react-checkbox';
7
7
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
8
- import React, { type ComponentPropsWithRef, forwardRef, type ForwardRefExoticComponent, useCallback } from 'react';
8
+ import React, { type ComponentPropsWithRef, type ForwardRefExoticComponent, forwardRef, useCallback } from 'react';
9
9
 
10
10
  import {
11
+ DescriptionAndValidation as DescriptionAndValidationPrimitive,
12
+ type DescriptionAndValidationProps as DescriptionAndValidationPrimitiveProps,
13
+ Description as DescriptionPrimitive,
14
+ type DescriptionProps as DescriptionPrimitiveProps,
15
+ INPUT_NAME,
11
16
  InputRoot,
12
17
  type InputRootProps,
18
+ type InputScopedProps,
19
+ Label as LabelPrimitive,
20
+ type LabelProps as LabelPrimitiveProps,
13
21
  PinInput as PinInputPrimitive,
14
22
  type PinInputProps as PinInputPrimitiveProps,
15
- TextInput as TextInputPrimitive,
16
- type TextInputProps as TextInputPrimitiveProps,
17
23
  TextArea as TextAreaPrimitive,
18
24
  type TextAreaProps as TextAreaPrimitiveProps,
19
- useInputContext,
20
- INPUT_NAME,
21
- type InputScopedProps,
22
- Description as DescriptionPrimitive,
23
- DescriptionAndValidation as DescriptionAndValidationPrimitive,
24
- type DescriptionAndValidationProps as DescriptionAndValidationPrimitiveProps,
25
- type DescriptionProps as DescriptionPrimitiveProps,
26
- Label as LabelPrimitive,
27
- type LabelProps as LabelPrimitiveProps,
25
+ TextInput as TextInputPrimitive,
26
+ type TextInputProps as TextInputPrimitiveProps,
28
27
  Validation as ValidationPrimitive,
29
28
  type ValidationProps as ValidationPrimitiveProps,
29
+ useInputContext,
30
30
  } from '@dxos/react-input';
31
31
  import { mx } from '@dxos/react-ui-theme';
32
- import { type Density, type Elevation, type ClassNameValue, type Size } from '@dxos/react-ui-types';
32
+ import { type ClassNameValue, type Density, type Elevation, type Size } from '@dxos/react-ui-types';
33
33
 
34
34
  import { useDensityContext, useElevationContext, useThemeContext } from '../../hooks';
35
35
  import { type ThemedClassName } from '../../util';
@@ -4,14 +4,21 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { Link } from './Link';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
+
8
9
  import { withTheme } from '../../testing';
9
10
 
10
- export default {
11
+ import { Link } from './Link';
12
+
13
+ const meta = {
11
14
  title: 'ui/react-ui-core/Link',
12
15
  component: Link,
13
16
  decorators: [withTheme],
14
17
  parameters: { chromatic: { disableSnapshot: false } },
15
- } as any;
18
+ } satisfies Meta<typeof Link>;
19
+
20
+ export default meta;
21
+
22
+ type Story = StoryObj<typeof meta>;
16
23
 
17
- export const Default = { args: { children: 'Hello', href: '#' } };
24
+ export const Default: Story = { args: { children: 'Hello', href: '#' } };
@@ -5,9 +5,10 @@
5
5
  import '@dxos-theme';
6
6
 
7
7
  import { DndContext, type DragEndEvent, type DragStartEvent } from '@dnd-kit/core';
8
- import { arrayMove, SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';
8
+ import { SortableContext, arrayMove, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';
9
9
  import { CSS } from '@dnd-kit/utilities';
10
10
  import { useArrowNavigationGroup } from '@fluentui/react-tabster';
11
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
11
12
  import React, { type ReactNode, useState } from 'react';
12
13
 
13
14
  import {
@@ -19,16 +20,21 @@ import {
19
20
  surfaceShadow,
20
21
  } from '@dxos/react-ui-theme';
21
22
 
22
- import { List, ListItem, type ListScopedProps } from './List';
23
23
  import { withTheme } from '../../testing';
24
24
  import { Icon } from '../Icon';
25
25
 
26
- export default {
26
+ import { List, ListItem, type ListScopedProps } from './List';
27
+
28
+ const meta = {
27
29
  title: 'ui/react-ui-core/List',
28
30
  component: List,
29
31
  decorators: [withTheme],
30
32
  parameters: { chromatic: { disableSnapshot: false } },
31
- };
33
+ } satisfies Meta<typeof List>;
34
+
35
+ export default meta;
36
+
37
+ type Story = StoryObj<typeof meta>;
32
38
 
33
39
  const UniformListItem = ({ id, text }: { id: string; text: string }) => {
34
40
  const { attributes, listeners, setNodeRef, transform } = useSortable({ id });
@@ -51,7 +57,7 @@ const UniformListItem = ({ id, text }: { id: string; text: string }) => {
51
57
  );
52
58
  };
53
59
 
54
- export const UniformSizeDraggable = {
60
+ export const UniformSizeDraggable: Story = {
55
61
  render: ({ ...args }) => {
56
62
  const [items, setItems] = useState(
57
63
  [...Array(12)].map((_, index) => ({
@@ -115,7 +121,7 @@ const ManySizesDraggableListItem = ({
115
121
  );
116
122
  };
117
123
 
118
- export const ManySizesDraggable = {
124
+ export const ManySizesDraggable: Story = {
119
125
  render: ({ ...args }) => {
120
126
  const [items, setItems] = useState(
121
127
  [...Array(12)].map((_, index) => ({
@@ -163,7 +169,7 @@ export const ManySizesDraggable = {
163
169
  args: {},
164
170
  };
165
171
 
166
- export const Collapsible = {
172
+ export const Collapsible: Story = {
167
173
  render: ({ ...args }) => {
168
174
  const [items, _setItems] = useState(
169
175
  [...Array(12)].map((_, index) => ({
@@ -196,7 +202,7 @@ export const Collapsible = {
196
202
  },
197
203
  };
198
204
 
199
- export const SelectableListbox = {
205
+ export const SelectableListbox: Story = {
200
206
  render: () => {
201
207
  const [selectedId, setSelectedId] = useState<string>();
202
208
  const arrowNavigationAttrs = useArrowNavigationGroup({ axis: 'vertical' });
@@ -3,34 +3,35 @@
3
3
  //
4
4
 
5
5
  import { Slot } from '@radix-ui/react-slot';
6
- import React, { type ComponentPropsWithoutRef, type FC, forwardRef, type ForwardRefExoticComponent } from 'react';
6
+ import React, { type ComponentPropsWithoutRef, type FC, type ForwardRefExoticComponent, forwardRef } from 'react';
7
7
 
8
8
  import {
9
+ LIST_ITEM_NAME,
10
+ LIST_NAME,
11
+ ListItemCollapsibleContent,
12
+ type ListItemCollapsibleContentProps,
13
+ type ListItemScopedProps,
9
14
  List as ListPrimitive,
10
- type ListProps as ListPrimitiveProps,
11
- type ListScopedProps,
15
+ ListItem as ListPrimitiveItem,
12
16
  ListItemHeading as ListPrimitiveItemHeading,
13
17
  type ListItemHeadingProps as ListPrimitiveItemHeadingProps,
14
18
  ListItemOpenTrigger as ListPrimitiveItemOpenTrigger,
15
19
  type ListItemOpenTriggerProps as ListPrimitiveItemOpenTriggerProps,
16
- ListItemCollapsibleContent,
17
- type ListItemCollapsibleContentProps,
18
- ListItem as ListPrimitiveItem,
19
20
  type ListItemProps as ListPrimitiveItemProps,
20
- type ListItemScopedProps,
21
- LIST_NAME,
22
- LIST_ITEM_NAME,
21
+ type ListProps as ListPrimitiveProps,
22
+ type ListScopedProps,
23
23
  useListContext,
24
24
  useListItemContext,
25
25
  } from '@dxos/react-list';
26
26
  import { type Density } from '@dxos/react-ui-types';
27
27
 
28
- import { ListDropIndicator } from './ListDropIndicator';
29
28
  import { useDensityContext, useThemeContext } from '../../hooks';
30
29
  import { type ThemedClassName } from '../../util';
31
30
  import { DensityProvider } from '../DensityProvider';
32
31
  import { Icon } from '../Icon';
33
32
 
33
+ import { ListDropIndicator } from './ListDropIndicator';
34
+
34
35
  type ListProps = ThemedClassName<ListPrimitiveProps> & { density?: Density };
35
36
 
36
37
  const List = forwardRef<HTMLOListElement, ListProps>(({ classNames, children, ...props }, forwardedRef) => {
@@ -106,7 +107,6 @@ const ListItemOpenTrigger = forwardRef<HTMLButtonElement, ListItemOpenTriggerPro
106
107
  const { tx } = useThemeContext();
107
108
  const density = useDensityContext();
108
109
  const { open } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
109
- const iconName = open ? 'ph--caret-down--bold' : 'ph--caret-right--bold';
110
110
  return (
111
111
  <ListPrimitiveItemOpenTrigger
112
112
  {...props}
@@ -114,7 +114,11 @@ const ListItemOpenTrigger = forwardRef<HTMLButtonElement, ListItemOpenTriggerPro
114
114
  ref={forwardedRef}
115
115
  >
116
116
  {children || (
117
- <Icon icon={iconName} classNames={tx('list.item.openTriggerIcon', 'list__listItem__openTrigger__icon', {})} />
117
+ <Icon
118
+ size={3}
119
+ icon={open ? 'ph--caret-down--bold' : 'ph--caret-right--bold'}
120
+ classNames={tx('list.item.openTriggerIcon', 'list__listItem__openTrigger__icon', {})}
121
+ />
118
122
  )}
119
123
  </ListPrimitiveItemOpenTrigger>
120
124
  );
@@ -4,11 +4,13 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
8
  import React from 'react';
8
9
 
9
- import { Tree, TreeItem } from './Tree';
10
10
  import { withTheme } from '../../testing';
11
11
 
12
+ import { Tree, TreeItem } from './Tree';
13
+
12
14
  type StorybookTreeProps = {
13
15
  data: any;
14
16
  };
@@ -55,15 +57,19 @@ const DefaultStory = ({ data }: StorybookTreeProps) => {
55
57
  return <StorybookTreeItem data={data} />;
56
58
  };
57
59
 
58
- export default {
60
+ const meta = {
59
61
  title: 'ui/react-ui-core/Tree',
60
- component: Tree,
62
+ component: Tree as any,
61
63
  render: DefaultStory,
62
64
  decorators: [withTheme],
63
65
  parameters: { chromatic: { disableSnapshot: false } },
64
- };
66
+ } satisfies Meta<typeof DefaultStory>;
67
+
68
+ export default meta;
69
+
70
+ type Story = StoryObj<typeof meta>;
65
71
 
66
- export const Default = {
72
+ export const Default: Story = {
67
73
  args: {
68
74
  data: {
69
75
  foo: 100,
@@ -2,9 +2,12 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import React, { type ComponentPropsWithoutRef, type FC, forwardRef, type ForwardRefExoticComponent } from 'react';
5
+ import React, { type ComponentPropsWithoutRef, type FC, type ForwardRefExoticComponent, forwardRef } from 'react';
6
+
7
+ import { type ThemedClassName } from '../../util';
6
8
 
7
9
  import {
10
+ LIST_ITEM_NAME,
8
11
  List,
9
12
  ListItem,
10
13
  type ListItemCollapsibleContentProps,
@@ -13,11 +16,9 @@ import {
13
16
  type ListItemRootProps,
14
17
  type ListProps,
15
18
  type ListScopedProps,
16
- LIST_ITEM_NAME,
17
19
  useListItemContext,
18
20
  } from './List';
19
21
  import { TreeDropIndicator } from './TreeDropIndicator';
20
- import { type ThemedClassName } from '../../util';
21
22
 
22
23
  type TreeRootProps = ListProps;
23
24
 
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';
6
- import React, { type HTMLAttributes, type CSSProperties } from 'react';
6
+ import React, { type CSSProperties, type HTMLAttributes } from 'react';
7
7
 
8
8
  // Tree item hitbox
9
9
  // https://github.com/atlassian/pragmatic-drag-and-drop/blob/main/packages/hitbox/constellation/index/about.mdx#tree-item
@@ -2,14 +2,16 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
5
6
  import React from 'react';
6
7
 
7
8
  import { faker } from '@dxos/random';
8
9
 
9
- import { Treegrid } from './Treegrid';
10
10
  import { withTheme } from '../../testing';
11
11
  import { Icon } from '../Icon';
12
12
 
13
+ import { Treegrid } from './Treegrid';
14
+
13
15
  faker.seed(1234);
14
16
 
15
17
  type StorybookNode = {
@@ -86,7 +88,7 @@ const content = {
86
88
  icon: 'ph--planet--regular',
87
89
  },
88
90
  ],
89
- } satisfies StorybookNode;
91
+ } as StorybookNode;
90
92
 
91
93
  function* visitor(node: StorybookNode, isOpen?: (node: StorybookNode) => boolean): Generator<StorybookIteratorNode> {
92
94
  const stack: StorybookIteratorNode[] = [
@@ -141,11 +143,15 @@ const DefaultStory = () => {
141
143
  );
142
144
  };
143
145
 
144
- export default {
146
+ const meta = {
145
147
  title: 'ui/react-ui-core/Treegrid',
146
- component: Treegrid.Root,
148
+ component: Treegrid.Root as any,
147
149
  render: DefaultStory,
148
150
  decorators: [withTheme],
149
- };
151
+ } satisfies Meta<typeof DefaultStory>;
152
+
153
+ export default meta;
154
+
155
+ type Story = StoryObj<typeof meta>;
150
156
 
151
- export const Default = {};
157
+ export const Default: Story = {};
@@ -3,11 +3,11 @@
3
3
  //
4
4
 
5
5
  import { useArrowNavigationGroup, useFocusableGroup } from '@fluentui/react-tabster';
6
- import { createContextScope, type Scope } from '@radix-ui/react-context';
6
+ import { type Scope, createContextScope } from '@radix-ui/react-context';
7
7
  import { Primitive } from '@radix-ui/react-primitive';
8
8
  import { Slot } from '@radix-ui/react-slot';
9
9
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
10
- import React, { type ComponentPropsWithRef, type CSSProperties, forwardRef } from 'react';
10
+ import React, { type CSSProperties, type ComponentPropsWithRef, forwardRef } from 'react';
11
11
 
12
12
  import { useThemeContext } from '../../hooks';
13
13
  import { type ThemedClassName } from '../../util';
@@ -4,12 +4,14 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
8
  import React from 'react';
8
9
 
9
- import { Main, useSidebars } from './Main';
10
10
  import { withTheme } from '../../testing';
11
11
  import { Button } from '../Buttons';
12
12
 
13
+ import { Main, useSidebars } from './Main';
14
+
13
15
  type StoryMainArgs = {};
14
16
 
15
17
  const NavigationSidebarToggle = () => {
@@ -45,15 +47,21 @@ const DefaultStory = (_args: StoryMainArgs) => {
45
47
  );
46
48
  };
47
49
 
48
- export default {
50
+ const meta = {
49
51
  title: 'ui/react-ui-core/Main',
50
52
  component: Main.Root,
51
53
  render: DefaultStory,
52
54
  decorators: [withTheme],
53
- parameters: { chromatic: { disableSnapshot: false } },
54
- };
55
+ parameters: {
56
+ chromatic: { disableSnapshot: false },
57
+ layout: 'fullscreen',
58
+ },
59
+ } satisfies Meta<typeof DefaultStory>;
60
+
61
+ export default meta;
62
+
63
+ type Story = StoryObj<typeof meta>;
55
64
 
56
- export const Default = {
65
+ export const Default: Story = {
57
66
  args: {},
58
- layout: 'fullscreen',
59
67
  };
@@ -3,32 +3,33 @@
3
3
  //
4
4
 
5
5
  import { createContext } from '@radix-ui/react-context';
6
- import { Root as DialogRoot, DialogContent, DialogTitle } from '@radix-ui/react-dialog';
6
+ import { DialogContent, Root as DialogRoot, DialogTitle } from '@radix-ui/react-dialog';
7
7
  import { Primitive } from '@radix-ui/react-primitive';
8
8
  import { Slot } from '@radix-ui/react-slot';
9
9
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
10
10
  import React, {
11
11
  type ComponentPropsWithRef,
12
+ type ComponentPropsWithoutRef,
12
13
  type Dispatch,
13
- forwardRef,
14
+ type KeyboardEvent,
14
15
  type PropsWithChildren,
15
16
  type SetStateAction,
17
+ forwardRef,
16
18
  useCallback,
17
19
  useEffect,
18
20
  useRef,
19
21
  useState,
20
- type KeyboardEvent,
21
- type ComponentPropsWithoutRef,
22
22
  } from 'react';
23
23
 
24
24
  import { log } from '@dxos/log';
25
- import { useMediaQuery, useForwardedRef } from '@dxos/react-hooks';
25
+ import { useForwardedRef, useMediaQuery } from '@dxos/react-hooks';
26
26
 
27
- import { useSwipeToDismiss } from './useSwipeToDismiss';
28
27
  import { useThemeContext } from '../../hooks';
29
28
  import { type ThemedClassName } from '../../util';
30
29
  import { type Label, toLocalizedString, useTranslation } from '../ThemeProvider';
31
30
 
31
+ import { useSwipeToDismiss } from './useSwipeToDismiss';
32
+
32
33
  const MAIN_ROOT_NAME = 'MainRoot';
33
34
  const NAVIGATION_SIDEBAR_NAME = 'NavigationSidebar';
34
35
  const COMPLEMENTARY_SIDEBAR_NAME = 'ComplementarySidebar';
@@ -71,18 +72,23 @@ const useLandmarkMover = (propsOnKeyDown: ComponentPropsWithoutRef<'div'>['onKey
71
72
  );
72
73
  const focusableGroupAttrs = window ? {} : { tabBehavior: 'limited', ignoreDefaultKeydown: { Tab: true } };
73
74
 
74
- return { onKeyDown: handleKeyDown, [landmarkAttr]: landmark, tabIndex: 0, ...focusableGroupAttrs };
75
+ return {
76
+ onKeyDown: handleKeyDown,
77
+ [landmarkAttr]: landmark,
78
+ tabIndex: 0,
79
+ ...focusableGroupAttrs,
80
+ };
75
81
  };
76
82
 
77
83
  const [MainProvider, useMainContext] = createContext<MainContextValue>(MAIN_NAME, {
78
84
  resizing: false,
79
85
  navigationSidebarState: 'closed',
80
- setNavigationSidebarState: (nextState) => {
86
+ setNavigationSidebarState: (_nextState) => {
81
87
  // TODO(burdon): Standardize with other context missing errors using raise.
82
88
  log.warn('Attempt to set sidebar state without initializing `MainRoot`');
83
89
  },
84
90
  complementarySidebarState: 'closed',
85
- setComplementarySidebarState: (nextState) => {
91
+ setComplementarySidebarState: (_nextState) => {
86
92
  // TODO(burdon): Standardize with other context missing errors using raise.
87
93
  log.warn('Attempt to set sidebar state without initializing `MainRoot`');
88
94
  },
@@ -4,11 +4,13 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
8
  import React from 'react';
8
9
 
9
- import { ContextMenu } from './ContextMenu';
10
10
  import { withTheme } from '../../testing';
11
11
 
12
+ import { ContextMenu } from './ContextMenu';
13
+
12
14
  const DefaultStory = () => {
13
15
  // NOTE(thure): Since long-tap will select text in some OSs, apply `select-none` to `ContextMenu.Trigger` where possible.
14
16
  return (
@@ -91,15 +93,19 @@ const DefaultStory = () => {
91
93
  );
92
94
  };
93
95
 
94
- export default {
96
+ const meta = {
95
97
  title: 'ui/react-ui-core/ContextMenu',
96
- component: ContextMenu,
98
+ component: ContextMenu.Root as any,
97
99
  render: DefaultStory,
98
100
  decorators: [withTheme],
99
101
  parameters: { chromatic: { disableSnapshot: false } },
100
- };
102
+ } satisfies Meta<typeof DefaultStory>;
103
+
104
+ export default meta;
105
+
106
+ type Story = StoryObj<typeof meta>;
101
107
 
102
- export const Default = {
108
+ export const Default: Story = {
103
109
  args: {},
104
110
  parameters: {
105
111
  chromatic: { delay: 1600 },
@@ -34,6 +34,7 @@ const ContextMenuContent = forwardRef<HTMLDivElement, ContextMenuContentProps>(
34
34
  return (
35
35
  <ContextMenuPrimitive.Content
36
36
  {...props}
37
+ data-arrow-keys='up down'
37
38
  collisionPadding={safeCollisionPadding}
38
39
  className={tx('menu.content', 'menu', { elevation }, classNames)}
39
40
  ref={forwardedRef}
@@ -4,12 +4,14 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
8
  import React, { useRef, useState } from 'react';
8
9
 
9
- import { DropdownMenu } from './DropdownMenu';
10
10
  import { withTheme } from '../../testing';
11
11
  import { Button } from '../Buttons';
12
12
 
13
+ import { DropdownMenu } from './DropdownMenu';
14
+
13
15
  const DefaultStory = () => {
14
16
  return (
15
17
  <DropdownMenu.Root defaultOpen>
@@ -91,15 +93,19 @@ const DefaultStory = () => {
91
93
  );
92
94
  };
93
95
 
94
- export default {
96
+ const meta = {
95
97
  title: 'ui/react-ui-core/DropdownMenu',
96
- component: DropdownMenu,
98
+ component: DropdownMenu.Root,
97
99
  render: DefaultStory,
98
100
  decorators: [withTheme],
99
101
  parameters: { chromatic: { disableSnapshot: false } },
100
- };
102
+ } satisfies Meta<typeof DefaultStory>;
103
+
104
+ export default meta;
105
+
106
+ type Story = StoryObj<typeof meta>;
101
107
 
102
- export const Default = {
108
+ export const Default: Story = {
103
109
  args: {},
104
110
  parameters: {
105
111
  chromatic: { delay: 1600 },