@dxos/react-ui 0.8.3 → 0.8.4-main.1da679c

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 (204) hide show
  1. package/dist/lib/browser/{chunk-WXW6KSRL.mjs → chunk-Y4PW3CX2.mjs} +186 -160
  2. package/dist/lib/browser/chunk-Y4PW3CX2.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4 -2
  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 +6 -7
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node-esm/{chunk-EQ7EG74H.mjs → chunk-L6LIOSFT.mjs} +186 -160
  9. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +4 -2
  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 +6 -7
  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.d.ts.map +1 -1
  26. package/dist/types/src/components/Buttons/Button.stories.d.ts +14 -3
  27. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/Buttons/IconButton.d.ts +2 -2
  29. package/dist/types/src/components/Buttons/IconButton.d.ts.map +1 -1
  30. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +6 -9
  31. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +1 -1
  32. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +5 -5
  33. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +1 -1
  34. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +5 -2
  35. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +1 -1
  36. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +5 -7
  37. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +1 -1
  38. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  39. package/dist/types/src/components/Clipboard/CopyButton.d.ts +4 -5
  40. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  41. package/dist/types/src/components/Clipboard/index.d.ts +2 -3
  42. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  43. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  44. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +1 -1
  45. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +1 -1
  46. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +7 -33
  47. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +1 -1
  48. package/dist/types/src/components/Dialogs/Dialog.d.ts +1 -1
  49. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +1 -1
  50. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +6 -28
  51. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +1 -1
  52. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  53. package/dist/types/src/components/Input/Input.d.ts +2 -2
  54. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  55. package/dist/types/src/components/Input/Input.stories.d.ts +15 -10
  56. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  57. package/dist/types/src/components/Link/Link.stories.d.ts +12 -6
  58. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/Lists/List.d.ts +2 -2
  60. package/dist/types/src/components/Lists/List.d.ts.map +1 -1
  61. package/dist/types/src/components/Lists/List.stories.d.ts +8 -25
  62. package/dist/types/src/components/Lists/List.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Lists/Tree.d.ts +1 -1
  64. package/dist/types/src/components/Lists/Tree.d.ts.map +1 -1
  65. package/dist/types/src/components/Lists/Tree.stories.d.ts +6 -26
  66. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/Lists/Treegrid.d.ts +1 -1
  68. package/dist/types/src/components/Lists/Treegrid.d.ts.map +1 -1
  69. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +6 -4
  70. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/Main/Main.d.ts +1 -1
  72. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  73. package/dist/types/src/components/Main/Main.stories.d.ts +6 -6
  74. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  75. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +1 -1
  76. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +6 -38
  77. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +1 -1
  78. package/dist/types/src/components/Menus/DropdownMenu.d.ts +5 -4
  79. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +1 -1
  80. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +6 -35
  81. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/Message/Message.d.ts +1 -1
  83. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  84. package/dist/types/src/components/Message/Message.stories.d.ts +7 -15
  85. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/Popover/Popover.d.ts +2 -2
  87. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  88. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -28
  89. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +1 -1
  91. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  92. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +6 -26
  93. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  94. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  95. package/dist/types/src/components/Select/Select.stories.d.ts +5 -4
  96. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  97. package/dist/types/src/components/Status/Status.stories.d.ts +2 -2
  98. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Tag/Tag.stories.d.ts +6 -6
  100. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +2 -2
  102. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  103. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -1
  104. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  105. package/dist/types/src/components/ThemeProvider/index.d.ts +1 -1
  106. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  107. package/dist/types/src/components/Toast/Toast.d.ts +1 -1
  108. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  109. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -38
  110. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  111. package/dist/types/src/components/Toolbar/Toolbar.d.ts +1 -1
  112. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  113. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -44
  114. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/Tooltip/Tooltip.d.ts +1 -1
  116. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  117. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +8 -55
  118. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  119. package/dist/types/src/index.d.ts +1 -1
  120. package/dist/types/src/index.d.ts.map +1 -1
  121. package/dist/types/src/playground/Controls.stories.d.ts +5 -3
  122. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  123. package/dist/types/src/playground/Custom.stories.d.ts +12 -3
  124. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  125. package/dist/types/src/playground/Typography.stories.d.ts +5 -5
  126. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  127. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  128. package/dist/types/src/util/index.d.ts +1 -1
  129. package/dist/types/src/util/index.d.ts.map +1 -1
  130. package/dist/types/tsconfig.tsbuildinfo +1 -1
  131. package/package.json +17 -15
  132. package/src/components/Avatars/Avatar.stories.tsx +19 -8
  133. package/src/components/Avatars/Avatar.tsx +3 -3
  134. package/src/components/Avatars/AvatarGroup.stories.tsx +11 -4
  135. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +16 -8
  136. package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
  137. package/src/components/Buttons/Button.stories.tsx +8 -7
  138. package/src/components/Buttons/Button.tsx +1 -0
  139. package/src/components/Buttons/IconButton.stories.tsx +11 -5
  140. package/src/components/Buttons/IconButton.tsx +5 -4
  141. package/src/components/Buttons/Toggle.stories.tsx +12 -6
  142. package/src/components/Buttons/ToggleGroup.stories.tsx +13 -7
  143. package/src/components/Buttons/ToggleGroup.tsx +17 -4
  144. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  145. package/src/components/Clipboard/CopyButton.tsx +13 -14
  146. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  147. package/src/components/Dialogs/AlertDialog.stories.tsx +14 -8
  148. package/src/components/Dialogs/AlertDialog.tsx +13 -13
  149. package/src/components/Dialogs/Dialog.stories.tsx +11 -11
  150. package/src/components/Dialogs/Dialog.tsx +13 -13
  151. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  152. package/src/components/Input/Input.stories.tsx +12 -11
  153. package/src/components/Input/Input.tsx +13 -13
  154. package/src/components/Link/Link.stories.tsx +11 -4
  155. package/src/components/Lists/List.stories.tsx +20 -14
  156. package/src/components/Lists/List.tsx +15 -16
  157. package/src/components/Lists/Tree.stories.tsx +11 -5
  158. package/src/components/Lists/Tree.tsx +4 -3
  159. package/src/components/Lists/TreeDropIndicator.tsx +1 -1
  160. package/src/components/Lists/Treegrid.stories.tsx +12 -6
  161. package/src/components/Lists/Treegrid.tsx +2 -2
  162. package/src/components/Main/Main.stories.tsx +14 -6
  163. package/src/components/Main/Main.tsx +15 -9
  164. package/src/components/Menus/ContextMenu.stories.tsx +11 -5
  165. package/src/components/Menus/ContextMenu.tsx +1 -0
  166. package/src/components/Menus/DropdownMenu.stories.tsx +11 -5
  167. package/src/components/Menus/DropdownMenu.tsx +21 -11
  168. package/src/components/Message/Message.stories.tsx +11 -5
  169. package/src/components/Message/Message.tsx +1 -1
  170. package/src/components/Popover/Popover.stories.tsx +11 -5
  171. package/src/components/Popover/Popover.tsx +8 -8
  172. package/src/components/ScrollArea/ScrollArea.stories.tsx +11 -5
  173. package/src/components/ScrollArea/ScrollArea.tsx +4 -4
  174. package/src/components/Select/Select.stories.tsx +14 -9
  175. package/src/components/Select/Select.tsx +5 -5
  176. package/src/components/Status/Status.stories.tsx +9 -3
  177. package/src/components/Tag/Tag.stories.tsx +13 -5
  178. package/src/components/ThemeProvider/ThemeProvider.tsx +4 -4
  179. package/src/components/ThemeProvider/TranslationsProvider.tsx +4 -4
  180. package/src/components/ThemeProvider/index.ts +3 -1
  181. package/src/components/Toast/Toast.stories.tsx +11 -5
  182. package/src/components/Toast/Toast.tsx +9 -9
  183. package/src/components/Toolbar/Toolbar.stories.tsx +20 -13
  184. package/src/components/Toolbar/Toolbar.tsx +3 -2
  185. package/src/components/Tooltip/Tooltip.stories.tsx +16 -9
  186. package/src/components/Tooltip/Tooltip.tsx +3 -3
  187. package/src/hooks/useSafeCollisionPadding.ts +1 -1
  188. package/src/index.ts +1 -1
  189. package/src/playground/Controls.stories.tsx +18 -13
  190. package/src/playground/Custom.stories.tsx +4 -4
  191. package/src/playground/Typography.stories.tsx +8 -3
  192. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +1 -1
  193. package/src/testing/decorators/withTheme.ts +8 -5
  194. package/src/util/index.ts +1 -1
  195. package/README.yml +0 -1
  196. package/dist/lib/browser/chunk-WXW6KSRL.mjs.map +0 -7
  197. package/dist/lib/node/chunk-3E3QKWX4.cjs +0 -4363
  198. package/dist/lib/node/chunk-3E3QKWX4.cjs.map +0 -7
  199. package/dist/lib/node/index.cjs +0 -175
  200. package/dist/lib/node/index.cjs.map +0 -7
  201. package/dist/lib/node/meta.json +0 -1
  202. package/dist/lib/node/testing/index.cjs +0 -114
  203. package/dist/lib/node/testing/index.cjs.map +0 -7
  204. package/dist/lib/node-esm/chunk-EQ7EG74H.mjs.map +0 -7
