@dxos/react-ui 0.8.4-main.f5c0578 → 0.8.4-main.fcc0d83b33

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 (478) 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 +4102 -60
  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 +112 -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 +4102 -60
  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 +112 -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 +5 -31
  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 +5 -11
  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 +8 -20
  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/Button/Button.stories.d.ts +17 -0
  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 +4 -3
  33. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  34. package/dist/types/src/components/Button/IconButton.stories.d.ts +16 -0
  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 +127 -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/Dialog/AlertDialog.stories.d.ts +11 -0
  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 +5 -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 +16 -17
  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 +8 -8
  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/List/List.stories.d.ts +16 -0
  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/List/Tree.stories.d.ts +15 -0
  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 +12 -0
  114. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  115. package/dist/types/src/components/List/index.d.ts.map +1 -0
  116. package/dist/types/src/components/Main/Main.d.ts +24 -30
  117. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  118. package/dist/types/src/components/Main/Main.stories.d.ts +6 -10
  119. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  120. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  121. package/dist/types/src/components/{Menus → Menu}/ContextMenu.d.ts +6 -6
  122. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -0
  123. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts +12 -0
  124. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -0
  125. package/dist/types/src/components/Menu/DropdownMenu.d.ts +121 -0
  126. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -0
  127. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +28 -0
  128. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -0
  129. package/dist/types/src/components/Menu/index.d.ts.map +1 -0
  130. package/dist/types/src/components/Message/Message.d.ts +1 -1
  131. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  132. package/dist/types/src/components/Message/Message.stories.d.ts +12 -22
  133. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/Popover/Popover.d.ts +41 -24
  135. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  136. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
  137. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +27 -27
  139. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  140. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +50 -27
  141. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  142. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +68 -0
  143. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  144. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +23 -0
  145. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  146. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  147. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  148. package/dist/types/src/components/Select/Select.d.ts +10 -10
  149. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  150. package/dist/types/src/components/Select/Select.stories.d.ts +6 -11
  151. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  152. package/dist/types/src/components/Separator/Separator.d.ts +4 -4
  153. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  154. package/dist/types/src/components/Skeleton/Skeleton.d.ts +12 -0
  155. package/dist/types/src/components/Skeleton/Skeleton.d.ts.map +1 -0
  156. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts +17 -0
  157. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  158. package/dist/types/src/components/Skeleton/index.d.ts +2 -0
  159. package/dist/types/src/components/Skeleton/index.d.ts.map +1 -0
  160. package/dist/types/src/components/Splitter/Splitter.d.ts +34 -0
  161. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -0
  162. package/dist/types/src/components/Splitter/Splitter.stories.d.ts +7 -0
  163. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -0
  164. package/dist/types/src/components/Splitter/index.d.ts +2 -0
  165. package/dist/types/src/components/Splitter/index.d.ts.map +1 -0
  166. package/dist/types/src/components/Status/Status.d.ts +3 -4
  167. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  168. package/dist/types/src/components/Status/Status.stories.d.ts +6 -10
  169. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  170. package/dist/types/src/components/Tag/Tag.d.ts +1 -1
  171. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -1
  172. package/dist/types/src/components/Tag/Tag.stories.d.ts +8 -13
  173. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  174. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +3 -3
  175. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  176. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +12 -0
  177. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -0
  178. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +55 -63
  179. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  180. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -1
  181. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  182. package/dist/types/src/components/Toast/Toast.d.ts +20 -20
  183. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  184. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
  185. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  186. package/dist/types/src/components/Toolbar/Toolbar.d.ts +41 -23
  187. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  188. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
  189. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  190. package/dist/types/src/components/Tooltip/Tooltip.d.ts +11 -13
  191. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  192. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +10 -63
  193. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  194. package/dist/types/src/components/index.d.ts +14 -8
  195. package/dist/types/src/components/index.d.ts.map +1 -1
  196. package/dist/types/src/exemplars/generics.stories.d.ts +19 -0
  197. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -0
  198. package/dist/types/src/exemplars/slot.stories.d.ts +15 -0
  199. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -0
  200. package/dist/types/src/exemplars/tabster.stories.d.ts +8 -0
  201. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -0
  202. package/dist/types/src/exemplars/virtualizer.stories.d.ts +11 -0
  203. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -0
  204. package/dist/types/src/hooks/index.d.ts +1 -0
  205. package/dist/types/src/hooks/index.d.ts.map +1 -1
  206. package/dist/types/src/hooks/useDensityContext.d.ts +2 -2
  207. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  208. package/dist/types/src/hooks/useElevationContext.d.ts +1 -1
  209. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  210. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  211. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  212. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  213. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  214. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  215. package/dist/types/src/index.d.ts +2 -1
  216. package/dist/types/src/index.d.ts.map +1 -1
  217. package/dist/types/src/playground/Controls.stories.d.ts +5 -9
  218. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  219. package/dist/types/src/playground/Custom.stories.d.ts +12 -4
  220. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  221. package/dist/types/src/playground/Typography.stories.d.ts +5 -11
  222. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  223. package/dist/types/src/primitives/Column/Column.d.ts +33 -0
  224. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -0
  225. package/dist/types/src/primitives/Column/Column.stories.d.ts +25 -0
  226. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -0
  227. package/dist/types/src/primitives/Column/index.d.ts +2 -0
  228. package/dist/types/src/primitives/Column/index.d.ts.map +1 -0
  229. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  230. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  231. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  232. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  233. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  234. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  235. package/dist/types/src/primitives/Flex/Flex.d.ts +11 -0
  236. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -0
  237. package/dist/types/src/primitives/Flex/Flex.stories.d.ts +8 -0
  238. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -0
  239. package/dist/types/src/primitives/Flex/index.d.ts +2 -0
  240. package/dist/types/src/primitives/Flex/index.d.ts.map +1 -0
  241. package/dist/types/src/primitives/Grid/Grid.d.ts +10 -0
  242. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -0
  243. package/dist/types/src/primitives/Grid/Grid.stories.d.ts +8 -0
  244. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -0
  245. package/dist/types/src/primitives/Grid/index.d.ts +2 -0
  246. package/dist/types/src/primitives/Grid/index.d.ts.map +1 -0
  247. package/dist/types/src/primitives/Panel/Panel.d.ts +35 -0
  248. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -0
  249. package/dist/types/src/primitives/Panel/Panel.stories.d.ts +6 -0
  250. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -0
  251. package/dist/types/src/primitives/Panel/index.d.ts +2 -0
  252. package/dist/types/src/primitives/Panel/index.d.ts.map +1 -0
  253. package/dist/types/src/primitives/index.d.ts +6 -0
  254. package/dist/types/src/primitives/index.d.ts.map +1 -0
  255. package/dist/types/src/testing/Loading.d.ts +9 -0
  256. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  257. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  258. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  259. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  260. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  261. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts +12 -0
  262. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  263. package/dist/types/src/testing/decorators/withTheme.d.ts +5 -1
  264. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  265. package/dist/types/src/testing/index.d.ts +1 -0
  266. package/dist/types/src/testing/index.d.ts.map +1 -1
  267. package/dist/types/src/translations.d.ts +11 -0
  268. package/dist/types/src/translations.d.ts.map +1 -0
  269. package/dist/types/src/util/index.d.ts +2 -1
  270. package/dist/types/src/util/index.d.ts.map +1 -1
  271. package/dist/types/src/util/usePx.d.ts +8 -0
  272. package/dist/types/src/util/usePx.d.ts.map +1 -0
  273. package/dist/types/tsconfig.tsbuildinfo +1 -1
  274. package/package.json +52 -39
  275. package/src/components/Avatars/Avatar.stories.tsx +22 -16
  276. package/src/components/Avatars/Avatar.tsx +7 -15
  277. package/src/components/Avatars/AvatarGroup.stories.tsx +10 -8
  278. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +19 -16
  279. package/src/components/Breadcrumb/Breadcrumb.tsx +11 -37
  280. package/src/components/{Buttons → Button}/Button.stories.tsx +7 -10
  281. package/src/components/{Buttons → Button}/Button.tsx +12 -26
  282. package/src/components/{Buttons → Button}/IconButton.stories.tsx +17 -13
  283. package/src/components/{Buttons → Button}/IconButton.tsx +21 -16
  284. package/src/components/Button/Toggle.stories.tsx +36 -0
  285. package/src/components/{Buttons → Button}/Toggle.tsx +4 -4
  286. package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +10 -9
  287. package/src/components/Button/ToggleGroup.tsx +50 -0
  288. package/src/components/Card/Card.stories.tsx +151 -0
  289. package/src/components/Card/Card.tsx +505 -0
  290. package/src/components/Card/index.ts +5 -0
  291. package/src/components/Clipboard/CopyButton.tsx +8 -9
  292. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  293. package/src/components/Dialog/AlertDialog.stories.tsx +68 -0
  294. package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +123 -82
  295. package/src/components/Dialog/Dialog.stories.tsx +177 -0
  296. package/src/components/Dialog/Dialog.tsx +285 -0
  297. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  298. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +45 -0
  299. package/src/components/ErrorFallback/ErrorFallback.tsx +70 -0
  300. package/src/components/ErrorFallback/ErrorStack.tsx +114 -0
  301. package/src/components/ErrorFallback/ThrowError.tsx +37 -0
  302. package/src/components/ErrorFallback/index.ts +9 -0
  303. package/src/components/Focus/AUDIT.md +43 -0
  304. package/src/components/Focus/Focus.stories.tsx +230 -0
  305. package/src/components/Focus/Focus.tsx +201 -0
  306. package/src/components/Focus/index.ts +5 -0
  307. package/src/components/Icon/Icon.stories.tsx +143 -0
  308. package/src/components/Icon/Icon.tsx +6 -2
  309. package/src/components/Image/Image.stories.tsx +86 -0
  310. package/src/components/Image/Image.tsx +246 -0
  311. package/src/components/Image/index.ts +5 -0
  312. package/src/components/Input/Input.stories.tsx +25 -48
  313. package/src/components/Input/Input.tsx +40 -76
  314. package/src/components/Link/Link.stories.tsx +10 -8
  315. package/src/components/Link/Link.tsx +2 -2
  316. package/src/components/{Lists → List}/List.stories.tsx +41 -44
  317. package/src/components/{Lists → List}/List.tsx +21 -22
  318. package/src/components/{Lists → List}/ListDropIndicator.tsx +7 -7
  319. package/src/components/{Lists → List}/Tree.stories.tsx +14 -13
  320. package/src/components/{Lists → List}/Tree.tsx +0 -1
  321. package/src/components/{Lists → List}/TreeDropIndicator.tsx +6 -6
  322. package/src/components/{Lists → List}/Treegrid.stories.tsx +39 -35
  323. package/src/components/List/Treegrid.tsx +188 -0
  324. package/src/components/Main/Main.stories.tsx +52 -28
  325. package/src/components/Main/Main.tsx +170 -100
  326. package/src/components/{Menus → Menu}/ContextMenu.stories.tsx +11 -10
  327. package/src/components/{Menus → Menu}/ContextMenu.tsx +10 -33
  328. package/src/components/{Menus → Menu}/DropdownMenu.stories.tsx +12 -11
  329. package/src/components/{Menus → Menu}/DropdownMenu.tsx +151 -114
  330. package/src/components/Message/Message.stories.tsx +35 -18
  331. package/src/components/Message/Message.tsx +43 -34
  332. package/src/components/Popover/Popover.stories.tsx +17 -16
  333. package/src/components/Popover/Popover.tsx +118 -96
  334. package/src/components/ScrollArea/ScrollArea.stories.tsx +223 -32
  335. package/src/components/ScrollArea/ScrollArea.tsx +97 -79
  336. package/src/components/ScrollArea/index.ts +1 -1
  337. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +91 -0
  338. package/src/components/ScrollContainer/ScrollContainer.tsx +347 -0
  339. package/src/components/ScrollContainer/index.ts +5 -0
  340. package/src/components/Select/Select.stories.tsx +19 -18
  341. package/src/components/Select/Select.tsx +16 -31
  342. package/src/components/Separator/Separator.tsx +5 -8
  343. package/src/components/Skeleton/Skeleton.stories.tsx +51 -0
  344. package/src/components/Skeleton/Skeleton.tsx +26 -0
  345. package/src/components/Skeleton/index.ts +5 -0
  346. package/src/components/Splitter/Splitter.stories.tsx +83 -0
  347. package/src/components/Splitter/Splitter.tsx +127 -0
  348. package/src/components/Splitter/index.ts +5 -0
  349. package/src/components/Status/Status.stories.tsx +28 -23
  350. package/src/components/Status/Status.tsx +10 -7
  351. package/src/components/Tag/Tag.stories.tsx +16 -14
  352. package/src/components/Tag/Tag.tsx +3 -8
  353. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +31 -0
  354. package/src/components/ThemeProvider/ThemeProvider.tsx +10 -10
  355. package/src/components/ThemeProvider/TranslationsProvider.tsx +1 -16
  356. package/src/components/ThemeProvider/index.ts +3 -3
  357. package/src/components/Toast/Toast.stories.tsx +12 -11
  358. package/src/components/Toast/Toast.tsx +22 -41
  359. package/src/components/Toolbar/Toolbar.stories.tsx +14 -14
  360. package/src/components/Toolbar/Toolbar.tsx +186 -11
  361. package/src/components/Tooltip/Tooltip.stories.tsx +34 -30
  362. package/src/components/Tooltip/Tooltip.tsx +42 -39
  363. package/src/components/index.ts +15 -9
  364. package/src/exemplars/generics.stories.tsx +41 -0
  365. package/src/exemplars/slot.stories.tsx +117 -0
  366. package/src/exemplars/tabster.stories.tsx +127 -0
  367. package/src/exemplars/virtualizer.stories.tsx +137 -0
  368. package/src/hooks/index.ts +1 -0
  369. package/src/hooks/useDensityContext.ts +3 -3
  370. package/src/hooks/useElevationContext.ts +1 -1
  371. package/src/hooks/useSafeArea.ts +3 -2
  372. package/src/hooks/useVisualViewport.ts +4 -4
  373. package/src/index.ts +2 -1
  374. package/src/playground/Controls.stories.tsx +12 -15
  375. package/src/playground/Custom.stories.tsx +18 -32
  376. package/src/playground/Typography.stories.tsx +11 -9
  377. package/src/primitives/Column/AUDIT.md +148 -0
  378. package/src/primitives/Column/Column.stories.tsx +181 -0
  379. package/src/primitives/Column/Column.tsx +165 -0
  380. package/src/primitives/Column/index.ts +5 -0
  381. package/src/primitives/Container/Container.stories.tsx +29 -0
  382. package/src/primitives/Container/Container.tsx +19 -0
  383. package/src/primitives/Container/index.ts +5 -0
  384. package/src/primitives/Flex/Flex.stories.tsx +57 -0
  385. package/src/primitives/Flex/Flex.tsx +27 -0
  386. package/src/primitives/Flex/index.ts +5 -0
  387. package/src/primitives/Grid/Grid.stories.tsx +56 -0
  388. package/src/primitives/Grid/Grid.tsx +30 -0
  389. package/src/primitives/Grid/index.ts +5 -0
  390. package/src/primitives/Panel/Panel.stories.tsx +68 -0
  391. package/src/primitives/Panel/Panel.tsx +120 -0
  392. package/src/primitives/Panel/index.ts +5 -0
  393. package/src/primitives/index.ts +9 -0
  394. package/src/testing/Loading.tsx +47 -0
  395. package/src/testing/decorators/index.ts +2 -1
  396. package/src/testing/decorators/withLayout.tsx +77 -0
  397. package/src/testing/decorators/withLayoutVariants.tsx +48 -0
  398. package/src/testing/decorators/withTheme.tsx +37 -0
  399. package/src/testing/index.ts +2 -0
  400. package/src/translations.ts +19 -0
  401. package/src/util/index.ts +3 -1
  402. package/src/util/usePx.ts +62 -0
  403. package/dist/lib/browser/chunk-BKNGMGOK.mjs +0 -4373
  404. package/dist/lib/browser/chunk-BKNGMGOK.mjs.map +0 -7
  405. package/dist/lib/node-esm/chunk-D2HZS6F4.mjs +0 -4375
  406. package/dist/lib/node-esm/chunk-D2HZS6F4.mjs.map +0 -7
  407. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts +0 -15
  408. package/dist/types/src/components/AnchoredOverflow/AnchoredOverflow.d.ts.map +0 -1
  409. package/dist/types/src/components/AnchoredOverflow/index.d.ts +0 -2
  410. package/dist/types/src/components/AnchoredOverflow/index.d.ts.map +0 -1
  411. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  412. package/dist/types/src/components/Buttons/Button.stories.d.ts +0 -12
  413. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  414. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  415. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +0 -22
  416. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  417. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  418. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -19
  419. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  420. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +0 -28
  421. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  422. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +0 -39
  423. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  424. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  425. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +0 -31
  426. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  427. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +0 -43
  428. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  429. package/dist/types/src/components/Dialogs/Dialog.d.ts +0 -31
  430. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  431. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +0 -48
  432. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  433. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  434. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  435. package/dist/types/src/components/Lists/List.stories.d.ts +0 -37
  436. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  437. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  438. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  439. package/dist/types/src/components/Lists/Tree.stories.d.ts +0 -41
  440. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  441. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  442. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  443. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +0 -10
  444. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  445. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  446. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +0 -1
  447. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +0 -50
  448. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +0 -1
  449. package/dist/types/src/components/Menus/DropdownMenu.d.ts +0 -112
  450. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +0 -1
  451. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +0 -50
  452. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +0 -1
  453. package/dist/types/src/components/Menus/index.d.ts.map +0 -1
  454. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts +0 -12
  455. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  456. package/dist/types/src/util/ThemedClassName.d.ts +0 -5
  457. package/dist/types/src/util/ThemedClassName.d.ts.map +0 -1
  458. package/src/components/AnchoredOverflow/AnchoredOverflow.tsx +0 -59
  459. package/src/components/AnchoredOverflow/index.ts +0 -5
  460. package/src/components/Buttons/Toggle.stories.tsx +0 -34
  461. package/src/components/Buttons/ToggleGroup.tsx +0 -41
  462. package/src/components/Dialogs/AlertDialog.stories.tsx +0 -67
  463. package/src/components/Dialogs/Dialog.stories.tsx +0 -66
  464. package/src/components/Dialogs/Dialog.tsx +0 -159
  465. package/src/components/Lists/Treegrid.tsx +0 -152
  466. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +0 -51
  467. package/src/testing/decorators/withTheme.ts +0 -25
  468. package/src/util/ThemedClassName.ts +0 -7
  469. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  470. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  471. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  472. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  473. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  474. /package/dist/types/src/components/{Menus → Menu}/index.d.ts +0 -0
  475. /package/src/components/{Buttons → Button}/index.ts +0 -0
  476. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  477. /package/src/components/{Lists → List}/index.ts +0 -0
  478. /package/src/components/{Menus → Menu}/index.ts +0 -0
