@dxos/react-ui 0.1.41-next.adfd7c6 → 0.3.3-main.3ce60d4

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 (546) hide show
  1. package/README.md +5 -1
  2. package/README.yml +1 -0
  3. package/dist/lib/browser/index.mjs +2096 -2849
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/types/src/components/Avatars/Avatar.d.ts +51 -0
  7. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -0
  8. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +27 -0
  9. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -0
  10. package/dist/types/src/components/Avatars/AvatarGroup.d.ts +21 -0
  11. package/dist/types/src/components/Avatars/AvatarGroup.d.ts.map +1 -0
  12. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +9 -0
  13. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -0
  14. package/dist/types/src/components/Avatars/index.d.ts +3 -0
  15. package/dist/types/src/components/Avatars/index.d.ts.map +1 -0
  16. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +29 -0
  17. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  18. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +9 -0
  19. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -0
  20. package/dist/types/src/components/Breadcrumb/index.d.ts +2 -0
  21. package/dist/types/src/components/Breadcrumb/index.d.ts.map +1 -0
  22. package/dist/types/src/components/Buttons/Button.d.ts +24 -0
  23. package/dist/types/src/components/Buttons/Button.d.ts.map +1 -0
  24. package/dist/types/src/components/Buttons/Button.stories.d.ts +37 -0
  25. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +1 -0
  26. package/dist/types/src/components/Buttons/Toggle.d.ts +8 -0
  27. package/dist/types/src/components/Buttons/Toggle.d.ts.map +1 -0
  28. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +10 -0
  29. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +1 -0
  30. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +28 -0
  31. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +1 -0
  32. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +15 -0
  33. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +1 -0
  34. package/dist/types/src/components/Buttons/index.d.ts +4 -0
  35. package/dist/types/src/components/Buttons/index.d.ts.map +1 -0
  36. package/dist/types/src/components/Card/Card.d.ts +44 -0
  37. package/dist/types/src/components/Card/Card.d.ts.map +1 -0
  38. package/dist/types/src/components/Card/Card.stories.d.ts +49 -0
  39. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -0
  40. package/dist/types/src/components/Card/index.d.ts +2 -0
  41. package/dist/types/src/components/Card/index.d.ts.map +1 -0
  42. package/dist/types/src/components/Card/testing.d.ts +9 -0
  43. package/dist/types/src/components/Card/testing.d.ts.map +1 -0
  44. package/dist/types/src/components/Center/Center.d.ts +4 -0
  45. package/dist/types/src/components/Center/Center.d.ts.map +1 -0
  46. package/dist/types/src/components/Center/Center.stories.d.ts +11 -0
  47. package/dist/types/src/components/Center/Center.stories.d.ts.map +1 -0
  48. package/dist/types/src/components/Center/index.d.ts +2 -0
  49. package/dist/types/src/components/Center/index.d.ts.map +1 -0
  50. package/dist/types/src/components/ComboBox/ComboBox.d.ts +49 -0
  51. package/dist/types/src/components/ComboBox/ComboBox.d.ts.map +1 -0
  52. package/dist/types/src/components/ComboBox/ComboBox.stories.d.ts +25 -0
  53. package/dist/types/src/components/ComboBox/ComboBox.stories.d.ts.map +1 -0
  54. package/dist/types/src/components/ComboBox/index.d.ts +2 -0
  55. package/dist/types/src/components/ComboBox/index.d.ts.map +1 -0
  56. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts +11 -0
  57. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -0
  58. package/dist/types/src/components/DensityProvider/index.d.ts +2 -0
  59. package/dist/types/src/components/DensityProvider/index.d.ts.map +1 -0
  60. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +29 -0
  61. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +1 -0
  62. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +23 -0
  63. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +1 -0
  64. package/dist/types/src/components/Dialogs/Dialog.d.ts +27 -0
  65. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +1 -0
  66. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +21 -0
  67. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +1 -0
  68. package/dist/types/src/components/Dialogs/index.d.ts +3 -0
  69. package/dist/types/src/components/Dialogs/index.d.ts.map +1 -0
  70. package/dist/types/src/components/DropdownMenu/DropdownMenu.d.ts +44 -0
  71. package/dist/types/src/components/DropdownMenu/DropdownMenu.d.ts.map +1 -0
  72. package/dist/types/src/components/DropdownMenu/DropdownMenu.stories.d.ts +14 -0
  73. package/dist/types/src/components/DropdownMenu/DropdownMenu.stories.d.ts.map +1 -0
  74. package/dist/types/src/components/DropdownMenu/index.d.ts +2 -0
  75. package/dist/types/src/components/DropdownMenu/index.d.ts.map +1 -0
  76. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts +11 -0
  77. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -0
  78. package/dist/types/src/components/ElevationProvider/index.d.ts +2 -0
  79. package/dist/types/src/components/ElevationProvider/index.d.ts.map +1 -0
  80. package/dist/types/src/components/Input/Input.d.ts +55 -0
  81. package/dist/types/src/components/Input/Input.d.ts.map +1 -0
  82. package/dist/types/src/components/Input/Input.stories.d.ts +151 -0
  83. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -0
  84. package/dist/types/src/components/Input/index.d.ts +2 -0
  85. package/dist/types/src/components/Input/index.d.ts.map +1 -0
  86. package/dist/types/src/components/Link/Link.d.ts +8 -0
  87. package/dist/types/src/components/Link/Link.d.ts.map +1 -0
  88. package/dist/types/src/components/Link/Link.stories.d.ts +10 -0
  89. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -0
  90. package/dist/types/src/components/Link/index.d.ts +2 -0
  91. package/dist/types/src/components/Link/index.d.ts.map +1 -0
  92. package/dist/types/src/components/List/List.d.ts +25 -0
  93. package/dist/types/src/components/List/List.d.ts.map +1 -0
  94. package/dist/types/src/components/List/List.stories.d.ts +29 -0
  95. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  96. package/dist/types/src/components/List/Tree.d.ts +21 -0
  97. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  98. package/dist/types/src/components/List/Tree.stories.d.ts +29 -0
  99. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  100. package/dist/types/src/components/List/index.d.ts +3 -0
  101. package/dist/types/src/components/List/index.d.ts.map +1 -0
  102. package/dist/types/src/components/Main/Main.d.ts +57 -0
  103. package/dist/types/src/components/Main/Main.d.ts.map +1 -0
  104. package/dist/types/src/components/Main/Main.stories.d.ts +11 -0
  105. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -0
  106. package/dist/types/src/components/Main/index.d.ts +2 -0
  107. package/dist/types/src/components/Main/index.d.ts.map +1 -0
  108. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts +11 -0
  109. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -0
  110. package/dist/types/src/components/Message/Message.d.ts +23 -0
  111. package/dist/types/src/components/Message/Message.d.ts.map +1 -0
  112. package/dist/types/src/components/Message/Message.stories.d.ts +19 -0
  113. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -0
  114. package/dist/types/src/components/Message/index.d.ts +2 -0
  115. package/dist/types/src/components/Message/index.d.ts.map +1 -0
  116. package/dist/types/src/components/Popover/Popover.d.ts +32 -0
  117. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -0
  118. package/dist/types/src/components/Popover/Popover.stories.d.ts +15 -0
  119. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -0
  120. package/dist/types/src/components/Popover/index.d.ts +2 -0
  121. package/dist/types/src/components/Popover/index.d.ts.map +1 -0
  122. package/dist/types/src/components/ProgressBar/ProgressBar.d.ts +7 -0
  123. package/dist/types/src/components/ProgressBar/ProgressBar.d.ts.map +1 -0
  124. package/dist/types/src/components/ProgressBar/ProgressBar.stories.d.ts +12 -0
  125. package/dist/types/src/components/ProgressBar/ProgressBar.stories.d.ts.map +1 -0
  126. package/dist/types/src/components/ProgressBar/index.d.ts +2 -0
  127. package/dist/types/src/components/ProgressBar/index.d.ts.map +1 -0
  128. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +27 -0
  129. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -0
  130. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +14 -0
  131. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -0
  132. package/dist/types/src/components/ScrollArea/index.d.ts +2 -0
  133. package/dist/types/src/components/ScrollArea/index.d.ts.map +1 -0
  134. package/dist/types/src/components/Select/Select.d.ts +60 -0
  135. package/dist/types/src/components/Select/Select.d.ts.map +1 -0
  136. package/dist/types/src/components/Select/Select.stories.d.ts +16 -0
  137. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -0
  138. package/dist/types/src/components/Select/index.d.ts +2 -0
  139. package/dist/types/src/components/Select/index.d.ts.map +1 -0
  140. package/dist/types/src/components/Separator/Separator.d.ts +7 -0
  141. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -0
  142. package/dist/types/src/components/Separator/index.d.ts +2 -0
  143. package/dist/types/src/components/Separator/index.d.ts.map +1 -0
  144. package/dist/types/src/components/Tag/Tag.d.ts +10 -0
  145. package/dist/types/src/components/Tag/Tag.d.ts.map +1 -0
  146. package/dist/types/src/components/Tag/Tag.stories.d.ts +10 -0
  147. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -0
  148. package/dist/types/src/components/Tag/index.d.ts +2 -0
  149. package/dist/types/src/components/Tag/index.d.ts.map +1 -0
  150. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +16 -0
  151. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -0
  152. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +20 -0
  153. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -0
  154. package/dist/types/src/components/ThemeProvider/index.d.ts +2 -0
  155. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -0
  156. package/dist/types/src/components/Toast/Toast.d.ts +34 -0
  157. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -0
  158. package/dist/types/src/components/Toast/Toast.stories.d.ts +34 -0
  159. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -0
  160. package/dist/types/src/components/Toast/index.d.ts +2 -0
  161. package/dist/types/src/components/Toast/index.d.ts.map +1 -0
  162. package/dist/types/src/components/Toolbar/Toolbar.d.ts +42 -0
  163. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
  164. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +10 -0
  165. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -0
  166. package/dist/types/src/components/Toolbar/index.d.ts +2 -0
  167. package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
  168. package/dist/types/src/components/Tooltip/Tooltip.d.ts +23 -0
  169. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -0
  170. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +19 -0
  171. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -0
  172. package/dist/types/src/components/Tooltip/index.d.ts +2 -0
  173. package/dist/types/src/components/Tooltip/index.d.ts.map +1 -0
  174. package/dist/types/src/components/index.d.ts +25 -6
  175. package/dist/types/src/components/index.d.ts.map +1 -1
  176. package/dist/types/src/hooks/index.d.ts +6 -0
  177. package/dist/types/src/hooks/index.d.ts.map +1 -0
  178. package/dist/types/src/hooks/useDensityContext.d.ts +3 -0
  179. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -0
  180. package/dist/types/src/hooks/useElevationContext.d.ts +3 -0
  181. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -0
  182. package/dist/types/src/hooks/useThemeContext.d.ts +2 -0
  183. package/dist/types/src/hooks/useThemeContext.d.ts.map +1 -0
  184. package/dist/types/src/hooks/useTranslationsContext.d.ts +4 -0
  185. package/dist/types/src/hooks/useTranslationsContext.d.ts.map +1 -0
  186. package/dist/types/src/hooks/useVisualViewport.d.ts +6 -0
  187. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -0
  188. package/dist/types/src/index.d.ts +6 -5
  189. package/dist/types/src/index.d.ts.map +1 -1
  190. package/dist/types/src/playground/Controls.stories.d.ts +11 -0
  191. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -0
  192. package/dist/types/src/playground/Surfaces.stories.d.ts +9 -0
  193. package/dist/types/src/playground/Surfaces.stories.d.ts.map +1 -0
  194. package/dist/types/src/playground/helpers.d.ts +6 -0
  195. package/dist/types/src/playground/helpers.d.ts.map +1 -0
  196. package/dist/types/src/util/ThemedClassName.d.ts +5 -0
  197. package/dist/types/src/util/ThemedClassName.d.ts.map +1 -0
  198. package/dist/types/src/util/hasIosKeyboard.d.ts +2 -0
  199. package/dist/types/src/util/hasIosKeyboard.d.ts.map +1 -0
  200. package/dist/types/src/util/index.d.ts +2 -2
  201. package/dist/types/src/util/index.d.ts.map +1 -1
  202. package/package.json +43 -41
  203. package/src/components/Avatars/Avatar.stories.tsx +104 -0
  204. package/src/components/Avatars/Avatar.tsx +303 -0
  205. package/src/components/Avatars/AvatarGroup.stories.tsx +49 -0
  206. package/src/components/Avatars/AvatarGroup.tsx +111 -0
  207. package/src/components/Avatars/index.ts +6 -0
  208. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +46 -0
  209. package/src/components/Breadcrumb/Breadcrumb.tsx +116 -0
  210. package/src/{composites/JoinDialog → components/Breadcrumb}/index.ts +1 -1
  211. package/src/components/Buttons/Button.stories.tsx +85 -0
  212. package/src/components/Buttons/Button.tsx +93 -0
  213. package/src/components/Buttons/Toggle.stories.tsx +28 -0
  214. package/src/components/Buttons/Toggle.tsx +23 -0
  215. package/src/components/Buttons/ToggleGroup.stories.tsx +38 -0
  216. package/src/components/Buttons/ToggleGroup.tsx +41 -0
  217. package/src/components/Buttons/index.ts +7 -0
  218. package/src/components/Card/Card.stories.tsx +215 -0
  219. package/src/components/Card/Card.tsx +114 -0
  220. package/src/{panels/SpacePanel → components/Card}/index.ts +1 -1
  221. package/src/components/Card/testing.ts +90 -0
  222. package/src/components/Center/Center.stories.tsx +18 -0
  223. package/src/components/Center/Center.tsx +16 -0
  224. package/src/{layouts/PanelDialog → components/Center}/index.ts +1 -1
  225. package/src/components/ComboBox/ComboBox.stories.tsx +82 -0
  226. package/src/components/ComboBox/ComboBox.tsx +218 -0
  227. package/src/components/ComboBox/index.ts +5 -0
  228. package/src/components/DensityProvider/DensityProvider.tsx +21 -0
  229. package/src/components/DensityProvider/index.ts +5 -0
  230. package/src/components/Dialogs/AlertDialog.stories.tsx +68 -0
  231. package/src/components/Dialogs/AlertDialog.tsx +157 -0
  232. package/src/components/Dialogs/Dialog.stories.tsx +52 -0
  233. package/src/components/Dialogs/Dialog.tsx +143 -0
  234. package/src/components/Dialogs/index.ts +6 -0
  235. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +102 -0
  236. package/src/components/DropdownMenu/DropdownMenu.tsx +171 -0
  237. package/src/{layouts/PanelPopover → components/DropdownMenu}/index.ts +1 -1
  238. package/src/components/ElevationProvider/ElevationProvider.tsx +21 -0
  239. package/src/components/ElevationProvider/index.ts +5 -0
  240. package/src/components/Input/Input.stories.tsx +199 -0
  241. package/src/components/Input/Input.tsx +369 -0
  242. package/src/{composites/SpaceDialog → components/Input}/index.ts +1 -1
  243. package/src/components/Link/Link.stories.tsx +13 -0
  244. package/src/components/Link/Link.tsx +20 -0
  245. package/src/components/Link/index.ts +5 -0
  246. package/src/components/List/List.stories.tsx +184 -0
  247. package/src/components/List/List.tsx +173 -0
  248. package/src/components/List/Tree.stories.tsx +80 -0
  249. package/src/components/List/Tree.tsx +76 -0
  250. package/src/components/List/index.ts +6 -0
  251. package/src/components/Main/Main.stories.tsx +52 -0
  252. package/src/components/Main/Main.tsx +271 -0
  253. package/src/components/Main/index.ts +5 -0
  254. package/src/components/Main/useSwipeToDismiss.ts +103 -0
  255. package/src/components/Message/Message.stories.tsx +39 -0
  256. package/src/components/Message/Message.tsx +109 -0
  257. package/src/components/Message/index.ts +5 -0
  258. package/src/components/Popover/Popover.stories.tsx +38 -0
  259. package/src/components/Popover/Popover.tsx +123 -0
  260. package/src/components/Popover/index.ts +5 -0
  261. package/src/components/ProgressBar/ProgressBar.stories.tsx +33 -0
  262. package/src/components/ProgressBar/ProgressBar.tsx +29 -0
  263. package/src/components/ProgressBar/index.ts +5 -0
  264. package/src/components/ScrollArea/ScrollArea.stories.tsx +43 -0
  265. package/src/components/ScrollArea/ScrollArea.tsx +105 -0
  266. package/src/components/ScrollArea/index.ts +5 -0
  267. package/src/components/Select/Select.stories.tsx +68 -0
  268. package/src/components/Select/Select.tsx +223 -0
  269. package/src/components/Select/index.ts +5 -0
  270. package/src/components/Separator/Separator.tsx +28 -0
  271. package/src/components/Separator/index.ts +5 -0
  272. package/src/components/Tag/Tag.stories.tsx +42 -0
  273. package/src/components/Tag/Tag.tsx +23 -0
  274. package/src/components/Tag/index.ts +5 -0
  275. package/src/components/ThemeProvider/ThemeProvider.tsx +76 -0
  276. package/src/components/ThemeProvider/TranslationsProvider.tsx +63 -0
  277. package/src/components/ThemeProvider/index.ts +5 -0
  278. package/src/components/Toast/Toast.stories.tsx +61 -0
  279. package/src/components/Toast/Toast.tsx +126 -0
  280. package/src/components/Toast/index.ts +5 -0
  281. package/src/components/Toolbar/Toolbar.stories.tsx +77 -0
  282. package/src/components/Toolbar/Toolbar.tsx +99 -0
  283. package/src/components/Toolbar/index.ts +5 -0
  284. package/src/components/Tooltip/Tooltip.stories.tsx +41 -0
  285. package/src/components/Tooltip/Tooltip.tsx +84 -0
  286. package/src/components/Tooltip/index.ts +5 -0
  287. package/src/components/index.ts +27 -7
  288. package/src/hooks/index.ts +9 -0
  289. package/src/hooks/useDensityContext.ts +14 -0
  290. package/src/hooks/useElevationContext.ts +14 -0
  291. package/src/hooks/useThemeContext.ts +9 -0
  292. package/src/hooks/useTranslationsContext.ts +9 -0
  293. package/src/hooks/useVisualViewport.ts +24 -0
  294. package/src/index.ts +8 -6
  295. package/src/playground/Controls.stories.tsx +90 -0
  296. package/src/playground/Surfaces.stories.tsx +43 -0
  297. package/src/playground/helpers.tsx +32 -0
  298. package/src/util/ThemedClassName.ts +7 -0
  299. package/src/util/hasIosKeyboard.ts +8 -0
  300. package/src/util/index.ts +2 -2
  301. package/dist/lib/browser/chunk-5VRACIDE.mjs +0 -10
  302. package/dist/lib/browser/chunk-5VRACIDE.mjs.map +0 -7
  303. package/dist/lib/browser/testing/index.mjs +0 -64
  304. package/dist/lib/browser/testing/index.mjs.map +0 -7
  305. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts +0 -9
  306. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +0 -1
  307. package/dist/types/src/components/Clipboard/CopyButton.d.ts +0 -5
  308. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +0 -1
  309. package/dist/types/src/components/Clipboard/index.d.ts +0 -3
  310. package/dist/types/src/components/Clipboard/index.d.ts.map +0 -1
  311. package/dist/types/src/components/IdentityList/DeviceList.d.ts +0 -7
  312. package/dist/types/src/components/IdentityList/DeviceList.d.ts.map +0 -1
  313. package/dist/types/src/components/IdentityList/IdentityListItem.d.ts +0 -7
  314. package/dist/types/src/components/IdentityList/IdentityListItem.d.ts.map +0 -1
  315. package/dist/types/src/components/IdentityList/IdentityListItem.stories.d.ts +0 -21
  316. package/dist/types/src/components/IdentityList/IdentityListItem.stories.d.ts.map +0 -1
  317. package/dist/types/src/components/IdentityList/SpaceMemberList.d.ts +0 -7
  318. package/dist/types/src/components/IdentityList/SpaceMemberList.d.ts.map +0 -1
  319. package/dist/types/src/components/IdentityList/SpaceMemberListContainer.d.ts +0 -9
  320. package/dist/types/src/components/IdentityList/SpaceMemberListContainer.d.ts.map +0 -1
  321. package/dist/types/src/components/IdentityList/index.d.ts +0 -5
  322. package/dist/types/src/components/IdentityList/index.d.ts.map +0 -1
  323. package/dist/types/src/components/InvitationEmoji/InvitationEmoji.d.ts +0 -7
  324. package/dist/types/src/components/InvitationEmoji/InvitationEmoji.d.ts.map +0 -1
  325. package/dist/types/src/components/InvitationEmoji/index.d.ts +0 -2
  326. package/dist/types/src/components/InvitationEmoji/index.d.ts.map +0 -1
  327. package/dist/types/src/components/InvitationList/InvitationList.d.ts +0 -7
  328. package/dist/types/src/components/InvitationList/InvitationList.d.ts.map +0 -1
  329. package/dist/types/src/components/InvitationList/InvitationList.stories.d.ts +0 -10
  330. package/dist/types/src/components/InvitationList/InvitationList.stories.d.ts.map +0 -1
  331. package/dist/types/src/components/InvitationList/InvitationListContainer.d.ts +0 -7
  332. package/dist/types/src/components/InvitationList/InvitationListContainer.d.ts.map +0 -1
  333. package/dist/types/src/components/InvitationList/InvitationListItem.d.ts +0 -9
  334. package/dist/types/src/components/InvitationList/InvitationListItem.d.ts.map +0 -1
  335. package/dist/types/src/components/InvitationList/InvitationListProps.d.ts +0 -4
  336. package/dist/types/src/components/InvitationList/InvitationListProps.d.ts.map +0 -1
  337. package/dist/types/src/components/InvitationList/InvitationStatusAvatar.d.ts +0 -15
  338. package/dist/types/src/components/InvitationList/InvitationStatusAvatar.d.ts.map +0 -1
  339. package/dist/types/src/components/InvitationList/InvitationStatusAvatar.stories.d.ts +0 -9
  340. package/dist/types/src/components/InvitationList/InvitationStatusAvatar.stories.d.ts.map +0 -1
  341. package/dist/types/src/components/InvitationList/index.d.ts +0 -5
  342. package/dist/types/src/components/InvitationList/index.d.ts.map +0 -1
  343. package/dist/types/src/components/PanelSeparator/PanelSeparator.d.ts +0 -3
  344. package/dist/types/src/components/PanelSeparator/PanelSeparator.d.ts.map +0 -1
  345. package/dist/types/src/components/PanelSeparator/index.d.ts +0 -2
  346. package/dist/types/src/components/PanelSeparator/index.d.ts.map +0 -1
  347. package/dist/types/src/components/SpaceList/SpaceListItem.d.ts +0 -7
  348. package/dist/types/src/components/SpaceList/SpaceListItem.d.ts.map +0 -1
  349. package/dist/types/src/components/SpaceList/index.d.ts +0 -2
  350. package/dist/types/src/components/SpaceList/index.d.ts.map +0 -1
  351. package/dist/types/src/composites/DevicesDialog/DevicesDialog.d.ts +0 -6
  352. package/dist/types/src/composites/DevicesDialog/DevicesDialog.d.ts.map +0 -1
  353. package/dist/types/src/composites/DevicesDialog/index.d.ts +0 -2
  354. package/dist/types/src/composites/DevicesDialog/index.d.ts.map +0 -1
  355. package/dist/types/src/composites/IdentityPopover/IdentityPopover.d.ts +0 -9
  356. package/dist/types/src/composites/IdentityPopover/IdentityPopover.d.ts.map +0 -1
  357. package/dist/types/src/composites/IdentityPopover/index.d.ts +0 -2
  358. package/dist/types/src/composites/IdentityPopover/index.d.ts.map +0 -1
  359. package/dist/types/src/composites/JoinDialog/JoinDialog.d.ts +0 -6
  360. package/dist/types/src/composites/JoinDialog/JoinDialog.d.ts.map +0 -1
  361. package/dist/types/src/composites/JoinDialog/JoinDialog.stories.d.ts +0 -10
  362. package/dist/types/src/composites/JoinDialog/JoinDialog.stories.d.ts.map +0 -1
  363. package/dist/types/src/composites/JoinDialog/index.d.ts +0 -2
  364. package/dist/types/src/composites/JoinDialog/index.d.ts.map +0 -1
  365. package/dist/types/src/composites/Shell/Shell.d.ts +0 -6
  366. package/dist/types/src/composites/Shell/Shell.d.ts.map +0 -1
  367. package/dist/types/src/composites/Shell/Shell.stories.d.ts +0 -10
  368. package/dist/types/src/composites/Shell/Shell.stories.d.ts.map +0 -1
  369. package/dist/types/src/composites/Shell/ShellContext.d.ts +0 -22
  370. package/dist/types/src/composites/Shell/ShellContext.d.ts.map +0 -1
  371. package/dist/types/src/composites/Shell/index.d.ts +0 -3
  372. package/dist/types/src/composites/Shell/index.d.ts.map +0 -1
  373. package/dist/types/src/composites/SpaceDialog/SpaceDialog.d.ts +0 -6
  374. package/dist/types/src/composites/SpaceDialog/SpaceDialog.d.ts.map +0 -1
  375. package/dist/types/src/composites/SpaceDialog/index.d.ts +0 -2
  376. package/dist/types/src/composites/SpaceDialog/index.d.ts.map +0 -1
  377. package/dist/types/src/composites/index.d.ts +0 -5
  378. package/dist/types/src/composites/index.d.ts.map +0 -1
  379. package/dist/types/src/layouts/PanelAlertDialog/PanelAlertDialog.d.ts +0 -14
  380. package/dist/types/src/layouts/PanelAlertDialog/PanelAlertDialog.d.ts.map +0 -1
  381. package/dist/types/src/layouts/PanelAlertDialog/index.d.ts +0 -2
  382. package/dist/types/src/layouts/PanelAlertDialog/index.d.ts.map +0 -1
  383. package/dist/types/src/layouts/PanelDialog/PanelDialog.d.ts +0 -14
  384. package/dist/types/src/layouts/PanelDialog/PanelDialog.d.ts.map +0 -1
  385. package/dist/types/src/layouts/PanelDialog/index.d.ts +0 -2
  386. package/dist/types/src/layouts/PanelDialog/index.d.ts.map +0 -1
  387. package/dist/types/src/layouts/PanelPopover/PanelPopover.d.ts +0 -11
  388. package/dist/types/src/layouts/PanelPopover/PanelPopover.d.ts.map +0 -1
  389. package/dist/types/src/layouts/PanelPopover/index.d.ts +0 -2
  390. package/dist/types/src/layouts/PanelPopover/index.d.ts.map +0 -1
  391. package/dist/types/src/layouts/PanelSidebar/PanelSidebar.d.ts +0 -19
  392. package/dist/types/src/layouts/PanelSidebar/PanelSidebar.d.ts.map +0 -1
  393. package/dist/types/src/layouts/PanelSidebar/index.d.ts +0 -2
  394. package/dist/types/src/layouts/PanelSidebar/index.d.ts.map +0 -1
  395. package/dist/types/src/layouts/index.d.ts +0 -5
  396. package/dist/types/src/layouts/index.d.ts.map +0 -1
  397. package/dist/types/src/panels/DevicesPanel/DevicesPanel.d.ts +0 -10
  398. package/dist/types/src/panels/DevicesPanel/DevicesPanel.d.ts.map +0 -1
  399. package/dist/types/src/panels/DevicesPanel/index.d.ts +0 -2
  400. package/dist/types/src/panels/DevicesPanel/index.d.ts.map +0 -1
  401. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts +0 -6
  402. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +0 -1
  403. package/dist/types/src/panels/IdentityPanel/index.d.ts +0 -2
  404. package/dist/types/src/panels/IdentityPanel/index.d.ts.map +0 -1
  405. package/dist/types/src/panels/JoinPanel/JoinHeading.d.ts +0 -13
  406. package/dist/types/src/panels/JoinPanel/JoinHeading.d.ts.map +0 -1
  407. package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts +0 -3
  408. package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts.map +0 -1
  409. package/dist/types/src/panels/JoinPanel/JoinPanelProps.d.ts +0 -54
  410. package/dist/types/src/panels/JoinPanel/JoinPanelProps.d.ts.map +0 -1
  411. package/dist/types/src/panels/JoinPanel/index.d.ts +0 -3
  412. package/dist/types/src/panels/JoinPanel/index.d.ts.map +0 -1
  413. package/dist/types/src/panels/JoinPanel/joinMachine.d.ts +0 -64
  414. package/dist/types/src/panels/JoinPanel/joinMachine.d.ts.map +0 -1
  415. package/dist/types/src/panels/JoinPanel/view-states/AdditionMethodSelector.d.ts +0 -4
  416. package/dist/types/src/panels/JoinPanel/view-states/AdditionMethodSelector.d.ts.map +0 -1
  417. package/dist/types/src/panels/JoinPanel/view-states/IdentityAdded.d.ts +0 -15
  418. package/dist/types/src/panels/JoinPanel/view-states/IdentityAdded.d.ts.map +0 -1
  419. package/dist/types/src/panels/JoinPanel/view-states/IdentityInput.d.ts +0 -6
  420. package/dist/types/src/panels/JoinPanel/view-states/IdentityInput.d.ts.map +0 -1
  421. package/dist/types/src/panels/JoinPanel/view-states/InvitationAccepted.d.ts +0 -10
  422. package/dist/types/src/panels/JoinPanel/view-states/InvitationAccepted.d.ts.map +0 -1
  423. package/dist/types/src/panels/JoinPanel/view-states/InvitationAuthenticator.d.ts +0 -7
  424. package/dist/types/src/panels/JoinPanel/view-states/InvitationAuthenticator.d.ts.map +0 -1
  425. package/dist/types/src/panels/JoinPanel/view-states/InvitationInput.d.ts +0 -6
  426. package/dist/types/src/panels/JoinPanel/view-states/InvitationInput.d.ts.map +0 -1
  427. package/dist/types/src/panels/JoinPanel/view-states/InvitationRescuer.d.ts +0 -6
  428. package/dist/types/src/panels/JoinPanel/view-states/InvitationRescuer.d.ts.map +0 -1
  429. package/dist/types/src/panels/JoinPanel/view-states/ViewState.d.ts +0 -10
  430. package/dist/types/src/panels/JoinPanel/view-states/ViewState.d.ts.map +0 -1
  431. package/dist/types/src/panels/JoinPanel/view-states/index.d.ts +0 -8
  432. package/dist/types/src/panels/JoinPanel/view-states/index.d.ts.map +0 -1
  433. package/dist/types/src/panels/SpacePanel/SpacePanel.d.ts +0 -12
  434. package/dist/types/src/panels/SpacePanel/SpacePanel.d.ts.map +0 -1
  435. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts +0 -8
  436. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts.map +0 -1
  437. package/dist/types/src/panels/SpacePanel/index.d.ts +0 -2
  438. package/dist/types/src/panels/SpacePanel/index.d.ts.map +0 -1
  439. package/dist/types/src/panels/index.d.ts +0 -5
  440. package/dist/types/src/panels/index.d.ts.map +0 -1
  441. package/dist/types/src/playwright/invitations-manager.d.ts +0 -25
  442. package/dist/types/src/playwright/invitations-manager.d.ts.map +0 -1
  443. package/dist/types/src/playwright/invitations.spec.d.ts +0 -2
  444. package/dist/types/src/playwright/invitations.spec.d.ts.map +0 -1
  445. package/dist/types/src/playwright/playwright.config.d.ts +0 -3
  446. package/dist/types/src/playwright/playwright.config.d.ts.map +0 -1
  447. package/dist/types/src/stories/Invitations.stories.d.ts +0 -14
  448. package/dist/types/src/stories/Invitations.stories.d.ts.map +0 -1
  449. package/dist/types/src/styles/dialogStyles.d.ts +0 -3
  450. package/dist/types/src/styles/dialogStyles.d.ts.map +0 -1
  451. package/dist/types/src/styles/index.d.ts +0 -4
  452. package/dist/types/src/styles/index.d.ts.map +0 -1
  453. package/dist/types/src/styles/invitationStatusStyles.d.ts +0 -20
  454. package/dist/types/src/styles/invitationStatusStyles.d.ts.map +0 -1
  455. package/dist/types/src/styles/panelStyles.d.ts +0 -4
  456. package/dist/types/src/styles/panelStyles.d.ts.map +0 -1
  457. package/dist/types/src/testing/index.d.ts +0 -2
  458. package/dist/types/src/testing/index.d.ts.map +0 -1
  459. package/dist/types/src/testing/shell-manager.d.ts +0 -17
  460. package/dist/types/src/testing/shell-manager.d.ts.map +0 -1
  461. package/dist/types/src/translations/index.d.ts +0 -5
  462. package/dist/types/src/translations/index.d.ts.map +0 -1
  463. package/dist/types/src/translations/locales/en-US.d.ts +0 -66
  464. package/dist/types/src/translations/locales/en-US.d.ts.map +0 -1
  465. package/dist/types/src/util/invitationStatusValue.d.ts +0 -8
  466. package/dist/types/src/util/invitationStatusValue.d.ts.map +0 -1
  467. package/dist/types/src/util/toEmoji.d.ts +0 -2
  468. package/dist/types/src/util/toEmoji.d.ts.map +0 -1
  469. package/src/components/Clipboard/ClipboardProvider.tsx +0 -26
  470. package/src/components/Clipboard/CopyButton.tsx +0 -38
  471. package/src/components/Clipboard/index.ts +0 -6
  472. package/src/components/IdentityList/DeviceList.tsx +0 -31
  473. package/src/components/IdentityList/IdentityListItem.stories.tsx +0 -23
  474. package/src/components/IdentityList/IdentityListItem.tsx +0 -48
  475. package/src/components/IdentityList/SpaceMemberList.tsx +0 -33
  476. package/src/components/IdentityList/SpaceMemberListContainer.tsx +0 -32
  477. package/src/components/IdentityList/index.ts +0 -8
  478. package/src/components/InvitationEmoji/InvitationEmoji.tsx +0 -32
  479. package/src/components/InvitationEmoji/index.ts +0 -5
  480. package/src/components/InvitationList/InvitationList.stories.tsx +0 -65
  481. package/src/components/InvitationList/InvitationList.tsx +0 -33
  482. package/src/components/InvitationList/InvitationListContainer.tsx +0 -27
  483. package/src/components/InvitationList/InvitationListItem.tsx +0 -91
  484. package/src/components/InvitationList/InvitationListProps.ts +0 -7
  485. package/src/components/InvitationList/InvitationStatusAvatar.stories.tsx +0 -52
  486. package/src/components/InvitationList/InvitationStatusAvatar.tsx +0 -91
  487. package/src/components/InvitationList/index.ts +0 -8
  488. package/src/components/PanelSeparator/PanelSeparator.tsx +0 -17
  489. package/src/components/PanelSeparator/index.ts +0 -5
  490. package/src/components/SpaceList/SpaceListItem.tsx +0 -32
  491. package/src/components/SpaceList/index.ts +0 -5
  492. package/src/composites/DevicesDialog/DevicesDialog.tsx +0 -39
  493. package/src/composites/DevicesDialog/index.ts +0 -5
  494. package/src/composites/IdentityPopover/IdentityPopover.tsx +0 -54
  495. package/src/composites/IdentityPopover/index.ts +0 -5
  496. package/src/composites/JoinDialog/JoinDialog.stories.tsx +0 -74
  497. package/src/composites/JoinDialog/JoinDialog.tsx +0 -35
  498. package/src/composites/Shell/Shell.stories.tsx +0 -93
  499. package/src/composites/Shell/Shell.tsx +0 -100
  500. package/src/composites/Shell/ShellContext.tsx +0 -178
  501. package/src/composites/Shell/index.ts +0 -6
  502. package/src/composites/SpaceDialog/SpaceDialog.tsx +0 -39
  503. package/src/composites/index.ts +0 -8
  504. package/src/layouts/PanelAlertDialog/PanelAlertDialog.tsx +0 -40
  505. package/src/layouts/PanelAlertDialog/index.ts +0 -5
  506. package/src/layouts/PanelDialog/PanelDialog.tsx +0 -41
  507. package/src/layouts/PanelPopover/PanelPopover.tsx +0 -40
  508. package/src/layouts/PanelSidebar/PanelSidebar.tsx +0 -124
  509. package/src/layouts/PanelSidebar/index.ts +0 -5
  510. package/src/layouts/index.ts +0 -8
  511. package/src/panels/DevicesPanel/DevicesPanel.tsx +0 -113
  512. package/src/panels/DevicesPanel/index.ts +0 -5
  513. package/src/panels/IdentityPanel/IdentityPanel.tsx +0 -43
  514. package/src/panels/IdentityPanel/index.ts +0 -5
  515. package/src/panels/JoinPanel/JoinHeading.tsx +0 -73
  516. package/src/panels/JoinPanel/JoinPanel.tsx +0 -247
  517. package/src/panels/JoinPanel/JoinPanelProps.ts +0 -90
  518. package/src/panels/JoinPanel/index.ts +0 -6
  519. package/src/panels/JoinPanel/joinMachine.ts +0 -444
  520. package/src/panels/JoinPanel/view-states/AdditionMethodSelector.tsx +0 -63
  521. package/src/panels/JoinPanel/view-states/IdentityAdded.tsx +0 -99
  522. package/src/panels/JoinPanel/view-states/IdentityInput.tsx +0 -81
  523. package/src/panels/JoinPanel/view-states/InvitationAccepted.tsx +0 -74
  524. package/src/panels/JoinPanel/view-states/InvitationAuthenticator.tsx +0 -152
  525. package/src/panels/JoinPanel/view-states/InvitationInput.tsx +0 -75
  526. package/src/panels/JoinPanel/view-states/InvitationRescuer.tsx +0 -115
  527. package/src/panels/JoinPanel/view-states/ViewState.tsx +0 -153
  528. package/src/panels/JoinPanel/view-states/index.ts +0 -11
  529. package/src/panels/SpacePanel/SpacePanel.stories.tsx +0 -15
  530. package/src/panels/SpacePanel/SpacePanel.tsx +0 -105
  531. package/src/panels/index.ts +0 -8
  532. package/src/playwright/invitations-manager.ts +0 -165
  533. package/src/playwright/invitations.spec.ts +0 -393
  534. package/src/playwright/playwright.config.ts +0 -7
  535. package/src/stories/Invitations.stories.tsx +0 -187
  536. package/src/styles/dialogStyles.ts +0 -8
  537. package/src/styles/index.ts +0 -7
  538. package/src/styles/invitationStatusStyles.ts +0 -42
  539. package/src/styles/panelStyles.ts +0 -7
  540. package/src/testing/index.ts +0 -5
  541. package/src/testing/shell-manager.ts +0 -79
  542. package/src/translations/index.ts +0 -7
  543. package/src/translations/locales/en-US.ts +0 -69
  544. package/src/util/invitationStatusValue.ts +0 -22
  545. package/src/util/toEmoji.ts +0 -22
  546. package/theme-extensions.js +0 -11
