@dxos/react-ui 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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 (253) 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 +3163 -64
  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 +34 -46
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  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 +3163 -64
  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 +34 -46
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +1 -1
  16. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  17. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  18. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +2 -2
  19. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  20. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  21. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  22. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  23. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  24. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.d.ts +4 -4
  25. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  26. package/dist/types/src/components/{Buttons → Button}/ToggleGroup.stories.d.ts +4 -4
  27. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  28. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  29. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  30. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  31. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  32. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  33. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  34. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  35. package/dist/types/src/components/Dialog/Dialog.d.ts +40 -0
  36. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  37. package/dist/types/src/components/{Dialogs → Dialog}/Dialog.stories.d.ts +7 -5
  38. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  39. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  40. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  41. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  42. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  43. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  44. package/dist/types/src/components/Input/Input.d.ts +5 -2
  45. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  46. package/dist/types/src/components/Input/Input.stories.d.ts +1 -1
  47. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  48. package/dist/types/src/components/{Lists → List}/List.d.ts +1 -1
  49. package/dist/types/src/components/List/List.d.ts.map +1 -0
  50. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  51. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  52. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  53. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  54. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  55. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  56. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  57. package/dist/types/src/components/List/index.d.ts.map +1 -0
  58. package/dist/types/src/components/Main/Main.d.ts +44 -19
  59. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  60. package/dist/types/src/components/Main/Main.stories.d.ts +2 -1
  61. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  62. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  63. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  64. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  65. package/dist/types/src/components/{Menus → Menu}/DropdownMenu.d.ts +3 -4
  66. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  67. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  68. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  69. package/dist/types/src/components/Message/Message.d.ts +1 -1
  70. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  71. package/dist/types/src/components/Message/Message.stories.d.ts +1 -1
  72. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  73. package/dist/types/src/components/Popover/Popover.d.ts +1 -1
  74. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  75. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +9 -7
  76. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  77. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +4 -0
  78. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  79. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +39 -0
  80. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  81. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +19 -0
  82. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  83. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  84. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  85. package/dist/types/src/components/Select/Select.d.ts +10 -10
  86. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  87. package/dist/types/src/components/Separator/Separator.d.ts +1 -1
  88. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  89. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  90. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -2
  91. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  92. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -8
  93. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  94. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  95. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  96. package/dist/types/src/components/Toast/Toast.d.ts +4 -4
  97. package/dist/types/src/components/Toolbar/Toolbar.d.ts +11 -11
  98. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  99. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  100. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  101. package/dist/types/src/components/index.d.ts +5 -4
  102. package/dist/types/src/components/index.d.ts.map +1 -1
  103. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  104. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  105. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  106. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  107. package/dist/types/src/index.d.ts +1 -1
  108. package/dist/types/src/index.d.ts.map +1 -1
  109. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  110. package/dist/types/src/testing/decorators/index.d.ts +1 -1
  111. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  112. package/dist/types/src/testing/decorators/withLayout.d.ts +3 -3
  113. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  114. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  115. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  116. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  117. package/dist/types/src/util/index.d.ts +1 -2
  118. package/dist/types/src/util/index.d.ts.map +1 -1
  119. package/dist/types/tsconfig.tsbuildinfo +1 -1
  120. package/package.json +32 -25
  121. package/src/components/Avatars/Avatar.stories.tsx +2 -2
  122. package/src/components/Avatars/Avatar.tsx +1 -1
  123. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -1
  124. package/src/components/{Buttons → Button}/Button.stories.tsx +2 -2
  125. package/src/components/{Buttons → Button}/Button.tsx +1 -1
  126. package/src/components/{Buttons → Button}/IconButton.tsx +19 -13
  127. package/src/components/{Buttons → Button}/Toggle.stories.tsx +5 -4
  128. package/src/components/Clipboard/CopyButton.tsx +4 -4
  129. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  130. package/src/components/{Dialogs → Dialog}/AlertDialog.stories.tsx +1 -1
  131. package/src/components/Dialog/Dialog.stories.tsx +97 -0
  132. package/src/components/{Dialogs → Dialog}/Dialog.tsx +140 -40
  133. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  134. package/src/components/Icon/Icon.stories.tsx +1 -1
  135. package/src/components/Icon/Icon.tsx +1 -1
  136. package/src/components/Input/Input.stories.tsx +2 -2
  137. package/src/components/Input/Input.tsx +13 -4
  138. package/src/components/{Lists → List}/List.stories.tsx +17 -13
  139. package/src/components/{Lists → List}/List.tsx +1 -1
  140. package/src/components/{Lists → List}/ListDropIndicator.tsx +1 -1
  141. package/src/components/Main/Main.stories.tsx +127 -20
  142. package/src/components/Main/Main.tsx +265 -58
  143. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +1 -1
  144. package/src/components/{Menus → Menu}/DropdownMenu.tsx +79 -58
  145. package/src/components/Message/Message.stories.tsx +1 -1
  146. package/src/components/Message/Message.tsx +30 -5
  147. package/src/components/Popover/Popover.stories.tsx +1 -1
  148. package/src/components/Popover/Popover.tsx +52 -33
  149. package/src/components/ScrollArea/ScrollArea.stories.tsx +54 -4
  150. package/src/components/ScrollArea/ScrollArea.tsx +50 -4
  151. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +70 -0
  152. package/src/components/ScrollContainer/ScrollContainer.tsx +233 -0
  153. package/src/components/ScrollContainer/index.ts +5 -0
  154. package/src/components/Select/Select.stories.tsx +2 -2
  155. package/src/components/Select/Select.tsx +4 -4
  156. package/src/components/Tag/Tag.stories.tsx +2 -2
  157. package/src/components/Tag/Tag.tsx +1 -1
  158. package/src/components/ThemeProvider/ThemeProvider.tsx +1 -3
  159. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  160. package/src/components/ThemeProvider/index.ts +3 -3
  161. package/src/components/Toast/Toast.stories.tsx +1 -1
  162. package/src/components/Toolbar/Toolbar.stories.tsx +2 -4
  163. package/src/components/Toolbar/Toolbar.tsx +24 -9
  164. package/src/components/Tooltip/Tooltip.stories.tsx +1 -1
  165. package/src/components/Tooltip/Tooltip.tsx +22 -20
  166. package/src/components/index.ts +5 -4
  167. package/src/hooks/useDensityContext.ts +1 -1
  168. package/src/hooks/useElevationContext.ts +1 -1
  169. package/src/index.ts +1 -1
  170. package/src/playground/Controls.stories.tsx +2 -2
  171. package/src/playground/Custom.stories.tsx +6 -8
  172. package/src/testing/decorators/index.ts +1 -1
  173. package/src/testing/decorators/withLayout.tsx +22 -15
  174. package/src/testing/decorators/{withSurfaceVariantsLayout.tsx → withLayoutVariants.tsx} +5 -5
  175. package/src/testing/decorators/withTheme.tsx +3 -2
  176. package/src/util/index.ts +2 -2
  177. package/dist/lib/browser/chunk-HUZZ56DW.mjs +0 -4509
  178. package/dist/lib/browser/chunk-HUZZ56DW.mjs.map +0 -7
  179. package/dist/lib/node-esm/chunk-OJLL6E2Z.mjs +0 -4511
  180. package/dist/lib/node-esm/chunk-OJLL6E2Z.mjs.map +0 -7
  181. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  182. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  183. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  184. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  185. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  186. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -13
  187. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  188. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  189. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  190. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  191. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  192. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  193. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  194. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  195. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  196. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  197. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  198. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  199. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  200. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  201. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  202. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  203. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  204. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  205. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  206. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  207. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  208. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  209. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  210. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  211. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  212. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  213. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  214. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  215. package/dist/types/src/util/domino.d.ts +0 -18
  216. package/dist/types/src/util/domino.d.ts.map +0 -1
  217. package/src/components/Dialogs/Dialog.stories.tsx +0 -67
  218. package/src/util/ThemedClassName.ts +0 -7
  219. package/src/util/domino.ts +0 -53
  220. /package/dist/types/src/components/{Buttons → Button}/Button.stories.d.ts +0 -0
  221. /package/dist/types/src/components/{Buttons → Button}/IconButton.stories.d.ts +0 -0
  222. /package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
  223. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  224. /package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.d.ts +0 -0
  225. /package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.stories.d.ts +0 -0
  226. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  227. /package/dist/types/src/components/{Lists → List}/List.stories.d.ts +0 -0
  228. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  229. /package/dist/types/src/components/{Lists → List}/Tree.d.ts +0 -0
  230. /package/dist/types/src/components/{Lists → List}/Tree.stories.d.ts +0 -0
  231. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  232. /package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +0 -0
  233. /package/dist/types/src/components/{Lists → List}/Treegrid.stories.d.ts +0 -0
  234. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  235. /package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -0
  236. /package/dist/types/src/components/{Menus → Menu}/DropdownMenu.stories.d.ts +0 -0
  237. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  238. /package/src/components/{Buttons → Button}/IconButton.stories.tsx +0 -0
  239. /package/src/components/{Buttons → Button}/Toggle.tsx +0 -0
  240. /package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +0 -0
  241. /package/src/components/{Buttons → Button}/ToggleGroup.tsx +0 -0
  242. /package/src/components/{Buttons → Button}/index.ts +0 -0
  243. /package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +0 -0
  244. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  245. /package/src/components/{Lists → List}/Tree.stories.tsx +0 -0
  246. /package/src/components/{Lists → List}/Tree.tsx +0 -0
  247. /package/src/components/{Lists → List}/TreeDropIndicator.tsx +0 -0
  248. /package/src/components/{Lists → List}/Treegrid.stories.tsx +0 -0
  249. /package/src/components/{Lists → List}/Treegrid.tsx +0 -0
  250. /package/src/components/{Lists → List}/index.ts +0 -0
  251. /package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +0 -0
  252. /package/src/components/{Menus → Menu}/ContextMenu.tsx +0 -0
  253. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -5,7 +5,7 @@