@@ -2,9 +2,9 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { enUS as dtLocaleEnUs, type Locale } from 'date-fns/locale';
6
- import i18Next, { type TFunction, type Resource } from 'i18next';
7
- import React, { type ReactNode, useEffect, createContext, useState, Suspense, useContext } from 'react';
5
+ import { type Locale, enUS as dtLocaleEnUs } from 'date-fns/locale';
6
+ import i18Next, { type Resource, type TFunction } from 'i18next';
7
+ import React, { type ReactNode, Suspense, createContext, useContext, useEffect, useState } from 'react';
8
8
  import { initReactI18next, useTranslation as useI18NextTranslation } from 'react-i18next';
9
9
 
10
10
  const initialLng = 'en-US';
@@ -32,7 +32,7 @@ export const resources = {
32
32
  'loading translations': 'Loading translations…',
33
33
  },
34
34
  },
35
- } as const;
35
+ } as const satisfies Resource;
36
36
 
37
37
  void i18Next.use(initReactI18next).init({
38
38
  resources,
@@ -3,4 +3,6 @@
3
3
  //
4
4
 
5
5
  export * from './ThemeProvider';
6
- export { type Label, toLocalizedString, useTranslation, isLabel } from './TranslationsProvider';
6
+ export { type Label, isLabel, toLocalizedString, useTranslation } from './TranslationsProvider';
7
+
8
+ // TODO(burdon): Use `@internal` with barrel exports (rather than picking individual exports?)
@@ -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, { type ReactNode, useState } from 'react';
8
9
 
9
- import { Toast } from './Toast';
10
10
  import { withTheme } from '../../testing';
11
11
  import { Button } from '../Buttons';
12
12
 
13
+ import { Toast } from './Toast';
14
+
13
15
  type ActionTriggerProps = { altText: string; trigger: ReactNode };
14
16
 
15
17
  type StorybookToastProps = Partial<{
@@ -44,15 +46,19 @@ const DefaultStory = ({ title, description, actionTriggers, openTrigger, closeTr
44
46
  );
45
47
  };
46
48
 
47
- export default {
49
+ const meta = {
48
50
  title: 'ui/react-ui-core/Toast',
49
- component: Toast,
51
+ component: Toast as any,
50
52
  render: DefaultStory,
51
53
  decorators: [withTheme],
52
54
  parameters: { chromatic: { disableSnapshot: false } },
53
- };
55
+ } satisfies Meta<typeof DefaultStory>;
56
+
57
+ export default meta;
58
+
59
+ type Story = StoryObj<typeof meta>;
54
60
 
55
- export const Default = {
61
+ export const Default: Story = {
56
62
  args: {
57
63
  openTrigger: 'Open toast',
58
64
  title: 'This is a toast',
@@ -5,22 +5,22 @@
5
5
  import { Primitive } from '@radix-ui/react-primitive';
6
6
  import { Slot } from '@radix-ui/react-slot';
7
7
  import {
8
+ ToastAction as ToastActionPrimitive,
9
+ type ToastActionProps as ToastActionPrimitiveProps,
10
+ ToastClose as ToastClosePrimitive,
11
+ type ToastCloseProps as ToastClosePrimitiveProps,
12
+ ToastDescription as ToastDescriptionPrimitive,
13
+ type ToastDescriptionProps as ToastDescriptionPrimitiveProps,
8
14
  ToastProvider as ToastProviderPrimitive,
9
15
  type ToastProviderProps as ToastProviderPrimitiveProps,
10
- ToastViewport as ToastViewportPrimitive,
11
- type ToastViewportProps as ToastViewportPrimitiveProps,
12
16
  Root as ToastRootPrimitive,
13
17
  type ToastProps as ToastRootPrimitiveProps,
14
18
  ToastTitle as ToastTitlePrimitive,
15
19
  type ToastTitleProps as ToastTitlePrimitiveProps,
16
- ToastDescription as ToastDescriptionPrimitive,
17
- type ToastDescriptionProps as ToastDescriptionPrimitiveProps,
18
- ToastAction as ToastActionPrimitive,
19
- type ToastActionProps as ToastActionPrimitiveProps,
20
- ToastClose as ToastClosePrimitive,
21
- type ToastCloseProps as ToastClosePrimitiveProps,
20
+ ToastViewport as ToastViewportPrimitive,
21
+ type ToastViewportProps as ToastViewportPrimitiveProps,
22
22
  } from '@radix-ui/react-toast';
23
- import React, { type ComponentPropsWithRef, forwardRef, type FunctionComponent } from 'react';
23
+ import React, { type ComponentPropsWithRef, type FunctionComponent, forwardRef } from 'react';
24
24
 
25
25
  import { useThemeContext } from '../../hooks';
26
26
  import { type ThemedClassName } from '../../util';
@@ -4,14 +4,16 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { ArrowClockwise, Bug, FileJs, FileTs, TextB, TextItalic, TextUnderline } from '@phosphor-icons/react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React from 'react';
9
9
 
10
- import { Toolbar } from './Toolbar';
11
10
  import { withTheme } from '../../testing';
12
11
  import { Toggle } from '../Buttons';
12
+ import { Icon } from '../Icon';
13
13
  import { Select } from '../Select';
14
14
 
15
+ import { Toolbar } from './Toolbar';
16
+
15
17
  type StorybookToolbarProps = {};
16
18
 
17
19
  const DefaultStory = (props: StorybookToolbarProps) => {
@@ -29,6 +31,7 @@ const DefaultStory = (props: StorybookToolbarProps) => {
29
31
  <Select.Option value={'b'}>B</Select.Option>
30
32
  <Select.Option value={'c'}>C</Select.Option>
31
33
  </Select.Viewport>
34
+ <Select.Arrow />
32
35
  </Select.Content>
33
36
  </Select.Portal>
34
37
  </Select.Root>
@@ -37,46 +40,50 @@ const DefaultStory = (props: StorybookToolbarProps) => {
37
40
  {/* TODO(burdon): Icon sizes should adapt to density. */}
38
41
  <Toolbar.ToggleGroup type='multiple'>
39
42
  <Toolbar.ToggleGroupItem value='a'>
40
- <TextB />
43
+ <Icon icon='ph--text-b--regular' />
41
44
  </Toolbar.ToggleGroupItem>
42
45
  <Toolbar.ToggleGroupItem value='b'>
43
- <TextItalic />
46
+ <Icon icon='ph--text-italic--regular' />
44
47
  </Toolbar.ToggleGroupItem>
45
48
  <Toolbar.ToggleGroupItem value='c'>
46
- <TextUnderline />
49
+ <Icon icon='ph--text-underline--regular' />
47
50
  </Toolbar.ToggleGroupItem>
48
51
  </Toolbar.ToggleGroup>
49
52
  {/* TODO(burdon): Highlight isn't shown. */}
50
53
  <Toolbar.ToggleGroup type='single' defaultValue='a'>
51
54
  <Toolbar.ToggleGroupItem value='a'>
52
- <FileTs />
55
+ <Icon icon='ph--file-ts--regular' />
53
56
  </Toolbar.ToggleGroupItem>
54
57
  <Toolbar.ToggleGroupItem value='b'>
55
- <FileJs />
58
+ <Icon icon='ph--file-js--regular' />
56
59
  </Toolbar.ToggleGroupItem>
57
60
  </Toolbar.ToggleGroup>
58
61
  <Toolbar.Button asChild>
59
62
  <Toggle>
60
- <Bug />
63
+ <Icon icon='ph--bug--regular' />
61
64
  </Toggle>
62
65
  </Toolbar.Button>
63
66
  <Toolbar.Separator />
64
67
  <Toolbar.Button>Test</Toolbar.Button>
65
68
  <Toolbar.Button>
66
- <ArrowClockwise />
69
+ <Icon icon='ph--arrow-clockwise--regular' />
67
70
  </Toolbar.Button>
68
71
  </Toolbar.Root>
69
72
  );
70
73
  };
71
74
 
72
- export default {
75
+ const meta = {
73
76
  title: 'ui/react-ui-core/Toolbar',
74
- component: Toolbar,
77
+ component: Toolbar as any,
75
78
  render: DefaultStory,
76
79
  decorators: [withTheme],
77
80
  parameters: { chromatic: { disableSnapshot: false } },
78
- };
81
+ } satisfies Meta<typeof DefaultStory>;
82
+
83
+ export default meta;
84
+
85
+ type Story = StoryObj<typeof meta>;
79
86
 
80
- export const Default = {
87
+ export const Default: Story = {
81
88
  args: {},
82
89
  };
@@ -13,11 +13,11 @@ import {
13
13
  ButtonGroup,
14
14
  type ButtonGroupProps,
15
15
  type ButtonProps,
16
+ IconButton,
17
+ type IconButtonProps,
16
18
  Toggle,
17
19
  type ToggleGroupItemProps,
18
20
  type ToggleProps,
19
- IconButton,
20
- type IconButtonProps,
21
21
  } from '../Buttons';
22
22
  import { Link, type LinkProps } from '../Link';
23
23
  import { Separator, type SeparatorProps } from '../Separator';
@@ -30,6 +30,7 @@ const ToolbarRoot = forwardRef<HTMLDivElement, ToolbarRootProps>(
30
30
  return (
31
31
  <ToolbarPrimitive.Root
32
32
  {...props}
33
+ data-arrow-keys={props.orientation === 'vertical' ? 'up down' : 'left right'}
33
34
  className={tx('toolbar.root', 'toolbar', { layoutManaged }, classNames)}
34
35
  ref={forwardedRef}
35
36
  >
@@ -3,14 +3,17 @@
3
3
  //
4
4
 
5
5
  import '@dxos-theme';
6
+
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
8
  import React from 'react';
7
9
 
8
10
  import { faker } from '@dxos/random';
9
11
 
10
- import { Tooltip } from './Tooltip';
11
12
  import { withTheme } from '../../testing';
12
13
  import { Button } from '../Buttons';
13
14
 
15
+ import { Tooltip } from './Tooltip';
16
+
14
17
  type StoryProps = {
15
18
  tooltips: { label: string; content: string }[];
16
19
  defaultOpen?: boolean;
@@ -28,15 +31,19 @@ const DefaultStory = ({ tooltips, defaultOpen }: StoryProps) => (
28
31
  </Tooltip.Provider>
29
32
  );
30
33
 
31
- export default {
34
+ const meta = {
32
35
  title: 'ui/react-ui-core/Tooltip',
33
- component: Tooltip,
36
+ component: Tooltip as any,
34
37
  render: DefaultStory,
35
38
  decorators: [withTheme],
36
39
  parameters: { chromatic: { disableSnapshot: false } },
37
- };
40
+ } satisfies Meta<typeof DefaultStory>;
41
+
42
+ export default meta;
43
+
44
+ type Story = StoryObj<typeof meta>;
38
45
 
39
- export const Default = {
46
+ export const Default: Story = {
40
47
  args: {
41
48
  tooltips: [
42
49
  {
@@ -50,9 +57,9 @@ export const Default = {
50
57
  },
51
58
  };
52
59
 
53
- export const DefaultOpen = {
60
+ export const DefaultOpen: Story = {
54
61
  args: {
55
- defaultOption: true,
62
+ defaultOpen: true,
56
63
  tooltips: [
57
64
  {
58
65
  label: 'Tooltip trigger',
@@ -65,9 +72,9 @@ export const DefaultOpen = {
65
72
  },
66
73
  };
67
74
 
68
- export const StressTest = {
75
+ export const StressTest: Story = {
69
76
  args: {
70
- defaultOption: true,
77
+ defaultOpen: true,
71
78
  tooltips: faker.helpers.multiple(
72
79
  () => ({
73
80
  label: faker.lorem.words(2),
@@ -11,7 +11,7 @@ import type { Scope } from '@radix-ui/react-context';
11
11
  import { DismissableLayer } from '@radix-ui/react-dismissable-layer';
12
12
  import { useId } from '@radix-ui/react-id';
13
13
  import * as PopperPrimitive from '@radix-ui/react-popper';
14
- import { createPopperScope, type PopperAnchorProps } from '@radix-ui/react-popper';
14
+ import { type PopperAnchorProps, createPopperScope } from '@radix-ui/react-popper';
15
15
  import { Portal as PortalPrimitive } from '@radix-ui/react-portal';
16
16
  import { Presence } from '@radix-ui/react-presence';
17
17
  import { Primitive } from '@radix-ui/react-primitive';
@@ -23,10 +23,10 @@ import React, {
23
23
  type ComponentPropsWithoutRef,
24
24
  type ElementRef,
25
25
  type FC,
26
- type SyntheticEvent,
27
- forwardRef,
28
26
  type MutableRefObject,
29
27
  type ReactNode,
28
+ type SyntheticEvent,
29
+ forwardRef,
30
30
  useCallback,
31
31
  useEffect,
32
32
  useMemo,
@@ -21,7 +21,7 @@ const safePadding = (
21
21
  ) => {
22
22
  return (
23
23
  (propIsNumber(safePadding[side]) ? safePadding[side] : 0) +
24
- (propIsNumber(propsPadding) ? propsPadding : propsIsRecord(propsPadding) ? propsPadding[side] ?? 0 : 0)
24
+ (propIsNumber(propsPadding) ? propsPadding : propsIsRecord(propsPadding) ? (propsPadding[side] ?? 0) : 0)
25
25
  );
26
26
  };
27
27
 
package/src/index.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export { type TFunction } from 'i18next';
5
+ export { type Resource, type TFunction } from 'i18next';
6
6
  export { Trans } from 'react-i18next';
7
7
 
8
8
  export * from '@dxos/react-hooks';
@@ -4,11 +4,11 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { FileTs, FileJs, ArrowClockwise, Bug, TextUnderline, TextB, TextItalic } from '@phosphor-icons/react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React, { useState } from 'react';
9
9
 
10
- import { Input, Select, Toggle, Toolbar } from '../components';
11
- import { withTheme, withSurfaceVariantsLayout } from '../testing';
10
+ import { Icon, Input, Select, Toggle, Toolbar } from '../components';
11
+ import { withSurfaceVariantsLayout, withTheme } from '../testing';
12
12
 
13
13
  const DefaultStory = () => {
14
14
  const [checked, setChecked] = useState<boolean>(false);
@@ -29,6 +29,7 @@ const DefaultStory = () => {
29
29
  <Select.Option value={'b'}>B</Select.Option>
30
30
  <Select.Option value={'c'}>C</Select.Option>
31
31
  </Select.Viewport>
32
+ <Select.Arrow />
32
33
  </Select.Content>
33
34
  </Select.Portal>
34
35
  </Select.Root>
@@ -37,27 +38,27 @@ const DefaultStory = () => {
37
38
  {/* TODO(burdon): Icon sizes should adapt to density. */}
38
39
  <Toolbar.ToggleGroup type='multiple'>
39
40
  <Toolbar.ToggleGroupItem value='a'>
40
- <TextB />
41
+ <Icon icon='ph--text-b--regular' />
41
42
  </Toolbar.ToggleGroupItem>
42
43
  <Toolbar.ToggleGroupItem value='b'>
43
- <TextItalic />
44
+ <Icon icon='ph--text-italic--regular' />
44
45
  </Toolbar.ToggleGroupItem>
45
46
  <Toolbar.ToggleGroupItem value='c'>
46
- <TextUnderline />
47
+ <Icon icon='ph--text-underline--regular' />
47
48
  </Toolbar.ToggleGroupItem>
48
49
  </Toolbar.ToggleGroup>
49
50
  {/* TODO(burdon): Highlight isn't shown. */}
50
51
  <Toolbar.ToggleGroup type='single' defaultValue='a'>
51
52
  <Toolbar.ToggleGroupItem value='a'>
52
- <FileTs />
53
+ <Icon icon='ph--file-ts--regular' />
53
54
  </Toolbar.ToggleGroupItem>
54
55
  <Toolbar.ToggleGroupItem value='b'>
55
- <FileJs />
56
+ <Icon icon='ph--file-js--regular' />
56
57
  </Toolbar.ToggleGroupItem>
57
58
  </Toolbar.ToggleGroup>
58
59
  <Toolbar.Button asChild>
59
60
  <Toggle>
60
- <Bug />
61
+ <Icon icon='ph--bug--regular' />
61
62
  </Toggle>
62
63
  </Toolbar.Button>
63
64
  {/* TODO(burdon): Should not be 'is-full' by default. */}
@@ -71,7 +72,7 @@ const DefaultStory = () => {
71
72
  </Input.Root>
72
73
  <Toolbar.Button>Test</Toolbar.Button>
73
74
  <Toolbar.Button>
74
- <ArrowClockwise />
75
+ <Icon icon='ph--arrow-clockwise--regular' />
75
76
  </Toolbar.Button>
76
77
  </Toolbar.Root>
77
78
  <Input.Root>
@@ -81,11 +82,15 @@ const DefaultStory = () => {
81
82
  );
82
83
  };
83
84
 
84
- export default {
85
+ const meta = {
85
86
  title: 'ui/react-ui-core/Playground/Controls',
86
87
  render: DefaultStory,
87
88
  decorators: [withSurfaceVariantsLayout(), withTheme],
88
89
  parameters: { chromatic: { disableSnapshot: false } },
89
- };
90
+ } satisfies Meta<typeof Icon>;
91
+
92
+ export default meta;
93
+
94
+ type Story = StoryObj<typeof meta>;
90
95
 
91
- export const Default = {};
96
+ export const Default: Story = {};
@@ -4,10 +4,10 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type StoryObj, type Meta } from '@storybook/react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React from 'react';
9
9
 
10
- import { Button, IconButton, type ButtonProps, Tooltip } from '../components';
10
+ import { Button, type ButtonProps, IconButton, Tooltip } from '../components';
11
11
  import { withTheme } from '../testing';
12
12
 
13
13
  // TODO(burdon): Change density to 3 or 4 sizes: (large, medium, small; or 22, 28, 32, 40)
@@ -120,13 +120,13 @@ const DefaultStory = ({ children, ...args }: Omit<ButtonProps, 'ref'>) => {
120
120
  );
121
121
  };
122
122
 
123
- const meta: Meta<typeof Button> = {
123
+ const meta = {
124
124
  title: 'ui/react-ui-core/Playground/Custom',
125
125
  component: Button,
126
126
  render: DefaultStory,
127
127
  decorators: [withTheme],
128
128
  parameters: { layout: 'centered' },
129
- };
129
+ } satisfies Meta<typeof Button>;
130
130
 
131
131
  export default meta;
132
132
 
@@ -4,6 +4,7 @@
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
10
  import { withTheme } from '../testing';
@@ -43,13 +44,17 @@ const DefaultStory = () => {
43
44
  );
44
45
  };
45
46
 
46
- export default {
47
+ const meta = {
47
48
  title: 'ui/react-ui-core/Playground/Typography',
48
49
  render: DefaultStory,
49
50
  decorators: [withTheme],
50
51
  parameters: { chromatic: { disableSnapshot: false } },
51
- };
52
+ } satisfies Meta<typeof DefaultStory>;
53
+
54
+ export default meta;
55
+
56
+ type Story = StoryObj<typeof meta>;
52
57
 
53
- export const Default = {
58
+ export const Default: Story = {
54
59
  args: {},
55
60
  };
@@ -14,7 +14,7 @@ type Config = {
14
14
  };
15
15
 
16
16
  const Container = ({ children, elevation, surface }: PropsWithChildren<{ elevation: Elevation; surface?: string }>) => (
17
- <div className={mx('rounded-md border border-separator', surface, surfaceShadow({ elevation }))}>{children}</div>
17
+ <div className={mx('rounded-md border border-separator p-2', surface, surfaceShadow({ elevation }))}>{children}</div>
18
18
  );
19
19
 
20
20
  const Panel = ({
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { type Decorator, type StoryContext, type StoryFn } from '@storybook/react';
6
- import { useEffect, createElement } from 'react';
6
+ import { createElement, useEffect } from 'react';
7
7
 
8
8
  import { defaultTx } from '@dxos/react-ui-theme';
9
9
 
@@ -15,8 +15,11 @@ export const withTheme: Decorator = (Story: StoryFn, context: StoryContext) => {
15
15
  document.documentElement.classList[theme === 'dark' ? 'add' : 'remove']('dark');
16
16
  }, [theme]);
17
17
 
18
- return createElement(ThemeProvider, {
19
- children: createElement(Story),
20
- tx: defaultTx,
21
- });
18
+ return createElement(
19
+ ThemeProvider,
20
+ {
21
+ tx: defaultTx,
22
+ },
23
+ createElement(Story),
24
+ );
22
25
  };
package/src/util/index.ts CHANGED
@@ -3,4 +3,4 @@
3
3
  //
4
4
 
5
5
  export * from './hasIosKeyboard';
6
- export * from './ThemedClassName';
6
+ export type * from './ThemedClassName';
package/README.yml DELETED
@@ -1 +0,0 @@
1
- guideUrl: https://docs.dxos.org/guide/react/aurora/