@@ -0,0 +1,173 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { CaretDown, CaretRight } from '@phosphor-icons/react';
6
+ import { Slot } from '@radix-ui/react-slot';
7
+ import React, { type ComponentPropsWithoutRef, type FC, forwardRef, type ForwardRefExoticComponent } from 'react';
8
+
9
+ import {
10
+ List as ListPrimitive,
11
+ type ListProps as ListPrimitiveProps,
12
+ type ListScopedProps,
13
+ ListItemHeading as ListPrimitiveItemHeading,
14
+ type ListItemHeadingProps as ListPrimitiveItemHeadingProps,
15
+ ListItemOpenTrigger as ListPrimitiveItemOpenTrigger,
16
+ type ListItemOpenTriggerProps as ListPrimitiveItemOpenTriggerProps,
17
+ ListItemCollapsibleContent,
18
+ type ListItemCollapsibleContentProps,
19
+ ListItem as ListPrimitiveItem,
20
+ type ListItemProps as ListPrimitiveItemProps,
21
+ type ListItemScopedProps,
22
+ LIST_NAME,
23
+ LIST_ITEM_NAME,
24
+ useListContext,
25
+ useListItemContext,
26
+ } from '@dxos/react-list';
27
+ import { type Density } from '@dxos/react-ui-types';
28
+
29
+ import { useDensityContext, useThemeContext } from '../../hooks';
30
+ import { type ThemedClassName } from '../../util';
31
+ import { DensityProvider } from '../DensityProvider';
32
+
33
+ type ListProps = ThemedClassName<ListPrimitiveProps> & { density?: Density };
34
+
35
+ const List = forwardRef<HTMLOListElement, ListProps>(({ classNames, children, ...props }, forwardedRef) => {
36
+ const { tx } = useThemeContext();
37
+ const density = useDensityContext(props.density);
38
+
39
+ return (
40
+ <DensityProvider density={density}>
41
+ <ListPrimitive {...props} className={tx('list.root', 'list', {}, classNames)} ref={forwardedRef}>
42
+ {children}
43
+ </ListPrimitive>
44
+ </DensityProvider>
45
+ );
46
+ });
47
+
48
+ type ListItemEndcapProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { asChild?: boolean };
49
+
50
+ const ListItemEndcap = forwardRef<HTMLDivElement, ListItemEndcapProps>(
51
+ ({ children, classNames, asChild, ...props }, forwardedRef) => {
52
+ const Root = asChild ? Slot : 'div';
53
+ const density = useDensityContext();
54
+ const { tx } = useThemeContext();
55
+ return (
56
+ <Root
57
+ {...(!asChild && { role: 'none' })}
58
+ {...props}
59
+ className={tx('list.item.endcap', 'list__listItem__endcap', { density }, classNames)}
60
+ ref={forwardedRef}
61
+ >
62
+ {children}
63
+ </Root>
64
+ );
65
+ },
66
+ );
67
+
68
+ const MockListItemOpenTrigger = ({
69
+ classNames,
70
+ ...props
71
+ }: ThemedClassName<Omit<ComponentPropsWithoutRef<'div'>, 'children'>>) => {
72
+ const density = useDensityContext();
73
+ const { tx } = useThemeContext();
74
+ return (
75
+ <div
76
+ role='none'
77
+ {...props}
78
+ className={tx('list.item.openTrigger', 'list__listItem__openTrigger--mock', { density }, classNames)}
79
+ />
80
+ );
81
+ };
82
+
83
+ type ListItemHeadingProps = ThemedClassName<ListPrimitiveItemHeadingProps>;
84
+
85
+ const ListItemHeading = forwardRef<HTMLParagraphElement, ListItemHeadingProps>(
86
+ ({ children, classNames, ...props }, forwardedRef) => {
87
+ const { tx } = useThemeContext();
88
+ const density = useDensityContext();
89
+ return (
90
+ <ListPrimitiveItemHeading
91
+ {...props}
92
+ className={tx('list.item.heading', 'list__listItem__heading', { density }, classNames)}
93
+ ref={forwardedRef}
94
+ >
95
+ {children}
96
+ </ListPrimitiveItemHeading>
97
+ );
98
+ },
99
+ );
100
+
101
+ type ListItemOpenTriggerProps = ThemedClassName<ListPrimitiveItemOpenTriggerProps>;
102
+
103
+ const ListItemOpenTrigger = forwardRef<HTMLButtonElement, ListItemOpenTriggerProps>(
104
+ ({ __listItemScope, classNames, children, ...props }, forwardedRef) => {
105
+ const { tx } = useThemeContext();
106
+ const density = useDensityContext();
107
+ const { open } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
108
+ const Icon = open ? CaretDown : CaretRight;
109
+ return (
110
+ <ListPrimitiveItemOpenTrigger
111
+ {...props}
112
+ className={tx('list.item.openTrigger', 'list__listItem__openTrigger', { density }, classNames)}
113
+ ref={forwardedRef}
114
+ >
115
+ {children || (
116
+ <Icon
117
+ {...{
118
+ weight: 'bold',
119
+ className: tx('list.item.openTriggerIcon', 'list__listItem__openTrigger__icon', {}),
120
+ }}
121
+ />
122
+ )}
123
+ </ListPrimitiveItemOpenTrigger>
124
+ );
125
+ },
126
+ );
127
+
128
+ type ListItemRootProps = ThemedClassName<ListPrimitiveItemProps>;
129
+
130
+ const ListItemRoot = forwardRef<HTMLLIElement, ListItemRootProps>(
131
+ ({ classNames, children, ...props }, forwardedRef) => {
132
+ const { tx } = useThemeContext();
133
+ const density = useDensityContext();
134
+ return (
135
+ <ListPrimitiveItem
136
+ {...props}
137
+ className={tx('list.item.root', 'list__listItem', { density, collapsible: props.collapsible }, classNames)}
138
+ ref={forwardedRef}
139
+ >
140
+ {children}
141
+ </ListPrimitiveItem>
142
+ );
143
+ },
144
+ );
145
+
146
+ export const ListItem: {
147
+ Root: ForwardRefExoticComponent<ListItemRootProps>;
148
+ Endcap: ForwardRefExoticComponent<ListItemEndcapProps>;
149
+ Heading: ForwardRefExoticComponent<ListItemHeadingProps>;
150
+ OpenTrigger: ForwardRefExoticComponent<ListItemOpenTriggerProps>;
151
+ CollapsibleContent: ForwardRefExoticComponent<ListItemCollapsibleContentProps>;
152
+ MockOpenTrigger: FC<ThemedClassName<Omit<ComponentPropsWithoutRef<'div'>, 'children'>>>;
153
+ } = {
154
+ Root: ListItemRoot,
155
+ Endcap: ListItemEndcap,
156
+ Heading: ListItemHeading,
157
+ OpenTrigger: ListItemOpenTrigger,
158
+ CollapsibleContent: ListItemCollapsibleContent,
159
+ MockOpenTrigger: MockListItemOpenTrigger,
160
+ };
161
+
162
+ export { List, useListContext, useListItemContext, LIST_NAME, LIST_ITEM_NAME };
163
+
164
+ export type {
165
+ ListProps,
166
+ ListScopedProps,
167
+ ListItemRootProps,
168
+ ListItemScopedProps,
169
+ ListItemEndcapProps,
170
+ ListItemHeadingProps,
171
+ ListItemOpenTriggerProps,
172
+ ListItemCollapsibleContentProps,
173
+ };
@@ -0,0 +1,80 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import '@dxosTheme';
6
+
7
+ import React from 'react';
8
+
9
+ import { Tree, TreeItem } from './Tree';
10
+
11
+ type StorybookTreeProps = {
12
+ data: any;
13
+ };
14
+
15
+ type StorybookTreeItemProps = {
16
+ data: any;
17
+ prefix?: string;
18
+ };
19
+
20
+ const isScalar = (data: any) => !(typeof data === 'object' || Array.isArray(data));
21
+
22
+ const createKey = (key: string, prefix?: string) => (prefix === undefined ? key : `${prefix}.${key}`);
23
+
24
+ const StorybookTreeItem = ({ data, prefix }: StorybookTreeItemProps) => {
25
+ const keys = Array.isArray(data) ? Array.from(data.keys()) : Object.keys(data);
26
+ return (
27
+ <Tree.Root density='fine'>
28
+ {keys.map((key) => {
29
+ const id = createKey(String(key), prefix);
30
+ const value = data[key as keyof typeof data];
31
+ const valueIsScalar = isScalar(value);
32
+
33
+ return (
34
+ <TreeItem.Root key={id} id={id} collapsible={!valueIsScalar} defaultOpen>
35
+ <div role='none' className='grow flex'>
36
+ {valueIsScalar ? <TreeItem.MockOpenTrigger /> : <TreeItem.OpenTrigger />}
37
+ <TreeItem.Heading classNames='grow pbs-1'>{valueIsScalar ? String(value) : key}</TreeItem.Heading>
38
+ </div>
39
+ {!valueIsScalar && (
40
+ <TreeItem.Body className='pis-2'>
41
+ <Tree.Branch>
42
+ <StorybookTreeItem data={value} prefix={id} />
43
+ </Tree.Branch>
44
+ </TreeItem.Body>
45
+ )}
46
+ </TreeItem.Root>
47
+ );
48
+ })}
49
+ </Tree.Root>
50
+ );
51
+ };
52
+
53
+ const StorybookTree = ({ data }: StorybookTreeProps) => {
54
+ return <StorybookTreeItem data={data} />;
55
+ };
56
+
57
+ export default {
58
+ component: StorybookTree,
59
+ };
60
+
61
+ export const Default = {
62
+ args: {
63
+ data: {
64
+ foo: 100,
65
+ bar: {
66
+ zoo: 200,
67
+ },
68
+ tags: ['a', 'b', 'c'],
69
+ items: [
70
+ {
71
+ a: true,
72
+ b: 100,
73
+ },
74
+ {
75
+ c: 200,
76
+ },
77
+ ],
78
+ },
79
+ },
80
+ };
@@ -0,0 +1,76 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import React, { type ComponentPropsWithoutRef, type FC, forwardRef, type ForwardRefExoticComponent } from 'react';
6
+
7
+ import {
8
+ List,
9
+ LIST_ITEM_NAME,
10
+ ListItem,
11
+ type ListItemCollapsibleContentProps,
12
+ type ListItemHeadingProps,
13
+ type ListItemOpenTriggerProps,
14
+ type ListItemRootProps,
15
+ type ListProps,
16
+ type ListScopedProps,
17
+ useListItemContext,
18
+ } from './List';
19
+ import { type ThemedClassName } from '../../util';
20
+
21
+ type TreeRootProps = ListProps;
22
+
23
+ type TreeItemProps = ListItemRootProps;
24
+
25
+ const TreeRoot: ForwardRefExoticComponent<TreeRootProps> = forwardRef<HTMLOListElement, TreeRootProps>(
26
+ (props, forwardedRef) => {
27
+ return <List {...props} ref={forwardedRef} />;
28
+ },
29
+ );
30
+
31
+ type TreeBranchProps = TreeRootProps;
32
+
33
+ const TreeBranch: ForwardRefExoticComponent<TreeBranchProps> = forwardRef<
34
+ HTMLOListElement,
35
+ ListScopedProps<TreeBranchProps>
36
+ >(({ __listScope, ...props }, forwardedRef) => {
37
+ const { headingId } = useListItemContext(LIST_ITEM_NAME, __listScope);
38
+ return <List {...props} aria-labelledby={headingId} ref={forwardedRef} />;
39
+ });
40
+
41
+ const TreeItemRoot: ForwardRefExoticComponent<ListItemRootProps> = forwardRef<HTMLLIElement, ListItemRootProps>(
42
+ (props, forwardedRef) => {
43
+ return <ListItem.Root role='treeitem' {...props} ref={forwardedRef} />;
44
+ },
45
+ );
46
+
47
+ type TreeItemHeadingProps = ListItemHeadingProps;
48
+
49
+ const TreeItemHeading = ListItem.Heading;
50
+
51
+ type TreeItemOpenTriggerProps = ListItemOpenTriggerProps;
52
+
53
+ const TreeItemOpenTrigger = ListItem.OpenTrigger;
54
+
55
+ const MockTreeItemOpenTrigger = ListItem.MockOpenTrigger;
56
+
57
+ type TreeItemBodyProps = ListItemCollapsibleContentProps;
58
+
59
+ const TreeItemBody: ForwardRefExoticComponent<TreeItemBodyProps> = ListItem.CollapsibleContent;
60
+
61
+ export const Tree = { Root: TreeRoot, Branch: TreeBranch };
62
+ export const TreeItem: {
63
+ Root: ForwardRefExoticComponent<TreeItemProps>;
64
+ Heading: ForwardRefExoticComponent<TreeItemHeadingProps>;
65
+ Body: ForwardRefExoticComponent<TreeItemBodyProps>;
66
+ OpenTrigger: ForwardRefExoticComponent<TreeItemOpenTriggerProps>;
67
+ MockOpenTrigger: FC<ThemedClassName<Omit<ComponentPropsWithoutRef<'div'>, 'children'>>>;
68
+ } = {
69
+ Root: TreeItemRoot,
70
+ Heading: TreeItemHeading,
71
+ Body: TreeItemBody,
72
+ OpenTrigger: TreeItemOpenTrigger,
73
+ MockOpenTrigger: MockTreeItemOpenTrigger,
74
+ };
75
+
76
+ export type { TreeRootProps, TreeItemProps, TreeItemHeadingProps, TreeItemBodyProps, TreeItemOpenTriggerProps };
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ export * from './List';
6
+ export * from './Tree';
@@ -0,0 +1,52 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import '@dxosTheme';
6
+
7
+ import React from 'react';
8
+
9
+ import { Main, useSidebars } from './Main';
10
+ import { Button } from '../Buttons';
11
+
12
+ type StoryMainArgs = {};
13
+
14
+ const NavigationSidebarToggle = () => {
15
+ const { toggleNavigationSidebar } = useSidebars('StoryMain__SidebarToggle');
16
+ return <Button onClick={toggleNavigationSidebar}>Toggle navigation sidebar</Button>;
17
+ };
18
+
19
+ const ComplementarySidebarToggle = () => {
20
+ const { toggleComplementarySidebar } = useSidebars('StoryMain__SidebarToggle');
21
+ return <Button onClick={toggleComplementarySidebar}>Toggle complementary sidebar</Button>;
22
+ };
23
+
24
+ const StoryMain = (_args: StoryMainArgs) => {
25
+ return (
26
+ <Main.Root defaultComplementarySidebarOpen>
27
+ <Main.Overlay />
28
+ <Main.NavigationSidebar classNames='p-4'>
29
+ <p>Navigation sidebar content, hi!</p>
30
+ <NavigationSidebarToggle />
31
+ </Main.NavigationSidebar>
32
+ <Main.Content>
33
+ <div role='group' className='m-2 p-4 bg-neutral-50 dark:bg-neutral-950 rounded space-y-2'>
34
+ <ComplementarySidebarToggle />
35
+ <p>Main content, hello!</p>
36
+ <NavigationSidebarToggle />
37
+ </div>
38
+ </Main.Content>
39
+ <Main.ComplementarySidebar classNames='p-4'>
40
+ <p>Complementary sidebar content, hello!</p>
41
+ <ComplementarySidebarToggle />
42
+ </Main.ComplementarySidebar>
43
+ </Main.Root>
44
+ );
45
+ };
46
+
47
+ export default { component: StoryMain };
48
+
49
+ export const Default = {
50
+ args: {},
51
+ layout: 'fullscreen',
52
+ };
@@ -0,0 +1,271 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { createContext } from '@radix-ui/react-context';
6
+ import { Root as DialogRoot, DialogContent } from '@radix-ui/react-dialog';
7
+ import { Primitive } from '@radix-ui/react-primitive';
8
+ import { Slot } from '@radix-ui/react-slot';
9
+ import { useControllableState } from '@radix-ui/react-use-controllable-state';
10
+ import React, {
11
+ type ComponentPropsWithRef,
12
+ type Dispatch,
13
+ forwardRef,
14
+ type PropsWithChildren,
15
+ type SetStateAction,
16
+ useCallback,
17
+ useRef,
18
+ } from 'react';
19
+
20
+ import { useMediaQuery, useForwardedRef } from '@dxos/react-hooks';
21
+
22
+ import { useSwipeToDismiss } from './useSwipeToDismiss';
23
+ import { useThemeContext } from '../../hooks';
24
+ import { type ThemedClassName } from '../../util';
25
+ import { ElevationProvider } from '../ElevationProvider';
26
+
27
+ const MAIN_ROOT_NAME = 'MainRoot';
28
+ const NAVIGATION_SIDEBAR_NAME = 'NavigationSidebar';
29
+ const COMPLEMENTARY_SIDEBAR_NAME = 'ComplementarySidebar';
30
+ const MAIN_NAME = 'Main';
31
+ const GENERIC_CONSUMER_NAME = 'GenericConsumer';
32
+
33
+ type MainContextValue = {
34
+ navigationSidebarOpen: boolean;
35
+ setNavigationSidebarOpen: Dispatch<SetStateAction<boolean | undefined>>;
36
+ complementarySidebarOpen: boolean;
37
+ setComplementarySidebarOpen: Dispatch<SetStateAction<boolean | undefined>>;
38
+ };
39
+
40
+ const [MainProvider, useMainContext] = createContext<MainContextValue>(MAIN_NAME, {
41
+ navigationSidebarOpen: false,
42
+ setNavigationSidebarOpen: (nextOpen) => {
43
+ // TODO(burdon): Standardize with other context missing errors using raise.
44
+ console.warn('Attempt to set sidebar state without initializing `MainRoot`');
45
+ },
46
+ complementarySidebarOpen: false,
47
+ setComplementarySidebarOpen: (nextOpen) => {
48
+ // TODO(burdon): Standardize with other context missing errors using raise.
49
+ console.warn('Attempt to set sidebar state without initializing `MainRoot`');
50
+ },
51
+ });
52
+
53
+ const useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
54
+ const { setNavigationSidebarOpen, navigationSidebarOpen, setComplementarySidebarOpen, complementarySidebarOpen } =
55
+ useMainContext(consumerName);
56
+ return {
57
+ navigationSidebarOpen,
58
+ setNavigationSidebarOpen,
59
+ toggleNavigationSidebar: useCallback(
60
+ () => setNavigationSidebarOpen(!navigationSidebarOpen),
61
+ [navigationSidebarOpen, setNavigationSidebarOpen],
62
+ ),
63
+ openNavigationSidebar: useCallback(() => setNavigationSidebarOpen(true), [setNavigationSidebarOpen]),
64
+ closeNavigationSidebar: useCallback(() => setNavigationSidebarOpen(false), [setNavigationSidebarOpen]),
65
+ complementarySidebarOpen,
66
+ setComplementarySidebarOpen,
67
+ toggleComplementarySidebar: useCallback(
68
+ () => setComplementarySidebarOpen(!complementarySidebarOpen),
69
+ [complementarySidebarOpen, setComplementarySidebarOpen],
70
+ ),
71
+ openComplementarySidebar: useCallback(() => setComplementarySidebarOpen(true), [setComplementarySidebarOpen]),
72
+ closeComplementarySidebar: useCallback(() => setComplementarySidebarOpen(false), [setComplementarySidebarOpen]),
73
+ };
74
+ };
75
+
76
+ type MainRootProps = PropsWithChildren<{
77
+ navigationSidebarOpen?: boolean;
78
+ defaultNavigationSidebarOpen?: boolean;
79
+ onNavigationSidebarOpenChange?: (nextOpen: boolean) => void;
80
+ complementarySidebarOpen?: boolean;
81
+ defaultComplementarySidebarOpen?: boolean;
82
+ onComplementarySidebarOpenChange?: (nextOpen: boolean) => void;
83
+ }>;
84
+
85
+ const MainRoot = ({
86
+ navigationSidebarOpen: propsNavigationSidebarOpen,
87
+ defaultNavigationSidebarOpen,
88
+ onNavigationSidebarOpenChange,
89
+ complementarySidebarOpen: propsComplementarySidebarOpen,
90
+ defaultComplementarySidebarOpen,
91
+ onComplementarySidebarOpenChange,
92
+ children,
93
+ ...props
94
+ }: MainRootProps) => {
95
+ const [isLg] = useMediaQuery('lg', { ssr: false });
96
+ const [navigationSidebarOpen = isLg, setNavigationSidebarOpen] = useControllableState<boolean>({
97
+ prop: propsNavigationSidebarOpen,
98
+ defaultProp: defaultNavigationSidebarOpen,
99
+ onChange: onNavigationSidebarOpenChange,
100
+ });
101
+ const [complementarySidebarOpen = false, setComplementarySidebarOpen] = useControllableState<boolean>({
102
+ prop: propsComplementarySidebarOpen,
103
+ defaultProp: defaultComplementarySidebarOpen,
104
+ onChange: onComplementarySidebarOpenChange,
105
+ });
106
+ return (
107
+ <MainProvider
108
+ {...props}
109
+ {...{
110
+ navigationSidebarOpen,
111
+ setNavigationSidebarOpen,
112
+ complementarySidebarOpen,
113
+ setComplementarySidebarOpen,
114
+ }}
115
+ >
116
+ {children}
117
+ </MainProvider>
118
+ );
119
+ };
120
+
121
+ MainRoot.displayName = MAIN_ROOT_NAME;
122
+
123
+ const handleOpenAutoFocus = (event: Event) => {
124
+ !document.body.hasAttribute('data-is-keyboard') && event.preventDefault();
125
+ };
126
+
127
+ type MainSidebarProps = ThemedClassName<ComponentPropsWithRef<typeof DialogContent>> & {
128
+ swipeToDismiss?: boolean;
129
+ open: boolean;
130
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
131
+ side: 'inline-start' | 'inline-end';
132
+ };
133
+
134
+ // TODO(burdon): Factor out Sidebar?
135
+ // TODO(burdon): Style left/right sidebar differently.
136
+ const MainSidebar = forwardRef<HTMLDivElement, MainSidebarProps>(
137
+ ({ classNames, children, swipeToDismiss, onOpenAutoFocus, open, setOpen, side, ...props }, forwardedRef) => {
138
+ const [isLg] = useMediaQuery('lg', { ssr: false });
139
+ const { tx } = useThemeContext();
140
+ const ref = useForwardedRef(forwardedRef);
141
+ const noopRef = useRef(null);
142
+ useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
143
+ onDismiss: () => setOpen(false),
144
+ });
145
+ const Root = isLg ? Primitive.div : DialogContent;
146
+ return (
147
+ <DialogRoot open={open} modal={false}>
148
+ <Root
149
+ {...(!isLg && { forceMount: true, tabIndex: -1, onOpenAutoFocus: onOpenAutoFocus ?? handleOpenAutoFocus })}
150
+ {...props}
151
+ className={tx(
152
+ 'main.sidebar',
153
+ 'main__sidebar',
154
+ { isLg, [side === 'inline-end' ? 'inlineEndSidebarOpen' : 'inlineStartSidebarOpen']: open, side },
155
+ classNames,
156
+ )}
157
+ ref={ref}
158
+ >
159
+ <ElevationProvider elevation='group'>{children}</ElevationProvider>
160
+ </Root>
161
+ </DialogRoot>
162
+ );
163
+ },
164
+ );
165
+
166
+ type MainNavigationSidebarProps = Omit<MainSidebarProps, 'open' | 'setOpen' | 'side'>;
167
+
168
+ const MainNavigationSidebar = forwardRef<HTMLDivElement, MainNavigationSidebarProps>((props, forwardedRef) => {
169
+ const { navigationSidebarOpen, setNavigationSidebarOpen } = useMainContext(NAVIGATION_SIDEBAR_NAME);
170
+ return (
171
+ <MainSidebar
172
+ {...props}
173
+ open={navigationSidebarOpen}
174
+ setOpen={setNavigationSidebarOpen}
175
+ side='inline-start'
176
+ ref={forwardedRef}
177
+ />
178
+ );
179
+ });
180
+
181
+ MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
182
+
183
+ type MainComplementarySidebarProps = Omit<MainSidebarProps, 'open' | 'setOpen' | 'side'>;
184
+
185
+ const MainComplementarySidebar = forwardRef<HTMLDivElement, MainComplementarySidebarProps>((props, forwardedRef) => {
186
+ const { complementarySidebarOpen, setComplementarySidebarOpen } = useMainContext(COMPLEMENTARY_SIDEBAR_NAME);
187
+ return (
188
+ <MainSidebar
189
+ {...props}
190
+ open={complementarySidebarOpen}
191
+ setOpen={setComplementarySidebarOpen}
192
+ side='inline-end'
193
+ ref={forwardedRef}
194
+ />
195
+ );
196
+ });
197
+
198
+ MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
199
+
200
+ type MainProps = ThemedClassName<ComponentPropsWithRef<typeof Primitive.div>> & { asChild?: boolean; bounce?: boolean };
201
+
202
+ const MainContent = forwardRef<HTMLDivElement, MainProps>(
203
+ ({ asChild, classNames, bounce, children, ...props }: MainProps, forwardedRef) => {
204
+ const [isLg] = useMediaQuery('lg', { ssr: false });
205
+ const { navigationSidebarOpen, complementarySidebarOpen } = useMainContext(MAIN_NAME);
206
+ const { tx } = useThemeContext();
207
+ const Root = asChild ? Slot : 'main';
208
+
209
+ return (
210
+ <Root
211
+ {...props}
212
+ className={tx(
213
+ 'main.content',
214
+ 'main',
215
+ {
216
+ isLg,
217
+ inlineStartSidebarOpen: navigationSidebarOpen,
218
+ inlineEndSidebarOpen: complementarySidebarOpen,
219
+ bounce,
220
+ },
221
+ classNames,
222
+ )}
223
+ ref={forwardedRef}
224
+ >
225
+ {children}
226
+ </Root>
227
+ );
228
+ },
229
+ );
230
+
231
+ MainContent.displayName = MAIN_NAME;
232
+
233
+ type MainOverlayProps = ThemedClassName<Omit<ComponentPropsWithRef<typeof Primitive.div>, 'children'>>;
234
+
235
+ const MainOverlay = forwardRef<HTMLDivElement, MainOverlayProps>(({ classNames, ...props }, forwardedRef) => {
236
+ const [isLg] = useMediaQuery('lg', { ssr: false });
237
+ const { navigationSidebarOpen, setNavigationSidebarOpen, complementarySidebarOpen, setComplementarySidebarOpen } =
238
+ useMainContext(MAIN_NAME);
239
+ const { tx } = useThemeContext();
240
+ return (
241
+ <div
242
+ onClick={() => {
243
+ setNavigationSidebarOpen(false);
244
+ setComplementarySidebarOpen(false);
245
+ }}
246
+ {...props}
247
+ className={tx(
248
+ 'main.overlay',
249
+ 'main__overlay',
250
+ { isLg, inlineStartSidebarOpen: navigationSidebarOpen, inlineEndSidebarOpen: complementarySidebarOpen },
251
+ classNames,
252
+ )}
253
+ data-open={navigationSidebarOpen}
254
+ aria-hidden='true'
255
+ data-aria-hidden='true'
256
+ ref={forwardedRef}
257
+ />
258
+ );
259
+ });
260
+
261
+ export const Main = {
262
+ Content: MainContent,
263
+ Overlay: MainOverlay,
264
+ Root: MainRoot,
265
+ NavigationSidebar: MainNavigationSidebar,
266
+ ComplementarySidebar: MainComplementarySidebar,
267
+ };
268
+
269
+ export { useMainContext, useSidebars };
270
+
271
+ export type { MainRootProps, MainProps, MainOverlayProps, MainNavigationSidebarProps };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ export * from './Main';