5
5
  import { type Primitive } from '@radix-ui/react-primitive';
6
6
  import React, { type ComponentPropsWithRef, forwardRef, memo } from 'react';
7
7
 
8
- import { type Size } from '@dxos/react-ui-types';
8
+ import { type Size } from '@dxos/ui-types';
9
9
 
10
10
  import { useIconHref, useThemeContext } from '../../hooks';
11
11
  import { type ThemedClassName } from '../../util';
@@ -5,8 +5,8 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
- import { baseSurface, modalSurface, mx, surfaceShadow } from '@dxos/react-ui-theme';
9
- import { type MessageValence } from '@dxos/react-ui-types';
8
+ import { baseSurface, modalSurface, mx, surfaceShadow } from '@dxos/ui-theme';
9
+ import { type MessageValence } from '@dxos/ui-types';
10
10
 
11
11
  import { withTheme } from '../../testing';
12
12
 
@@ -27,8 +27,8 @@ import {
27
27
  type ValidationProps as ValidationPrimitiveProps,
28
28
  useInputContext,
29
29
  } from '@dxos/react-input';
30
- import { mx } from '@dxos/react-ui-theme';
31
- import { type ClassNameValue, type Density, type Elevation, type Size } from '@dxos/react-ui-types';
30
+ import { mx } from '@dxos/ui-theme';
31
+ import { type ClassNameValue, type Density, type Elevation, type Size } from '@dxos/ui-types';
32
32
 
