@dxos/react-ui 0.8.4-main.dedc0f3 → 0.8.4-main.dfabb4ec29

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 (469) hide show
  1. package/dist/lib/browser/chunk-BDBC6H6V.mjs +848 -0
  2. package/dist/lib/browser/chunk-BDBC6H6V.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +4107 -61
  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 +106 -60
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/browser/translations.mjs +18 -0
  9. package/dist/lib/browser/translations.mjs.map +7 -0
  10. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs +850 -0
  11. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +4107 -61
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +106 -60
  16. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  17. package/dist/lib/node-esm/translations.mjs +20 -0
  18. package/dist/lib/node-esm/translations.mjs.map +7 -0
  19. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  20. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  21. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +0 -6
  22. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +0 -6
  24. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  26. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +0 -6
  27. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/{Buttons → Button}/Button.d.ts +4 -4
  29. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  30. package/dist/types/src/components/{Buttons → Button}/Button.stories.d.ts +2 -8
  31. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  32. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +3 -2
  33. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  34. package/dist/types/src/components/{Buttons → Button}/IconButton.stories.d.ts +1 -4
  35. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  36. package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +2 -2
  37. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  38. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  39. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  40. package/dist/types/src/components/Button/ToggleGroup.d.ts +27 -0
  41. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  42. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +27 -0
  43. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  44. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  45. package/dist/types/src/components/Card/Card.d.ts +124 -0
  46. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  47. package/dist/types/src/components/Card/Card.stories.d.ts +21 -0
  48. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  49. package/dist/types/src/components/Card/index.d.ts +2 -0
  50. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  51. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  52. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  53. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  54. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  55. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  56. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +1 -1
  57. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  58. package/dist/types/src/components/Dialog/AlertDialog.d.ts +51 -0
  59. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  60. package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.stories.d.ts +0 -6
  61. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  62. package/dist/types/src/components/Dialog/Dialog.d.ts +64 -0
  63. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  64. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +25 -0
  65. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  66. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  67. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +1 -1
  68. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  69. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts +11 -0
  70. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -0
  71. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts +7 -0
  72. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -0
  73. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +19 -0
  74. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -0
  75. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts +9 -0
  76. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -0
  77. package/dist/types/src/components/ErrorFallback/index.d.ts +5 -0
  78. package/dist/types/src/components/ErrorFallback/index.d.ts.map +1 -0
  79. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  80. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  81. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  82. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  83. package/dist/types/src/components/Focus/index.d.ts +2 -0
  84. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  85. package/dist/types/src/components/Icon/Icon.d.ts +6 -2
  86. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  87. package/dist/types/src/components/Icon/Icon.stories.d.ts +25 -0
  88. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  89. package/dist/types/src/components/Image/Image.d.ts +15 -0
  90. package/dist/types/src/components/Image/Image.d.ts.map +1 -0
  91. package/dist/types/src/components/Image/Image.stories.d.ts +34 -0
  92. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -0
  93. package/dist/types/src/components/Image/index.d.ts +2 -0
  94. package/dist/types/src/components/Image/index.d.ts.map +1 -0
  95. package/dist/types/src/components/Input/Input.d.ts +19 -24
  96. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  97. package/dist/types/src/components/Input/Input.stories.d.ts +8 -14
  98. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Link/Link.stories.d.ts +0 -6
  100. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/{Lists → List}/List.d.ts +6 -4
  102. package/dist/types/src/components/List/List.d.ts.map +1 -0
  103. package/dist/types/src/components/{Lists → List}/List.stories.d.ts +3 -7
  104. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  105. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  106. package/dist/types/src/components/{Lists → List}/Tree.d.ts +2 -2
  107. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  108. package/dist/types/src/components/{Lists → List}/Tree.stories.d.ts +0 -6
  109. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  110. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  111. package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +5 -9
  112. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  113. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  114. package/dist/types/src/components/List/index.d.ts.map +1 -0
  115. package/dist/types/src/components/Main/Main.d.ts +24 -30
  116. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  117. package/dist/types/src/components/Main/Main.stories.d.ts +0 -4
  118. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  119. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  120. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  121. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  122. package/dist/types/src/components/{Menus → Menu}/ContextMenu.stories.d.ts +0 -6
  123. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  124. package/dist/types/src/components/Menu/DropdownMenu.d.ts +121 -0
  125. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  126. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +28 -0
  127. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  128. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  129. package/dist/types/src/components/Message/Message.d.ts +2 -2
  130. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  131. package/dist/types/src/components/Message/Message.stories.d.ts +5 -7
  132. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/Popover/Popover.d.ts +41 -24
  134. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  135. package/dist/types/src/components/Popover/Popover.stories.d.ts +0 -6
  136. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  137. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +27 -27
  138. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  139. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +55 -12
  140. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +68 -0
  142. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  143. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +23 -0
  144. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  145. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  146. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  147. package/dist/types/src/components/Select/Select.d.ts +10 -10
  148. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  149. package/dist/types/src/components/Select/Select.stories.d.ts +2 -8
  150. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  151. package/dist/types/src/components/Separator/Separator.d.ts +4 -4
  152. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  153. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  154. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  155. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  156. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  157. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  158. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  159. package/dist/types/src/components/Splitter/Splitter.d.ts +34 -0
  160. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  161. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  162. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  163. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  164. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  165. package/dist/types/src/components/Status/Status.d.ts +3 -4
  166. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  167. package/dist/types/src/components/Status/Status.stories.d.ts +4 -8
  168. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  169. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  170. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  171. package/dist/types/src/components/Tag/Tag.stories.d.ts +5 -10
  172. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  173. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +3 -3
  174. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  175. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  176. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  177. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +55 -63
  178. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  179. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  180. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  181. package/dist/types/src/components/Toast/Toast.d.ts +20 -20
  182. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  183. package/dist/types/src/components/Toast/Toast.stories.d.ts +0 -6
  184. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  185. package/dist/types/src/components/Toolbar/Toolbar.d.ts +41 -23
  186. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  187. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +0 -6
  188. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  189. package/dist/types/src/components/Tooltip/Tooltip.d.ts +11 -13
  190. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  191. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -8
  192. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  193. package/dist/types/src/components/index.d.ts +14 -8
  194. package/dist/types/src/components/index.d.ts.map +1 -1
  195. package/dist/types/src/exemplars/generics.stories.d.ts +19 -0
  196. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  197. package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
  198. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  199. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  200. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  201. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  202. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  203. package/dist/types/src/hooks/index.d.ts +1 -0
  204. package/dist/types/src/hooks/index.d.ts.map +1 -1
  205. package/dist/types/src/hooks/useDensityContext.d.ts +2 -2
  206. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  207. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  208. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  209. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  210. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  211. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  212. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  213. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  214. package/dist/types/src/index.d.ts +2 -1
  215. package/dist/types/src/index.d.ts.map +1 -1
  216. package/dist/types/src/playground/Controls.stories.d.ts +0 -6
  217. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  218. package/dist/types/src/playground/Custom.stories.d.ts +2 -3
  219. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  220. package/dist/types/src/playground/Typography.stories.d.ts +0 -6
  221. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  222. package/dist/types/src/primitives/Column/Column.d.ts +33 -0
  223. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  224. package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
  225. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  226. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  227. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  228. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  229. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  230. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  231. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  232. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  233. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  234. package/dist/types/src/primitives/Flex/Flex.d.ts +11 -0
  235. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  236. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  237. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  238. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  239. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  240. package/dist/types/src/primitives/Grid/Grid.d.ts +10 -0
  241. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  242. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  243. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  244. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  245. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  246. package/dist/types/src/primitives/Panel/Panel.d.ts +35 -0
  247. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  248. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  249. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  250. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  251. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  252. package/dist/types/src/primitives/index.d.ts +6 -0
  253. package/dist/types/src/primitives/index.d.ts.map +1 -0
  254. package/dist/types/src/testing/Loading.d.ts +9 -0
  255. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  256. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  257. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  258. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  259. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  260. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  261. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  262. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  263. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  264. package/dist/types/src/testing/index.d.ts +1 -0
  265. package/dist/types/src/testing/index.d.ts.map +1 -1
  266. package/dist/types/src/translations.d.ts +11 -0
  267. package/dist/types/src/translations.d.ts.map +1 -0
  268. package/dist/types/src/util/index.d.ts +2 -1
  269. package/dist/types/src/util/index.d.ts.map +1 -1
  270. package/dist/types/src/util/usePx.d.ts +8 -0
  271. package/dist/types/src/util/usePx.d.ts.map +1 -0
  272. package/dist/types/tsconfig.tsbuildinfo +1 -1
  273. package/package.json +52 -39
  274. package/src/components/Avatars/Avatar.stories.tsx +7 -11
  275. package/src/components/Avatars/Avatar.tsx +7 -15
  276. package/src/components/Avatars/AvatarGroup.stories.tsx +2 -6
  277. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +4 -8
  278. package/src/components/Breadcrumb/Breadcrumb.tsx +11 -37
  279. package/src/components/{Buttons → Button}/Button.stories.tsx +5 -8
  280. package/src/components/{Buttons → Button}/Button.tsx +12 -26
  281. package/src/components/{Buttons → Button}/IconButton.stories.tsx +8 -9
  282. package/src/components/{Buttons → Button}/IconButton.tsx +20 -15
  283. package/src/components/{Buttons → Button}/Toggle.stories.tsx +7 -10
  284. package/src/components/{Buttons → Button}/Toggle.tsx +4 -4
  285. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +2 -6
  286. package/src/components/{Buttons → Button}/ToggleGroup.tsx +12 -16
  287. package/src/components/Card/Card.stories.tsx +151 -0
  288. package/src/components/Card/Card.tsx +512 -0
  289. package/src/components/Card/index.ts +5 -0
  290. package/src/components/Clipboard/CopyButton.tsx +10 -11
  291. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  292. package/src/components/Dialog/AlertDialog.stories.tsx +68 -0
  293. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +123 -82
  294. package/src/components/Dialog/Dialog.stories.tsx +177 -0
  295. package/src/components/Dialog/Dialog.tsx +285 -0
  296. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  297. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +45 -0
  298. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  299. package/src/components/ErrorFallback/ErrorStack.tsx +114 -0
  300. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  301. package/src/components/ErrorFallback/index.ts +9 -0
  302. package/src/components/Focus/AUDIT.md +43 -0
  303. package/src/components/Focus/Focus.stories.tsx +230 -0
  304. package/src/components/Focus/Focus.tsx +201 -0
  305. package/src/components/Focus/index.ts +5 -0
  306. package/src/components/Icon/Icon.stories.tsx +143 -0
  307. package/src/components/Icon/Icon.tsx +15 -4
  308. package/src/components/Image/Image.stories.tsx +86 -0
  309. package/src/components/Image/Image.tsx +246 -0
  310. package/src/components/Image/index.ts +5 -0
  311. package/src/components/Input/Input.stories.tsx +21 -44
  312. package/src/components/Input/Input.tsx +40 -76
  313. package/src/components/Link/Link.stories.tsx +2 -6
  314. package/src/components/Link/Link.tsx +2 -2
  315. package/src/components/{Lists → List}/List.stories.tsx +31 -39
  316. package/src/components/{Lists → List}/List.tsx +17 -21
  317. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -8
  318. package/src/components/{Lists → List}/Tree.stories.tsx +6 -10
  319. package/src/components/{Lists → List}/Tree.tsx +0 -1
  320. package/src/components/{Lists → List}/TreeDropIndicator.tsx +6 -6
  321. package/src/components/{Lists → List}/Treegrid.stories.tsx +29 -30
  322. package/src/components/List/Treegrid.tsx +188 -0
  323. package/src/components/Main/Main.stories.tsx +41 -24
  324. package/src/components/Main/Main.tsx +163 -98
  325. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +2 -6
  326. package/src/components/{Menus → Menu}/ContextMenu.tsx +9 -33
  327. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +3 -7
  328. package/src/components/{Menus → Menu}/DropdownMenu.tsx +139 -112
  329. package/src/components/Message/Message.stories.tsx +27 -15
  330. package/src/components/Message/Message.tsx +59 -33
  331. package/src/components/Popover/Popover.stories.tsx +8 -12
  332. package/src/components/Popover/Popover.tsx +118 -96
  333. package/src/components/ScrollArea/ScrollArea.stories.tsx +220 -38
  334. package/src/components/ScrollArea/ScrollArea.tsx +97 -79
  335. package/src/components/ScrollArea/index.ts +1 -1
  336. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +91 -0
  337. package/src/components/ScrollContainer/ScrollContainer.tsx +345 -0
  338. package/src/components/ScrollContainer/index.ts +5 -0
  339. package/src/components/Select/Select.stories.tsx +9 -12
  340. package/src/components/Select/Select.tsx +11 -27
  341. package/src/components/Separator/Separator.tsx +5 -8
  342. package/src/components/Skeleton/Skeleton.stories.tsx +51 -0
  343. package/src/components/Skeleton/Skeleton.tsx +26 -0
  344. package/src/components/Skeleton/index.ts +5 -0
  345. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  346. package/src/components/Splitter/Splitter.tsx +127 -0
  347. package/src/components/Splitter/index.ts +5 -0
  348. package/src/components/Status/Status.stories.tsx +21 -21
  349. package/src/components/Status/Status.tsx +10 -7
  350. package/src/components/Tag/Tag.stories.tsx +8 -13
  351. package/src/components/Tag/Tag.tsx +3 -8
  352. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +31 -0
  353. package/src/components/ThemeProvider/ThemeProvider.tsx +10 -10
  354. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  355. package/src/components/ThemeProvider/index.ts +3 -3
  356. package/src/components/Toast/Toast.stories.tsx +3 -7
  357. package/src/components/Toast/Toast.tsx +22 -41
  358. package/src/components/Toolbar/Toolbar.stories.tsx +4 -10
  359. package/src/components/Toolbar/Toolbar.tsx +186 -12
  360. package/src/components/Tooltip/Tooltip.stories.tsx +21 -23
  361. package/src/components/Tooltip/Tooltip.tsx +42 -39
  362. package/src/components/index.ts +15 -9
  363. package/src/exemplars/generics.stories.tsx +41 -0
  364. package/src/exemplars/slot.stories.tsx +115 -0
  365. package/src/exemplars/tabster.stories.tsx +127 -0
  366. package/src/exemplars/virtualizer.stories.tsx +136 -0
  367. package/src/hooks/index.ts +1 -0
  368. package/src/hooks/useDensityContext.ts +3 -3
  369. package/src/hooks/useElevationContext.ts +1 -1
  370. package/src/hooks/useSafeArea.ts +3 -2
  371. package/src/hooks/useVisualViewport.ts +4 -4
  372. package/src/index.ts +2 -1
  373. package/src/playground/Controls.stories.tsx +3 -12
  374. package/src/playground/Custom.stories.tsx +16 -30
  375. package/src/playground/Typography.stories.tsx +3 -6
  376. package/src/primitives/Column/AUDIT.md +148 -0
  377. package/src/primitives/Column/Column.stories.tsx +181 -0
  378. package/src/primitives/Column/Column.tsx +165 -0
  379. package/src/primitives/Column/index.ts +5 -0
  380. package/src/primitives/Container/Container.stories.tsx +29 -0
  381. package/src/primitives/Container/Container.tsx +19 -0
  382. package/src/primitives/Container/index.ts +5 -0
  383. package/src/primitives/Flex/Flex.stories.tsx +57 -0
  384. package/src/primitives/Flex/Flex.tsx +27 -0
  385. package/src/primitives/Flex/index.ts +5 -0
  386. package/src/primitives/Grid/Grid.stories.tsx +56 -0
  387. package/src/primitives/Grid/Grid.tsx +30 -0
  388. package/src/primitives/Grid/index.ts +5 -0
  389. package/src/primitives/Panel/Panel.stories.tsx +68 -0
  390. package/src/primitives/Panel/Panel.tsx +120 -0
  391. package/src/primitives/Panel/index.ts +5 -0
  392. package/src/primitives/index.ts +9 -0
  393. package/src/testing/Loading.tsx +47 -0
  394. package/src/testing/decorators/index.ts +2 -1
  395. package/src/testing/decorators/withLayout.tsx +67 -0
  396. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  397. package/src/testing/decorators/withTheme.tsx +37 -0
  398. package/src/testing/index.ts +2 -0
  399. package/src/translations.ts +19 -0
  400. package/src/util/index.ts +3 -1
  401. package/src/util/usePx.ts +62 -0
  402. package/dist/lib/browser/chunk-Y4PW3CX2.mjs +0 -4402
  403. package/dist/lib/browser/chunk-Y4PW3CX2.mjs.map +0 -7
  404. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs +0 -4404
  405. package/dist/lib/node-esm/chunk-L6LIOSFT.mjs.map +0 -7
  406. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  407. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  408. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  409. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  410. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  411. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  412. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  413. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  414. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  415. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  416. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  417. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -31
  418. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  419. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -37
  420. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  421. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  422. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +0 -31
  423. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  424. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  425. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  426. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  427. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -26
  428. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  429. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  430. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  431. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  432. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  433. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  434. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  435. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  436. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  437. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  438. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  439. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  440. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  441. package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -113
  442. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  443. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -21
  444. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  445. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  446. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  447. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  448. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  449. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  450. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  451. package/src/components/AnchoredOverflow/index.ts +0 -5
  452. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -72
  453. package/src/components/Dialogs/Dialog.stories.tsx +0 -65
  454. package/src/components/Dialogs/Dialog.tsx +0 -159
  455. package/src/components/Lists/Treegrid.tsx +0 -152
  456. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  457. package/src/testing/decorators/withTheme.ts +0 -25
  458. package/src/util/ThemedClassName.ts +0 -7
  459. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  460. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  461. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  462. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  463. /package/dist/types/src/components/{Lists → List}/Treegrid.stories.d.ts +0 -0
  464. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  465. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  466. /package/src/components/{Buttons → Button}/index.ts +0 -0
  467. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  468. /package/src/components/{Lists → List}/index.ts +0 -0
  469. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -2,10 +2,9 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type IconWeight } from '@phosphor-icons/react';
