@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
@@ -1,105 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { UserPlus } from '@phosphor-icons/react';
6
- import React, { cloneElement, useCallback, useReducer } from 'react';
7
-
8
- import { Invitation, InvitationEncoder, Space } from '@dxos/client';
9
- import { useSpaceInvitations, observer } from '@dxos/react-client';
10
- import { Button, DensityProvider, getSize, mx, useTranslation } from '@dxos/react-components';
11
-
12
- import { InvitationList, PanelSeparator, SpaceMemberListContainer } from '../../components';
13
- import { defaultSurface, subduedSurface } from '../../styles';
14
-
15
- export type SpacePanelProps = {
16
- titleId?: string;
17
- space: Space;
18
- createInvitationUrl: (invitationCode: string) => string;
19
- doneActionParent?: Parameters<typeof cloneElement>[0];
20
- onDone?: () => void;
21
- };
22
-
23
- export type SpaceView = 'current space';
24
-
25
- const CurrentSpaceView = observer(({ space, createInvitationUrl, titleId }: SpacePanelProps) => {
26
- const { t } = useTranslation('os');
27
- const invitations = useSpaceInvitations(space?.key);
28
- const name = space?.properties.name;
29
-
30
- console.log('[space panel]', process.env.NODE_ENV);
31
-
32
- if (!space) {
33
- return null;
34
- }
35
-
36
- const onInvitationEvent = useCallback((invitation: Invitation) => {
37
- const invitationCode = InvitationEncoder.encode(invitation);
38
- console.log(JSON.stringify({ invitationCode }));
39
- if (invitation.authCode) {
40
- console.log(JSON.stringify({ authCode: invitation.authCode }));
41
- }
42
- }, []);
43
-
44
- return (
45
- <div role='none' className='flex flex-col'>
46
- <div role='none' className={mx(subduedSurface, 'rounded-bs-md flex items-center p-2 gap-2')}>
47
- {/* TODO(wittjosiah): Label this as the space panel. */}
48
- <h2 id={titleId} className={mx('grow font-system-medium', !name && 'font-mono')}>
49
- {name ?? space.key.truncate()}
50
- </h2>
51
- </div>
52
- <div role='region' className={mx(defaultSurface, 'rounded-be-md p-2')}>
53
- <InvitationList
54
- invitations={invitations}
55
- onClickRemove={(invitation) => invitation.cancel()}
56
- createInvitationUrl={createInvitationUrl}
57
- />
58
- <Button
59
- className='is-full flex gap-2 mbs-2'
60
- onClick={() => {
61
- const invitation = space?.createInvitation();
62
- if (process.env.NODE_ENV !== 'production') {
63
- invitation.subscribe(onInvitationEvent);
64
- }
65
- }}
66
- data-testid='spaces-panel.create-invitation'
67
- >
68
- <span>{t('create space invitation label')}</span>
69
- <UserPlus className={getSize(4)} weight='bold' />
70
- </Button>
71
- <PanelSeparator />
72
- <SpaceMemberListContainer spaceKey={space.key} includeSelf />
73
- </div>
74
- </div>
75
- );
76
- });
77
-
78
- interface SpacePanelState {
79
- activeView: SpaceView;
80
- }
81
-
82
- interface SpacePanelAction {
83
- type: null;
84
- }
85
-
86
- export const SpacePanel = (props: SpacePanelProps) => {
87
- const reducer = (state: SpacePanelState, action: SpacePanelAction) => {
88
- const nextState = { ...state };
89
- switch (action.type) {
90
- case null:
91
- }
92
- return nextState;
93
- };
94
-
95
- const [panelState] = useReducer(reducer, {
96
- activeView: 'current space'
97
- });
98
-
99
- // TODO(wittjosiah): Use ViewState or similar.
100
- return (
101
- <DensityProvider density='fine'>
102
- {panelState.activeView === 'current space' ? <CurrentSpaceView {...props} /> : null}
103
- </DensityProvider>
104
- );
105
- };
@@ -1,8 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- export * from './DevicesPanel';
6
- export * from './IdentityPanel';
7
- export * from './JoinPanel';
8
- export * from './SpacePanel';
@@ -1,165 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { expect } from 'chai';
6
- import type { Browser, ConsoleMessage } from 'playwright';
7
- import waitForExpect from 'wait-for-expect';
8
-
9
- import { Trigger } from '@dxos/async';
10
- import { ConnectionState, Invitation } from '@dxos/protocols/proto/dxos/client/services';
11
- import { setupPage } from '@dxos/test/playwright';
12
-
13
- import { ShellManager } from '../testing';
14
-
15
- // TODO(wittjosiah): Factor out.
16
- // TODO(burdon): No hard-coding of ports; reconcile all DXOS tools ports.
17
- const storybookUrl = (storyId: string) => `http://localhost:9009/iframe.html?id=${storyId}&viewMode=story`;
18
-
19
- export type PanelType = number | 'identity' | 'devices' | 'spaces' | 'join';
20
-
21
- export class InvitationsManager extends ShellManager {
22
- private _initialized = false;
23
- private _invitationCode = new Trigger<string>();
24
- private _authCode = new Trigger<string>();
25
-
26
- constructor(private readonly _browser: Browser) {
27
- super();
28
- }
29
-
30
- async init() {
31
- if (this._initialized) {
32
- return;
33
- }
34
-
35
- const { page } = await setupPage(this._browser, {
36
- url: storybookUrl('invitations--default'),
37
- waitFor: (page) => page.getByTestId('invitations.identity-header').first().isVisible()
38
- });
39
-
40
- this.page = page;
41
- this.page.on('console', (message) => this._onConsoleMessage(message));
42
- this._initialized = true;
43
- }
44
-
45
- // Getters
46
-
47
- peer(id: number) {
48
- return this.page.getByTestId(`peer-${id}`);
49
- }
50
-
51
- async getNetworkStatus(id: number) {
52
- const selector = this.peer(id).getByTestId('identity-list-item.description').first();
53
-
54
- try {
55
- await selector.waitFor({ timeout: 500 });
56
- return ConnectionState.OFFLINE;
57
- } catch {
58
- return ConnectionState.ONLINE;
59
- }
60
- }
61
-
62
- async getDisplayName(id: number) {
63
- // TODO(wittjosiah): Update id.
64
- return this.peer(id).getByTestId('identity-list-item').first().textContent();
65
- }
66
-
67
- async getSpaceName(id: number, nth: number) {
68
- // TODO(wittjosiah): Update id.
69
- return this.peer(id).getByTestId('space-list-item').nth(nth).textContent();
70
- }
71
-
72
- async getAuthCode(): Promise<string> {
73
- this._authCode = new Trigger<string>();
74
- return await this._authCode.wait();
75
- }
76
-
77
- // Actions
78
-
79
- async toggleNetworkStatus(id: number) {
80
- await this.peer(id).getByTestId('invitations.toggle-network').click();
81
- }
82
-
83
- async openPanel(id: number, panel: PanelType) {
84
- const peer = this.peer(id);
85
-
86
- if (typeof panel === 'number') {
87
- // TODO(wittjosiah): Update id.
88
- await peer.getByTestId('space-list-item').nth(panel).click();
89
- }
90
-
91
- switch (panel) {
92
- case 'identity':
93
- await peer.getByTestId('invitations.open-join-identity').click();
94
- break;
95
-
96
- case 'devices':
97
- await peer.getByTestId('invitations.open-devices').click();
98
- break;
99
-
100
- case 'spaces':
101
- await peer.getByTestId('invitations.list-spaces').click();
102
- break;
103
-
104
- case 'join':
105
- await peer.getByTestId('invitations.open-join-space').click();
106
- break;
107
- }
108
- }
109
-
110
- async createIdentity(id: number) {
111
- const createIdentity = this.peer(id).getByTestId('invitations.create-identity');
112
- // TODO(wittjosiah): Clicking on buttons wrapped in tooltips is flaky in webkit playwright.
113
- await createIdentity.click();
114
- await waitForExpect(async () => {
115
- expect(await createIdentity.isDisabled()).to.be.true;
116
- });
117
- }
118
-
119
- async createSpace(id: number) {
120
- await this.peer(id).getByTestId('invitations.create-space').click();
121
- }
122
-
123
- async createInvitation(id: number, type: 'device' | 'space', options?: Partial<Invitation>): Promise<string> {
124
- if (!options) {
125
- const peer = this.peer(id);
126
- this._invitationCode = new Trigger<string>();
127
- await peer.getByTestId(`${type}s-panel.create-invitation`).click();
128
- return this._invitationCode.wait();
129
- }
130
-
131
- this._invitationCode = new Trigger<string>();
132
- await this.page.evaluate(
133
- ({ id, type, options }) => {
134
- if (type === 'device') {
135
- (window as any)[`peer${id}client`].halo.createInvitation(options);
136
- } else {
137
- (window as any)[`peer${id}space`].createInvitation(options);
138
- }
139
- },
140
- { id, type, options }
141
- );
142
- return this._invitationCode.wait();
143
- }
144
-
145
- async acceptInvitation(id: number, type: 'device' | 'space', invitation: string) {
146
- const peer = this.peer(id);
147
- // TODO(wittjosiah): Update ids.
148
- if (type === 'device') {
149
- await peer.getByTestId('join-identity').click();
150
- }
151
- await peer.getByTestId(`${type === 'device' ? 'halo' : 'space'}-invitation-input`).type(invitation);
152
- await this.page.keyboard.press('Enter');
153
- }
154
-
155
- private async _onConsoleMessage(message: ConsoleMessage) {
156
- try {
157
- const json = JSON.parse(message.text());
158
- if (json.invitationCode) {
159
- this._invitationCode.wake(json.invitationCode);
160
- } else if (json.authCode) {
161
- this._authCode.wake(json.authCode);
162
- }
163
- } catch {}
164
- }
165
- }
@@ -1,393 +0,0 @@
1
- //
2
- // Copyright 2021 DXOS.org
3
- //
4
-
5
- import { test } from '@playwright/test';
6
- import { expect } from 'chai';
7
-
8
- import { sleep } from '@dxos/async';
9
- import { ConnectionState, Invitation } from '@dxos/protocols/proto/dxos/client/services';
10
-
11
- import { InvitationsManager } from './invitations-manager';
12
-
13
- test.describe('Invitations', () => {
14
- let manager: InvitationsManager;
15
-
16
- // TODO(wittjosiah): Storybook takes a bit to be ready for testing against.
17
- test.beforeAll(async ({ browser }) => {
18
- test.setTimeout(60_000);
19
- manager = new InvitationsManager(browser);
20
- await manager.init();
21
- });
22
-
23
- test.beforeEach(async ({ browser }) => {
24
- manager = new InvitationsManager(browser);
25
- await manager.init();
26
- });
27
-
28
- test.describe('device', () => {
29
- test('happy path', async () => {
30
- await manager.createIdentity(0);
31
- await manager.openPanel(0, 'devices');
32
- const invitation = await manager.createInvitation(0, 'device');
33
-
34
- await manager.openPanel(1, 'identity');
35
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.acceptInvitation(1, 'device', invitation)]);
36
- await manager.authenticateInvitation('device', authCode, manager.peer(1));
37
- await manager.doneInvitation('device', manager.peer(1));
38
-
39
- expect(await manager.getDisplayName(0)).to.equal(await manager.getDisplayName(1));
40
- });
41
-
42
- test('no auth method', async () => {
43
- await manager.createIdentity(0);
44
- await manager.openPanel(0, 'devices');
45
- const invitation = await manager.createInvitation(0, 'device', { authMethod: Invitation.AuthMethod.NONE });
46
-
47
- await manager.openPanel(1, 'identity');
48
- await manager.acceptInvitation(1, 'device', invitation);
49
- await manager.doneInvitation('device', manager.peer(1));
50
-
51
- expect(await manager.getDisplayName(0)).to.equal(await manager.getDisplayName(1));
52
- });
53
-
54
- test('invalid & retry auth code', async () => {
55
- test.slow();
56
-
57
- await manager.createIdentity(0);
58
- await manager.openPanel(0, 'devices');
59
- const invitation = await manager.createInvitation(0, 'device');
60
-
61
- await manager.openPanel(1, 'identity');
62
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.acceptInvitation(1, 'device', invitation)]);
63
- await manager.authenticateInvitation('device', '000000', manager.peer(1));
64
- await manager.clearAuthCode('device', manager.peer(1));
65
- await manager.authenticateInvitation('device', authCode, manager.peer(1));
66
- await manager.doneInvitation('device', manager.peer(1));
67
-
68
- expect(await manager.getDisplayName(0)).to.equal(await manager.getDisplayName(1));
69
- });
70
-
71
- test('invalid & max auth code retries reached, retry invitation', async () => {
72
- test.slow();
73
-
74
- await manager.createIdentity(0);
75
- await manager.openPanel(0, 'devices');
76
- const invitation = await manager.createInvitation(0, 'device');
77
-
78
- await manager.openPanel(1, 'identity');
79
- await manager.acceptInvitation(1, 'device', invitation);
80
-
81
- await manager.authenticateInvitation('device', '000001', manager.peer(1));
82
- await manager.clearAuthCode('device', manager.peer(1));
83
- await manager.authenticateInvitation('device', '000002', manager.peer(1));
84
- await manager.clearAuthCode('device', manager.peer(1));
85
- await manager.authenticateInvitation('device', '000003', manager.peer(1));
86
-
87
- expect(await manager.invitationFailed(manager.peer(1))).to.be.true;
88
-
89
- await manager.resetInvitation(manager.peer(1));
90
- await manager.invitationInputContinue('device', manager.peer(1));
91
-
92
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.clearAuthCode('device', manager.peer(1))]);
93
-
94
- await manager.authenticateInvitation('device', authCode, manager.peer(1));
95
- await manager.doneInvitation('device', manager.peer(1));
96
-
97
- expect(await manager.getDisplayName(0)).to.equal(await manager.getDisplayName(1));
98
- });
99
-
100
- test('invitation timeout', async () => {
101
- await manager.createIdentity(0);
102
- await manager.openPanel(0, 'devices');
103
- const invitation = await manager.createInvitation(0, 'device', { timeout: 10 });
104
-
105
- await manager.openPanel(1, 'identity');
106
- await manager.acceptInvitation(1, 'device', invitation);
107
-
108
- expect(await manager.invitationFailed(manager.peer(1))).to.be.true;
109
- });
110
-
111
- test('invitation cancelled by host', async () => {
112
- await manager.createIdentity(0);
113
- await manager.openPanel(0, 'devices');
114
- const invitation = await manager.createInvitation(0, 'device');
115
-
116
- await manager.openPanel(1, 'identity');
117
- await manager.acceptInvitation(1, 'device', invitation);
118
- expect(await manager.readyToAuthenticate('device', manager.peer(1))).to.be.true;
119
- await manager.cancelInvitation('device', 'host', manager.peer(0));
120
-
121
- expect(await manager.invitationFailed(manager.peer(1))).to.be.true;
122
- });
123
-
124
- test('invitation cancelled by guest & retry', async () => {
125
- await manager.createIdentity(0);
126
- await manager.openPanel(0, 'devices');
127
- const invitation = await manager.createInvitation(0, 'device');
128
-
129
- await manager.openPanel(1, 'identity');
130
- await manager.acceptInvitation(1, 'device', invitation);
131
- await manager.cancelInvitation('device', 'guest', manager.peer(1));
132
- await manager.resetInvitation(manager.peer(1));
133
- await manager.invitationInputContinue('device', manager.peer(1));
134
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.clearAuthCode('device', manager.peer(1))]);
135
- await manager.authenticateInvitation('device', authCode, manager.peer(1));
136
- await manager.doneInvitation('device', manager.peer(1));
137
-
138
- expect(await manager.getDisplayName(0)).to.equal(await manager.getDisplayName(1));
139
- });
140
-
141
- test('recover from network failure during invitation', async () => {
142
- test.slow();
143
-
144
- await manager.createIdentity(0);
145
- await manager.openPanel(0, 'devices');
146
- const invitation = await manager.createInvitation(0, 'device');
147
-
148
- await manager.openPanel(1, 'identity');
149
- await manager.acceptInvitation(1, 'device', invitation);
150
- expect(await manager.readyToAuthenticate('device', manager.peer(1))).to.be.true;
151
- await manager.toggleNetworkStatus(0);
152
- expect(await manager.getNetworkStatus(0)).to.equal(ConnectionState.OFFLINE);
153
- await manager.toggleNetworkStatus(0);
154
- expect(await manager.getNetworkStatus(0)).to.equal(ConnectionState.ONLINE);
155
- await manager.resetInvitation(manager.peer(1));
156
- await manager.invitationInputContinue('device', manager.peer(1));
157
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.clearAuthCode('device', manager.peer(1))]);
158
- await manager.authenticateInvitation('device', authCode, manager.peer(1));
159
- await manager.doneInvitation('device', manager.peer(1));
160
-
161
- expect(await manager.getDisplayName(0)).to.equal(await manager.getDisplayName(1));
162
- });
163
-
164
- test('multiple concurrent invitations', async () => {
165
- test.slow();
166
-
167
- await manager.createIdentity(0);
168
- await manager.openPanel(0, 'devices');
169
- await manager.openPanel(1, 'identity');
170
- await manager.openPanel(2, 'identity');
171
-
172
- // TODO(wittjosiah): Improve auth code fetching to make it easier to disambiguate them.
173
- const invitation1 = await manager.createInvitation(0, 'device');
174
- const [authCode1] = await Promise.all([
175
- manager.getAuthCode(),
176
- manager.acceptInvitation(1, 'device', invitation1)
177
- ]);
178
-
179
- const invitation2 = await manager.createInvitation(0, 'device');
180
- const [authCode2] = await Promise.all([
181
- manager.getAuthCode(),
182
- manager.acceptInvitation(2, 'device', invitation2)
183
- ]);
184
-
185
- await manager.authenticateInvitation('device', authCode1, manager.peer(1));
186
- // TODO(wittjosiah): Managing focus in tests is flaky.
187
- // Helps to ensure both auth codes are fully input (especially in webkit).
188
- await sleep(100);
189
- await manager.authenticateInvitation('device', authCode2, manager.peer(2));
190
- await manager.doneInvitation('device', manager.peer(1));
191
- await manager.doneInvitation('device', manager.peer(2));
192
-
193
- expect(await manager.getDisplayName(0)).to.equal(await manager.getDisplayName(1));
194
- expect(await manager.getDisplayName(0)).to.equal(await manager.getDisplayName(2));
195
- expect(await manager.getDisplayName(1)).to.equal(await manager.getDisplayName(2));
196
- });
197
- });
198
-
199
- test.describe('space', () => {
200
- test('happy path', async () => {
201
- await manager.createIdentity(0);
202
- await manager.createSpace(0);
203
- await manager.openPanel(0, 0);
204
- const invitation = await manager.createInvitation(0, 'space');
205
-
206
- await manager.createIdentity(1);
207
- await manager.openPanel(1, 'join');
208
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.acceptInvitation(1, 'space', invitation)]);
209
- await manager.authenticateInvitation('space', authCode, manager.peer(1));
210
- await manager.doneInvitation('space', manager.peer(1));
211
-
212
- await manager.openPanel(0, 'spaces');
213
- expect(await manager.getSpaceName(0, 0)).to.equal(await manager.getSpaceName(1, 0));
214
- });
215
-
216
- test('no auth method', async () => {
217
- await manager.createIdentity(0);
218
- await manager.createSpace(0);
219
- await manager.openPanel(0, 0);
220
- const invitation = await manager.createInvitation(0, 'space', { authMethod: Invitation.AuthMethod.NONE });
221
-
222
- await manager.createIdentity(1);
223
- await manager.openPanel(1, 'join');
224
- await manager.acceptInvitation(1, 'space', invitation);
225
- await manager.doneInvitation('space', manager.peer(1));
226
-
227
- await manager.openPanel(0, 'spaces');
228
- expect(await manager.getSpaceName(0, 0)).to.equal(await manager.getSpaceName(1, 0));
229
- });
230
-
231
- test('invalid & retry auth code', async () => {
232
- test.slow();
233
-
234
- await manager.createIdentity(0);
235
- await manager.createSpace(0);
236
- await manager.openPanel(0, 0);
237
- const invitation = await manager.createInvitation(0, 'space');
238
-
239
- await manager.createIdentity(1);
240
- await manager.openPanel(1, 'join');
241
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.acceptInvitation(1, 'space', invitation)]);
242
- await manager.authenticateInvitation('space', '000000', manager.peer(1));
243
-
244
- expect(await manager.authenticatorIsVisible('space', manager.peer(1))).to.be.true;
245
-
246
- await manager.clearAuthCode('space', manager.peer(1));
247
- await manager.authenticateInvitation('space', authCode, manager.peer(1));
248
- await manager.doneInvitation('space', manager.peer(1));
249
-
250
- await manager.openPanel(0, 'spaces');
251
- expect(await manager.getSpaceName(0, 0)).to.equal(await manager.getSpaceName(1, 0));
252
- });
253
-
254
- test('invalid & max auth code retries reached, retry invitation', async () => {
255
- test.slow();
256
-
257
- await manager.createIdentity(0);
258
- await manager.createSpace(0);
259
- await manager.openPanel(0, 0);
260
- const invitation = await manager.createInvitation(0, 'space');
261
-
262
- await manager.createIdentity(1);
263
- await manager.openPanel(1, 'join');
264
- await manager.acceptInvitation(1, 'space', invitation);
265
-
266
- await manager.authenticateInvitation('space', '000001', manager.peer(1));
267
- await manager.clearAuthCode('space', manager.peer(1));
268
- await manager.authenticateInvitation('space', '000002', manager.peer(1));
269
- await manager.clearAuthCode('space', manager.peer(1));
270
- await manager.authenticateInvitation('space', '000003', manager.peer(1));
271
-
272
- expect(await manager.invitationFailed(manager.peer(1))).to.be.true;
273
-
274
- await manager.resetInvitation(manager.peer(1));
275
- await manager.invitationInputContinue('space', manager.peer(1));
276
-
277
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.clearAuthCode('space', manager.peer(1))]);
278
-
279
- await manager.authenticateInvitation('space', authCode, manager.peer(1));
280
- await manager.doneInvitation('space', manager.peer(1));
281
-
282
- await manager.openPanel(0, 'spaces');
283
- expect(await manager.getSpaceName(0, 0)).to.equal(await manager.getSpaceName(1, 0));
284
- });
285
-
286
- test('invitation timeout', async () => {
287
- await manager.createIdentity(0);
288
- await manager.createSpace(0);
289
- await manager.openPanel(0, 0);
290
- const invitation = await manager.createInvitation(0, 'space', { timeout: 10 });
291
-
292
- await manager.createIdentity(1);
293
- await manager.openPanel(1, 'join');
294
- await manager.acceptInvitation(1, 'space', invitation);
295
-
296
- expect(await manager.invitationFailed(manager.peer(1))).to.be.true;
297
- });
298
-
299
- test('invitation cancelled by host', async () => {
300
- await manager.createIdentity(0);
301
- await manager.createSpace(0);
302
- await manager.openPanel(0, 0);
303
- const invitation = await manager.createInvitation(0, 'space');
304
-
305
- await manager.createIdentity(1);
306
- await manager.openPanel(1, 'join');
307
- await manager.acceptInvitation(1, 'space', invitation);
308
- expect(await manager.readyToAuthenticate('space', manager.peer(1))).to.be.true;
309
- await manager.cancelInvitation('space', 'host', manager.peer(0));
310
-
311
- expect(await manager.invitationFailed(manager.peer(1))).to.be.true;
312
- });
313
-
314
- test('invitation cancelled by guest & retry', async () => {
315
- await manager.createIdentity(0);
316
- await manager.createSpace(0);
317
- await manager.openPanel(0, 0);
318
- const invitation = await manager.createInvitation(0, 'space');
319
-
320
- await manager.createIdentity(1);
321
- await manager.openPanel(1, 'join');
322
- await manager.acceptInvitation(1, 'space', invitation);
323
- await manager.cancelInvitation('space', 'guest', manager.peer(1));
324
- await manager.resetInvitation(manager.peer(1));
325
- await manager.invitationInputContinue('space', manager.peer(1));
326
-
327
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.clearAuthCode('space', manager.peer(1))]);
328
-
329
- await manager.authenticateInvitation('space', authCode, manager.peer(1));
330
- await manager.doneInvitation('space', manager.peer(1));
331
-
332
- await manager.openPanel(0, 'spaces');
333
- expect(await manager.getSpaceName(0, 0)).to.equal(await manager.getSpaceName(1, 0));
334
- });
335
-
336
- test('recover from network failure during invitation', async () => {
337
- test.slow();
338
-
339
- await manager.createIdentity(0);
340
- await manager.createSpace(0);
341
- await manager.openPanel(0, 0);
342
- const invitation = await manager.createInvitation(0, 'space');
343
-
344
- await manager.createIdentity(1);
345
- await manager.openPanel(1, 'join');
346
- await manager.acceptInvitation(1, 'space', invitation);
347
- expect(await manager.readyToAuthenticate('space', manager.peer(1))).to.be.true;
348
- await manager.toggleNetworkStatus(0);
349
- expect(await manager.getNetworkStatus(0)).to.equal(ConnectionState.OFFLINE);
350
- await manager.toggleNetworkStatus(0);
351
- expect(await manager.getNetworkStatus(0)).to.equal(ConnectionState.ONLINE);
352
- await manager.resetInvitation(manager.peer(1));
353
- await manager.invitationInputContinue('space', manager.peer(1));
354
- const [authCode] = await Promise.all([manager.getAuthCode(), manager.clearAuthCode('space', manager.peer(1))]);
355
- await manager.authenticateInvitation('space', authCode, manager.peer(1));
356
- await manager.doneInvitation('space', manager.peer(1));
357
-
358
- await manager.openPanel(0, 'spaces');
359
- expect(await manager.getSpaceName(0, 0)).to.equal(await manager.getSpaceName(1, 0));
360
- });
361
-
362
- test('multiple concurrent invitations', async () => {
363
- test.slow();
364
-
365
- await manager.createIdentity(0);
366
- await manager.createIdentity(1);
367
- await manager.createIdentity(2);
368
-
369
- await manager.createSpace(0);
370
- await manager.openPanel(0, 0);
371
- await manager.openPanel(1, 'join');
372
- await manager.openPanel(2, 'join');
373
-
374
- const invitation1 = await manager.createInvitation(0, 'space');
375
- const [authCode1] = await Promise.all([manager.getAuthCode(), manager.acceptInvitation(1, 'space', invitation1)]);
376
-
377
- const invitation2 = await manager.createInvitation(0, 'space');
378
- const [authCode2] = await Promise.all([manager.getAuthCode(), manager.acceptInvitation(2, 'space', invitation2)]);
379
-
380
- await manager.authenticateInvitation('space', authCode1, manager.peer(1));
381
- // Helps to ensure both auth codes are fully input (especially in webkit).
382
- await sleep(100);
383
- await manager.authenticateInvitation('space', authCode2, manager.peer(2));
384
- await manager.doneInvitation('space', manager.peer(1));
385
- await manager.doneInvitation('space', manager.peer(2));
386
-
387
- await manager.openPanel(0, 'spaces');
388
- expect(await manager.getSpaceName(0, 0)).to.equal(await manager.getSpaceName(1, 0));
389
- expect(await manager.getSpaceName(0, 0)).to.equal(await manager.getSpaceName(2, 0));
390
- expect(await manager.getSpaceName(1, 0)).to.equal(await manager.getSpaceName(2, 0));
391
- });
392
- });
393
- });
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { defaultPlaywrightConfig } from '@dxos/test/playwright';
6
-
7
- export default defaultPlaywrightConfig;