33
33
  import { useDensityContext, useElevationContext, useThemeContext } from '../../hooks';
34
34
  import { type ThemedClassName } from '../../util';
@@ -162,10 +162,17 @@ const PinInput = forwardRef<HTMLInputElement, PinInputProps>(
162
162
 
163
163
  // TODO(burdon): Implement inline icon within button: e.g., https://www.radix-ui.com/themes/playground#text-field
164
164
 
165
- type TextInputProps = InputSharedProps & ThemedClassName<TextInputPrimitiveProps>;
165
+ type AutoFillProps = {
166
+ noAutoFill?: boolean;
167
+ };
168
+
169
+ type TextInputProps = InputSharedProps & ThemedClassName<TextInputPrimitiveProps> & AutoFillProps;
166
170
 
167
171
  const TextInput = forwardRef<HTMLInputElement, InputScopedProps<TextInputProps>>(
168
- ({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
172
+ (
173
+ { __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, noAutoFill, ...props },
174
+ forwardedRef,
175
+ ) => {
169
176
  const { hasIosKeyboard } = useThemeContext();
170
177
  const themeContextValue = useThemeContext();
171
178
  const density = useDensityContext(propsDensity);
@@ -177,6 +184,8 @@ const TextInput = forwardRef<HTMLInputElement, InputScopedProps<TextInputProps>>
177
184
  return (
178
185
  <TextInputPrimitive
179
186
  {...props}
187
+ // TODO(wittjosiah): Factor out autofill properies.
188
+ {...{ 'data-1p-ignore': noAutoFill }}
180
189
  className={tx(
181
190
  'input.input',
182
191
  'input',
@@ -7,7 +7,7 @@ import { SortableContext, arrayMove, useSortable, verticalListSortingStrategy }
7
7
  import { CSS } from '@dnd-kit/utilities';
8
8
  import { useArrowNavigationGroup } from '@fluentui/react-tabster';
9
9
  import { type Meta, type StoryObj } from '@storybook/react-vite';
10
- import React, { type ReactNode, useState } from 'react';
10
+ import React, { type ReactNode, useCallback, useState } from 'react';
11
11
 
12
12
  import {
13
13
  getSize,
@@ -16,7 +16,7 @@ import {
16
16
  ghostSelectedTrackingInterFromNormal,
17
17
  mx,
18
18
  surfaceShadow,
19
- } from '@dxos/react-ui-theme';
19
+ } from '@dxos/ui-theme';
20
20
 
21
21
  import { withTheme } from '../../testing';
22
22
  import { Icon } from '../Icon';
@@ -63,16 +63,20 @@ export const UniformSizeDraggable: Story = {
63
63
  })),
64
64
  );
65
65
 
66
- const handleDragEnd = (event: DragEndEvent) => {
67
- const { active, over } = event;
68
- if (active.id !== over?.id) {
69
- setItems((items) => {
70
- const oldIndex = items.findIndex((item) => item.id === active.id);
71
- const newIndex = items.findIndex((item) => item.id === over?.id);
72
- return arrayMove(items, oldIndex, newIndex);
73
- });
74
- }
75
- };
66
+ const handleDragEnd = useCallback(
67
+ (event: DragEndEvent) => {
68
+ const { active, over } = event;
69
+ if (active.id !== over?.id) {
70
+ setItems((items) => {
71
+ const oldIndex = items.findIndex((item) => item.id === active.id);
72
+ const newIndex = items.findIndex((item) => item.id === over?.id);
73
+ return arrayMove(items, oldIndex, newIndex);
74
+ });
75
+ }
76
+ },
77
+ [items],
78
+ );
79
+
76
80
  return (
77
81
  <DndContext onDragEnd={handleDragEnd}>
78
82
  <SortableContext items={items.map(({ id }) => id)} strategy={verticalListSortingStrategy}>
@@ -229,7 +233,7 @@ export const SelectableListbox: Story = {
229
233
  onClick={() => setSelectedId(id)}
230
234
  onKeyUp={(event) => handleKeyUp(event, id)}
231
235
  >
232
- <ListItem.Heading classNames='flex pis-1 pie-1 items-center grow truncate'>{text}</ListItem.Heading>
236
+ <ListItem.Heading classNames='flex pli-1 items-center grow truncate'>{text}</ListItem.Heading>
233
237
  </ListItem.Root>
234
238
  ))}
235
239
  </List>
@@ -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';
@@ -18,7 +18,7 @@ const orientationStyles: Record<Orientation, HTMLAttributes<HTMLElement>['classN
18
18
  horizontal:
19
19
  'h-[--line-thickness] left-[calc(var(--line-inset)+var(--terminal-radius))] right-[--line-inset] before:left-[--terminal-inset]',
20
20
  vertical:
21
- 'w-[--line-thickness] top-[calc(var(--line-inset)+var(--terminal-radius))] bottom-[--line-inset] before:top-[--terminal-inset]',
21
+ 'is-[--line-thickness] top-[calc(var(--line-inset)+var(--terminal-radius))] bottom-[--line-inset] before:top-[--terminal-inset]',
22
22
  };
23
23
 
24
24
  const edgeStyles: Record<Edge, HTMLAttributes<HTMLElement>['className']> = {
@@ -5,41 +5,86 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
- import { withTheme } from '../../testing';
9
- import { Button } from '../Buttons';
8
+ import { withLayout, withTheme } from '../../testing';
9
+ import { IconButton } from '../Button';
10
+ import { Input } from '../Input';
11
+ import { Toolbar } from '../Toolbar';
10
12
 
11
- import { Main, useSidebars } from './Main';
13
+ import { Main, useDynamicDrawer, useSidebars } from './Main';
12
14
 
13
15
  type StoryMainArgs = {};
14
16
 
15
- const NavigationSidebarToggle = () => {
17
+ const NavigationSidebarToggle = ({ close }: { close?: boolean }) => {
16
18
  const { toggleNavigationSidebar } = useSidebars('StoryMain__SidebarToggle');
17
- return <Button onClick={toggleNavigationSidebar}>Toggle navigation sidebar</Button>;
19
+ return (
20
+ <IconButton
21
+ icon={close ? 'ph--caret-left--regular' : 'ph--caret-right--regular'}
22
+ iconOnly
23
+ label='Toggle navigation sidebar'
24
+ onClick={toggleNavigationSidebar}
25
+ />
26
+ );
18
27
  };
19
28
 
20
- const ComplementarySidebarToggle = () => {
29
+ const ComplementarySidebarToggle = ({ close }: { close?: boolean }) => {
21
30
  const { toggleComplementarySidebar } = useSidebars('StoryMain__SidebarToggle');
22
- return <Button onClick={toggleComplementarySidebar}>Toggle complementary sidebar</Button>;
31
+ return (
32
+ <IconButton
33
+ icon={close ? 'ph--caret-right--regular' : 'ph--caret-left--regular'}
34
+ iconOnly
35
+ label='Toggle complementary sidebar'
36
+ onClick={toggleComplementarySidebar}
37
+ />
38
+ );
39
+ };
40
+
41
+ const DrawerToggle = ({ close }: { close?: boolean }) => {
42
+ const { toggleDrawer } = useSidebars('StoryMain__DrawerToggle');
43
+ return (
44
+ <IconButton
45
+ icon={close ? 'ph--caret-down--regular' : 'ph--caret-up--regular'}
46
+ iconOnly
47
+ label='Toggle drawer'
48
+ onClick={toggleDrawer}
49
+ />
50
+ );
51
+ };
52
+
53
+ const DrawerState = () => {
54
+ const { drawerState } = useSidebars('StoryMain__DrawerStateDisplay');
55
+ return (
56
+ <div className='flex items-center gap-2'>
57
+ <span>Drawer</span>
58
+ <span>({drawerState})</span>
59
+ <span>[{window.innerHeight}]</span>
60
+ </div>
61
+ );
23
62
  };
24
63
 
25
64
  const DefaultStory = (_args: StoryMainArgs) => {
26
65
  return (
27
- <Main.Root>
66
+ <Main.Root defaultComplementarySidebarState='closed' defaultNavigationSidebarState='closed'>
28
67
  <Main.Overlay />
29
- <Main.NavigationSidebar label='Navigation' classNames='p-4'>
30
- <p>Navigation sidebar content, hi!</p>
31
- <NavigationSidebarToggle />
68
+ <Main.NavigationSidebar label='Navigation'>
69
+ <Toolbar.Root>
70
+ <h1>Navigation</h1>
71
+ <Toolbar.Separator variant='gap' classNames='grow' />
72
+ <NavigationSidebarToggle close />
73
+ </Toolbar.Root>
32
74
  </Main.NavigationSidebar>
33
- <Main.Content>
34
- <div role='group' className='m-2 p-4 bg-neutral-50 dark:bg-neutral-950 rounded space-y-2'>
35
- <ComplementarySidebarToggle />
36
- <p>Main content, hello!</p>
75
+ <Main.Content classNames='is-full'>
76
+ <Toolbar.Root>
37
77
  <NavigationSidebarToggle />
38
- </div>
78
+ <div className='flex items-center grow justify-center'>Main</div>
79
+ <ComplementarySidebarToggle />
80
+ </Toolbar.Root>
39
81
  </Main.Content>
40
- <Main.ComplementarySidebar label='Complementary content' classNames='p-4'>
41
- <p>Complementary sidebar content, hello!</p>
42
- <ComplementarySidebarToggle />
82
+ <Main.ComplementarySidebar label='Complementary'>
83
+ <Toolbar.Root>
84
+ <ComplementarySidebarToggle close />
85
+ <Toolbar.Separator variant='gap' classNames='grow' />
86
+ <h1>Complementary</h1>
87
+ </Toolbar.Root>
43
88
  </Main.ComplementarySidebar>
44
89
  </Main.Root>
45
90
  );
@@ -49,7 +94,7 @@ const meta = {
49
94
  title: 'ui/react-ui-core/Main',
50
95
  component: Main.Root,
51
96
  render: DefaultStory,
52
- decorators: [withTheme],
97
+ decorators: [withTheme, withLayout({ layout: 'fullscreen' })],
53
98
  parameters: {
54
99
  layout: 'fullscreen',
55
100
  chromatic: {
@@ -65,3 +110,65 @@ type Story = StoryObj<typeof meta>;
65
110
  export const Default: Story = {
66
111
  args: {},
67
112
  };
113
+
114
+ const DrawerStory = (_args: StoryMainArgs) => {
115
+ return (
116
+ <Main.Root>
117
+ <Main.Overlay />
118
+ <DrawerStoryInner />
119
+ </Main.Root>
120
+ );
121
+ };
122
+
123
+ const DrawerStoryInner = () => {
124
+ useDynamicDrawer('DrawerStoryInner');
125
+
126
+ return (
127
+ <>
128
+ <Main.Content classNames='flex flex-col is-full overflow-hidden'>
129
+ <Toolbar.Root classNames='pli-2'>
130
+ <h1>Main Content</h1>
131
+ <Toolbar.Separator variant='gap' classNames='grow' />
132
+ <DrawerToggle />
133
+ </Toolbar.Root>
134
+ <div className='flex flex-col bs-full overflow-y-auto p-2'>
135
+ <p className='text-sm text-description'>
136
+ The drawer is mutually exclusive with sidebars and is intended for mobile apps.
137
+ </p>
138
+ <div className='plb-2 space-y-2'>
139
+ {Array.from({ length: 50 }).map((_, i) => (
140
+ <p key={i}>Line {i + 1}</p>
141
+ ))}
142
+ </div>
143
+ </div>
144
+ </Main.Content>
145
+ <Main.Drawer label='Drawer' classNames='grid grid-rows-[min-content_1fr_min-content]'>
146
+ <Toolbar.Root classNames='pli-2'>
147
+ <DrawerState />
148
+ <Toolbar.Separator variant='gap' classNames='grow' />
149
+ <DrawerToggle close />
150
+ </Toolbar.Root>
151
+ <div className='p-2 overflow-y-auto'>
152
+ <p className='text-sm text-description'>
153
+ On mobile devices, the drawer automatically switches to fullscreenwhen the keyboard appears.
154
+ </p>
155
+ <div className='plb-2 space-y-2'>
156
+ {Array.from({ length: 50 }).map((_, i) => (
157
+ <p key={i}>Line {i + 1}</p>
158
+ ))}
159
+ </div>
160
+ </div>
161
+ <div className='p-2 border-bs border-separator'>
162
+ <Input.Root>
163
+ <Input.TextInput autoFocus placeholder='Search' />
164
+ </Input.Root>
165
+ </div>
166
+ </Main.Drawer>
167
+ </>
168
+ );
169
+ };
170
+
171
+ export const WithDrawer: Story = {
172
+ render: DrawerStory,
173
+ args: {},
174
+ };