6
- import { Root as CheckboxPrimitive, type CheckboxProps as CheckboxPrimitiveProps } from '@radix-ui/react-checkbox';
5
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
7
6
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
8
- import React, { type ComponentPropsWithRef, type ForwardRefExoticComponent, forwardRef, useCallback } from 'react';
7
+ import React, { type ComponentPropsWithRef, type ForwardRefExoticComponent, forwardRef } from 'react';
9
8
 
10
9
  import {
11
10
  DescriptionAndValidation as DescriptionAndValidationPrimitive,
@@ -28,8 +27,8 @@ import {
28
27
  type ValidationProps as ValidationPrimitiveProps,
29
28
  useInputContext,
30
29
  } from '@dxos/react-input';
31
- import { mx } from '@dxos/react-ui-theme';
32
- import { type ClassNameValue, type Density, type Elevation, type Size } from '@dxos/react-ui-types';
30
+ import { mx } from '@dxos/ui-theme';
31
+ import { type Density, type Elevation, type Size } from '@dxos/ui-types';
33
32
 
34
33
  import { useDensityContext, useElevationContext, useThemeContext } from '../../hooks';
35
34
  import { type ThemedClassName } from '../../util';
@@ -41,10 +40,10 @@ type InputSharedProps = Partial<{ density: Density; elevation: Elevation; varian
41
40
 
42
41
  type LabelProps = ThemedClassName<LabelPrimitiveProps> & { srOnly?: boolean };
43
42
 
44
- const Label = forwardRef<HTMLLabelElement, LabelProps>(({ srOnly, classNames, children, ...props }, forwardedRef) => {
43
+ const Label = forwardRef<HTMLLabelElement, LabelProps>(({ classNames, children, srOnly, ...props }, forwardedRef) => {
45
44
  const { tx } = useThemeContext();
46
45
  return (
47
- <LabelPrimitive {...props} className={tx('input.label', 'input__label', { srOnly }, classNames)} ref={forwardedRef}>
46
+ <LabelPrimitive {...props} className={tx('input.label', { srOnly }, classNames)} ref={forwardedRef}>
48
47
  {children}
49
48
  </LabelPrimitive>
50
49
  );
@@ -53,14 +52,10 @@ const Label = forwardRef<HTMLLabelElement, LabelProps>(({ srOnly, classNames, ch
53
52
  type DescriptionProps = ThemedClassName<DescriptionPrimitiveProps> & { srOnly?: boolean };
54
53
 
55
54
  const Description = forwardRef<HTMLSpanElement, DescriptionProps>(
56
- ({ srOnly, classNames, children, ...props }, forwardedRef) => {
55
+ ({ classNames, children, srOnly, ...props }, forwardedRef) => {
57
56
  const { tx } = useThemeContext();
58
57
  return (
59
- <DescriptionPrimitive
60
- {...props}
61
- className={tx('input.description', 'input__description', { srOnly }, classNames)}
62
- ref={forwardedRef}
63
- >
58
+ <DescriptionPrimitive {...props} className={tx('input.description', { srOnly }, classNames)} ref={forwardedRef}>
64
59
  {children}
65
60
  </DescriptionPrimitive>
66
61
  );
@@ -70,18 +65,13 @@ const Description = forwardRef<HTMLSpanElement, DescriptionProps>(
70
65
  type ValidationProps = ThemedClassName<ValidationPrimitiveProps> & { srOnly?: boolean };
71
66
 
72
67
  const Validation = forwardRef<HTMLSpanElement, InputScopedProps<ValidationProps>>(
73
- ({ __inputScope, srOnly, classNames, children, ...props }, forwardedRef) => {
68
+ ({ __inputScope, classNames, children, srOnly, ...props }, forwardedRef) => {
74
69
  const { tx } = useThemeContext();
75
70
  const { validationValence } = useInputContext(INPUT_NAME, __inputScope);
76
71
  return (
77
72
  <ValidationPrimitive
78
73
  {...props}
79
- className={tx(
80
- 'input.validation',
81
- `input__validation-message input__validation-message--${validationValence}`,
82
- { srOnly, validationValence },
83
- classNames,
84
- )}
74
+ className={tx('input.validation', { srOnly, validationValence }, classNames)}
85
75
  ref={forwardedRef}
86
76
  >
87
77
  {children}
@@ -93,12 +83,12 @@ const Validation = forwardRef<HTMLSpanElement, InputScopedProps<ValidationProps>
93
83
  type DescriptionAndValidationProps = ThemedClassName<DescriptionAndValidationPrimitiveProps> & { srOnly?: boolean };
94
84
 
95
85
  const DescriptionAndValidation = forwardRef<HTMLParagraphElement, DescriptionAndValidationProps>(
96
- ({ srOnly, classNames, children, ...props }, forwardedRef) => {
86
+ ({ classNames, children, srOnly, ...props }, forwardedRef) => {
97
87
  const { tx } = useThemeContext();
98
88
  return (
99
89
  <DescriptionAndValidationPrimitive
100
90
  {...props}
101
- className={tx('input.descriptionAndValidation', 'input__description-and-validation', { srOnly }, classNames)}
91
+ className={tx('input.descriptionAndValidation', { srOnly }, classNames)}
102
92
  ref={forwardedRef}
103
93
  >
104
94
  {children}
@@ -107,54 +97,23 @@ const DescriptionAndValidation = forwardRef<HTMLParagraphElement, DescriptionAnd
107
97
  },
108
98
  );
109
99
 
110
- type PinInputProps = InputSharedProps &
111
- Omit<PinInputPrimitiveProps, 'segmentClassName' | 'inputClassName'> & {
112
- segmentClassName?: ClassNameValue;
113
- inputClassName?: ClassNameValue;
114
- };
100
+ type PinInputProps = ThemedClassName<InputSharedProps & Omit<PinInputPrimitiveProps, 'className' | 'segmentClassName'>>;
115
101
 
116
102
  const PinInput = forwardRef<HTMLInputElement, PinInputProps>(
117
- (
118
- {
119
- density: propsDensity,
120
- elevation: propsElevation,
121
- segmentClassName: propsSegmentClassName,
122
- inputClassName,
123
- variant,
124
- ...props
125
- },
126
- forwardedRef,
127
- ) => {
103
+ ({ classNames, density: propsDensity, elevation: propsElevation, ...props }, forwardedRef) => {
128
104
  const { hasIosKeyboard } = useThemeContext();
129
105
  const { tx } = useThemeContext();
130
106
  const density = useDensityContext(propsDensity);
131
107
  const elevation = useElevationContext(propsElevation);
132
108
 
133
- const segmentClassName = useCallback(
134
- ({ focused, validationValence }: Parameters<Exclude<PinInputPrimitiveProps['segmentClassName'], undefined>>[0]) =>
135
- tx(
136
- 'input.input',
137
- 'input--pin-segment',
138
- {
139
- variant: 'static',
140
- focused,
141
- disabled: props.disabled,
142
- density,
143
- elevation,
144
- validationValence,
145
- },
146
- propsSegmentClassName,
147
- ),
148
- [tx, props.disabled, elevation, propsElevation, density],
149
- );
150
109
  return (
151
110
  <PinInputPrimitive
152
111
  {...{
153
112
  ...props,
154
- segmentClassName,
155
113
  ...(props.autoFocus && !hasIosKeyboard && { autoFocus: true }),
156
114
  }}
157
- inputClassName={tx('input.inputWithSegments', 'input input--pin', { disabled: props.disabled }, inputClassName)}
115
+ className={tx('input.inputWithSegments', { disabled: props.disabled }, classNames) || ''}
116
+ segmentClassName={tx('input.segment', { disabled: props.disabled, density, elevation }) || ''}
158
117
  ref={forwardedRef}
159
118
  />
160
119
  );
@@ -163,24 +122,30 @@ const PinInput = forwardRef<HTMLInputElement, PinInputProps>(
163
122
 
164
123
  // TODO(burdon): Implement inline icon within button: e.g., https://www.radix-ui.com/themes/playground#text-field
165
124
 
166
- type TextInputProps = InputSharedProps & ThemedClassName<TextInputPrimitiveProps>;
125
+ type AutoFillProps = {
126
+ noAutoFill?: boolean;
127
+ };
128
+
129
+ type TextInputProps = InputSharedProps & ThemedClassName<TextInputPrimitiveProps> & AutoFillProps;
167
130
 
168
131
  const TextInput = forwardRef<HTMLInputElement, InputScopedProps<TextInputProps>>(
169
- ({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
132
+ (
133
+ { __inputScope, classNames, density: densityProp, elevation: elevationProp, variant, noAutoFill, ...props },
134
+ forwardedRef,
135
+ ) => {
170
136
  const { hasIosKeyboard } = useThemeContext();
171
- const themeContextValue = useThemeContext();
172
- const density = useDensityContext(propsDensity);
173
- const elevation = useElevationContext(propsElevation);
137
+ const { tx } = useThemeContext();
138
+ const density = useDensityContext(densityProp);
139
+ const elevation = useElevationContext(elevationProp);
174
140
  const { validationValence } = useInputContext(INPUT_NAME, __inputScope);
175
141
 
176
- const { tx } = themeContextValue;
177
-
178
142
  return (
179
143
  <TextInputPrimitive
180
144
  {...props}
145
+ // TODO(wittjosiah): Factor out autofill properies.
146
+ {...{ 'data-1p-ignore': noAutoFill }}
181
147
  className={tx(
182
148
  'input.input',
183
- 'input',
184
149
  {
185
150
  variant,
186
151
  disabled: props.disabled,
@@ -211,8 +176,7 @@ const TextArea = forwardRef<HTMLTextAreaElement, InputScopedProps<TextAreaProps>
211
176
  <TextAreaPrimitive
212
177
  {...props}
213
178
  className={tx(
214
- 'input.input',
215
- 'input--text-area',
179
+ 'input.textArea',
216
180
  {
217
181
  variant,
218
182
  disabled: props.disabled,
@@ -220,7 +184,6 @@ const TextArea = forwardRef<HTMLTextAreaElement, InputScopedProps<TextAreaProps>
220
184
  elevation,
221
185
  validationValence,
222
186
  },
223
- '-mbe-labelSpacingBlock',
224
187
  classNames,
225
188
  )}
226
189
  {...(props.autoFocus && !hasIosKeyboard && { autoFocus: true })}
@@ -230,7 +193,9 @@ const TextArea = forwardRef<HTMLTextAreaElement, InputScopedProps<TextAreaProps>
230
193
  },
231
194
  );
232
195
 
233
- type CheckboxProps = ThemedClassName<Omit<CheckboxPrimitiveProps, 'children'>> & { size?: Size; weight?: IconWeight };
196
+ type CheckboxProps = ThemedClassName<Omit<CheckboxPrimitive.CheckboxProps, 'children'>> & {
197
+ size?: Size;
198
+ };
234
199
 
235
200
  const Checkbox: ForwardRefExoticComponent<CheckboxProps> = forwardRef<
236
201
  HTMLButtonElement,
@@ -239,12 +204,11 @@ const Checkbox: ForwardRefExoticComponent<CheckboxProps> = forwardRef<
239
204
  (
240
205
  {
241
206
  __inputScope,
207
+ classNames,
242
208
  checked: propsChecked,
243
209
  defaultChecked: propsDefaultChecked,
244
210
  onCheckedChange: propsOnCheckedChange,
245
211
  size,
246
- weight = 'bold',
247
- classNames,
248
212
  ...props
249
213
  },
250
214
  forwardedRef,
@@ -258,7 +222,7 @@ const Checkbox: ForwardRefExoticComponent<CheckboxProps> = forwardRef<
258
222
  const { tx } = useThemeContext();
259
223
 
260
224
  return (
261
- <CheckboxPrimitive
225
+ <CheckboxPrimitive.Root
262
226
  {...{
263
227
  ...props,
264
228
  checked,
@@ -269,15 +233,15 @@ const Checkbox: ForwardRefExoticComponent<CheckboxProps> = forwardRef<
269
233
  'aria-invalid': 'true' as const,
270
234
  'aria-errormessage': errorMessageId,
271
235
  }),
272
- className: tx('input.checkbox', 'input--checkbox', { size }, 'shrink-0', classNames),
236
+ className: tx('input.checkbox', { size }, 'shrink-0', classNames),
273
237
  }}
274
238
  ref={forwardedRef}
275
239
  >
276
240
  <Icon
277
241
  icon={checked === 'indeterminate' ? 'ph--minus--regular' : 'ph--check--regular'}
278
- classNames={tx('input.checkboxIndicator', 'input--checkbox__indicator', { size, checked })}
242
+ classNames={tx('input.checkboxIndicator', { size, checked })}
279
243
  />
280
- </CheckboxPrimitive>
244
+ </CheckboxPrimitive.Root>
281
245
  );
282
246
  },
283
247
  );
@@ -290,10 +254,10 @@ const Switch = forwardRef<HTMLInputElement, InputScopedProps<SwitchProps>>(
290
254
  (
291
255
  {
292
256
  __inputScope,
257
+ classNames,
293
258
  checked: propsChecked,
294
259
  defaultChecked: propsDefaultChecked,
295
260
  onCheckedChange: propsOnCheckedChange,
296
- classNames,
297
261
  ...props
298
262
  },
299
263
  forwardedRef,
@@ -2,19 +2,15 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
 
9
7
  import { withTheme } from '../../testing';
10
-
11
8
  import { Link } from './Link';
12
9
 
13
10
  const meta = {
14
- title: 'ui/react-ui-core/Link',
11
+ title: 'ui/react-ui-core/components/Link',
15
12
  component: Link,
16
- decorators: [withTheme],
17
- parameters: { chromatic: { disableSnapshot: false } },
13
+ decorators: [withTheme()],
18
14
  } satisfies Meta<typeof Link>;
19
15
 
20
16
  export default meta;
@@ -18,7 +18,7 @@ export type LinkProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.a
18
18
  export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
19
19
  ({ asChild, variant, classNames, ...props }, forwardedRef) => {
20
20
  const { tx } = useThemeContext();
21
- const Root = asChild ? Slot : Primitive.a;
22
- return <Root {...props} className={tx('link.root', 'link', { variant }, classNames)} ref={forwardedRef} />;
21
+ const Comp = asChild ? Slot : Primitive.a;
22
+ return <Comp {...props} className={tx('link.root', { variant }, classNames)} ref={forwardedRef} />;
23
23
  },
24
24
  );
@@ -2,34 +2,23 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { DndContext, type DragEndEvent, type DragStartEvent } from '@dnd-kit/core';
8
6
  import { SortableContext, arrayMove, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';
9
7
  import { CSS } from '@dnd-kit/utilities';
10
8
  import { useArrowNavigationGroup } from '@fluentui/react-tabster';
11
9
  import { type Meta, type StoryObj } from '@storybook/react-vite';
12
- import React, { type ReactNode, useState } from 'react';
10
+ import React, { type ReactNode, useCallback, useState } from 'react';
13
11
 
14
- import {
15
- getSize,
16
- ghostHover,
17
- ghostSelected,
18
- ghostSelectedTrackingInterFromNormal,
19
- mx,
20
- surfaceShadow,
21
- } from '@dxos/react-ui-theme';
12
+ import { getSize, ghostHover, mx, surfaceShadow } from '@dxos/ui-theme';
22
13
 
23
14
  import { withTheme } from '../../testing';
24
15
  import { Icon } from '../Icon';
25
-
26
16
  import { List, ListItem, type ListScopedProps } from './List';
27
17
 
28
18
  const meta = {
29
- title: 'ui/react-ui-core/List',
19
+ title: 'ui/react-ui-core/components/List',
30
20
  component: List,
31
- decorators: [withTheme],
32
- parameters: { chromatic: { disableSnapshot: false } },
21
+ decorators: [withTheme()],
33
22
  } satisfies Meta<typeof List>;
34
23
 
35
24
  export default meta;
@@ -47,11 +36,11 @@ const UniformListItem = ({ id, text }: { id: string; text: string }) => {
47
36
  style={{ transform: CSS.Transform.toString(transform) }}
48
37
  >
49
38
  <ListItem.Endcap>
50
- <Icon icon='ph--dots-six-vertical--regular' classNames={mx(getSize(5), 'mbs-2.5')} />
39
+ <Icon icon='ph--dots-six-vertical--regular' classNames={mx(getSize(5), 'mt-2.5')} />
51
40
  </ListItem.Endcap>
52
- <ListItem.Heading classNames='grow pbs-2'>{text}</ListItem.Heading>
41
+ <ListItem.Heading classNames='grow pt-2'>{text}</ListItem.Heading>
53
42
  <ListItem.Endcap>
54
- <Icon icon='ph--push-pin--regular' classNames={mx(getSize(5), 'mbs-2.5')} />
43
+ <Icon icon='ph--push-pin--regular' classNames={mx(getSize(5), 'mt-2.5')} />
55
44
  </ListItem.Endcap>
56
45
  </ListItem.Root>
57
46
  );
@@ -66,16 +55,20 @@ export const UniformSizeDraggable: Story = {
66
55
  })),
67
56
  );
68
57
 
69
- const handleDragEnd = (event: DragEndEvent) => {
70
- const { active, over } = event;
71
- if (active.id !== over?.id) {
72
- setItems((items) => {
73
- const oldIndex = items.findIndex((item) => item.id === active.id);
74
- const newIndex = items.findIndex((item) => item.id === over?.id);
75
- return arrayMove(items, oldIndex, newIndex);
76
- });
77
- }
78
- };
58
+ const handleDragEnd = useCallback(
59
+ (event: DragEndEvent) => {
60
+ const { active, over } = event;
61
+ if (active.id !== over?.id) {
62
+ setItems((items) => {
63
+ const oldIndex = items.findIndex((item) => item.id === active.id);
64
+ const newIndex = items.findIndex((item) => item.id === over?.id);
65
+ return arrayMove(items, oldIndex, newIndex);
66
+ });
67
+ }
68
+ },
69
+ [items],
70
+ );
71
+
79
72
  return (
80
73
  <DndContext onDragEnd={handleDragEnd}>
81
74
  <SortableContext items={items.map(({ id }) => id)} strategy={verticalListSortingStrategy}>
@@ -109,13 +102,13 @@ const ManySizesDraggableListItem = ({
109
102
  style={{ transform: CSS.Translate.toString(transform) }}
110
103
  >
111
104
  <ListItem.Endcap>
112
- <Icon icon='ph--dots-six-vertical--regular' classNames={mx(getSize(5), 'mbs-2.5')} />
105
+ <Icon icon='ph--dots-six-vertical--regular' classNames={mx(getSize(5), 'mt-2.5')} />
113
106
  </ListItem.Endcap>
114
- <ListItem.Heading classNames='grow pbs-2' asChild>
107
+ <ListItem.Heading classNames='grow pt-2' asChild>
115
108
  {text}
116
109
  </ListItem.Heading>
117
110
  <ListItem.Endcap>
118
- <Icon icon='ph--push-pin--regular' classNames={mx(getSize(5), 'mbs-2.5')} />
111
+ <Icon icon='ph--push-pin--regular' classNames={mx(getSize(5), 'mt-2.5')} />
119
112
  </ListItem.Endcap>
120
113
  </ListItem.Root>
121
114
  );
@@ -129,9 +122,9 @@ export const ManySizesDraggable: Story = {
129
122
  text: (
130
123
  <p
131
124
  className={mx(
132
- index % 3 === 0 ? 'bs-20' : index % 2 === 0 ? 'bs-12' : 'bs-8',
125
+ index % 3 === 0 ? 'h-20' : index % 2 === 0 ? 'h-12' : 'h-8',
133
126
  surfaceShadow({ elevation: 'positioned' }),
134
- 'mbe-2 p-2 bg-white dark:bg-neutral-800 rounded',
127
+ 'mb-2 p-2 bg-white dark:bg-neutral-800 rounded-sm',
135
128
  )}
136
129
  >{`List item ${index + 1}`}</p>
137
130
  ),
@@ -183,11 +176,11 @@ export const Collapsible: Story = {
183
176
  <List {...args}>
184
177
  {items.map(({ id, text, body }, index) => (
185
178
  <ListItem.Root key={id} id={id} collapsible={index !== 2} defaultOpen={index % 2 === 0}>
186
- <div role='none' className='grow flex'>
179
+ <div className='grow flex'>
187
180
  {index !== 2 ? <ListItem.OpenTrigger /> : <ListItem.MockOpenTrigger />}
188
- <ListItem.Heading classNames='grow pbs-2'>{text}</ListItem.Heading>
181
+ <ListItem.Heading classNames='grow pt-2'>{text}</ListItem.Heading>
189
182
  <ListItem.Endcap>
190
- <Icon icon='ph--push-pin--regular' classNames={mx(getSize(5), 'mbs-2.5')} />
183
+ <Icon icon='ph--push-pin--regular' classNames={mx(getSize(5), 'mt-2.5')} />
191
184
  </ListItem.Endcap>
192
185
  </div>
193
186
  {index !== 2 && <ListItem.CollapsibleContent>{body}</ListItem.CollapsibleContent>}
@@ -198,7 +191,6 @@ export const Collapsible: Story = {
198
191
  },
199
192
  args: {
200
193
  variant: 'unordered',
201
- // toggleOpenLabel: 'Open/close storybook list item', // TODO(burdon): ???
202
194
  },
203
195
  };
204
196
 
@@ -229,11 +221,11 @@ export const SelectableListbox: Story = {
229
221
  key={id}
230
222
  tabIndex={0}
231
223
  selected={selectedId === id}
232
- classNames={mx('items-center', ghostHover, ghostSelected, ghostSelectedTrackingInterFromNormal)}
224
+ classNames={mx(ghostHover, 'dx-selected')}
233
225
  onClick={() => setSelectedId(id)}
234
226
  onKeyUp={(event) => handleKeyUp(event, id)}
235
227
  >
236
- <ListItem.Heading classNames='grow'>Lorem ipsum dolor sit amet</ListItem.Heading>
228
+ <ListItem.Heading classNames='flex px-1 items-center grow truncate'>{text}</ListItem.Heading>
237
229
  </ListItem.Root>
238
230
  ))}
239
231
  </List>
@@ -2,6 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Primitive } from '@radix-ui/react-primitive';
5
6
  import { Slot } from '@radix-ui/react-slot';
6
7
  import React, { type ComponentPropsWithoutRef, type FC, type ForwardRefExoticComponent, forwardRef } from 'react';
7
8
 
@@ -23,24 +24,25 @@ import {
23
24
  useListContext,
24
25
  useListItemContext,
25
26
  } from '@dxos/react-list';
26
- import { type Density } from '@dxos/react-ui-types';
27
+ import { composable, composableProps } from '@dxos/ui-theme';
28
+ import { type Density } from '@dxos/ui-types';
27
29
 
28
30
  import { useDensityContext, useThemeContext } from '../../hooks';
29
31
  import { type ThemedClassName } from '../../util';
30
32
  import { DensityProvider } from '../DensityProvider';
31
33
  import { Icon } from '../Icon';
32
-
33
34
  import { ListDropIndicator } from './ListDropIndicator';
34
35
 
35
- type ListProps = ThemedClassName<ListPrimitiveProps> & { density?: Density };
36
+ type ListProps = ThemedClassName<ListPrimitiveProps & { density?: Density }>;
36
37
 
37
- const List = forwardRef<HTMLOListElement, ListProps>(({ classNames, children, ...props }, forwardedRef) => {
38
+ const List = composable<HTMLOListElement, ListProps>(({ children, ...props }, forwardedRef) => {
38
39
  const { tx } = useThemeContext();
39
40
  const density = useDensityContext(props.density);
41
+ const { className, ...rest } = composableProps(props);
40
42
 
41
43
  return (
42
44
  <DensityProvider density={density}>
43
- <ListPrimitive {...props} className={tx('list.root', 'list', {}, classNames)} ref={forwardedRef}>
45
+ <ListPrimitive {...rest} className={tx('list.root', {}, className)} ref={forwardedRef}>
44
46
  {children}
45
47
  </ListPrimitive>
46
48
  </DensityProvider>
@@ -51,18 +53,18 @@ type ListItemEndcapProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {
51
53
 
52
54
  const ListItemEndcap = forwardRef<HTMLDivElement, ListItemEndcapProps>(
53
55
  ({ children, classNames, asChild, ...props }, forwardedRef) => {
54
- const Root = asChild ? Slot : 'div';
56
+ const Comp = asChild ? Slot : Primitive.div;
55
57
  const density = useDensityContext();
56
58
  const { tx } = useThemeContext();
57
59
  return (
58
- <Root
60
+ <Comp
59
61
  {...(!asChild && { role: 'none' })}
60
62
  {...props}
61
- className={tx('list.item.endcap', 'list__listItem__endcap', { density }, classNames)}
63
+ className={tx('list.item.endcap', { density }, classNames)}
62
64
  ref={forwardedRef}
63
65
  >
64
66
  {children}
65
- </Root>
67
+ </Comp>
66
68
  );
67
69
  },
68
70
  );
@@ -73,13 +75,7 @@ const MockListItemOpenTrigger = ({
73
75
  }: ThemedClassName<Omit<ComponentPropsWithoutRef<'div'>, 'children'>>) => {
74
76
  const density = useDensityContext();
75
77
  const { tx } = useThemeContext();
76
- return (
77
- <div
78
- role='none'
79
- {...props}
80
- className={tx('list.item.openTrigger', 'list__listItem__openTrigger--mock', { density }, classNames)}
81
- />
82
- );
78
+ return <div {...props} className={tx('list.item.openTrigger', { density }, classNames)} />;
83
79
  };
84
80
 
85
81
  type ListItemHeadingProps = ThemedClassName<ListPrimitiveItemHeadingProps>;
@@ -91,10 +87,10 @@ const ListItemHeading = forwardRef<HTMLParagraphElement, ListItemHeadingProps>(
91
87
  return (
92
88
  <ListPrimitiveItemHeading
93
89
  {...props}
94
- className={tx('list.item.heading', 'list__listItem__heading', { density }, classNames)}
90
+ className={tx('list.item.heading', { density }, classNames)}
95
91
  ref={forwardedRef}
96
92
  >
97
- {children}
93
+ <span>{children}</span>
98
94
  </ListPrimitiveItemHeading>
99
95
  );
100
96
  },
@@ -110,14 +106,14 @@ const ListItemOpenTrigger = forwardRef<HTMLButtonElement, ListItemOpenTriggerPro
110
106
  return (
111
107
  <ListPrimitiveItemOpenTrigger
112
108
  {...props}
113
- className={tx('list.item.openTrigger', 'list__listItem__openTrigger', { density }, classNames)}
109
+ className={tx('list.item.openTrigger', { density }, classNames)}
114
110
  ref={forwardedRef}
115
111
  >
116
112
  {children || (
117
113
  <Icon
118
114
  size={3}
119
115
  icon={open ? 'ph--caret-down--bold' : 'ph--caret-right--bold'}
120
- classNames={tx('list.item.openTriggerIcon', 'list__listItem__openTrigger__icon', {})}
116
+ classNames={tx('list.item.openTriggerIcon', {})}
121
117
  />
122
118
  )}
123
119
  </ListPrimitiveItemOpenTrigger>
@@ -134,7 +130,7 @@ const ListItemRoot = forwardRef<HTMLLIElement, ListItemRootProps>(
134
130
  return (
135
131
  <ListPrimitiveItem
136
132
  {...props}
137
- className={tx('list.item.root', 'list__listItem', { density, collapsible: props.collapsible }, classNames)}
133
+ className={tx('list.item.root', { density, collapsible: props.collapsible }, classNames)}
138
134
  ref={forwardedRef}
139
135
  >
140
136
  {children}
@@ -16,16 +16,16 @@ const edgeToOrientationMap: Record<Edge, Orientation> = {
16
16
 
17
17
  const orientationStyles: Record<Orientation, HTMLAttributes<HTMLElement>['className']> = {
18
18
  horizontal:
19
- 'h-[--line-thickness] left-[calc(var(--line-inset)+var(--terminal-radius))] right-[--line-inset] before:left-[--terminal-inset]',
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
+ 'w-(--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']> = {
25
- top: 'top-[--line-offset] before:top-[--offset-terminal]',
26
- right: 'right-[--line-offset] before:right-[--offset-terminal]',
27
- bottom: 'bottom-[--line-offset] before:bottom-[--offset-terminal]',
28
- left: 'left-[--line-offset] before:left-[--offset-terminal]',
25
+ top: 'top-(--line-offset) before:top-(--offset-terminal)',
26
+ right: 'right-(--line-offset) before:right-(--offset-terminal)',
27
+ bottom: 'bottom-(--line-offset) before:bottom-(--offset-terminal)',
28
+ left: 'left-(--line-offset) before:left-(--offset-terminal)',
29
29
  };
30
30
 
31
31
  const strokeSize = 2;
@@ -52,7 +52,6 @@ export const ListDropIndicator = ({
52
52
 
53
53
  return (
54
54
  <div
55
- role='none'
56
55
  style={
57
56
  {
58
57
  '--line-thickness': `${strokeSize}px`,
@@ -64,7 +63,7 @@ export const ListDropIndicator = ({
64
63
  '--offset-terminal': `${offsetToAlignTerminalWithLine}px`,
65
64
  } as CSSProperties
66
65
  }
67
- className={`absolute z-10 pointer-events-none bg-accentSurface before:content-[''] before:w-[--terminal-size] before:h-[--terminal-size] box-border before:absolute before:border-[length:--line-thickness] before:border-solid before:border-accentSurface before:rounded-full ${orientationStyles[orientation]} ${edgeStyles[edge]}`}
66
+ className={`absolute z-10 pointer-events-none bg-accent-surface before:content-[''] before:w-(--terminal-size) before:h-(--terminal-size) box-border before:absolute before:border-[length:--line-thickness] before:border-solid before:border-accent-surface before:rounded-full ${orientationStyles[orientation]} ${edgeStyles[edge]}`}
68
67
  />
69
68
  );
70
69
  };
@@ -2,13 +2,10 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React from 'react';
9
7
 
10
8
  import { withTheme } from '../../testing';
11
-
12
9
  import { Tree, TreeItem } from './Tree';
13
10
 
14
11
  type StorybookTreeProps = {
@@ -27,7 +24,7 @@ const createKey = (key: string, prefix?: string) => (prefix === undefined ? key
27
24
  const StorybookTreeItem = ({ data, prefix }: StorybookTreeItemProps) => {
28
25
  const keys = Array.isArray(data) ? Array.from(data.keys()) : Object.keys(data);
29
26
  return (
30
- <Tree.Root density='fine'>
27
+ <Tree.Root>
31
28
  {keys.map((key) => {
32
29
  const id = createKey(String(key), prefix);
33
30
  const value = data[key as keyof typeof data];
@@ -35,12 +32,12 @@ const StorybookTreeItem = ({ data, prefix }: StorybookTreeItemProps) => {
35
32
 
36
33
  return (
37
34
  <TreeItem.Root key={id} id={id} collapsible={!valueIsScalar} defaultOpen>
38
- <div role='none' className='grow flex'>
35
+ <div className='grow flex'>
39
36
  {valueIsScalar ? <TreeItem.MockOpenTrigger /> : <TreeItem.OpenTrigger />}
40
- <TreeItem.Heading classNames='grow pbs-1'>{valueIsScalar ? String(value) : key}</TreeItem.Heading>
37
+ <TreeItem.Heading classNames='grow pt-1'>{valueIsScalar ? String(value) : key}</TreeItem.Heading>
41
38
  </div>
42
39
  {!valueIsScalar && (
43
- <TreeItem.Body className='pis-2'>
40
+ <TreeItem.Body className='ps-2'>
44
41
  <Tree.Branch>
45
42
  <StorybookTreeItem data={value} prefix={id} />
46
43
  </Tree.Branch>
@@ -58,11 +55,10 @@ const DefaultStory = ({ data }: StorybookTreeProps) => {
58
55
  };
59
56
 
60
57
  const meta = {
61
- title: 'ui/react-ui-core/Tree',
58
+ title: 'ui/react-ui-core/components/Tree',
62
59
  component: Tree as any,
63
60
  render: DefaultStory,
64
- decorators: [withTheme],
65
- parameters: { chromatic: { disableSnapshot: false } },
61
+ decorators: [withTheme()],
66
62
  } satisfies Meta<typeof DefaultStory>;
67
63
 
68
64
  export default meta;
@@ -5,7 +5,6 @@
5
5
  import React, { type ComponentPropsWithoutRef, type FC, type ForwardRefExoticComponent, forwardRef } from 'react';
6
6
 
7
7
  import { type ThemedClassName } from '../../util';
8
-
9
8
  import {
10
9
  LIST_ITEM_NAME,
11
10
  List,