@@ -0,0 +1,246 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React, { type SyntheticEvent, useCallback, useRef, useState } from 'react';
6
+
7
+ import { type ThemedClassName } from '@dxos/react-ui';
8
+ import { mx } from '@dxos/ui-theme';
9
+
10
+ const cache = new Map<string, string>();
11
+
12
+ export type ImageProps = ThemedClassName<
13
+ {
14
+ src: string;
15
+ alt?: string;
16
+ fit?: 'contain' | 'cover';
17
+ crossOrigin?: 'anonymous' | 'use-credentials' | '';
18
+ } & ColorOptions
19
+ >;
20
+
21
+ export const Image = ({
22
+ classNames,
23
+ src,
24
+ alt = '',
25
+ fit = 'contain',
26
+ crossOrigin = 'anonymous',
27
+ sampleSize = 64,
28
+ contrast = 0.9,
29
+ }: ImageProps) => {
30
+ const [crossOriginState, setCrossOriginState] = useState<ImageProps['crossOrigin']>(crossOrigin);
31
+ const [dominantColor, setDominantColor] = useState<string | undefined>(undefined);
32
+ const [imageLoaded, setImageLoaded] = useState<boolean>(false);
33
+ const canvasRef = useRef<HTMLCanvasElement>(null);
34
+
35
+ // CORS not supported by server.
36
+ const handleImageError = (): void => {
37
+ setCrossOriginState(undefined);
38
+ };
39
+
40
+ const handleImageLoad = useCallback(
41
+ ({ target }: SyntheticEvent<HTMLImageElement>): void => {
42
+ const rgb = cache.get(src);
43
+ if (rgb) {
44
+ setDominantColor(rgb);
45
+ setImageLoaded(true);
46
+ return;
47
+ }
48
+
49
+ const img = target as HTMLImageElement;
50
+ if (!canvasRef.current) {
51
+ return;
52
+ }
53
+
54
+ try {
55
+ const color = extractDominantColor(canvasRef.current, img, { sampleSize, contrast });
56
+ if (color) {
57
+ const rgb = `rgb(${color[0]}, ${color[1]}, ${color[2]})`;
58
+ cache.set(src, rgb);
59
+ setDominantColor(rgb);
60
+ }
61
+ } catch {
62
+ setCrossOriginState(undefined);
63
+ }
64
+
65
+ setImageLoaded(true);
66
+ },
67
+ [sampleSize, contrast, src],
68
+ );
69
+
70
+ return (
71
+ <div
72
+ // `isolate` (`isolation: isolate`) creates a new stacking context so
73
+ // the inner <img>'s `z-10` stays scoped to this wrapper. Without it
74
+ // the z-10 leaks into the parent's stacking context and elevates the
75
+ // image above any pseudo-element rings (e.g. Focus.Item's
76
+ // `dx-ring-pseudo` `::after`) painted on ancestors — most visibly,
77
+ // the focus ring on a Card containing a Card.Poster.
78
+ className={mx(
79
+ `relative flex w-full justify-center overflow-hidden transition-all duration-700 isolate`,
80
+ classNames,
81
+ )}
82
+ style={{
83
+ backgroundColor: dominantColor,
84
+ }}
85
+ >
86
+ {/* Hidden canvas for color extraction. */}
87
+ <canvas ref={canvasRef} style={{ display: 'none' }} aria-hidden='true' />
88
+
89
+ {/* Background gradient overlay for smooth transition. */}
90
+ <div
91
+ className='absolute inset-0 pointer-events-none'
92
+ style={{
93
+ background: dominantColor
94
+ ? `radial-gradient(circle at center, transparent 30%, ${dominantColor} 100%)`
95
+ : undefined,
96
+ transition: 'opacity 0.7s ease-in-out',
97
+ opacity: 0.5,
98
+ }}
99
+ />
100
+
101
+ <img
102
+ src={src}
103
+ alt={alt}
104
+ crossOrigin={crossOriginState}
105
+ onError={handleImageError}
106
+ onLoad={handleImageLoad}
107
+ className={mx(
108
+ 'z-10 transition-opacity duration-500',
109
+ fit === 'cover' ? 'w-full h-full object-cover' : 'object-contain',
110
+ )}
111
+ style={{
112
+ opacity: imageLoaded ? 1 : 0,
113
+ }}
114
+ />
115
+ </div>
116
+ );
117
+ };
118
+
119
+ type ColorOptions = {
120
+ sampleSize?: number;
121
+ contrast?: number;
122
+ };
123
+
124
+ /**
125
+ * Get dominant color from image (esp. from corners).
126
+ */
127
+ const extractDominantColor = (
128
+ canvas: HTMLCanvasElement,
129
+ img: HTMLImageElement,
130
+ { sampleSize = 64, contrast = 0.95 }: ColorOptions,
131
+ ): [number, number, number] | null => {
132
+ const ctx = canvas.getContext('2d');
133
+ if (!ctx) {
134
+ return null;
135
+ }
136
+
137
+ // Draw the image scaled down.
138
+ canvas.width = sampleSize;
139
+ canvas.height = sampleSize;
140
+ ctx.drawImage(img, 0, 0, sampleSize, sampleSize);
141
+
142
+ // Get image data.
143
+ const imageData = ctx.getImageData(0, 0, sampleSize, sampleSize);
144
+ const pixels = imageData.data;
145
+
146
+ // Check for transparent background.
147
+ if (isTransparent(pixels, sampleSize)) {
148
+ return null;
149
+ }
150
+
151
+ let r = 0;
152
+ let g = 0;
153
+ let b = 0;
154
+ let totalWeight = 0;
155
+
156
+ // Define corner sampling areas (e.g., 25% of each dimension from each corner).
157
+ const cornerSize = Math.floor(sampleSize * 0.125);
158
+
159
+ // Sample only pixels in corner areas.
160
+ for (let y = 0; y < sampleSize; y++) {
161
+ for (let x = 0; x < sampleSize; x++) {
162
+ // Check if pixel is in any corner area.
163
+ const isInTopLeft = x < cornerSize && y < cornerSize;
164
+ const isInTopRight = x >= sampleSize - cornerSize && y < cornerSize;
165
+ const isInBottomLeft = x < cornerSize && y >= sampleSize - cornerSize;
166
+ const isInBottomRight = x >= sampleSize - cornerSize && y >= sampleSize - cornerSize;
167
+ if (!isInTopLeft && !isInTopRight && !isInBottomLeft && !isInBottomRight) {
168
+ continue; // Skip pixels not in corner areas.
169
+ }
170
+
171
+ const i = (y * sampleSize + x) * 4;
172
+ const red = pixels[i];
173
+ const green = pixels[i + 1];
174
+ const blue = pixels[i + 2];
175
+ const alpha = pixels[i + 3];
176
+
177
+ // Skip transparent pixels.
178
+ if (alpha === 0) {
179
+ continue;
180
+ }
181
+
182
+ // Calculate saturation to weight vibrant colors more.
183
+ const max = Math.max(red, green, blue);
184
+ const min = Math.min(red, green, blue);
185
+ const saturation = max === 0 ? 0 : (max - min) / max;
186
+ const weight = 1 + saturation * 2;
187
+
188
+ r += red * weight;
189
+ g += green * weight;
190
+ b += blue * weight;
191
+ totalWeight += weight;
192
+ }
193
+ }
194
+
195
+ if (totalWeight > 0) {
196
+ // Slightly darken the color for better contrast.
197
+ r = Math.round(Math.round(r / totalWeight) * contrast);
198
+ g = Math.round(Math.round(g / totalWeight) * contrast);
199
+ b = Math.round(Math.round(b / totalWeight) * contrast);
200
+ return [r, g, b];
201
+ }
202
+
203
+ return null;
204
+ };
205
+
206
+ /**
207
+ * Detects if an image has a transparent background by examining edge pixels.
208
+ * @param pixels - Image pixel data from canvas
209
+ * @param sampleSize - Size of the sampled image
210
+ * @param threshold - Percentage threshold for considering background transparent (default: 0.5)
211
+ * @returns True if the image has a transparent background
212
+ */
213
+ const isTransparent = (pixels: Uint8ClampedArray, sampleSize: number, threshold: number = 0.5): boolean => {
214
+ let edgeTransparentPixels = 0;
215
+ const edgePixels = sampleSize * 4 - 4; // Perimeter minus corners counted twice.
216
+
217
+ for (let x = 0; x < sampleSize; x++) {
218
+ // Top edge.
219
+ const topIndex = x * 4;
220
+ if (pixels[topIndex + 3] === 0) {
221
+ edgeTransparentPixels++;
222
+ }
223
+
224
+ // Bottom edge.
225
+ const bottomIndex = ((sampleSize - 1) * sampleSize + x) * 4;
226
+ if (pixels[bottomIndex + 3] === 0) {
227
+ edgeTransparentPixels++;
228
+ }
229
+ }
230
+
231
+ for (let y = 1; y < sampleSize - 1; y++) {
232
+ // Left edge.
233
+ const leftIndex = y * sampleSize * 4;
234
+ if (pixels[leftIndex + 3] === 0) {
235
+ edgeTransparentPixels++;
236
+ }
237
+
238
+ // Right edge.
239
+ const rightIndex = (y * sampleSize + sampleSize - 1) * 4;
240
+ if (pixels[rightIndex + 3] === 0) {
241
+ edgeTransparentPixels++;
242
+ }
243
+ }
244
+
245
+ return edgeTransparentPixels / edgePixels > threshold;
246
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './Image';
@@ -2,16 +2,12 @@
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
  import React from 'react';
9
7
 
10
- import { activeSurface, baseSurface, modalSurface, mx, surfaceShadow } from '@dxos/react-ui-theme';
11
- import { type MessageValence } from '@dxos/react-ui-types';
12
-
13
- import { withTheme } from '../../testing';
8
+ import { type MessageValence } from '@dxos/ui-types';
14
9
 
10
+ import { withLayoutVariants, withTheme } from '../../testing';
15
11
  import {
16
12
  type CheckboxProps,
17
13
  Input,
@@ -31,7 +27,7 @@ type VariantMap = {
31
27
 
32
28
  type Variant = { [K in keyof VariantMap]: { type: K } & VariantMap[K] }[keyof VariantMap];
33
29
 
34
- type BaseProps = Partial<{
30
+ type DefaultStoryProps = Partial<{
35
31
  kind: keyof VariantMap;
36
32
  label: string;
37
33
  labelVisuallyHidden: boolean;
@@ -41,7 +37,7 @@ type BaseProps = Partial<{
41
37
  validationMessage: string;
42
38
  }>;
43
39
 
44
- const Wrapper = ({
40
+ const DefaultStory = ({
45
41
  kind,
46
42
  label,
47
43
  description,
@@ -50,7 +46,7 @@ const Wrapper = ({
50
46
  validationValence,
51
47
  validationMessage,
52
48
  ...props
53
- }: BaseProps) => {
49
+ }: DefaultStoryProps) => {
54
50
  return (
55
51
  <Input.Root {...{ validationValence }}>
56
52
  <Input.Label srOnly={labelVisuallyHidden}>{label}</Input.Label>
@@ -62,49 +58,28 @@ const Wrapper = ({
62
58
  {kind === 'switch' && <Input.Switch {...props} />}
63
59
 
64
60
  <Input.DescriptionAndValidation srOnly={descriptionVisuallyHidden}>
65
- {validationMessage && (
66
- <>
67
- <Input.Validation>{validationMessage}</Input.Validation>{' '}
68
- </>
69
- )}
61
+ {validationMessage && <Input.Validation classNames='block'>{validationMessage}</Input.Validation>}
70
62
  <Input.Description>{description}</Input.Description>
71
63
  </Input.DescriptionAndValidation>
72
64
  </Input.Root>
73
65
  );
74
66
  };
75
67
 
76
- const DefaultStory = (props: BaseProps) => {
77
- return (
78
- <div className='space-b-4'>
79
- <div className={mx(baseSurface, 'p-4')}>
80
- <Wrapper {...props} />
81
- </div>
82
- <div className={mx(activeSurface, 'p-4 rounded-md', surfaceShadow({ elevation: 'positioned' }))}>
83
- <Wrapper {...props} />
84
- </div>
85
- <div className={mx(modalSurface, 'p-4 rounded-md', surfaceShadow({ elevation: 'dialog' }))}>
86
- <Wrapper {...props} />
87
- </div>
88
- </div>
89
- );
90
- };
91
-
92
- const meta: Meta<BaseProps> = {
93
- title: 'ui/react-ui-core/Input',
94
- component: Input.Root,
68
+ const meta = {
69
+ title: 'ui/react-ui-core/components/Input',
70
+ component: Input.Root as any,
95
71
  render: DefaultStory,
96
- decorators: [withTheme],
97
- parameters: { chromatic: { disableSnapshot: false } },
98
- };
72
+ decorators: [withTheme(), withLayoutVariants()],
73
+ } satisfies Meta<typeof DefaultStory>;
99
74
 
100
75
  export default meta;
101
76
 
102
- type Story = StoryObj<BaseProps & Variant>;
77
+ type Story = StoryObj<DefaultStoryProps & Variant>;
103
78
 
104
- export const Default: Story = {
79
+ export const DensityCoarse: Story = {
105
80
  args: {
106
81
  kind: 'text',
107
- label: 'Hello',
82
+ label: 'Input value',
108
83
  placeholder: 'This is an input',
109
84
  disabled: false,
110
85
  description: undefined,
@@ -112,13 +87,14 @@ export const Default: Story = {
112
87
  descriptionVisuallyHidden: false,
113
88
  validationMessage: '',
114
89
  validationValence: undefined,
90
+ density: 'coarse',
115
91
  },
116
92
  };
117
93
 
118
94
  export const DensityFine: Story = {
119
95
  args: {
120
96
  kind: 'text',
121
- label: 'This is an Input with a density value of ‘fine’',
97
+ label: 'Input value',
122
98
  placeholder: 'This is a density:fine input',
123
99
  disabled: false,
124
100
  description: undefined,
@@ -133,7 +109,7 @@ export const DensityFine: Story = {
133
109
  export const Subdued: Story = {
134
110
  args: {
135
111
  kind: 'text',
136
- label: 'Hello',
112
+ label: 'Input value',
137
113
  placeholder: 'This is a subdued input',
138
114
  disabled: false,
139
115
  description: undefined,
@@ -163,7 +139,7 @@ export const LabelVisuallyHidden: Story = {
163
139
  },
164
140
  };
165
141
 
166
- export const InputWithDescription: Story = {
142
+ export const WithDescription: Story = {
167
143
  args: {
168
144
  kind: 'text',
169
145
  label: 'Described input',
@@ -172,7 +148,7 @@ export const InputWithDescription: Story = {
172
148
  },
173
149
  };
174
150
 
175
- export const InputWithErrorAndDescription: Story = {
151
+ export const WithErrorAndDescription: Story = {
176
152
  args: {
177
153
  kind: 'text',
178
154
  label: 'Described invalid input',
@@ -183,7 +159,7 @@ export const InputWithErrorAndDescription: Story = {
183
159
  },
184
160
  };
185
161
 
186
- export const InputWithValidationAndDescription: Story = {
162
+ export const WithValidationAndDescription: Story = {
187
163
  args: {
188
164
  kind: 'text',
189
165
  label: 'Described input with validation message',
@@ -209,7 +185,8 @@ export const PinInput: Story = {
209
185
  label: 'This input is a PIN-style input',
210
186
  length: 6,
211
187
  description: 'Type in secret you received',
212
- placeholder: '••••••',
188
+ pattern: '\\d*',
189
+ density: 'coarse',
213
190
  },
214
191
  };
215
192
 
@@ -217,15 +194,15 @@ export const Checkbox: Story = {
217
194
  args: {
218
195
  kind: 'checkbox',
219
196
  label: 'This is a checkbox',
220
- description: 'It’s checked, indeterminate, or unchecked',
197
+ description: 'Checked, indeterminate, or unchecked',
221
198
  size: 5,
222
199
  },
223
200
  };
224
201
 
225
- export const Switch = {
202
+ export const Switch: Story = {
226
203
  args: {
227
204
  kind: 'switch',
228
205
  label: 'This is a switch',
229
- description: 'It’s either off... or on.',
206
+ description: 'On or off',
230
207
  },
231
208
  };