@dxos/shell 0.7.5-main.9d2a38b → 0.7.5-main.e94eead

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 (372) hide show
  1. package/dist/bundle/{shell.mjs → shell.js} +20830 -21849
  2. package/dist/bundle/shell.js.map +1 -0
  3. package/dist/bundle/shell.umd.cjs +1045 -0
  4. package/dist/bundle/shell.umd.cjs.map +1 -0
  5. package/dist/bundle/style.css +1 -1
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/react.mjs +556 -804
  8. package/dist/lib/browser/react.mjs.map +4 -4
  9. package/dist/lib/node/meta.json +1 -1
  10. package/dist/lib/node/react.cjs +656 -904
  11. package/dist/lib/node/react.cjs.map +4 -4
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/react.mjs +556 -804
  14. package/dist/lib/node-esm/react.mjs.map +4 -4
  15. package/dist/types/src/components/AgentConfig.d.ts +1 -2
  16. package/dist/types/src/components/AgentConfig.d.ts.map +1 -1
  17. package/dist/types/src/components/AgentConfig.js +20 -50
  18. package/dist/types/src/components/AgentConfig.js.map +1 -1
  19. package/dist/types/src/components/AuthCode.d.ts +2 -2
  20. package/dist/types/src/components/AuthCode.d.ts.map +1 -1
  21. package/dist/types/src/components/AuthCode.js +6 -44
  22. package/dist/types/src/components/AuthCode.js.map +1 -1
  23. package/dist/types/src/components/CompoundButton/CompoundButton.d.ts +2 -2
  24. package/dist/types/src/components/CompoundButton/CompoundButton.d.ts.map +1 -1
  25. package/dist/types/src/components/CompoundButton/CompoundButton.js +9 -24
  26. package/dist/types/src/components/CompoundButton/CompoundButton.js.map +1 -1
  27. package/dist/types/src/components/CompoundButton/CompoundButton.stories.d.ts +8 -9
  28. package/dist/types/src/components/CompoundButton/CompoundButton.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/CompoundButton/CompoundButton.stories.js +17 -25
  30. package/dist/types/src/components/CompoundButton/CompoundButton.stories.js.map +1 -1
  31. package/dist/types/src/components/CompoundButton/index.js +1 -17
  32. package/dist/types/src/components/CompoundButton/index.js.map +1 -1
  33. package/dist/types/src/components/DeviceList/DeviceList.d.ts +1 -2
  34. package/dist/types/src/components/DeviceList/DeviceList.d.ts.map +1 -1
  35. package/dist/types/src/components/DeviceList/DeviceList.js +10 -24
  36. package/dist/types/src/components/DeviceList/DeviceList.js.map +1 -1
  37. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts +1 -1
  38. package/dist/types/src/components/DeviceList/DeviceListItem.js +18 -73
  39. package/dist/types/src/components/DeviceList/DeviceListItem.js.map +1 -1
  40. package/dist/types/src/components/DeviceList/DeviceListProps.js +0 -2
  41. package/dist/types/src/components/DeviceList/DeviceListProps.js.map +1 -1
  42. package/dist/types/src/components/DeviceList/index.js +2 -18
  43. package/dist/types/src/components/DeviceList/index.js.map +1 -1
  44. package/dist/types/src/components/IdentityList/IdentityListItem.d.ts +1 -1
  45. package/dist/types/src/components/IdentityList/IdentityListItem.js +12 -51
  46. package/dist/types/src/components/IdentityList/IdentityListItem.js.map +1 -1
  47. package/dist/types/src/components/IdentityList/SpaceMemberList.d.ts +2 -3
  48. package/dist/types/src/components/IdentityList/SpaceMemberList.d.ts.map +1 -1
  49. package/dist/types/src/components/IdentityList/SpaceMemberList.js +17 -55
  50. package/dist/types/src/components/IdentityList/SpaceMemberList.js.map +1 -1
  51. package/dist/types/src/components/IdentityList/SpaceMemberList.stories.d.ts +3 -4
  52. package/dist/types/src/components/IdentityList/SpaceMemberList.stories.d.ts.map +1 -1
  53. package/dist/types/src/components/IdentityList/SpaceMemberList.stories.js +10 -17
  54. package/dist/types/src/components/IdentityList/SpaceMemberList.stories.js.map +1 -1
  55. package/dist/types/src/components/IdentityList/index.js +2 -18
  56. package/dist/types/src/components/IdentityList/index.js.map +1 -1
  57. package/dist/types/src/components/InvitationList/InvitationList.d.ts +2 -2
  58. package/dist/types/src/components/InvitationList/InvitationList.d.ts.map +1 -1
  59. package/dist/types/src/components/InvitationList/InvitationList.js +10 -20
  60. package/dist/types/src/components/InvitationList/InvitationList.js.map +1 -1
  61. package/dist/types/src/components/InvitationList/InvitationList.stories.d.ts +3 -4
  62. package/dist/types/src/components/InvitationList/InvitationList.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/InvitationList/InvitationList.stories.js +20 -27
  64. package/dist/types/src/components/InvitationList/InvitationList.stories.js.map +1 -1
  65. package/dist/types/src/components/InvitationList/InvitationListContainer.d.ts +1 -2
  66. package/dist/types/src/components/InvitationList/InvitationListContainer.d.ts.map +1 -1
  67. package/dist/types/src/components/InvitationList/InvitationListContainer.js +9 -45
  68. package/dist/types/src/components/InvitationList/InvitationListContainer.js.map +1 -1
  69. package/dist/types/src/components/InvitationList/InvitationListItem.d.ts +3 -3
  70. package/dist/types/src/components/InvitationList/InvitationListItem.d.ts.map +1 -1
  71. package/dist/types/src/components/InvitationList/InvitationListItem.js +32 -99
  72. package/dist/types/src/components/InvitationList/InvitationListItem.js.map +1 -1
  73. package/dist/types/src/components/InvitationList/InvitationListProps.js +0 -2
  74. package/dist/types/src/components/InvitationList/index.js +3 -19
  75. package/dist/types/src/components/InvitationList/index.js.map +1 -1
  76. package/dist/types/src/components/Panel/Action.js +15 -68
  77. package/dist/types/src/components/Panel/Action.js.map +1 -1
  78. package/dist/types/src/components/Panel/Actions.js +6 -41
  79. package/dist/types/src/components/Panel/Actions.js.map +1 -1
  80. package/dist/types/src/components/Panel/CloseButton.d.ts +1 -2
  81. package/dist/types/src/components/Panel/CloseButton.d.ts.map +1 -1
  82. package/dist/types/src/components/Panel/CloseButton.js +7 -16
  83. package/dist/types/src/components/Panel/CloseButton.js.map +1 -1
  84. package/dist/types/src/components/Panel/Emoji.d.ts +3 -3
  85. package/dist/types/src/components/Panel/Emoji.d.ts.map +1 -1
  86. package/dist/types/src/components/Panel/Emoji.js +6 -19
  87. package/dist/types/src/components/Panel/Emoji.js.map +1 -1
  88. package/dist/types/src/components/Panel/Heading.js +5 -44
  89. package/dist/types/src/components/Panel/Heading.js.map +1 -1
  90. package/dist/types/src/components/Panel/Input.d.ts +2 -2
  91. package/dist/types/src/components/Panel/Input.d.ts.map +1 -1
  92. package/dist/types/src/components/Panel/Input.js +4 -17
  93. package/dist/types/src/components/Panel/Input.js.map +1 -1
  94. package/dist/types/src/components/Panel/Label.d.ts +2 -2
  95. package/dist/types/src/components/Panel/Label.d.ts.map +1 -1
  96. package/dist/types/src/components/Panel/Label.js +4 -14
  97. package/dist/types/src/components/Panel/Label.js.map +1 -1
  98. package/dist/types/src/components/Panel/Panel.stories.d.ts +4 -5
  99. package/dist/types/src/components/Panel/Panel.stories.d.ts.map +1 -1
  100. package/dist/types/src/components/Panel/Panel.stories.js +15 -35
  101. package/dist/types/src/components/Panel/Panel.stories.js.map +1 -1
  102. package/dist/types/src/components/Panel/StepHeading.js +5 -40
  103. package/dist/types/src/components/Panel/StepHeading.js.map +1 -1
  104. package/dist/types/src/components/Panel/index.js +8 -24
  105. package/dist/types/src/components/Panel/index.js.map +1 -1
  106. package/dist/types/src/components/SpaceListItem.js +10 -49
  107. package/dist/types/src/components/SpaceListItem.js.map +1 -1
  108. package/dist/types/src/components/StorybookDialog.d.ts +2 -2
  109. package/dist/types/src/components/StorybookDialog.d.ts.map +1 -1
  110. package/dist/types/src/components/StorybookDialog.js +5 -18
  111. package/dist/types/src/components/StorybookDialog.js.map +1 -1
  112. package/dist/types/src/components/Viewport/Viewport.d.ts +2 -2
  113. package/dist/types/src/components/Viewport/Viewport.js +18 -55
  114. package/dist/types/src/components/Viewport/Viewport.js.map +1 -1
  115. package/dist/types/src/components/Viewport/Viewport.stories.d.ts +2 -3
  116. package/dist/types/src/components/Viewport/Viewport.stories.d.ts.map +1 -1
  117. package/dist/types/src/components/Viewport/Viewport.stories.js +12 -37
  118. package/dist/types/src/components/Viewport/Viewport.stories.js.map +1 -1
  119. package/dist/types/src/components/Viewport/index.js +1 -17
  120. package/dist/types/src/components/Viewport/index.js.map +1 -1
  121. package/dist/types/src/components/index.d.ts +0 -2
  122. package/dist/types/src/components/index.d.ts.map +1 -1
  123. package/dist/types/src/components/index.js +9 -27
  124. package/dist/types/src/components/index.js.map +1 -1
  125. package/dist/types/src/composites/IdentityDialog/IdentityDialog.d.ts +1 -2
  126. package/dist/types/src/composites/IdentityDialog/IdentityDialog.d.ts.map +1 -1
  127. package/dist/types/src/composites/IdentityDialog/IdentityDialog.js +7 -22
  128. package/dist/types/src/composites/IdentityDialog/IdentityDialog.js.map +1 -1
  129. package/dist/types/src/composites/IdentityDialog/index.js +1 -17
  130. package/dist/types/src/composites/IdentityDialog/index.js.map +1 -1
  131. package/dist/types/src/composites/JoinDialog/JoinDialog.d.ts +1 -2
  132. package/dist/types/src/composites/JoinDialog/JoinDialog.d.ts.map +1 -1
  133. package/dist/types/src/composites/JoinDialog/JoinDialog.js +9 -23
  134. package/dist/types/src/composites/JoinDialog/JoinDialog.js.map +1 -1
  135. package/dist/types/src/composites/JoinDialog/index.js +1 -17
  136. package/dist/types/src/composites/JoinDialog/index.js.map +1 -1
  137. package/dist/types/src/composites/Shell/Shell.d.ts +1 -2
  138. package/dist/types/src/composites/Shell/Shell.d.ts.map +1 -1
  139. package/dist/types/src/composites/Shell/Shell.js +54 -90
  140. package/dist/types/src/composites/Shell/Shell.js.map +1 -1
  141. package/dist/types/src/composites/Shell/ShellContext.d.ts +2 -2
  142. package/dist/types/src/composites/Shell/ShellContext.d.ts.map +1 -1
  143. package/dist/types/src/composites/Shell/ShellContext.js +32 -72
  144. package/dist/types/src/composites/Shell/ShellContext.js.map +1 -1
  145. package/dist/types/src/composites/Shell/index.js +3 -19
  146. package/dist/types/src/composites/Shell/index.js.map +1 -1
  147. package/dist/types/src/composites/Shell/memory-shell-runtime.js +7 -11
  148. package/dist/types/src/composites/Shell/memory-shell-runtime.js.map +1 -1
  149. package/dist/types/src/composites/Shell/run-shell.js +18 -67
  150. package/dist/types/src/composites/Shell/run-shell.js.map +1 -1
  151. package/dist/types/src/composites/Shell/shell-runtime.js +13 -17
  152. package/dist/types/src/composites/Shell/shell-runtime.js.map +1 -1
  153. package/dist/types/src/composites/SpaceDialog/SpaceDialog.d.ts +1 -2
  154. package/dist/types/src/composites/SpaceDialog/SpaceDialog.d.ts.map +1 -1
  155. package/dist/types/src/composites/SpaceDialog/SpaceDialog.js +7 -22
  156. package/dist/types/src/composites/SpaceDialog/SpaceDialog.js.map +1 -1
  157. package/dist/types/src/composites/SpaceDialog/index.js +1 -17
  158. package/dist/types/src/composites/SpaceDialog/index.js.map +1 -1
  159. package/dist/types/src/composites/StatusDialog/StatusDialog.d.ts +1 -2
  160. package/dist/types/src/composites/StatusDialog/StatusDialog.d.ts.map +1 -1
  161. package/dist/types/src/composites/StatusDialog/StatusDialog.js +6 -20
  162. package/dist/types/src/composites/StatusDialog/StatusDialog.js.map +1 -1
  163. package/dist/types/src/composites/StatusDialog/index.js +1 -17
  164. package/dist/types/src/composites/StatusDialog/index.js.map +1 -1
  165. package/dist/types/src/composites/index.js +4 -20
  166. package/dist/types/src/composites/index.js.map +1 -1
  167. package/dist/types/src/index.js +2 -6
  168. package/dist/types/src/index.js.map +1 -1
  169. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts +2 -3
  170. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
  171. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +63 -137
  172. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
  173. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts +11 -12
  174. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -1
  175. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +39 -54
  176. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
  177. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +2 -1
  178. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts.map +1 -1
  179. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.js +0 -2
  180. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.js.map +1 -1
  181. package/dist/types/src/panels/IdentityPanel/identityMachine.js +10 -14
  182. package/dist/types/src/panels/IdentityPanel/identityMachine.js.map +1 -1
  183. package/dist/types/src/panels/IdentityPanel/index.js +2 -18
  184. package/dist/types/src/panels/IdentityPanel/index.js.map +1 -1
  185. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts +2 -3
  186. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts.map +1 -1
  187. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js +16 -29
  188. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js.map +1 -1
  189. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts +1 -2
  190. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -1
  191. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +27 -72
  192. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
  193. package/dist/types/src/panels/IdentityPanel/steps/index.js +2 -18
  194. package/dist/types/src/panels/IdentityPanel/steps/index.js.map +1 -1
  195. package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js +7 -11
  196. package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js.map +1 -1
  197. package/dist/types/src/panels/IdentityPanel/useEdgeAgentsHandlers.js +19 -23
  198. package/dist/types/src/panels/IdentityPanel/useEdgeAgentsHandlers.js.map +1 -1
  199. package/dist/types/src/panels/IdentityPanel/useKubeAgentHandlers.js +19 -23
  200. package/dist/types/src/panels/IdentityPanel/useKubeAgentHandlers.js.map +1 -1
  201. package/dist/types/src/panels/JoinPanel/JoinHeading.js +11 -48
  202. package/dist/types/src/panels/JoinPanel/JoinHeading.js.map +1 -1
  203. package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts +2 -3
  204. package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts.map +1 -1
  205. package/dist/types/src/panels/JoinPanel/JoinPanel.js +38 -100
  206. package/dist/types/src/panels/JoinPanel/JoinPanel.js.map +1 -1
  207. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.d.ts +15 -16
  208. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.d.ts.map +1 -1
  209. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.js +25 -45
  210. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.js.map +1 -1
  211. package/dist/types/src/panels/JoinPanel/JoinPanelProps.js +0 -2
  212. package/dist/types/src/panels/JoinPanel/JoinPanelProps.js.map +1 -1
  213. package/dist/types/src/panels/JoinPanel/index.js +2 -18
  214. package/dist/types/src/panels/JoinPanel/index.js.map +1 -1
  215. package/dist/types/src/panels/JoinPanel/joinMachine.js +49 -54
  216. package/dist/types/src/panels/JoinPanel/joinMachine.js.map +1 -1
  217. package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.d.ts +1 -2
  218. package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.d.ts.map +1 -1
  219. package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.js +9 -21
  220. package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.js.map +1 -1
  221. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.d.ts +1 -2
  222. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.d.ts.map +1 -1
  223. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js +14 -58
  224. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js.map +1 -1
  225. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.d.ts +2 -3
  226. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.d.ts.map +1 -1
  227. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js +20 -61
  228. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js.map +1 -1
  229. package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.d.ts +2 -2
  230. package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.d.ts.map +1 -1
  231. package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.js +8 -47
  232. package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.js.map +1 -1
  233. package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.d.ts +1 -2
  234. package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.d.ts.map +1 -1
  235. package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js +22 -73
  236. package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js.map +1 -1
  237. package/dist/types/src/panels/JoinPanel/steps/InvitationInput.d.ts +1 -2
  238. package/dist/types/src/panels/JoinPanel/steps/InvitationInput.d.ts.map +1 -1
  239. package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js +18 -59
  240. package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js.map +1 -1
  241. package/dist/types/src/panels/JoinPanel/steps/InvitationRescuer.d.ts +1 -2
  242. package/dist/types/src/panels/JoinPanel/steps/InvitationRescuer.d.ts.map +1 -1
  243. package/dist/types/src/panels/JoinPanel/steps/InvitationRescuer.js +14 -37
  244. package/dist/types/src/panels/JoinPanel/steps/InvitationRescuer.js.map +1 -1
  245. package/dist/types/src/panels/JoinPanel/steps/index.js +7 -23
  246. package/dist/types/src/panels/JoinPanel/steps/index.js.map +1 -1
  247. package/dist/types/src/panels/Panels.stories.d.ts +4 -4
  248. package/dist/types/src/panels/Panels.stories.d.ts.map +1 -1
  249. package/dist/types/src/panels/Panels.stories.js +13 -58
  250. package/dist/types/src/panels/Panels.stories.js.map +1 -1
  251. package/dist/types/src/panels/SpacePanel/SpacePanel.d.ts +2 -3
  252. package/dist/types/src/panels/SpacePanel/SpacePanel.d.ts.map +1 -1
  253. package/dist/types/src/panels/SpacePanel/SpacePanel.js +25 -72
  254. package/dist/types/src/panels/SpacePanel/SpacePanel.js.map +1 -1
  255. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts +18 -19
  256. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts.map +1 -1
  257. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js +96 -121
  258. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js.map +1 -1
  259. package/dist/types/src/panels/SpacePanel/SpacePanelProps.js +0 -2
  260. package/dist/types/src/panels/SpacePanel/SpacePanelProps.js.map +1 -1
  261. package/dist/types/src/panels/SpacePanel/index.js +2 -18
  262. package/dist/types/src/panels/SpacePanel/index.js.map +1 -1
  263. package/dist/types/src/panels/SpacePanel/spaceMachine.js +9 -13
  264. package/dist/types/src/panels/SpacePanel/spaceMachine.js.map +1 -1
  265. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.d.ts +3 -3
  266. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.d.ts.map +1 -1
  267. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js +33 -81
  268. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js.map +1 -1
  269. package/dist/types/src/panels/SpacePanel/steps/index.js +1 -17
  270. package/dist/types/src/panels/SpacePanel/steps/index.js.map +1 -1
  271. package/dist/types/src/panels/StatusPanel/StatusPanel.d.ts +1 -2
  272. package/dist/types/src/panels/StatusPanel/StatusPanel.d.ts.map +1 -1
  273. package/dist/types/src/panels/StatusPanel/StatusPanel.js +5 -17
  274. package/dist/types/src/panels/StatusPanel/StatusPanel.js.map +1 -1
  275. package/dist/types/src/panels/StatusPanel/index.js +1 -17
  276. package/dist/types/src/panels/StatusPanel/index.js.map +1 -1
  277. package/dist/types/src/panels/index.js +4 -20
  278. package/dist/types/src/panels/index.js.map +1 -1
  279. package/dist/types/src/playwright/invitations-manager.js +11 -15
  280. package/dist/types/src/playwright/invitations-manager.js.map +1 -1
  281. package/dist/types/src/playwright/invitations.spec.js +64 -66
  282. package/dist/types/src/playwright/invitations.spec.js.map +1 -1
  283. package/dist/types/src/react.js +6 -22
  284. package/dist/types/src/react.js.map +1 -1
  285. package/dist/types/src/steps/ConfirmReset.d.ts +2 -3
  286. package/dist/types/src/steps/ConfirmReset.d.ts.map +1 -1
  287. package/dist/types/src/steps/ConfirmReset.js +23 -70
  288. package/dist/types/src/steps/ConfirmReset.js.map +1 -1
  289. package/dist/types/src/steps/InvitationManager.d.ts +1 -2
  290. package/dist/types/src/steps/InvitationManager.d.ts.map +1 -1
  291. package/dist/types/src/steps/InvitationManager.js +17 -71
  292. package/dist/types/src/steps/InvitationManager.js.map +1 -1
  293. package/dist/types/src/steps/StepProps.js +0 -2
  294. package/dist/types/src/steps/StepProps.js.map +1 -1
  295. package/dist/types/src/steps/index.js +3 -19
  296. package/dist/types/src/steps/index.js.map +1 -1
  297. package/dist/types/src/stories/Invitations.e2e-stories.d.ts +2 -3
  298. package/dist/types/src/stories/Invitations.e2e-stories.d.ts.map +1 -1
  299. package/dist/types/src/stories/Invitations.e2e-stories.js +50 -113
  300. package/dist/types/src/stories/Invitations.e2e-stories.js.map +1 -1
  301. package/dist/types/src/styles/index.js +2 -18
  302. package/dist/types/src/styles/index.js.map +1 -1
  303. package/dist/types/src/styles/invitationStatusStyles.js +31 -37
  304. package/dist/types/src/styles/invitationStatusStyles.js.map +1 -1
  305. package/dist/types/src/styles/panelStyles.js +1 -4
  306. package/dist/types/src/styles/panelStyles.js.map +1 -1
  307. package/dist/types/src/testing/fixtures/identities.d.ts.map +1 -1
  308. package/dist/types/src/testing/fixtures/identities.js +8 -9
  309. package/dist/types/src/testing/fixtures/identities.js.map +1 -1
  310. package/dist/types/src/testing/fixtures/index.js +2 -18
  311. package/dist/types/src/testing/fixtures/index.js.map +1 -1
  312. package/dist/types/src/testing/fixtures/invitations.js +8 -12
  313. package/dist/types/src/testing/fixtures/invitations.js.map +1 -1
  314. package/dist/types/src/testing/index.js +2 -18
  315. package/dist/types/src/testing/index.js.map +1 -1
  316. package/dist/types/src/testing/scoped-shell-manager.js +1 -5
  317. package/dist/types/src/testing/scoped-shell-manager.js.map +1 -1
  318. package/dist/types/src/testing/shell-manager.js +11 -15
  319. package/dist/types/src/testing/shell-manager.js.map +1 -1
  320. package/dist/types/src/translations/index.js +2 -38
  321. package/dist/types/src/translations/index.js.map +1 -1
  322. package/dist/types/src/translations/locales/en-US.d.ts +5 -1
  323. package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
  324. package/dist/types/src/translations/locales/en-US.js +9 -7
  325. package/dist/types/src/translations/locales/en-US.js.map +1 -1
  326. package/dist/types/src/types/FailReason.js +0 -2
  327. package/dist/types/src/types/FailReason.js.map +1 -1
  328. package/dist/types/src/types/IInvitation.js +0 -2
  329. package/dist/types/src/types/IInvitation.js.map +1 -1
  330. package/dist/types/src/types/index.js +2 -18
  331. package/dist/types/src/types/index.js.map +1 -1
  332. package/dist/types/src/util/index.js +1 -17
  333. package/dist/types/src/util/index.js.map +1 -1
  334. package/dist/types/src/util/invitationStatusValue.js +11 -14
  335. package/dist/types/src/util/invitationStatusValue.js.map +1 -1
  336. package/package.json +36 -31
  337. package/src/components/AgentConfig.tsx +1 -1
  338. package/src/components/DeviceList/DeviceList.tsx +1 -1
  339. package/src/components/index.ts +0 -2
  340. package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +3 -0
  341. package/src/panels/IdentityPanel/IdentityPanel.tsx +50 -33
  342. package/src/panels/IdentityPanel/IdentityPanelProps.ts +8 -1
  343. package/src/panels/IdentityPanel/steps/ProfileForm.tsx +3 -7
  344. package/src/panels/JoinPanel/steps/IdentityInput.tsx +1 -1
  345. package/src/panels/SpacePanel/SpacePanel.stories.tsx +6 -1
  346. package/src/testing/fixtures/identities.ts +2 -0
  347. package/src/translations/locales/en-US.ts +10 -3
  348. package/dist/bundle/shell.mjs.map +0 -1
  349. package/dist/bundle/shell.umd.js +0 -1043
  350. package/dist/bundle/shell.umd.js.map +0 -1
  351. package/dist/lib/browser/react.css +0 -7
  352. package/dist/lib/browser/react.css.map +0 -7
  353. package/dist/lib/node/react.css +0 -7
  354. package/dist/lib/node/react.css.map +0 -7
  355. package/dist/lib/node-esm/react.css +0 -7
  356. package/dist/lib/node-esm/react.css.map +0 -7
  357. package/dist/types/src/components/EmojiPicker.d.ts +0 -19
  358. package/dist/types/src/components/EmojiPicker.d.ts.map +0 -1
  359. package/dist/types/src/components/EmojiPicker.js +0 -146
  360. package/dist/types/src/components/EmojiPicker.js.map +0 -1
  361. package/dist/types/src/components/HuePicker.d.ts +0 -18
  362. package/dist/types/src/components/HuePicker.d.ts.map +0 -1
  363. package/dist/types/src/components/HuePicker.js +0 -133
  364. package/dist/types/src/components/HuePicker.js.map +0 -1
  365. package/dist/types/src/playwright/playwright.config.d.ts +0 -3
  366. package/dist/types/src/playwright/playwright.config.d.ts.map +0 -1
  367. package/dist/types/src/playwright/playwright.config.js +0 -18
  368. package/dist/types/src/playwright/playwright.config.js.map +0 -1
  369. package/src/components/EmojiPicker.tsx +0 -187
  370. package/src/components/HuePicker.tsx +0 -182
  371. package/src/components/emoji.css +0 -25
  372. /package/src/playwright/{playwright.config.ts → playwright.config.cts} +0 -0
@@ -55,7 +55,7 @@ var AgentConfig = ({ agentStatus, validationMessage, onAgentDestroy, onAgentCrea
55
55
  className: mx(descriptionText, "mlb-2")
56
56
  }, t("agent requested description"))) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Button, {
57
57
  variant: "ghost",
58
- classNames: "mlb-2 is-full justify-start gap-2 !pis-0 !pie-3",
58
+ classNames: "mlb-2 is-full justify-start gap-2 pis-0 pie-3",
59
59
  "data-testid": agentStatus === "creatable" ? "devices-panel.create-agent" : "devices-panel.agent-error",
60
60
  onClick: agentStatus === "creatable" ? onAgentCreate : onAgentRefresh,
61
61
  "aria-describedby": "devices-panel.create-agent.description"
@@ -135,351 +135,89 @@ var CompoundButton = ({ children, description, before, after, variant = "default
135
135
  }, after));
136
136
  };
137
137
 
138
- // packages/sdk/shell/src/components/EmojiPicker.tsx
139
- import emojiData from "@emoji-mart/data";
140
- import EmojiMart from "@emoji-mart/react";
141
- import { ArrowCounterClockwise, CaretDown, UserCircle } from "@phosphor-icons/react";
142
- import { useControllableState } from "@radix-ui/react-use-controllable-state";
143
- import React3, { useRef, useState } from "react";
144
- import { Button as Button2, Popover, Toolbar, Tooltip as Tooltip2, useMediaQuery, useThemeContext as useThemeContext2, useTranslation as useTranslation2 } from "@dxos/react-ui";
145
- import { getSize as getSize2 } from "@dxos/react-ui-theme";
146
- var EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji, classNames }) => {
147
- const { t } = useTranslation2("os");
148
- const { themeMode } = useThemeContext2();
149
- const [_emojiValue, setEmojiValue] = useControllableState({
150
- prop: emoji,
151
- onChange: onChangeEmoji,
152
- defaultProp: defaultEmoji
153
- });
154
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
155
- const suppressNextTooltip = useRef(false);
156
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);
157
- return /* @__PURE__ */ React3.createElement(Tooltip2.Root, {
158
- open: triggerTooltipOpen,
159
- onOpenChange: (nextOpen) => {
160
- if (suppressNextTooltip.current) {
161
- setTriggerTooltipOpen(false);
162
- suppressNextTooltip.current = false;
163
- } else {
164
- setTriggerTooltipOpen(nextOpen);
165
- }
166
- }
167
- }, /* @__PURE__ */ React3.createElement(Popover.Root, {
168
- open: emojiPickerOpen,
169
- onOpenChange: (nextOpen) => {
170
- setEmojiPickerOpen(nextOpen);
171
- suppressNextTooltip.current = true;
172
- }
173
- }, /* @__PURE__ */ React3.createElement(Tooltip2.Trigger, {
174
- asChild: true
175
- }, /* @__PURE__ */ React3.createElement(Popover.Trigger, {
176
- asChild: true
177
- }, /* @__PURE__ */ React3.createElement(Toolbar.Button, {
178
- classNames: [
179
- "gap-2 text-2xl plb-1",
180
- classNames
181
- ],
182
- disabled
183
- }, /* @__PURE__ */ React3.createElement("span", {
184
- className: "sr-only"
185
- }, t("select emoji label")), /* @__PURE__ */ React3.createElement(UserCircle, {
186
- className: getSize2(5)
187
- })))), /* @__PURE__ */ React3.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React3.createElement(Tooltip2.Content, {
188
- side: "bottom"
189
- }, t("select emoji label"), /* @__PURE__ */ React3.createElement(Tooltip2.Arrow, null))), /* @__PURE__ */ React3.createElement(Popover.Content, {
190
- side: "bottom",
191
- onKeyDownCapture: (event) => {
192
- if (event.key === "Escape") {
193
- event.stopPropagation();
194
- setEmojiPickerOpen(false);
195
- suppressNextTooltip.current = true;
196
- }
197
- }
198
- }, /* @__PURE__ */ React3.createElement(EmojiMart, {
199
- data: emojiData,
200
- onEmojiSelect: ({ native }) => {
201
- if (native) {
202
- setEmojiValue(native);
203
- setEmojiPickerOpen(false);
204
- }
205
- },
206
- autoFocus: true,
207
- maxFrequentRows: 0,
208
- noCountryFlags: true,
209
- theme: themeMode
210
- }), /* @__PURE__ */ React3.createElement(Popover.Arrow, null))));
211
- };
212
- var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }) => {
213
- const { t } = useTranslation2("os");
214
- const [isMd] = useMediaQuery("md", {
215
- ssr: false
216
- });
217
- const [emojiValue, setEmojiValue] = useControllableState({
218
- prop: emoji,
219
- onChange: onChangeEmoji,
220
- defaultProp: defaultEmoji
221
- });
222
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
223
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(Popover.Root, {
224
- open: emojiPickerOpen,
225
- onOpenChange: setEmojiPickerOpen
226
- }, /* @__PURE__ */ React3.createElement(Popover.Trigger, {
227
- asChild: true
228
- }, /* @__PURE__ */ React3.createElement(Button2, {
229
- variant: "ghost",
230
- classNames: "gap-2 text-2xl plb-1",
231
- disabled
232
- }, /* @__PURE__ */ React3.createElement("span", {
233
- className: "sr-only"
234
- }, t("select emoji label")), /* @__PURE__ */ React3.createElement("span", {
235
- className: "grow pis-14"
236
- }, emojiValue), /* @__PURE__ */ React3.createElement(CaretDown, {
237
- className: getSize2(4)
238
- }))), /* @__PURE__ */ React3.createElement(Popover.Content, {
239
- side: "right",
240
- sideOffset: isMd ? 0 : -310,
241
- onKeyDownCapture: (event) => {
242
- if (event.key === "Escape") {
243
- event.stopPropagation();
244
- setEmojiPickerOpen(false);
245
- }
246
- }
247
- }, /* @__PURE__ */ React3.createElement(EmojiMart, {
248
- data: emojiData,
249
- onEmojiSelect: ({ native }) => {
250
- if (native) {
251
- setEmojiValue(native);
252
- setEmojiPickerOpen(false);
253
- }
254
- },
255
- autoFocus: true,
256
- maxFrequentRows: 0,
257
- noCountryFlags: true
258
- }), /* @__PURE__ */ React3.createElement(Popover.Arrow, null))), /* @__PURE__ */ React3.createElement(Tooltip2.Root, null, /* @__PURE__ */ React3.createElement(Tooltip2.Trigger, {
259
- asChild: true
260
- }, /* @__PURE__ */ React3.createElement(Button2, {
261
- variant: "ghost",
262
- onClick: onClickClear,
263
- disabled
264
- }, /* @__PURE__ */ React3.createElement("span", {
265
- className: "sr-only"
266
- }, t("clear label")), /* @__PURE__ */ React3.createElement(ArrowCounterClockwise, null))), /* @__PURE__ */ React3.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React3.createElement(Tooltip2.Content, {
267
- side: "right"
268
- }, t("clear label"), /* @__PURE__ */ React3.createElement(Tooltip2.Arrow, null)))));
269
- };
270
-
271
- // packages/sdk/shell/src/components/HuePicker.tsx
272
- import { ArrowCounterClockwise as ArrowCounterClockwise2, CaretDown as CaretDown2, Check, Palette } from "@phosphor-icons/react";
273
- import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
274
- import React4, { useRef as useRef2, useState as useState2 } from "react";
275
- import { Button as Button3, DropdownMenu, Toolbar as Toolbar2, Tooltip as Tooltip3, useThemeContext as useThemeContext3, useTranslation as useTranslation3 } from "@dxos/react-ui";
276
- import { getSize as getSize3, hueTokenThemes, mx as mx3 } from "@dxos/react-ui-theme";
277
- var HuePreview = ({ hue }) => {
278
- const { tx } = useThemeContext3();
279
- const size = 20;
280
- return /* @__PURE__ */ React4.createElement("svg", {
281
- width: size,
282
- height: size,
283
- viewBox: `0 0 ${size} ${size}`
284
- }, /* @__PURE__ */ React4.createElement("rect", {
285
- x: 0,
286
- y: 0,
287
- width: size,
288
- height: size,
289
- className: tx("hue.fill", "select--hue__preview", {
290
- hue
291
- })
292
- }));
293
- };
294
- var hueTokens = Object.keys(hueTokenThemes).slice(0, 16);
295
- var HuePickerToolbarButton = ({ disabled, hue, onChangeHue, classNames, defaultHue }) => {
296
- const { t } = useTranslation3("os");
297
- const [hueValue, setHueValue] = useControllableState2({
298
- prop: hue,
299
- onChange: onChangeHue,
300
- defaultProp: defaultHue
301
- });
302
- const [huePickerOpen, setHuePickerOpen] = useState2(false);
303
- const suppressNextTooltip = useRef2(false);
304
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState2(false);
305
- return /* @__PURE__ */ React4.createElement(Tooltip3.Root, {
306
- open: triggerTooltipOpen,
307
- onOpenChange: (nextOpen) => {
308
- if (suppressNextTooltip.current) {
309
- setTriggerTooltipOpen(false);
310
- suppressNextTooltip.current = false;
311
- } else {
312
- setTriggerTooltipOpen(nextOpen);
313
- }
314
- }
315
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Root, {
316
- modal: false,
317
- open: huePickerOpen,
318
- onOpenChange: (nextOpen) => {
319
- setHuePickerOpen(nextOpen);
320
- suppressNextTooltip.current = true;
321
- }
322
- }, /* @__PURE__ */ React4.createElement(Tooltip3.Trigger, {
323
- asChild: true
324
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Trigger, {
325
- asChild: true
326
- }, /* @__PURE__ */ React4.createElement(Toolbar2.Button, {
327
- classNames: mx3("gap-2 plb-1", classNames),
328
- disabled
329
- }, /* @__PURE__ */ React4.createElement("span", {
330
- className: "sr-only"
331
- }, t("select hue label")), /* @__PURE__ */ React4.createElement(Palette, {
332
- className: getSize3(5)
333
- })))), /* @__PURE__ */ React4.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React4.createElement(Tooltip3.Content, {
334
- side: "bottom"
335
- }, t("select hue label"), /* @__PURE__ */ React4.createElement(Tooltip3.Arrow, null))), /* @__PURE__ */ React4.createElement(DropdownMenu.Content, {
336
- side: "bottom",
337
- classNames: "!w-40"
338
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Viewport, {
339
- classNames: "grid grid-cols-4"
340
- }, hueTokens.map((hue2) => {
341
- return /* @__PURE__ */ React4.createElement(DropdownMenu.CheckboxItem, {
342
- key: hue2,
343
- checked: hue2 === hueValue,
344
- onCheckedChange: () => setHueValue(hue2),
345
- classNames: "px-0 py-2 items-center justify-center"
346
- }, /* @__PURE__ */ React4.createElement(HuePreview, {
347
- hue: hue2
348
- }));
349
- })))));
350
- };
351
- var HuePickerBlock = ({ disabled, hue, onChangeHue, defaultHue, onClickClear }) => {
352
- const { t } = useTranslation3("os");
353
- const [hueValue, setHueValue] = useControllableState2({
354
- prop: hue,
355
- onChange: onChangeHue,
356
- defaultProp: defaultHue
357
- });
358
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(DropdownMenu.Root, {
359
- modal: false
360
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Trigger, {
361
- asChild: true
362
- }, /* @__PURE__ */ React4.createElement(Button3, {
363
- variant: "ghost",
364
- classNames: "gap-2 plb-1",
365
- disabled
366
- }, /* @__PURE__ */ React4.createElement("span", {
367
- className: "sr-only"
368
- }, t("select hue label")), /* @__PURE__ */ React4.createElement("div", {
369
- role: "none",
370
- className: "pis-14 grow flex items-center justify-center gap-2"
371
- }, /* @__PURE__ */ React4.createElement(HuePreview, {
372
- hue: hueValue
373
- }), /* @__PURE__ */ React4.createElement("span", null, t(`${hueValue} label`))), /* @__PURE__ */ React4.createElement(CaretDown2, {
374
- className: getSize3(4)
375
- }))), /* @__PURE__ */ React4.createElement(DropdownMenu.Content, {
376
- side: "right"
377
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Viewport, null, Object.keys(hueTokenThemes).map((hue2) => {
378
- return /* @__PURE__ */ React4.createElement(DropdownMenu.CheckboxItem, {
379
- key: hue2,
380
- checked: hue2 === hueValue,
381
- onCheckedChange: () => setHueValue(hue2)
382
- }, /* @__PURE__ */ React4.createElement(HuePreview, {
383
- hue: hue2
384
- }), /* @__PURE__ */ React4.createElement("span", {
385
- className: "grow"
386
- }, t(`${hue2} label`)), /* @__PURE__ */ React4.createElement(DropdownMenu.ItemIndicator, null, /* @__PURE__ */ React4.createElement(Check, null)));
387
- })), /* @__PURE__ */ React4.createElement(DropdownMenu.Arrow, null))), /* @__PURE__ */ React4.createElement(Tooltip3.Root, null, /* @__PURE__ */ React4.createElement(Tooltip3.Trigger, {
388
- asChild: true
389
- }, /* @__PURE__ */ React4.createElement(Button3, {
390
- variant: "ghost",
391
- onClick: onClickClear,
392
- disabled
393
- }, /* @__PURE__ */ React4.createElement("span", {
394
- className: "sr-only"
395
- }, t("clear label")), /* @__PURE__ */ React4.createElement(ArrowCounterClockwise2, null))), /* @__PURE__ */ React4.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React4.createElement(Tooltip3.Content, {
396
- side: "right"
397
- }, t("clear label"), /* @__PURE__ */ React4.createElement(Tooltip3.Arrow, null)))));
398
- };
399
-
400
138
  // packages/sdk/shell/src/components/IdentityList/IdentityListItem.tsx
401
- import React5, { forwardRef } from "react";
139
+ import React3, { forwardRef } from "react";
402
140
  import { generateName } from "@dxos/display-name";
403
141
  import { SpaceMember } from "@dxos/react-client/echo";
404
142
  import { ListItem, Avatar as Avatar2, useId as useId2 } from "@dxos/react-ui";
405
- import { mx as mx4 } from "@dxos/react-ui-theme";
143
+ import { mx as mx3 } from "@dxos/react-ui-theme";
406
144
  import { keyToFallback } from "@dxos/util";
407
145
  var IdentityListItem = /* @__PURE__ */ forwardRef(({ identity, presence, onClick, classNames, ...props }, forwardedRef) => {
408
146
  const fallbackValue = keyToFallback(identity.identityKey);
409
147
  const labelId = useId2("identityListItem__label");
410
148
  const displayName = identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
411
- return /* @__PURE__ */ React5.createElement(ListItem.Root, {
149
+ return /* @__PURE__ */ React3.createElement(ListItem.Root, {
412
150
  ...props,
413
- classNames: mx4("flex gap-2 pis-3 pie-1 items-center", onClick && "cursor-pointer", classNames),
151
+ classNames: mx3("flex gap-2 pis-3 pie-1 items-center", onClick && "cursor-pointer", classNames),
414
152
  onClick: () => onClick?.(),
415
153
  "data-testid": "identity-list-item",
416
154
  labelId,
417
155
  ref: forwardedRef
418
- }, /* @__PURE__ */ React5.createElement(Avatar2.Root, {
156
+ }, /* @__PURE__ */ React3.createElement(Avatar2.Root, {
419
157
  status: presence === SpaceMember.PresenceState.ONLINE ? "active" : "inactive",
420
158
  labelId,
421
159
  hue: identity.profile?.data?.hue || fallbackValue.hue
422
- }, /* @__PURE__ */ React5.createElement(Avatar2.Frame, {
160
+ }, /* @__PURE__ */ React3.createElement(Avatar2.Frame, {
423
161
  classNames: "place-self-center"
424
- }, /* @__PURE__ */ React5.createElement(Avatar2.Fallback, {
162
+ }, /* @__PURE__ */ React3.createElement(Avatar2.Fallback, {
425
163
  text: identity.profile?.data?.emoji || fallbackValue.emoji
426
- })), /* @__PURE__ */ React5.createElement(Avatar2.Label, {
164
+ })), /* @__PURE__ */ React3.createElement(Avatar2.Label, {
427
165
  classNames: "text-sm truncate pli-2"
428
166
  }, displayName)));
429
167
  });
430
168
 
431
169
  // packages/sdk/shell/src/components/IdentityList/SpaceMemberList.tsx
432
- import React6, { useMemo } from "react";
170
+ import React4, { useMemo } from "react";
433
171
  import { useClient } from "@dxos/react-client";
434
172
  import { useMembers } from "@dxos/react-client/echo";
435
- import { useTranslation as useTranslation4, List } from "@dxos/react-ui";
436
- import { descriptionText as descriptionText3, mx as mx5 } from "@dxos/react-ui-theme";
173
+ import { useTranslation as useTranslation2, List } from "@dxos/react-ui";
174
+ import { descriptionText as descriptionText3, mx as mx4 } from "@dxos/react-ui-theme";
437
175
  var SpaceMemberList = ({ spaceKey, includeSelf, onSelect }) => {
438
176
  const client = useClient();
439
177
  const allUnsortedMembers = useMembers(spaceKey);
440
178
  const members = useMemo(() => includeSelf ? allUnsortedMembers.sort((member) => member.identity.identityKey.equals(client.halo.identity.get().identityKey) ? -1 : 1) : allUnsortedMembers.filter((member) => !member.identity.identityKey.equals(client.halo.identity.get().identityKey)), [
441
179
  allUnsortedMembers
442
180
  ]);
443
- return /* @__PURE__ */ React6.createElement(SpaceMemberListImpl, {
181
+ return /* @__PURE__ */ React4.createElement(SpaceMemberListImpl, {
444
182
  members,
445
183
  onSelect
446
184
  });
447
185
  };
448
186
  var SpaceMemberListImpl = ({ members, onSelect }) => {
449
- const { t } = useTranslation4("os");
187
+ const { t } = useTranslation2("os");
450
188
  const visibleMembers = members.filter((member) => member.identity);
451
- return visibleMembers.length > 0 ? /* @__PURE__ */ React6.createElement(List, {
189
+ return visibleMembers.length > 0 ? /* @__PURE__ */ React4.createElement(List, {
452
190
  classNames: "flex flex-col gap-2",
453
191
  "data-testid": "space-members-list"
454
192
  }, visibleMembers.map((member) => {
455
- return /* @__PURE__ */ React6.createElement(IdentityListItem, {
193
+ return /* @__PURE__ */ React4.createElement(IdentityListItem, {
456
194
  key: member.identity.identityKey.toHex(),
457
195
  identity: member.identity,
458
196
  presence: member.presence,
459
197
  onClick: onSelect && (() => onSelect(member))
460
198
  });
461
- })) : /* @__PURE__ */ React6.createElement("div", {
199
+ })) : /* @__PURE__ */ React4.createElement("div", {
462
200
  role: "none",
463
201
  className: "grow flex items-center p-2"
464
- }, /* @__PURE__ */ React6.createElement("p", {
465
- className: mx5(descriptionText3, "text-center is-full mlb-2")
202
+ }, /* @__PURE__ */ React4.createElement("p", {
203
+ className: mx4(descriptionText3, "text-center is-full mlb-2")
466
204
  }, t("empty space members message")));
467
205
  };
468
206
 
469
207
  // packages/sdk/shell/src/components/DeviceList/DeviceList.tsx
470
208
  import { CaretRight, Plus as Plus2 } from "@phosphor-icons/react";
471
- import React8 from "react";
472
- import { Button as Button5, List as List2, useTranslation as useTranslation6 } from "@dxos/react-ui";
473
- import { descriptionText as descriptionText4, getSize as getSize5, mx as mx6 } from "@dxos/react-ui-theme";
209
+ import React6 from "react";
210
+ import { Button as Button3, List as List2, useTranslation as useTranslation4 } from "@dxos/react-ui";
211
+ import { descriptionText as descriptionText4, getSize as getSize3, mx as mx5 } from "@dxos/react-ui-theme";
474
212
 
475
213
  // packages/sdk/shell/src/components/DeviceList/DeviceListItem.tsx
476
214
  import { Compass, Desktop, DeviceMobile, Devices, DotsThree, ShareFat, Power as Power2, Robot, Database as Database2, FirstAidKit } from "@phosphor-icons/react";
477
- import React7, { forwardRef as forwardRef2 } from "react";
215
+ import React5, { forwardRef as forwardRef2 } from "react";
478
216
  import { generateName as generateName2 } from "@dxos/display-name";
479
217
  import { Device, DeviceType, DeviceKind } from "@dxos/react-client/halo";
480
218
  import { ConnectionState } from "@dxos/react-client/mesh";
481
- import { ListItem as ListItem2, Avatar as Avatar3, useId as useId3, Tag, useTranslation as useTranslation5, DropdownMenu as DropdownMenu2, Button as Button4 } from "@dxos/react-ui";
482
- import { getSize as getSize4 } from "@dxos/react-ui-theme";
219
+ import { ListItem as ListItem2, Avatar as Avatar3, useId as useId3, Tag, useTranslation as useTranslation3, DropdownMenu, Button as Button2 } from "@dxos/react-ui";
220
+ import { getSize as getSize2 } from "@dxos/react-ui-theme";
483
221
  import { keyToFallback as keyToFallback2 } from "@dxos/util";
484
222
  var iconProps = {
485
223
  weight: "duotone",
@@ -489,7 +227,7 @@ var iconProps = {
489
227
  y: 8
490
228
  };
491
229
  var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickEdit, onClickReset, onClickRecover, onClickJoinExisting, classNames, connectionState, onAgentDestroy: _, ...props }, forwardedRef) => {
492
- const { t } = useTranslation5("os");
230
+ const { t } = useTranslation3("os");
493
231
  const fallbackValue = keyToFallback2(device.deviceKey);
494
232
  const labelId = useId3("identityListItem__label");
495
233
  const displayName = device.profile ? t("device name placeholder", {
@@ -497,7 +235,7 @@ var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickE
497
235
  platform: device.profile.platform
498
236
  }) : generateName2(device.deviceKey.toHex());
499
237
  const isCurrent = device.kind === DeviceKind.CURRENT;
500
- return /* @__PURE__ */ React7.createElement(ListItem2.Root, {
238
+ return /* @__PURE__ */ React5.createElement(ListItem2.Root, {
501
239
  ...props,
502
240
  classNames: [
503
241
  "flex gap-2 items-center mlb-2",
@@ -506,60 +244,60 @@ var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickE
506
244
  "data-testid": `device-list-item${isCurrent ? "-current" : ""}`,
507
245
  labelId,
508
246
  ref: forwardedRef
509
- }, /* @__PURE__ */ React7.createElement(Avatar3.Root, {
247
+ }, /* @__PURE__ */ React5.createElement(Avatar3.Root, {
510
248
  status: isCurrent && connectionState === ConnectionState.OFFLINE ? "error" : device.presence === Device.PresenceState.ONLINE ? "active" : "inactive",
511
249
  labelId,
512
250
  hue: fallbackValue.hue,
513
251
  variant: "square"
514
- }, /* @__PURE__ */ React7.createElement(Avatar3.Frame, {
252
+ }, /* @__PURE__ */ React5.createElement(Avatar3.Frame, {
515
253
  classNames: "place-self-center"
516
- }, device.profile?.type ? device.profile.type === DeviceType.AGENT_MANAGED ? /* @__PURE__ */ React7.createElement(Database2, iconProps) : device.profile.type === DeviceType.BROWSER ? /* @__PURE__ */ React7.createElement(Compass, iconProps) : device.profile.type === DeviceType.NATIVE ? /* @__PURE__ */ React7.createElement(Desktop, iconProps) : [
254
+ }, device.profile?.type ? device.profile.type === DeviceType.AGENT_MANAGED ? /* @__PURE__ */ React5.createElement(Database2, iconProps) : device.profile.type === DeviceType.BROWSER ? /* @__PURE__ */ React5.createElement(Compass, iconProps) : device.profile.type === DeviceType.NATIVE ? /* @__PURE__ */ React5.createElement(Desktop, iconProps) : [
517
255
  DeviceType.AGENT,
518
256
  DeviceType.AGENT_MANAGED
519
- ].includes(device.profile.type) ? /* @__PURE__ */ React7.createElement(Robot, iconProps) : device.profile.type === DeviceType.MOBILE ? /* @__PURE__ */ React7.createElement(DeviceMobile, iconProps) : /* @__PURE__ */ React7.createElement(Devices, iconProps) : /* @__PURE__ */ React7.createElement(Avatar3.Fallback, {
257
+ ].includes(device.profile.type) ? /* @__PURE__ */ React5.createElement(Robot, iconProps) : device.profile.type === DeviceType.MOBILE ? /* @__PURE__ */ React5.createElement(DeviceMobile, iconProps) : /* @__PURE__ */ React5.createElement(Devices, iconProps) : /* @__PURE__ */ React5.createElement(Avatar3.Fallback, {
520
258
  text: fallbackValue.emoji
521
- })), /* @__PURE__ */ React7.createElement(Avatar3.Label, {
259
+ })), /* @__PURE__ */ React5.createElement(Avatar3.Label, {
522
260
  classNames: "flex-1 text-sm truncate"
523
- }, displayName), isCurrent && /* @__PURE__ */ React7.createElement(Tag, {
261
+ }, displayName), isCurrent && /* @__PURE__ */ React5.createElement(Tag, {
524
262
  color: "primary"
525
- }, t("current device tag label")), device.kind === DeviceKind.CURRENT && /* @__PURE__ */ React7.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React7.createElement(DropdownMenu2.Trigger, {
263
+ }, t("current device tag label")), device.kind === DeviceKind.CURRENT && /* @__PURE__ */ React5.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Trigger, {
526
264
  asChild: true
527
- }, /* @__PURE__ */ React7.createElement(Button4, {
265
+ }, /* @__PURE__ */ React5.createElement(Button2, {
528
266
  variant: "ghost",
529
267
  classNames: "pli-0 is-[--rail-action] bs-[--rail-action]",
530
268
  "data-testid": `device-list-item${isCurrent ? "-current" : ""}.options`
531
- }, /* @__PURE__ */ React7.createElement("span", {
269
+ }, /* @__PURE__ */ React5.createElement("span", {
532
270
  className: "sr-only"
533
- }, t("more options label")), /* @__PURE__ */ React7.createElement(DotsThree, {
534
- className: getSize4(5)
535
- }))), /* @__PURE__ */ React7.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React7.createElement(DropdownMenu2.Viewport, null, /* @__PURE__ */ React7.createElement(DropdownMenu2.Item, {
271
+ }, t("more options label")), /* @__PURE__ */ React5.createElement(DotsThree, {
272
+ className: getSize2(5)
273
+ }))), /* @__PURE__ */ React5.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Viewport, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
536
274
  "data-testid": "device-list-item-current.join-existing",
537
275
  onClick: onClickJoinExisting
538
- }, /* @__PURE__ */ React7.createElement(ShareFat, {
539
- className: getSize4(5)
540
- }), t("choose join new identity label")), onClickRecover && /* @__PURE__ */ React7.createElement(DropdownMenu2.Item, {
276
+ }, /* @__PURE__ */ React5.createElement(ShareFat, {
277
+ className: getSize2(5)
278
+ }), t("choose join new identity label")), onClickRecover && /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
541
279
  "data-testid": "device-list-item-current.recover",
542
280
  onClick: onClickRecover
543
- }, /* @__PURE__ */ React7.createElement(FirstAidKit, {
544
- className: getSize4(5)
545
- }), t("choose recover identity label")), /* @__PURE__ */ React7.createElement(DropdownMenu2.Item, {
281
+ }, /* @__PURE__ */ React5.createElement(FirstAidKit, {
282
+ className: getSize2(5)
283
+ }), t("choose recover identity label")), /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
546
284
  "data-testid": "device-list-item-current.reset",
547
285
  onClick: onClickReset
548
- }, /* @__PURE__ */ React7.createElement(Power2, {
549
- className: getSize4(5)
286
+ }, /* @__PURE__ */ React5.createElement(Power2, {
287
+ className: getSize2(5)
550
288
  }), t("reset device label")))))));
551
289
  });
552
290
 
553
291
  // packages/sdk/shell/src/components/DeviceList/DeviceList.tsx
554
292
  var DeviceList = ({ devices, connectionState, onClickAdd, onClickEdit, onClickReset, onClickRecover, onClickJoinExisting, onAgentDestroy }) => {
555
- const { t } = useTranslation6("os");
556
- return /* @__PURE__ */ React8.createElement("div", {
293
+ const { t } = useTranslation4("os");
294
+ return /* @__PURE__ */ React6.createElement("div", {
557
295
  role: "none",
558
296
  className: "p-1"
559
- }, /* @__PURE__ */ React8.createElement("h2", {
560
- className: mx6(descriptionText4, "text-center mbs-2")
561
- }, t("devices heading")), devices.length > 0 && /* @__PURE__ */ React8.createElement(List2, null, devices.map((device) => {
562
- return /* @__PURE__ */ React8.createElement(DeviceListItem, {
297
+ }, /* @__PURE__ */ React6.createElement("h2", {
298
+ className: mx5(descriptionText4, "text-center mbs-2")
299
+ }, t("devices heading")), devices.length > 0 && /* @__PURE__ */ React6.createElement(List2, null, devices.map((device) => {
300
+ return /* @__PURE__ */ React6.createElement(DeviceListItem, {
563
301
  key: device.deviceKey.toHex(),
564
302
  device,
565
303
  onClickEdit: () => onClickEdit?.(device),
@@ -569,43 +307,43 @@ var DeviceList = ({ devices, connectionState, onClickAdd, onClickEdit, onClickRe
569
307
  connectionState,
570
308
  onAgentDestroy
571
309
  });
572
- })), /* @__PURE__ */ React8.createElement(Button5, {
310
+ })), /* @__PURE__ */ React6.createElement(Button3, {
573
311
  variant: "ghost",
574
- classNames: "justify-start gap-2 !pis-0 !pie-3 is-full",
312
+ classNames: "justify-start gap-2 pis-0 pie-3 is-full",
575
313
  "data-testid": "devices-panel.create-invitation",
576
314
  onClick: onClickAdd
577
- }, /* @__PURE__ */ React8.createElement("div", {
315
+ }, /* @__PURE__ */ React6.createElement("div", {
578
316
  role: "img",
579
- className: mx6(getSize5(8), "m-1 rounded-sm bg-input grid place-items-center")
580
- }, /* @__PURE__ */ React8.createElement(Plus2, {
317
+ className: mx5(getSize3(8), "m-1 rounded-sm bg-input grid place-items-center")
318
+ }, /* @__PURE__ */ React6.createElement(Plus2, {
581
319
  weight: "light",
582
- className: getSize5(6)
583
- })), /* @__PURE__ */ React8.createElement("span", {
320
+ className: getSize3(6)
321
+ })), /* @__PURE__ */ React6.createElement("span", {
584
322
  className: "grow font-medium text-start"
585
- }, t("choose add device label")), /* @__PURE__ */ React8.createElement(CaretRight, {
323
+ }, t("choose add device label")), /* @__PURE__ */ React6.createElement(CaretRight, {
586
324
  weight: "bold",
587
- className: getSize5(4)
325
+ className: getSize3(4)
588
326
  })));
589
327
  };
590
328
 
591
329
  // packages/sdk/shell/src/components/InvitationList/InvitationListItem.tsx
592
330
  import { X } from "@phosphor-icons/react";
593
331
  import { formatDistanceToNow } from "date-fns";
594
- import React10, { useCallback } from "react";
332
+ import React8, { useCallback } from "react";
595
333
  import { Invitation, useInvitationStatus } from "@dxos/react-client/invitations";
596
- import { Button as Button6, Clipboard, ListItem as ListItem3, useTranslation as useTranslation7, Avatar as Avatar4, useThemeContext as useThemeContext4, Tooltip as Tooltip4 } from "@dxos/react-ui";
597
- import { focusRing, getSize as getSize6, mx as mx8 } from "@dxos/react-ui-theme";
334
+ import { Button as Button4, Clipboard, ListItem as ListItem3, useTranslation as useTranslation5, Avatar as Avatar4, useThemeContext as useThemeContext2, Tooltip as Tooltip2 } from "@dxos/react-ui";
335
+ import { focusRing, getSize as getSize4, mx as mx7 } from "@dxos/react-ui-theme";
598
336
  import { hexToEmoji } from "@dxos/util";
599
337
 
600
338
  // packages/sdk/shell/src/components/AuthCode.tsx
601
- import React9, { useRef as useRef3 } from "react";
602
- import { mx as mx7 } from "@dxos/react-ui-theme";
339
+ import React7, { useRef } from "react";
340
+ import { mx as mx6 } from "@dxos/react-ui-theme";
603
341
  var AuthCode = (props) => {
604
342
  const { code, large, classNames } = props;
605
343
  const l = code?.length ?? 0;
606
344
  const left = code?.slice(0, l / 2);
607
345
  const right = code?.slice(l / 2);
608
- const codeRef = useRef3(null);
346
+ const codeRef = useRef(null);
609
347
  const handleClick = () => {
610
348
  if (codeRef.current) {
611
349
  const selection = window.getSelection();
@@ -616,20 +354,20 @@ var AuthCode = (props) => {
616
354
  }
617
355
  void navigator.clipboard.writeText(code ?? "");
618
356
  };
619
- return /* @__PURE__ */ React9.createElement("span", {
620
- className: mx7(large ? "text-6xl" : "text-2xl", "font-mono pli-2.5 rounded cursor-pointer", classNames),
357
+ return /* @__PURE__ */ React7.createElement("span", {
358
+ className: mx6(large ? "text-6xl" : "text-2xl", "font-mono pli-2.5 rounded cursor-pointer", classNames),
621
359
  onClick: handleClick,
622
360
  ref: codeRef
623
- }, /* @__PURE__ */ React9.createElement("span", {
361
+ }, /* @__PURE__ */ React7.createElement("span", {
624
362
  className: "mie-[0.4em]"
625
- }, left), /* @__PURE__ */ React9.createElement("span", null, right));
363
+ }, left), /* @__PURE__ */ React7.createElement("span", null, right));
626
364
  };
627
365
 
628
366
  // packages/sdk/shell/src/components/InvitationList/InvitationListItem.tsx
629
367
  var InvitationListItem = (props) => {
630
368
  const { invitation } = props;
631
369
  const invitationStatus = useInvitationStatus(invitation);
632
- return /* @__PURE__ */ React10.createElement(InvitationListItemImpl, {
370
+ return /* @__PURE__ */ React8.createElement(InvitationListItemImpl, {
633
371
  ...props,
634
372
  invitationStatus
635
373
  });
@@ -639,11 +377,11 @@ var avatarProps = {
639
377
  variant: "circle"
640
378
  };
641
379
  var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
642
- const { tx } = useThemeContext4();
643
- return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement("span", {
380
+ const { tx } = useThemeContext2();
381
+ return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("span", {
644
382
  role: "none",
645
- className: mx8("absolute inline-end-auto opacity-20", reverseEffects ? "inline-start-3" : "inline-start-1", getSize6(avatarProps.size))
646
- }, /* @__PURE__ */ React10.createElement("span", {
383
+ className: mx7("absolute inline-end-auto opacity-20", reverseEffects ? "inline-start-3" : "inline-start-1", getSize4(avatarProps.size))
384
+ }, /* @__PURE__ */ React8.createElement("span", {
647
385
  role: "none",
648
386
  className: tx("avatar.ring", "avatar__ring", {
649
387
  ...avatarProps,
@@ -653,10 +391,10 @@ var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
653
391
  style: {
654
392
  animationDelay: "400ms"
655
393
  }
656
- })), /* @__PURE__ */ React10.createElement("span", {
394
+ })), /* @__PURE__ */ React8.createElement("span", {
657
395
  role: "none",
658
- className: mx8("absolute inline-end-auto opacity-50", reverseEffects ? "inline-start-2" : "inline-start-2", getSize6(avatarProps.size))
659
- }, /* @__PURE__ */ React10.createElement("span", {
396
+ className: mx7("absolute inline-end-auto opacity-50", reverseEffects ? "inline-start-2" : "inline-start-2", getSize4(avatarProps.size))
397
+ }, /* @__PURE__ */ React8.createElement("span", {
660
398
  role: "none",
661
399
  className: tx("avatar.ring", "avatar__ring", {
662
400
  ...avatarProps,
@@ -669,7 +407,7 @@ var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
669
407
  })));
670
408
  };
671
409
  var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationStatus, send, onClickRemove, createInvitationUrl, reverseEffects, ...props }) => {
672
- const { t } = useTranslation7("os");
410
+ const { t } = useTranslation5("os");
673
411
  const { cancel, status: invitationStatus, invitationCode, authCode, multiUse, shareable } = propsInvitationStatus;
674
412
  const isCancellable = !([
675
413
  Invitation.State.ERROR,
@@ -711,38 +449,38 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
711
449
  Invitation.State.SUCCESS
712
450
  ].includes(invitationStatus);
713
451
  const avatarStatus = avatarError ? "error" : avatarGreen ? "active" : "inactive";
714
- return /* @__PURE__ */ React10.createElement(ListItem3.Root, {
452
+ return /* @__PURE__ */ React8.createElement(ListItem3.Root, {
715
453
  id: invitationCode,
716
454
  ...props,
717
455
  classNames: [
718
456
  "flex gap-2 pis-3 pie-1 items-center relative",
719
457
  props.classNames
720
458
  ]
721
- }, /* @__PURE__ */ React10.createElement(ListItem3.Heading, {
459
+ }, /* @__PURE__ */ React8.createElement(ListItem3.Heading, {
722
460
  classNames: "sr-only"
723
- }, t(multiUse ? "invite many list item label" : "invite one list item label")), multiUse && /* @__PURE__ */ React10.createElement(AvatarStackEffect, {
461
+ }, t(multiUse ? "invite many list item label" : "invite one list item label")), multiUse && /* @__PURE__ */ React8.createElement(AvatarStackEffect, {
724
462
  status: avatarStatus,
725
463
  animation: avatarAnimation,
726
464
  reverseEffects
727
- }), /* @__PURE__ */ React10.createElement(Tooltip4.Root, null, /* @__PURE__ */ React10.createElement(Avatar4.Root, {
465
+ }), /* @__PURE__ */ React8.createElement(Tooltip2.Root, null, /* @__PURE__ */ React8.createElement(Avatar4.Root, {
728
466
  ...avatarProps,
729
467
  animation: avatarAnimation,
730
468
  status: avatarStatus
731
- }, /* @__PURE__ */ React10.createElement(Tooltip4.Trigger, {
469
+ }, /* @__PURE__ */ React8.createElement(Tooltip2.Trigger, {
732
470
  asChild: true
733
- }, /* @__PURE__ */ React10.createElement(Avatar4.Frame, {
471
+ }, /* @__PURE__ */ React8.createElement(Avatar4.Frame, {
734
472
  tabIndex: 0,
735
473
  classNames: [
736
474
  focusRing,
737
475
  "relative rounded-full place-self-center"
738
476
  ]
739
- }, /* @__PURE__ */ React10.createElement(Avatar4.Fallback, {
477
+ }, /* @__PURE__ */ React8.createElement(Avatar4.Fallback, {
740
478
  text: hexToEmoji(invitationId)
741
- })))), /* @__PURE__ */ React10.createElement(Tooltip4.Portal, null, /* @__PURE__ */ React10.createElement(Tooltip4.Content, {
479
+ })))), /* @__PURE__ */ React8.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React8.createElement(Tooltip2.Content, {
742
480
  side: "left"
743
- }, t(multiUse ? "invite many qr label" : "invite one qr label"), /* @__PURE__ */ React10.createElement(Tooltip4.Arrow, null)))), showShare && invitationUrl ? /* @__PURE__ */ React10.createElement(Tooltip4.Root, null, /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(Tooltip4.Trigger, {
481
+ }, t(multiUse ? "invite many qr label" : "invite one qr label"), /* @__PURE__ */ React8.createElement(Tooltip2.Arrow, null)))), showShare && invitationUrl ? /* @__PURE__ */ React8.createElement(Tooltip2.Root, null, /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(Tooltip2.Trigger, {
744
482
  asChild: true
745
- }, /* @__PURE__ */ React10.createElement(Button6, {
483
+ }, /* @__PURE__ */ React8.createElement(Button4, {
746
484
  variant: "ghost",
747
485
  classNames: "grow justify-start font-medium",
748
486
  onClick: () => send({
@@ -750,64 +488,64 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
750
488
  invitation
751
489
  }),
752
490
  "data-testid": "show-qrcode"
753
- }, /* @__PURE__ */ React10.createElement("span", null, t("open share panel label")))), /* @__PURE__ */ React10.createElement(Clipboard.IconButton, {
491
+ }, /* @__PURE__ */ React8.createElement("span", null, t("open share panel label")))), /* @__PURE__ */ React8.createElement(Clipboard.IconButton, {
754
492
  variant: "ghost",
755
493
  value: invitationUrl
756
- })), /* @__PURE__ */ React10.createElement(Tooltip4.Portal, null, /* @__PURE__ */ React10.createElement(Tooltip4.Content, {
494
+ })), /* @__PURE__ */ React8.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React8.createElement(Tooltip2.Content, {
757
495
  side: "left"
758
- }, invitationHasLifetime && /* @__PURE__ */ React10.createElement("span", null, "Expires ", invitationTimeLeft)))) : showAuthCode ? /* @__PURE__ */ React10.createElement(AuthCode, {
496
+ }, invitationHasLifetime && /* @__PURE__ */ React8.createElement("span", null, "Expires ", invitationTimeLeft)))) : showAuthCode ? /* @__PURE__ */ React8.createElement(AuthCode, {
759
497
  code: authCode,
760
498
  classNames: "grow"
761
- }) : invitationStatus === Invitation.State.CONNECTING ? /* @__PURE__ */ React10.createElement("span", {
499
+ }) : invitationStatus === Invitation.State.CONNECTING ? /* @__PURE__ */ React8.createElement("span", {
762
500
  className: "pli-2 grow text-neutral-500"
763
- }, "Connecting...") : invitationStatus === Invitation.State.AUTHENTICATING ? /* @__PURE__ */ React10.createElement("span", {
501
+ }, "Connecting...") : invitationStatus === Invitation.State.AUTHENTICATING ? /* @__PURE__ */ React8.createElement("span", {
764
502
  className: "pli-2 grow text-neutral-500"
765
- }, "Authenticating...") : invitationStatus === Invitation.State.ERROR || invitationStatus === Invitation.State.TIMEOUT ? /* @__PURE__ */ React10.createElement("span", {
503
+ }, "Authenticating...") : invitationStatus === Invitation.State.ERROR || invitationStatus === Invitation.State.TIMEOUT ? /* @__PURE__ */ React8.createElement("span", {
766
504
  className: "pli-2 grow text-neutral-500"
767
- }, "Failed") : invitationStatus === Invitation.State.CANCELLED ? /* @__PURE__ */ React10.createElement("span", {
505
+ }, "Failed") : invitationStatus === Invitation.State.CANCELLED ? /* @__PURE__ */ React8.createElement("span", {
768
506
  className: "pli-2 grow text-neutral-500"
769
- }, "Cancelled") : invitationStatus === Invitation.State.SUCCESS ? /* @__PURE__ */ React10.createElement("span", {
507
+ }, "Cancelled") : invitationStatus === Invitation.State.SUCCESS ? /* @__PURE__ */ React8.createElement("span", {
770
508
  className: "pli-2 grow truncate"
771
- }, "User joined") : !shareable ? /* @__PURE__ */ React10.createElement("span", {
509
+ }, "User joined") : !shareable ? /* @__PURE__ */ React8.createElement("span", {
772
510
  className: "pli-2 grow text-neutral-500"
773
- }, "Pending Invitation") : /* @__PURE__ */ React10.createElement("span", {
511
+ }, "Pending Invitation") : /* @__PURE__ */ React8.createElement("span", {
774
512
  className: "grow"
775
- }, " "), isCancellable ? /* @__PURE__ */ React10.createElement(Button6, {
513
+ }, " "), isCancellable ? /* @__PURE__ */ React8.createElement(Button4, {
776
514
  variant: "ghost",
777
515
  classNames: "flex gap-1 pli-0",
778
516
  onClick: cancel,
779
517
  "data-testid": "cancel-invitation"
780
- }, /* @__PURE__ */ React10.createElement("span", {
518
+ }, /* @__PURE__ */ React8.createElement("span", {
781
519
  className: "sr-only"
782
- }, t("cancel invitation label")), /* @__PURE__ */ React10.createElement(X, {
783
- className: getSize6(4)
784
- })) : /* @__PURE__ */ React10.createElement(Button6, {
520
+ }, t("cancel invitation label")), /* @__PURE__ */ React8.createElement(X, {
521
+ className: getSize4(4)
522
+ })) : /* @__PURE__ */ React8.createElement(Button4, {
785
523
  variant: "ghost",
786
524
  classNames: "flex gap-1 pli-0",
787
525
  onClick: handleClickRemove,
788
526
  "data-testid": "remove-invitation"
789
- }, /* @__PURE__ */ React10.createElement("span", {
527
+ }, /* @__PURE__ */ React8.createElement("span", {
790
528
  className: "sr-only"
791
- }, t("remove invitation label")), /* @__PURE__ */ React10.createElement(X, {
792
- className: getSize6(4)
529
+ }, t("remove invitation label")), /* @__PURE__ */ React8.createElement(X, {
530
+ className: getSize4(4)
793
531
  })));
794
532
  };
795
533
 
796
534
  // packages/sdk/shell/src/components/InvitationList/InvitationListContainer.tsx
797
- import React12, { useCallback as useCallback2 } from "react";
535
+ import React10, { useCallback as useCallback2 } from "react";
798
536
  import { useSpace, useSpaceInvitations } from "@dxos/react-client/echo";
799
537
 
800
538
  // packages/sdk/shell/src/components/InvitationList/InvitationList.tsx
801
- import React11 from "react";
539
+ import React9 from "react";
802
540
  import { List as List3 } from "@dxos/react-ui";
803
- import { mx as mx9 } from "@dxos/react-ui-theme";
541
+ import { mx as mx8 } from "@dxos/react-ui-theme";
804
542
  var InvitationList = ({ invitations, send, ...invitationProps }) => {
805
543
  const { className, InvitationListItem: Item = InvitationListItem } = invitationProps;
806
- return /* @__PURE__ */ React11.createElement(List3, {
807
- classNames: mx9("flex flex-col gap-2", className)
544
+ return /* @__PURE__ */ React9.createElement(List3, {
545
+ classNames: mx8("flex flex-col gap-2", className)
808
546
  }, invitations.map((invitation) => {
809
547
  const value = invitation.get().invitationId;
810
- return /* @__PURE__ */ React11.createElement(Item, {
548
+ return /* @__PURE__ */ React9.createElement(Item, {
811
549
  key: value,
812
550
  send,
813
551
  invitation,
@@ -825,7 +563,7 @@ var InvitationListContainer = ({ spaceKey, createInvitationUrl, send }) => {
825
563
  }, [
826
564
  space
827
565
  ]);
828
- return /* @__PURE__ */ React12.createElement(InvitationList, {
566
+ return /* @__PURE__ */ React10.createElement(InvitationList, {
829
567
  invitations,
830
568
  onClickRemove: handleClickRemove,
831
569
  createInvitationUrl,
@@ -834,11 +572,11 @@ var InvitationListContainer = ({ spaceKey, createInvitationUrl, send }) => {
834
572
  };
835
573
 
836
574
  // packages/sdk/shell/src/components/Panel/Action.tsx
837
- import { CaretDown as CaretDown3, Check as Check2, Placeholder } from "@phosphor-icons/react";
838
- import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
839
- import React13, { forwardRef as forwardRef3 } from "react";
840
- import { Button as Button7, DropdownMenu as DropdownMenu3, useTranslation as useTranslation8 } from "@dxos/react-ui";
841
- import { descriptionText as descriptionText5, getSize as getSize7, mx as mx10 } from "@dxos/react-ui-theme";
575
+ import { CaretDown, Check, Placeholder } from "@phosphor-icons/react";
576
+ import { useControllableState } from "@radix-ui/react-use-controllable-state";
577
+ import React11, { forwardRef as forwardRef3 } from "react";
578
+ import { Button as Button5, DropdownMenu as DropdownMenu2, useTranslation as useTranslation6 } from "@dxos/react-ui";
579
+ import { descriptionText as descriptionText5, getSize as getSize5, mx as mx9 } from "@dxos/react-ui-theme";
842
580
  var defaultActions = {
843
581
  noopAction: {
844
582
  label: "No-op",
@@ -851,17 +589,17 @@ var defaultActions = {
851
589
  var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
852
590
  const { classNames, variant, isFull = true, actions = defaultActions, activeAction: propsActiveAction, onChangeActiveAction, defaultActiveAction, "data-testid": testId, ...rest } = props;
853
591
  const dropdownTestId = testId && `${testId}.more`;
854
- const [activeActionKey2 = Object.keys(actions)[0], setActiveAction] = useControllableState3({
592
+ const [activeActionKey2 = Object.keys(actions)[0], setActiveAction] = useControllableState({
855
593
  prop: propsActiveAction,
856
594
  onChange: onChangeActiveAction,
857
595
  defaultProp: defaultActiveAction
858
596
  });
859
597
  const activeAction = actions[activeActionKey2] ?? {};
860
- const { t } = useTranslation8("os");
861
- return /* @__PURE__ */ React13.createElement("div", {
598
+ const { t } = useTranslation6("os");
599
+ return /* @__PURE__ */ React11.createElement("div", {
862
600
  role: "none",
863
- className: mx10("mbs-2 flex gap-px items-center", isFull && "is-full")
864
- }, /* @__PURE__ */ React13.createElement(Button7, {
601
+ className: mx9("mbs-2 flex gap-px items-center", isFull && "is-full")
602
+ }, /* @__PURE__ */ React11.createElement(Button5, {
865
603
  ...rest,
866
604
  classNames: [
867
605
  "bs-11 flex-1 min-is-0 flex gap-2 rounded-ie-none",
@@ -871,22 +609,22 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
871
609
  variant,
872
610
  "data-testid": testId,
873
611
  onClick: activeAction.onClick
874
- }, activeAction.icon && /* @__PURE__ */ React13.createElement(activeAction.icon, {
875
- className: getSize7(5)
876
- }), /* @__PURE__ */ React13.createElement("span", null, activeAction.label)), /* @__PURE__ */ React13.createElement(DropdownMenu3.Root, null, /* @__PURE__ */ React13.createElement(DropdownMenu3.Trigger, {
612
+ }, activeAction.icon && /* @__PURE__ */ React11.createElement(activeAction.icon, {
613
+ className: getSize5(5)
614
+ }), /* @__PURE__ */ React11.createElement("span", null, activeAction.label)), /* @__PURE__ */ React11.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Trigger, {
877
615
  asChild: true
878
- }, /* @__PURE__ */ React13.createElement(Button7, {
616
+ }, /* @__PURE__ */ React11.createElement(Button5, {
879
617
  classNames: [
880
618
  "bs-11 flex-none rounded-is-none",
881
619
  classNames
882
620
  ],
883
621
  "data-testid": dropdownTestId
884
- }, /* @__PURE__ */ React13.createElement("span", {
622
+ }, /* @__PURE__ */ React11.createElement("span", {
885
623
  className: "sr-only"
886
- }, t("invite options label")), /* @__PURE__ */ React13.createElement(CaretDown3, {
887
- className: getSize7(4)
888
- }))), /* @__PURE__ */ React13.createElement(DropdownMenu3.Portal, null, /* @__PURE__ */ React13.createElement(DropdownMenu3.Content, null, /* @__PURE__ */ React13.createElement(DropdownMenu3.Viewport, null, Object.entries(actions).map(([id, action]) => {
889
- return /* @__PURE__ */ React13.createElement(DropdownMenu3.CheckboxItem, {
624
+ }, t("invite options label")), /* @__PURE__ */ React11.createElement(CaretDown, {
625
+ className: getSize5(4)
626
+ }))), /* @__PURE__ */ React11.createElement(DropdownMenu2.Portal, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Viewport, null, Object.entries(actions).map(([id, action]) => {
627
+ return /* @__PURE__ */ React11.createElement(DropdownMenu2.CheckboxItem, {
890
628
  key: id,
891
629
  "aria-labelledby": `${id}__label`,
892
630
  "aria-describedby": `${id}__description`,
@@ -894,27 +632,27 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
894
632
  onCheckedChange: (checked) => checked && setActiveAction(id),
895
633
  classNames: "gap-2",
896
634
  "data-testid": action.testId
897
- }, action.icon && /* @__PURE__ */ React13.createElement(action.icon, {
898
- className: getSize7(5)
899
- }), /* @__PURE__ */ React13.createElement("div", {
635
+ }, action.icon && /* @__PURE__ */ React11.createElement(action.icon, {
636
+ className: getSize5(5)
637
+ }), /* @__PURE__ */ React11.createElement("div", {
900
638
  role: "none",
901
639
  className: "flex-1 min-is-0 space-b-1"
902
- }, /* @__PURE__ */ React13.createElement("p", {
640
+ }, /* @__PURE__ */ React11.createElement("p", {
903
641
  id: `${id}__label`
904
- }, action.label), action.description && /* @__PURE__ */ React13.createElement("p", {
642
+ }, action.label), action.description && /* @__PURE__ */ React11.createElement("p", {
905
643
  id: `${id}__description`,
906
644
  className: descriptionText5
907
- }, action.description)), /* @__PURE__ */ React13.createElement(DropdownMenu3.ItemIndicator, {
645
+ }, action.description)), /* @__PURE__ */ React11.createElement(DropdownMenu2.ItemIndicator, {
908
646
  asChild: true
909
- }, /* @__PURE__ */ React13.createElement(Check2, {
647
+ }, /* @__PURE__ */ React11.createElement(Check, {
910
648
  weight: "bold",
911
- className: getSize7(4)
649
+ className: getSize5(4)
912
650
  })));
913
- })), /* @__PURE__ */ React13.createElement(DropdownMenu3.Arrow, null)))));
651
+ })), /* @__PURE__ */ React11.createElement(DropdownMenu2.Arrow, null)))));
914
652
  });
915
653
  var Action = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
916
654
  const { children, classNames, variant, isFull = true, ...rest } = props;
917
- return /* @__PURE__ */ React13.createElement(Button7, {
655
+ return /* @__PURE__ */ React11.createElement(Button5, {
918
656
  ...rest,
919
657
  classNames: [
920
658
  isFull && "is-full",
@@ -927,49 +665,49 @@ var Action = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
927
665
  });
928
666
 
929
667
  // packages/sdk/shell/src/components/Panel/Actions.tsx
930
- import React14, { forwardRef as forwardRef4 } from "react";
931
- import { mx as mx11 } from "@dxos/react-ui-theme";
668
+ import React12, { forwardRef as forwardRef4 } from "react";
669
+ import { mx as mx10 } from "@dxos/react-ui-theme";
932
670
  var Actions = /* @__PURE__ */ forwardRef4(({ classNames, children, ...props }, forwardedRef) => {
933
- return /* @__PURE__ */ React14.createElement("div", {
671
+ return /* @__PURE__ */ React12.createElement("div", {
934
672
  ...props,
935
- className: mx11("flex flex-col gap-2 mbs-2", Array.isArray(children) && children.length > 1 ? "justify-between" : "justify-center", classNames),
673
+ className: mx10("flex flex-col gap-2 mbs-2", Array.isArray(children) && children.length > 1 ? "justify-between" : "justify-center", classNames),
936
674
  ref: forwardedRef
937
675
  }, children);
938
676
  });
939
677
 
940
678
  // packages/sdk/shell/src/components/Panel/CloseButton.tsx
941
679
  import { X as X2 } from "@phosphor-icons/react";
942
- import React15 from "react";
943
- import { Button as Button8, useTranslation as useTranslation9 } from "@dxos/react-ui";
944
- import { getSize as getSize8, mx as mx12 } from "@dxos/react-ui-theme";
680
+ import React13 from "react";
681
+ import { Button as Button6, useTranslation as useTranslation7 } from "@dxos/react-ui";
682
+ import { getSize as getSize6, mx as mx11 } from "@dxos/react-ui-theme";
945
683
  var CloseButton = ({ onDone, ...props }) => {
946
- const { t } = useTranslation9("os");
947
- return /* @__PURE__ */ React15.createElement(Button8, {
684
+ const { t } = useTranslation7("os");
685
+ return /* @__PURE__ */ React13.createElement(Button6, {
948
686
  variant: "ghost",
949
- classNames: mx12("plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
687
+ classNames: mx11("plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
950
688
  onClick: () => onDone?.(),
951
689
  ...props
952
- }, /* @__PURE__ */ React15.createElement(X2, {
690
+ }, /* @__PURE__ */ React13.createElement(X2, {
953
691
  weight: "bold",
954
- className: getSize8(4)
955
- }), /* @__PURE__ */ React15.createElement("span", {
692
+ className: getSize6(4)
693
+ }), /* @__PURE__ */ React13.createElement("span", {
956
694
  className: "sr-only"
957
695
  }, t("exit label")));
958
696
  };
959
697
 
960
698
  // packages/sdk/shell/src/components/Panel/Emoji.tsx
961
- import React16 from "react";
962
- import { mx as mx13, getSize as getSize9 } from "@dxos/react-ui-theme";
699
+ import React14 from "react";
700
+ import { mx as mx12, getSize as getSize7 } from "@dxos/react-ui-theme";
963
701
  var Emoji = ({ text, className }) => {
964
702
  const size = 14;
965
- return /* @__PURE__ */ React16.createElement("div", {
703
+ return /* @__PURE__ */ React14.createElement("div", {
966
704
  role: "none",
967
- className: mx13(getSize9(size), "rounded relative pointer-events-none", className)
968
- }, /* @__PURE__ */ React16.createElement("svg", {
705
+ className: mx12(getSize7(size), "rounded relative pointer-events-none", className)
706
+ }, /* @__PURE__ */ React14.createElement("svg", {
969
707
  viewBox: `0 0 ${size * 4} ${size * 4}`,
970
708
  width: size * 4,
971
709
  height: size * 4
972
- }, /* @__PURE__ */ React16.createElement("text", {
710
+ }, /* @__PURE__ */ React14.createElement("text", {
973
711
  x: "50%",
974
712
  y: "50%",
975
713
  textAnchor: "middle",
@@ -980,57 +718,57 @@ var Emoji = ({ text, className }) => {
980
718
  };
981
719
  var Centered = (props) => {
982
720
  const { children } = props;
983
- return /* @__PURE__ */ React16.createElement("div", {
721
+ return /* @__PURE__ */ React14.createElement("div", {
984
722
  role: "none",
985
723
  className: "absolute inset-0 flex items-center justify-center"
986
724
  }, children);
987
725
  };
988
726
 
989
727
  // packages/sdk/shell/src/components/Panel/Heading.tsx
990
- import React17, { forwardRef as forwardRef5 } from "react";
991
- import { descriptionText as descriptionText6, mx as mx14 } from "@dxos/react-ui-theme";
728
+ import React15, { forwardRef as forwardRef5 } from "react";
729
+ import { descriptionText as descriptionText6, mx as mx13 } from "@dxos/react-ui-theme";
992
730
  var Heading = /* @__PURE__ */ forwardRef5(({ titleId, title, titleSrOnly, children, corner }, forwardedRef) => {
993
- return /* @__PURE__ */ React17.createElement("div", {
731
+ return /* @__PURE__ */ React15.createElement("div", {
994
732
  role: "none",
995
733
  className: "pbe-2 relative",
996
734
  ref: forwardedRef
997
- }, corner, /* @__PURE__ */ React17.createElement("h1", {
735
+ }, corner, /* @__PURE__ */ React15.createElement("h1", {
998
736
  ...!titleSrOnly && {
999
737
  id: titleId
1000
738
  },
1001
- className: mx14(descriptionText6, "text-center mlb-2", titleSrOnly && "invisible")
1002
- }, title), titleSrOnly && /* @__PURE__ */ React17.createElement("span", {
739
+ className: mx13(descriptionText6, "text-center mlb-2", titleSrOnly && "invisible")
740
+ }, title), titleSrOnly && /* @__PURE__ */ React15.createElement("span", {
1003
741
  id: titleId
1004
742
  }, title), children);
1005
743
  });
1006
744
 
1007
745
  // packages/sdk/shell/src/components/Panel/Label.tsx
1008
- import React18 from "react";
1009
- import { descriptionText as descriptionText7, mx as mx15 } from "@dxos/react-ui-theme";
746
+ import React16 from "react";
747
+ import { descriptionText as descriptionText7, mx as mx14 } from "@dxos/react-ui-theme";
1010
748
  var Label = (props) => {
1011
749
  const { children } = props;
1012
- return /* @__PURE__ */ React18.createElement("span", {
1013
- className: mx15(descriptionText7, "text-center mli-6 whitespace-normal")
750
+ return /* @__PURE__ */ React16.createElement("span", {
751
+ className: mx14(descriptionText7, "text-center mli-6 whitespace-normal")
1014
752
  }, children);
1015
753
  };
1016
754
 
1017
755
  // packages/sdk/shell/src/components/Panel/Input.tsx
1018
- import React19 from "react";
756
+ import React17 from "react";
1019
757
  import { Input as UiInput } from "@dxos/react-ui";
1020
758
  var Input = ({ validationMessage, label, ...props }) => {
1021
- return /* @__PURE__ */ React19.createElement(UiInput.Root, null, /* @__PURE__ */ React19.createElement(UiInput.Label, null, label), /* @__PURE__ */ React19.createElement(UiInput.TextInput, {
759
+ return /* @__PURE__ */ React17.createElement(UiInput.Root, null, /* @__PURE__ */ React17.createElement(UiInput.Label, null, label), /* @__PURE__ */ React17.createElement(UiInput.TextInput, {
1022
760
  ...props,
1023
761
  classNames: "plb-3 mbs-2 text-center"
1024
- }), /* @__PURE__ */ React19.createElement(UiInput.DescriptionAndValidation, null, validationMessage && /* @__PURE__ */ React19.createElement(UiInput.Validation, null, validationMessage)));
762
+ }), /* @__PURE__ */ React17.createElement(UiInput.DescriptionAndValidation, null, validationMessage && /* @__PURE__ */ React17.createElement(UiInput.Validation, null, validationMessage)));
1025
763
  };
1026
764
 
1027
765
  // packages/sdk/shell/src/components/Panel/StepHeading.tsx
1028
- import React20, { forwardRef as forwardRef6 } from "react";
1029
- import { mx as mx16 } from "@dxos/react-ui-theme";
766
+ import React18, { forwardRef as forwardRef6 } from "react";
767
+ import { mx as mx15 } from "@dxos/react-ui-theme";
1030
768
  var StepHeading = /* @__PURE__ */ forwardRef6(({ children, className, ...props }, forwardedRef) => {
1031
- return /* @__PURE__ */ React20.createElement("h2", {
769
+ return /* @__PURE__ */ React18.createElement("h2", {
1032
770
  ...props,
1033
- className: mx16("font-normal text-sm mbe-4 mli-1 text-center", className),
771
+ className: mx15("font-normal text-sm mbe-4 mli-1 text-center", className),
1034
772
  ref: forwardedRef
1035
773
  }, children);
1036
774
  });
@@ -1038,31 +776,31 @@ var StepHeading = /* @__PURE__ */ forwardRef6(({ children, className, ...props }
1038
776
  // packages/sdk/shell/src/components/Viewport/Viewport.tsx
1039
777
  import { useFocusFinders } from "@fluentui/react-tabster";
1040
778
  import { createContextScope } from "@radix-ui/react-context";
1041
- import { useControllableState as useControllableState4 } from "@radix-ui/react-use-controllable-state";
1042
- import React21, { forwardRef as forwardRef7, useEffect } from "react";
779
+ import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
780
+ import React19, { forwardRef as forwardRef7, useEffect } from "react";
1043
781
  import { useForwardedRef } from "@dxos/react-ui";
1044
- import { mx as mx17 } from "@dxos/react-ui-theme";
782
+ import { mx as mx16 } from "@dxos/react-ui-theme";
1045
783
  var VIEWPORT_NAME = "Viewport";
1046
784
  var VIEWS_NAME = "ViewportViews";
1047
785
  var VIEW_NAME = "ViewportView";
1048
786
  var [createViewportContext, createViewportScope] = createContextScope(VIEWPORT_NAME, []);
1049
787
  var [ViewportProvider, useViewportContext] = createViewportContext(VIEWPORT_NAME);
1050
788
  var ViewportRoot = ({ __viewportScope, classNames, children, defaultActiveView, activeView: propsActiveView, focusManaged = false, onActiveViewChange, ...props }) => {
1051
- const [activeView = "never", setActiveView] = useControllableState4({
789
+ const [activeView = "never", setActiveView] = useControllableState2({
1052
790
  prop: propsActiveView,
1053
791
  defaultProp: defaultActiveView,
1054
792
  onChange: onActiveViewChange
1055
793
  });
1056
- return /* @__PURE__ */ React21.createElement(ViewportProvider, {
794
+ return /* @__PURE__ */ React19.createElement(ViewportProvider, {
1057
795
  focusManaged,
1058
796
  activeView,
1059
797
  setActiveView,
1060
798
  scope: __viewportScope
1061
- }, /* @__PURE__ */ React21.createElement("div", {
799
+ }, /* @__PURE__ */ React19.createElement("div", {
1062
800
  role: "region",
1063
801
  "aria-live": "polite",
1064
802
  ...props,
1065
- className: mx17("is-full overflow-hidden", classNames)
803
+ className: mx16("is-full overflow-hidden", classNames)
1066
804
  }, children));
1067
805
  };
1068
806
  ViewportRoot.displayName = VIEWPORT_NAME;
@@ -1070,11 +808,11 @@ var ViewportViews = ({ classNames, children, ...props }) => {
1070
808
  const size = {
1071
809
  inlineSize: `${Math.ceil(children.length) * 100}%`
1072
810
  };
1073
- return /* @__PURE__ */ React21.createElement("div", {
811
+ return /* @__PURE__ */ React19.createElement("div", {
1074
812
  role: "none",
1075
813
  style: size,
1076
814
  ...props,
1077
- className: mx17("flex", classNames)
815
+ className: mx16("flex", classNames)
1078
816
  }, children);
1079
817
  };
1080
818
  ViewportViews.displayName = VIEWS_NAME;
@@ -1092,12 +830,12 @@ var ViewportView = /* @__PURE__ */ forwardRef7(({ __viewportScope, classNames, c
1092
830
  ref.current,
1093
831
  isActive
1094
832
  ]);
1095
- return /* @__PURE__ */ React21.createElement("section", {
833
+ return /* @__PURE__ */ React19.createElement("section", {
1096
834
  ...props,
1097
835
  ...!isActive && {
1098
836
  "aria-hidden": true
1099
837
  },
1100
- className: mx17("min-is-0 flex-1 flex flex-col", isActive ? "order-2" : "order-4 invisible", classNames),
838
+ className: mx16("min-is-0 flex-1 flex flex-col", isActive ? "order-2" : "order-4 invisible", classNames),
1101
839
  ref
1102
840
  }, children);
1103
841
  });
@@ -1109,43 +847,45 @@ var Viewport = {
1109
847
  };
1110
848
 
1111
849
  // packages/sdk/shell/src/components/SpaceListItem.tsx
1112
- import React22, { forwardRef as forwardRef8 } from "react";
850
+ import React20, { forwardRef as forwardRef8 } from "react";
1113
851
  import { Avatar as Avatar5, useId as useId4 } from "@dxos/react-ui";
1114
- import { mx as mx18 } from "@dxos/react-ui-theme";
852
+ import { mx as mx17 } from "@dxos/react-ui-theme";
1115
853
  import { humanize, keyToEmoji } from "@dxos/util";
1116
854
  var SpaceListItem = /* @__PURE__ */ forwardRef8(({ space, onClick }, ref) => {
1117
855
  const fallbackValue = keyToEmoji(space.key);
1118
856
  const labelId = useId4("identityListItem__label");
1119
857
  const displayName = space.properties.name ?? humanize(space.key.toHex());
1120
- return /* @__PURE__ */ React22.createElement("li", {
1121
- className: mx18("flex gap-2 items-center mbe-2", onClick && "cursor-pointer"),
858
+ return /* @__PURE__ */ React20.createElement("li", {
859
+ className: mx17("flex gap-2 items-center mbe-2", onClick && "cursor-pointer"),
1122
860
  onClick: () => onClick?.(),
1123
861
  ref,
1124
862
  "data-testid": "space-list-item"
1125
- }, /* @__PURE__ */ React22.createElement(Avatar5.Root, {
863
+ }, /* @__PURE__ */ React20.createElement(Avatar5.Root, {
1126
864
  labelId
1127
- }, /* @__PURE__ */ React22.createElement(Avatar5.Frame, null, /* @__PURE__ */ React22.createElement(Avatar5.Fallback, {
865
+ }, /* @__PURE__ */ React20.createElement(Avatar5.Frame, null, /* @__PURE__ */ React20.createElement(Avatar5.Fallback, {
1128
866
  text: fallbackValue
1129
- })), /* @__PURE__ */ React22.createElement(Avatar5.Label, {
867
+ })), /* @__PURE__ */ React20.createElement(Avatar5.Label, {
1130
868
  classNames: "text-sm truncate"
1131
869
  }, displayName)));
1132
870
  });
1133
871
 
1134
872
  // packages/sdk/shell/src/composites/IdentityDialog/IdentityDialog.tsx
1135
- import React40 from "react";
1136
- import { Clipboard as Clipboard3, Dialog, useId as useId10 } from "@dxos/react-ui";
873
+ import React38 from "react";
874
+ import { Clipboard as Clipboard4, Dialog, useId as useId10 } from "@dxos/react-ui";
1137
875
 
1138
876
  // packages/sdk/shell/src/panels/IdentityPanel/IdentityPanel.tsx
1139
- import { Key, Plugs, PlugsConnected } from "@phosphor-icons/react";
1140
- import React27, { useEffect as useEffect4, useMemo as useMemo3, useState as useState7 } from "react";
877
+ import { IdentificationCard, Plugs, PlugsConnected } from "@phosphor-icons/react";
878
+ import React25, { useEffect as useEffect4, useMemo as useMemo3, useState as useState5 } from "react";
879
+ import { debounce } from "@dxos/async";
1141
880
  import { generateName as generateName3 } from "@dxos/display-name";
1142
881
  import { log as log7 } from "@dxos/log";
1143
882
  import { useClient as useClient6 } from "@dxos/react-client";
1144
883
  import { useIdentity, useDevices, useHaloInvitations as useHaloInvitations2 } from "@dxos/react-client/halo";
1145
884
  import { useInvitationStatus as useInvitationStatus2 } from "@dxos/react-client/invitations";
1146
885
  import { useNetworkStatus, ConnectionState as ConnectionState2 } from "@dxos/react-client/mesh";
1147
- import { Avatar as Avatar6, Input as Input2, Toolbar as Toolbar3, Tooltip as Tooltip5, useClipboard as useClipboard2, useId as useId6, useTranslation as useTranslation13 } from "@dxos/react-ui";
1148
- import { getSize as getSize12 } from "@dxos/react-ui-theme";
886
+ import { Avatar as Avatar6, Clipboard as Clipboard3, Input as Input2, Toolbar, Tooltip as Tooltip3, useId as useId6, useTranslation as useTranslation11 } from "@dxos/react-ui";
887
+ import { EmojiPickerToolbarButton, HuePicker as HuePicker2 } from "@dxos/react-ui-pickers";
888
+ import { errorText, getSize as getSize10 } from "@dxos/react-ui-theme";
1149
889
  import { hexToEmoji as hexToEmoji4, hexToHue as hexToHue2, keyToFallback as keyToFallback3 } from "@dxos/util";
1150
890
 
1151
891
  // packages/sdk/shell/src/panels/IdentityPanel/identityMachine.ts
@@ -1261,7 +1001,7 @@ var useIdentityMachine = (client, options) => {
1261
1001
  };
1262
1002
 
1263
1003
  // packages/sdk/shell/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx
1264
- import React23 from "react";
1004
+ import React21 from "react";
1265
1005
  import { log as log2 } from "@dxos/log";
1266
1006
  import { useClient as useClient2 } from "@dxos/react-client";
1267
1007
  import { useHaloInvitations, DeviceType as DeviceType2 } from "@dxos/react-client/halo";
@@ -1297,7 +1037,7 @@ var IdentityActionChooser = (props) => {
1297
1037
  });
1298
1038
  };
1299
1039
  const isProduction = client.config.values.runtime?.app?.env?.DX_ENVIRONMENT === "production";
1300
- return /* @__PURE__ */ React23.createElement(IdentityActionChooserImpl, {
1040
+ return /* @__PURE__ */ React21.createElement(IdentityActionChooserImpl, {
1301
1041
  ...props,
1302
1042
  onClickAdd: createInvitation,
1303
1043
  onClickJoinExisting: () => send?.({
@@ -1313,10 +1053,10 @@ var IdentityActionChooser = (props) => {
1313
1053
  };
1314
1054
  var IdentityActionChooserImpl = ({ devices, connectionState, agentHostingEnabled, onClickAdd, onClickJoinExisting, onClickRecover, onClickReset, ...agentProps }) => {
1315
1055
  const edgeDeviceAvailable = devices.find((device) => device.profile?.type === DeviceType2.AGENT_MANAGED && device.profile?.os?.toUpperCase() === "EDGE");
1316
- return /* @__PURE__ */ React23.createElement("div", {
1056
+ return /* @__PURE__ */ React21.createElement("div", {
1317
1057
  role: "none",
1318
1058
  className: "bs-40 grow overflow-y-auto"
1319
- }, /* @__PURE__ */ React23.createElement(DeviceList, {
1059
+ }, /* @__PURE__ */ React21.createElement(DeviceList, {
1320
1060
  devices,
1321
1061
  connectionState,
1322
1062
  onClickAdd,
@@ -1324,20 +1064,21 @@ var IdentityActionChooserImpl = ({ devices, connectionState, agentHostingEnabled
1324
1064
  onClickRecover: agentProps.agentStatus === "created" ? onClickRecover : void 0,
1325
1065
  onClickReset,
1326
1066
  onAgentDestroy: agentProps.onAgentDestroy
1327
- }), !edgeDeviceAvailable && agentHostingEnabled && /* @__PURE__ */ React23.createElement(AgentConfig, agentProps));
1067
+ }), !edgeDeviceAvailable && agentHostingEnabled && /* @__PURE__ */ React21.createElement(AgentConfig, agentProps));
1328
1068
  };
1329
1069
 
1330
1070
  // packages/sdk/shell/src/panels/IdentityPanel/steps/ProfileForm.tsx
1331
- import React24, { useState as useState3 } from "react";
1071
+ import React22, { useState } from "react";
1332
1072
  import { log as log3 } from "@dxos/log";
1333
- import { useClipboard, useTranslation as useTranslation10 } from "@dxos/react-ui";
1073
+ import { useClipboard, useTranslation as useTranslation8 } from "@dxos/react-ui";
1074
+ import { EmojiPickerBlock, HuePicker } from "@dxos/react-ui-pickers";
1334
1075
  import { hexToEmoji as hexToEmoji2, hexToHue } from "@dxos/util";
1335
1076
 
1336
1077
  // packages/sdk/shell/src/panels/IdentityPanel/useAgentHandlers.ts
1337
1078
  import { useClient as useClient5 } from "@dxos/react-client";
1338
1079
 
1339
1080
  // packages/sdk/shell/src/panels/IdentityPanel/useEdgeAgentsHandlers.ts
1340
- import { useEffect as useEffect2, useState as useState4 } from "react";
1081
+ import { useEffect as useEffect2, useState as useState2 } from "react";
1341
1082
  import { invariant } from "@dxos/invariant";
1342
1083
  import { log as log4 } from "@dxos/log";
1343
1084
  import { QueryAgentStatusResponse } from "@dxos/protocols/proto/dxos/client/services";
@@ -1345,9 +1086,9 @@ import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata
1345
1086
  import { useClient as useClient3 } from "@dxos/react-client";
1346
1087
  var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/useEdgeAgentsHandlers.ts";
1347
1088
  var useEdgeAgentHandlers = ({ identity }) => {
1348
- const [validationMessage, setValidationMessage] = useState4("");
1349
- const [lastReceivedStatus, setLastReceivedStatus] = useState4(QueryAgentStatusResponse.AgentStatus.UNKNOWN);
1350
- const [agentStatus, setAgentStatus] = useState4("getting");
1089
+ const [validationMessage, setValidationMessage] = useState2("");
1090
+ const [lastReceivedStatus, setLastReceivedStatus] = useState2(QueryAgentStatusResponse.AgentStatus.UNKNOWN);
1091
+ const [agentStatus, setAgentStatus] = useState2("getting");
1351
1092
  const client = useClient3();
1352
1093
  const agentHostingEnabled = Boolean(client.config.values.runtime?.client?.edgeFeatures?.agents);
1353
1094
  const handleStatus = (status) => {
@@ -1433,15 +1174,15 @@ var useEdgeAgentHandlers = ({ identity }) => {
1433
1174
  };
1434
1175
 
1435
1176
  // packages/sdk/shell/src/panels/IdentityPanel/useKubeAgentHandlers.ts
1436
- import { useCallback as useCallback3, useEffect as useEffect3, useState as useState5 } from "react";
1177
+ import { useCallback as useCallback3, useEffect as useEffect3, useState as useState3 } from "react";
1437
1178
  import { invariant as invariant2 } from "@dxos/invariant";
1438
1179
  import { log as log5 } from "@dxos/log";
1439
1180
  import { useClient as useClient4, useAgentHostingClient } from "@dxos/react-client";
1440
1181
  import { Invitation as Invitation3, InvitationEncoder as InvitationEncoder2 } from "@dxos/react-client/invitations";
1441
1182
  var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/useKubeAgentHandlers.ts";
1442
1183
  var useKubeAgentHandlers = ({ invitations, identity }) => {
1443
- const [validationMessage, setValidationMessage] = useState5("");
1444
- const [agentStatus, setAgentStatus] = useState5("getting");
1184
+ const [validationMessage, setValidationMessage] = useState3("");
1185
+ const [agentStatus, setAgentStatus] = useState3("getting");
1445
1186
  const agentHostingProviderClient = useAgentHostingClient();
1446
1187
  const client = useClient4();
1447
1188
  const updateAgentStatus = async () => {
@@ -1570,11 +1311,11 @@ var useAgentHandlers = (params) => {
1570
1311
  };
1571
1312
 
1572
1313
  // packages/sdk/shell/src/steps/InvitationManager.tsx
1573
- import { Check as Check3, X as X3 } from "@phosphor-icons/react";
1574
- import React25, { useMemo as useMemo2 } from "react";
1314
+ import { Check as Check2, X as X3 } from "@phosphor-icons/react";
1315
+ import React23, { useMemo as useMemo2 } from "react";
1575
1316
  import { QR } from "react-qr-rounded";
1576
- import { Clipboard as Clipboard2, useId as useId5, useTranslation as useTranslation11 } from "@dxos/react-ui";
1577
- import { descriptionText as descriptionText8, getSize as getSize10, mx as mx19 } from "@dxos/react-ui-theme";
1317
+ import { Clipboard as Clipboard2, useId as useId5, useTranslation as useTranslation9 } from "@dxos/react-ui";
1318
+ import { descriptionText as descriptionText8, getSize as getSize8, mx as mx18 } from "@dxos/react-ui-theme";
1578
1319
  import { hexToEmoji as hexToEmoji3 } from "@dxos/util";
1579
1320
 
1580
1321
  // packages/sdk/shell/src/util/invitationStatusValue.ts
@@ -1620,13 +1361,13 @@ var invitationStatusValue = /* @__PURE__ */ new Map([
1620
1361
 
1621
1362
  // packages/sdk/shell/src/steps/InvitationManager.tsx
1622
1363
  var InvitationManagerView = ({ children, ...props }) => {
1623
- return /* @__PURE__ */ React25.createElement(Viewport.View, {
1364
+ return /* @__PURE__ */ React23.createElement(Viewport.View, {
1624
1365
  ...props,
1625
1366
  classNames: "grow flex flex-col justify-around items-center"
1626
1367
  }, children);
1627
1368
  };
1628
1369
  var InvitationManager = ({ invitationUrl, active, send, status, multiUse, authCode, id = "0" }) => {
1629
- const { t } = useTranslation11("os");
1370
+ const { t } = useTranslation9("os");
1630
1371
  const qrLabel = useId5("invitation-manager__qr-code");
1631
1372
  const statusValue = multiUse ? 0 : invitationStatusValue.get(status) ?? 0;
1632
1373
  const showAuthCode = statusValue === 3;
@@ -1647,50 +1388,50 @@ var InvitationManager = ({ invitationUrl, active, send, status, multiUse, authCo
1647
1388
  }, [
1648
1389
  statusValue
1649
1390
  ]);
1650
- return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(Viewport.Root, {
1391
+ return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(Viewport.Root, {
1651
1392
  activeView,
1652
1393
  classNames: "grow plb-1"
1653
- }, /* @__PURE__ */ React25.createElement(Viewport.Views, null, /* @__PURE__ */ React25.createElement(InvitationManagerView, {
1394
+ }, /* @__PURE__ */ React23.createElement(Viewport.Views, null, /* @__PURE__ */ React23.createElement(InvitationManagerView, {
1654
1395
  id: "showing qr",
1655
1396
  emoji
1656
- }, /* @__PURE__ */ React25.createElement("p", {
1397
+ }, /* @__PURE__ */ React23.createElement("p", {
1657
1398
  className: "text-sm mlb-1 font-normal text-center"
1658
- }, t(multiUse ? "invite many qr label" : "invite one qr label")), /* @__PURE__ */ React25.createElement("div", {
1399
+ }, t(multiUse ? "invite many qr label" : "invite one qr label")), /* @__PURE__ */ React23.createElement("div", {
1659
1400
  role: "none",
1660
- className: mx19(descriptionText8, "is-full max-is-[14rem] relative")
1661
- }, /* @__PURE__ */ React25.createElement(QR, {
1401
+ className: mx18(descriptionText8, "is-full max-is-[14rem] relative")
1402
+ }, /* @__PURE__ */ React23.createElement(QR, {
1662
1403
  rounding: 100,
1663
1404
  backgroundColor: "transparent",
1664
1405
  color: "currentColor",
1665
- className: mx19("is-full bs-full p-2", showAuthCode && "invisible"),
1406
+ className: mx18("is-full bs-full p-2", showAuthCode && "invisible"),
1666
1407
  "aria-labelledby": qrLabel,
1667
1408
  errorCorrectionLevel: "Q",
1668
1409
  cutout: true
1669
- }, invitationUrl ?? "never"), /* @__PURE__ */ React25.createElement(Centered, null, /* @__PURE__ */ React25.createElement(Emoji, {
1410
+ }, invitationUrl ?? "never"), /* @__PURE__ */ React23.createElement(Centered, null, /* @__PURE__ */ React23.createElement(Emoji, {
1670
1411
  text: emoji
1671
- }))), /* @__PURE__ */ React25.createElement("span", {
1412
+ }))), /* @__PURE__ */ React23.createElement("span", {
1672
1413
  id: qrLabel,
1673
1414
  className: "sr-only"
1674
- }, t("qr label")), /* @__PURE__ */ React25.createElement(Clipboard2.Button, {
1415
+ }, t("qr label")), /* @__PURE__ */ React23.createElement(Clipboard2.Button, {
1675
1416
  variant: "ghost",
1676
1417
  value: invitationUrl ?? "never"
1677
- })), /* @__PURE__ */ React25.createElement(InvitationManagerView, {
1418
+ })), /* @__PURE__ */ React23.createElement(InvitationManagerView, {
1678
1419
  id: "showing auth code"
1679
- }, /* @__PURE__ */ React25.createElement(Label, null, t("auth code message")), /* @__PURE__ */ React25.createElement(AuthCode, {
1420
+ }, /* @__PURE__ */ React23.createElement(Label, null, t("auth code message")), /* @__PURE__ */ React23.createElement(AuthCode, {
1680
1421
  code: authCode,
1681
1422
  large: true,
1682
1423
  classNames: "text-black dark:text-white"
1683
- }), /* @__PURE__ */ React25.createElement(Label, null, t("auth other device emoji message")), emoji && /* @__PURE__ */ React25.createElement(Emoji, {
1424
+ }), /* @__PURE__ */ React23.createElement(Label, null, t("auth other device emoji message")), emoji && /* @__PURE__ */ React23.createElement(Emoji, {
1684
1425
  text: emoji
1685
- })), /* @__PURE__ */ React25.createElement(InvitationManagerView, {
1426
+ })), /* @__PURE__ */ React23.createElement(InvitationManagerView, {
1686
1427
  id: "showing final"
1687
- }, statusValue > 0 ? /* @__PURE__ */ React25.createElement(Check3, {
1688
- className: mx19("m-1.5", getSize10(6))
1689
- }) : /* @__PURE__ */ React25.createElement(X3, {
1690
- className: mx19("m-1.5", getSize10(6))
1691
- })))), /* @__PURE__ */ React25.createElement(Actions, {
1428
+ }, statusValue > 0 ? /* @__PURE__ */ React23.createElement(Check2, {
1429
+ className: mx18("m-1.5", getSize8(6))
1430
+ }) : /* @__PURE__ */ React23.createElement(X3, {
1431
+ className: mx18("m-1.5", getSize8(6))
1432
+ })))), /* @__PURE__ */ React23.createElement(Actions, {
1692
1433
  classNames: "mbs-4"
1693
- }, /* @__PURE__ */ React25.createElement(Action, {
1434
+ }, /* @__PURE__ */ React23.createElement(Action, {
1694
1435
  disabled: !active,
1695
1436
  onClick: () => send?.({
1696
1437
  type: "deselectInvitation"
@@ -1700,15 +1441,15 @@ var InvitationManager = ({ invitationUrl, active, send, status, multiUse, authCo
1700
1441
 
1701
1442
  // packages/sdk/shell/src/steps/ConfirmReset.tsx
1702
1443
  import { Warning } from "@phosphor-icons/react";
1703
- import React26, { useState as useState6 } from "react";
1444
+ import React24, { useState as useState4 } from "react";
1704
1445
  import { log as log6 } from "@dxos/log";
1705
- import { Message, useTranslation as useTranslation12 } from "@dxos/react-ui";
1706
- import { getSize as getSize11, mx as mx20 } from "@dxos/react-ui-theme";
1446
+ import { Message, useTranslation as useTranslation10 } from "@dxos/react-ui";
1447
+ import { getSize as getSize9, mx as mx19 } from "@dxos/react-ui-theme";
1707
1448
  var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/steps/ConfirmReset.tsx";
1708
1449
  var ConfirmReset = ({ active, onCancel, onConfirm, mode }) => {
1709
- const { t } = useTranslation12("os");
1710
- const [validationMessage, setValidationMessage] = useState6("");
1711
- const [pending, setPending] = useState6(false);
1450
+ const { t } = useTranslation10("os");
1451
+ const [validationMessage, setValidationMessage] = useState4("");
1452
+ const [pending, setPending] = useState4(false);
1712
1453
  const processReset = async () => {
1713
1454
  setPending(true);
1714
1455
  return onConfirm?.().then(() => setPending(false), (error) => {
@@ -1722,7 +1463,7 @@ var ConfirmReset = ({ active, onCancel, onConfirm, mode }) => {
1722
1463
  setPending(false);
1723
1464
  });
1724
1465
  };
1725
- return /* @__PURE__ */ React26.createElement(ConfirmResetImpl, {
1466
+ return /* @__PURE__ */ React24.createElement(ConfirmResetImpl, {
1726
1467
  disabled: !active,
1727
1468
  pending,
1728
1469
  validationMessage,
@@ -1732,20 +1473,20 @@ var ConfirmReset = ({ active, onCancel, onConfirm, mode }) => {
1732
1473
  });
1733
1474
  };
1734
1475
  var ConfirmResetImpl = ({ disabled, pending, validationMessage, onConfirm, onCancel, mode }) => {
1735
- const { t } = useTranslation12("os");
1476
+ const { t } = useTranslation10("os");
1736
1477
  const confirmationValue = t("confirmation value");
1737
- const [inputValue, setInputValue] = useState6("");
1478
+ const [inputValue, setInputValue] = useState4("");
1738
1479
  const testIdAffix = mode === "join new identity" ? "join-new-identity" : mode === "recover" ? "recover" : "reset-storage";
1739
- return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement("div", {
1480
+ return /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("div", {
1740
1481
  role: "none",
1741
1482
  className: "grow flex flex-col gap-2 justify-center"
1742
- }, /* @__PURE__ */ React26.createElement(Message.Root, {
1483
+ }, /* @__PURE__ */ React24.createElement(Message.Root, {
1743
1484
  valence: "error"
1744
- }, /* @__PURE__ */ React26.createElement(Message.Title, null, /* @__PURE__ */ React26.createElement(Warning, {
1745
- className: mx20(getSize11(6), "inline mie-2")
1746
- }), t("sign out chooser title")), /* @__PURE__ */ React26.createElement(Message.Body, null, t("sign out chooser message"))), /* @__PURE__ */ React26.createElement(Input, {
1485
+ }, /* @__PURE__ */ React24.createElement(Message.Title, null, /* @__PURE__ */ React24.createElement(Warning, {
1486
+ className: mx19(getSize9(6), "inline mie-2")
1487
+ }), t("sign out chooser title")), /* @__PURE__ */ React24.createElement(Message.Body, null, t("sign out chooser message"))), /* @__PURE__ */ React24.createElement(Input, {
1747
1488
  validationMessage,
1748
- label: /* @__PURE__ */ React26.createElement(StepHeading, {
1489
+ label: /* @__PURE__ */ React24.createElement(StepHeading, {
1749
1490
  className: "text-start mlb-2"
1750
1491
  }, t(mode === "join new identity" ? "join new identity input label" : mode === "recover" ? "recover reset input label" : "reset storage input label", {
1751
1492
  confirmationValue
@@ -1756,11 +1497,11 @@ var ConfirmResetImpl = ({ disabled, pending, validationMessage, onConfirm, onCan
1756
1497
  confirmationValue
1757
1498
  }),
1758
1499
  onChange: ({ target: { value } }) => setInputValue(value)
1759
- })), /* @__PURE__ */ React26.createElement(Actions, null, onCancel && /* @__PURE__ */ React26.createElement(Action, {
1500
+ })), /* @__PURE__ */ React24.createElement(Actions, null, onCancel && /* @__PURE__ */ React24.createElement(Action, {
1760
1501
  disabled,
1761
1502
  onClick: onCancel,
1762
1503
  "data-testid": `${testIdAffix}.reset-identity-cancel`
1763
- }, t("cancel label")), onConfirm && /* @__PURE__ */ React26.createElement(Action, {
1504
+ }, t("cancel label")), onConfirm && /* @__PURE__ */ React24.createElement(Action, {
1764
1505
  variant: "destructive",
1765
1506
  disabled: disabled || pending || inputValue !== confirmationValue,
1766
1507
  onClick: onConfirm,
@@ -1773,15 +1514,23 @@ var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/I
1773
1514
  var viewStyles = "pbs-1 pbe-3 pli-3";
1774
1515
  var getHueValue = (identity) => identity?.profile?.data?.hue || hexToHue2(identity?.identityKey.toHex() ?? "0");
1775
1516
  var getEmojiValue = (identity) => identity?.profile?.data?.emoji || hexToEmoji4(identity?.identityKey.toHex() ?? "0");
1776
- var IdentityHeading = ({ titleId, title, identity, onDone, onUpdateProfile, connectionState, onChangeConnectionState }) => {
1517
+ var IdentityHeading = ({ titleId, title, identity, onDone, onUpdateProfile, connectionState, onChangeConnectionState, onManageCredentials }) => {
1777
1518
  const fallbackValue = keyToFallback3(identity.identityKey);
1778
- const { t } = useTranslation13("os");
1779
- const [displayName, setDisplayName] = useState7(identity.profile?.displayName ?? "");
1780
- const [emoji, setEmojiDirectly] = useState7(getEmojiValue(identity));
1781
- const [hue, setHueDirectly] = useState7(getHueValue(identity));
1782
- const { textValue, setTextValue } = useClipboard2();
1783
- const identityHex = identity.identityKey.toHex();
1784
- const publicKeyCopied = textValue === identityHex;
1519
+ const { t } = useTranslation11("os");
1520
+ const [displayName, setDisplayNameDirectly] = useState5(identity.profile?.displayName ?? "");
1521
+ const [emoji, setEmojiDirectly] = useState5(getEmojiValue(identity));
1522
+ const [hue, setHueDirectly] = useState5(getHueValue(identity));
1523
+ const updateDisplayName = useMemo3(() => debounce((nextDisplayName) => onUpdateProfile?.({
1524
+ ...identity.profile,
1525
+ displayName: nextDisplayName
1526
+ }), 3e3), [
1527
+ onUpdateProfile,
1528
+ identity.profile
1529
+ ]);
1530
+ const setDisplayName = (nextDisplayName) => {
1531
+ setDisplayNameDirectly(nextDisplayName);
1532
+ updateDisplayName(nextDisplayName);
1533
+ };
1785
1534
  const setEmoji = (nextEmoji) => {
1786
1535
  setEmojiDirectly(nextEmoji);
1787
1536
  void onUpdateProfile?.({
@@ -1803,82 +1552,83 @@ var IdentityHeading = ({ titleId, title, identity, onDone, onUpdateProfile, conn
1803
1552
  });
1804
1553
  };
1805
1554
  const isConnected = connectionState === ConnectionState2.ONLINE;
1806
- return /* @__PURE__ */ React27.createElement(Heading, {
1555
+ return /* @__PURE__ */ React25.createElement(Heading, {
1807
1556
  titleId,
1808
1557
  title,
1809
- corner: /* @__PURE__ */ React27.createElement(CloseButton, {
1558
+ corner: /* @__PURE__ */ React25.createElement(CloseButton, {
1810
1559
  onDone
1811
1560
  })
1812
- }, /* @__PURE__ */ React27.createElement(Avatar6.Root, {
1561
+ }, /* @__PURE__ */ React25.createElement(Avatar6.Root, {
1813
1562
  size: 16,
1814
1563
  variant: "circle",
1815
1564
  status: isConnected ? "active" : "error",
1816
1565
  hue: hue || fallbackValue.hue
1817
- }, /* @__PURE__ */ React27.createElement(Toolbar3.Root, {
1566
+ }, /* @__PURE__ */ React25.createElement(Toolbar.Root, {
1818
1567
  classNames: "flex justify-center"
1819
- }, /* @__PURE__ */ React27.createElement(Avatar6.Frame, {
1568
+ }, /* @__PURE__ */ React25.createElement(Avatar6.Frame, {
1820
1569
  classNames: "relative z-[2] -mli-4 chromatic-ignore"
1821
- }, /* @__PURE__ */ React27.createElement(Avatar6.Fallback, {
1570
+ }, /* @__PURE__ */ React25.createElement(Avatar6.Fallback, {
1822
1571
  text: emoji || fallbackValue.emoji
1823
- }))), /* @__PURE__ */ React27.createElement(Avatar6.Label, {
1572
+ }))), /* @__PURE__ */ React25.createElement(Avatar6.Label, {
1824
1573
  classNames: "sr-only",
1825
1574
  "data-testid": "identityHeading.displayName"
1826
- }, identity.profile?.displayName ?? generateName3(identity.identityKey.toHex())), /* @__PURE__ */ React27.createElement(Input2.Root, null, /* @__PURE__ */ React27.createElement(Input2.Label, {
1575
+ }, identity.profile?.displayName ?? generateName3(identity.identityKey.toHex())), /* @__PURE__ */ React25.createElement(Input2.Root, null, /* @__PURE__ */ React25.createElement(Input2.Label, {
1827
1576
  srOnly: true
1828
- }, t("display name input label")), /* @__PURE__ */ React27.createElement(Input2.TextInput, {
1577
+ }, t("display name input label")), /* @__PURE__ */ React25.createElement(Input2.TextInput, {
1829
1578
  variant: "subdued",
1830
1579
  "data-testid": "display-name-input",
1831
1580
  placeholder: t("display name input placeholder"),
1832
1581
  classNames: "mbs-2 text-center font-light text-xl",
1833
1582
  value: displayName,
1834
- onChange: ({ target: { value } }) => setDisplayName(value),
1835
- onBlur: ({ target: { value } }) => onUpdateProfile?.({
1836
- ...identity.profile,
1837
- displayName: value
1838
- })
1839
- })), /* @__PURE__ */ React27.createElement(Toolbar3.Root, {
1583
+ onChange: ({ target: { value } }) => setDisplayName(value)
1584
+ })), /* @__PURE__ */ React25.createElement(Toolbar.Root, {
1840
1585
  classNames: "flex justify-center items-center gap-1 pt-3"
1841
- }, /* @__PURE__ */ React27.createElement(EmojiPickerToolbarButton, {
1586
+ }, /* @__PURE__ */ React25.createElement(EmojiPickerToolbarButton, {
1842
1587
  emoji,
1843
1588
  onChangeEmoji: setEmoji,
1844
1589
  classNames: "bs-[--rail-action]"
1845
- }), /* @__PURE__ */ React27.createElement(HuePickerToolbarButton, {
1846
- hue,
1847
- onChangeHue: setHue,
1590
+ }), /* @__PURE__ */ React25.createElement(HuePicker2, {
1591
+ value: hue,
1592
+ onChange: setHue,
1593
+ onReset: () => setHue(void 0),
1848
1594
  classNames: "bs-[--rail-action]"
1849
- }), /* @__PURE__ */ React27.createElement(Tooltip5.Root, null, /* @__PURE__ */ React27.createElement(Tooltip5.Trigger, {
1850
- asChild: true
1851
- }, /* @__PURE__ */ React27.createElement(Toolbar3.Button, {
1595
+ }), /* @__PURE__ */ React25.createElement(Clipboard3.IconButton, {
1852
1596
  classNames: "bs-[--rail-action]",
1853
1597
  "data-testid": "update-profile-form-copy-key",
1854
- onClick: () => setTextValue(identityHex)
1855
- }, /* @__PURE__ */ React27.createElement("span", {
1598
+ label: t("copy self did label"),
1599
+ value: identity.did
1600
+ }), onManageCredentials && /* @__PURE__ */ React25.createElement(Tooltip3.Root, null, /* @__PURE__ */ React25.createElement(Tooltip3.Trigger, {
1601
+ asChild: true
1602
+ }, /* @__PURE__ */ React25.createElement(Toolbar.Button, {
1603
+ classNames: "bs-[--rail-action]",
1604
+ onClick: onManageCredentials
1605
+ }, /* @__PURE__ */ React25.createElement("span", {
1856
1606
  className: "sr-only"
1857
- }, t(publicKeyCopied ? "copy success label" : "copy self public key label")), /* @__PURE__ */ React27.createElement(Key, {
1858
- className: getSize12(5)
1859
- }))), /* @__PURE__ */ React27.createElement(Tooltip5.Portal, null, /* @__PURE__ */ React27.createElement(Tooltip5.Content, {
1607
+ }, t("manage credentials label")), /* @__PURE__ */ React25.createElement(IdentificationCard, {
1608
+ className: getSize10(5)
1609
+ }))), /* @__PURE__ */ React25.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React25.createElement(Tooltip3.Content, {
1860
1610
  side: "bottom"
1861
- }, t(publicKeyCopied ? "copy success label" : "copy self public key label"), /* @__PURE__ */ React27.createElement(Tooltip5.Arrow, null)))), /* @__PURE__ */ React27.createElement(Tooltip5.Root, null, /* @__PURE__ */ React27.createElement(Tooltip5.Trigger, {
1611
+ }, t("manage credentials label"), /* @__PURE__ */ React25.createElement(Tooltip3.Arrow, null)))), /* @__PURE__ */ React25.createElement(Tooltip3.Root, null, /* @__PURE__ */ React25.createElement(Tooltip3.Trigger, {
1862
1612
  asChild: true
1863
- }, /* @__PURE__ */ React27.createElement(Toolbar3.Button, {
1613
+ }, /* @__PURE__ */ React25.createElement(Toolbar.Button, {
1864
1614
  classNames: [
1865
1615
  "bs-[--rail-action]",
1866
- !isConnected && "text-error-500"
1616
+ !isConnected && errorText
1867
1617
  ],
1868
1618
  onClick: () => onChangeConnectionState?.(isConnected ? ConnectionState2.OFFLINE : ConnectionState2.ONLINE)
1869
- }, /* @__PURE__ */ React27.createElement("span", {
1619
+ }, /* @__PURE__ */ React25.createElement("span", {
1870
1620
  className: "sr-only"
1871
- }, t(isConnected ? "disconnect label" : "connect label")), isConnected ? /* @__PURE__ */ React27.createElement(PlugsConnected, {
1872
- className: getSize12(5)
1873
- }) : /* @__PURE__ */ React27.createElement(Plugs, {
1874
- className: getSize12(5)
1875
- }))), /* @__PURE__ */ React27.createElement(Tooltip5.Portal, null, /* @__PURE__ */ React27.createElement(Tooltip5.Content, {
1621
+ }, t(isConnected ? "disconnect label" : "connect label")), isConnected ? /* @__PURE__ */ React25.createElement(PlugsConnected, {
1622
+ className: getSize10(5)
1623
+ }) : /* @__PURE__ */ React25.createElement(Plugs, {
1624
+ className: getSize10(5)
1625
+ }))), /* @__PURE__ */ React25.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React25.createElement(Tooltip3.Content, {
1876
1626
  side: "bottom"
1877
- }, t(isConnected ? "disconnect label" : "connect label"), /* @__PURE__ */ React27.createElement(Tooltip5.Arrow, null)))))));
1627
+ }, t(isConnected ? "disconnect label" : "connect label"), /* @__PURE__ */ React25.createElement(Tooltip3.Arrow, null)))))));
1878
1628
  };
1879
1629
  var IdentityPanelImpl = (props) => {
1880
- const { identity, titleId, activeView, onUpdateProfile, onResetStorage, onRecover, onJoinNewIdentity, IdentityActionChooser: IdentityActionChooserComponent = IdentityActionChooser, InvitationManager: InvitationManagerComponent = InvitationManager, connectionState, onChangeConnectionState, onDone, ...rest } = props;
1881
- const { t } = useTranslation13("os");
1630
+ const { identity, titleId, activeView, onUpdateProfile, onResetStorage, onRecover, onJoinNewIdentity, IdentityActionChooser: IdentityActionChooserComponent = IdentityActionChooser, InvitationManager: InvitationManagerComponent = InvitationManager, connectionState, onChangeConnectionState, onDone, onManageCredentials, ...rest } = props;
1631
+ const { t } = useTranslation11("os");
1882
1632
  const title = useMemo3(() => {
1883
1633
  switch (activeView) {
1884
1634
  case "device invitation manager":
@@ -1892,7 +1642,7 @@ var IdentityPanelImpl = (props) => {
1892
1642
  ]);
1893
1643
  const onCancelReset = () => rest.send?.("unchooseAction");
1894
1644
  const hideRecover = rest.agentStatus !== "created";
1895
- return /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(IdentityHeading, {
1645
+ return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(IdentityHeading, {
1896
1646
  identity,
1897
1647
  titleId,
1898
1648
  title,
@@ -1900,45 +1650,46 @@ var IdentityPanelImpl = (props) => {
1900
1650
  onDone,
1901
1651
  onUpdateProfile,
1902
1652
  connectionState,
1903
- onChangeConnectionState
1904
- }), /* @__PURE__ */ React27.createElement(Viewport.Root, {
1653
+ onChangeConnectionState,
1654
+ onManageCredentials
1655
+ }), /* @__PURE__ */ React25.createElement(Viewport.Root, {
1905
1656
  activeView
1906
- }, /* @__PURE__ */ React27.createElement(Viewport.Views, null, /* @__PURE__ */ React27.createElement(Viewport.View, {
1657
+ }, /* @__PURE__ */ React25.createElement(Viewport.Views, null, /* @__PURE__ */ React25.createElement(Viewport.View, {
1907
1658
  id: "identity action chooser",
1908
1659
  classNames: viewStyles
1909
- }, /* @__PURE__ */ React27.createElement(IdentityActionChooserComponent, {
1660
+ }, /* @__PURE__ */ React25.createElement(IdentityActionChooserComponent, {
1910
1661
  active: activeView === "identity action chooser",
1911
1662
  ...rest,
1912
1663
  connectionState
1913
- })), /* @__PURE__ */ React27.createElement(Viewport.View, {
1664
+ })), /* @__PURE__ */ React25.createElement(Viewport.View, {
1914
1665
  id: "device invitation manager",
1915
1666
  classNames: viewStyles
1916
- }, /* @__PURE__ */ React27.createElement(InvitationManagerComponent, {
1667
+ }, /* @__PURE__ */ React25.createElement(InvitationManagerComponent, {
1917
1668
  active: activeView === "device invitation manager",
1918
1669
  ...rest,
1919
1670
  invitationUrl: rest.createInvitationUrl(rest.invitationCode)
1920
- })), /* @__PURE__ */ React27.createElement(Viewport.View, {
1671
+ })), /* @__PURE__ */ React25.createElement(Viewport.View, {
1921
1672
  classNames: viewStyles,
1922
1673
  id: "confirm join new identity"
1923
- }, /* @__PURE__ */ React27.createElement(ConfirmReset, {
1674
+ }, /* @__PURE__ */ React25.createElement(ConfirmReset, {
1924
1675
  active: activeView === "confirm join new identity",
1925
1676
  ...rest,
1926
1677
  mode: "join new identity",
1927
1678
  onConfirm: onJoinNewIdentity,
1928
1679
  onCancel: onCancelReset
1929
- })), /* @__PURE__ */ React27.createElement(Viewport.View, {
1680
+ })), /* @__PURE__ */ React25.createElement(Viewport.View, {
1930
1681
  classNames: viewStyles,
1931
1682
  id: "confirm recover"
1932
- }, /* @__PURE__ */ React27.createElement(ConfirmReset, {
1683
+ }, /* @__PURE__ */ React25.createElement(ConfirmReset, {
1933
1684
  active: activeView === "confirm recover",
1934
1685
  ...rest,
1935
1686
  mode: "recover",
1936
1687
  onConfirm: onRecover,
1937
1688
  onCancel: onCancelReset
1938
- })), /* @__PURE__ */ React27.createElement(Viewport.View, {
1689
+ })), /* @__PURE__ */ React25.createElement(Viewport.View, {
1939
1690
  classNames: viewStyles,
1940
1691
  id: "confirm reset storage"
1941
- }, /* @__PURE__ */ React27.createElement(ConfirmReset, {
1692
+ }, /* @__PURE__ */ React25.createElement(ConfirmReset, {
1942
1693
  active: activeView === "confirm reset storage",
1943
1694
  ...rest,
1944
1695
  mode: "reset storage",
@@ -1948,7 +1699,7 @@ var IdentityPanelImpl = (props) => {
1948
1699
  };
1949
1700
  var IdentityPanelWithInvitationImpl = ({ invitation, ...props }) => {
1950
1701
  const invitationStatus = useInvitationStatus2(invitation);
1951
- return /* @__PURE__ */ React27.createElement(IdentityPanelImpl, {
1702
+ return /* @__PURE__ */ React25.createElement(IdentityPanelImpl, {
1952
1703
  ...props,
1953
1704
  ...invitationStatus
1954
1705
  });
@@ -1966,7 +1717,7 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
1966
1717
  if (!identity) {
1967
1718
  log7.error("IdentityPanel rendered with no active identity.", void 0, {
1968
1719
  F: __dxlog_file6,
1969
- L: 255,
1720
+ L: 272,
1970
1721
  S: void 0,
1971
1722
  C: (f, a) => f(...a)
1972
1723
  });
@@ -1983,7 +1734,7 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
1983
1734
  const subscription = identityService.subscribe((state) => {
1984
1735
  log7("[state]", state, {
1985
1736
  F: __dxlog_file6,
1986
- L: 268,
1737
+ L: 285,
1987
1738
  S: void 0,
1988
1739
  C: (f, a) => f(...a)
1989
1740
  });
@@ -2029,40 +1780,40 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
2029
1780
  onChangeConnectionState: handleChangeConnectionState,
2030
1781
  ...agentProps
2031
1782
  };
2032
- return identityState.context.invitation ? /* @__PURE__ */ React27.createElement(IdentityPanelWithInvitationImpl, {
1783
+ return identityState.context.invitation ? /* @__PURE__ */ React25.createElement(IdentityPanelWithInvitationImpl, {
2033
1784
  ...implProps,
2034
1785
  invitation: identityState.context.invitation
2035
- }) : /* @__PURE__ */ React27.createElement(IdentityPanelImpl, implProps);
1786
+ }) : /* @__PURE__ */ React25.createElement(IdentityPanelImpl, implProps);
2036
1787
  };
2037
1788
 
2038
1789
  // packages/sdk/shell/src/panels/JoinPanel/JoinPanel.tsx
2039
- import React36, { useCallback as useCallback6, useEffect as useEffect6, useMemo as useMemo4 } from "react";
1790
+ import React34, { useCallback as useCallback6, useEffect as useEffect6, useMemo as useMemo4 } from "react";
2040
1791
  import { log as log11 } from "@dxos/log";
2041
1792
  import { useClient as useClient8, useMulticastObservable } from "@dxos/react-client";
2042
1793
  import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
2043
- import { useId as useId8, useThemeContext as useThemeContext5 } from "@dxos/react-ui";
1794
+ import { useId as useId8, useThemeContext as useThemeContext3 } from "@dxos/react-ui";
2044
1795
 
2045
1796
  // packages/sdk/shell/src/panels/JoinPanel/JoinHeading.tsx
2046
1797
  import { X as X4 } from "@phosphor-icons/react";
2047
- import React28, { cloneElement, forwardRef as forwardRef9 } from "react";
2048
- import { Button as Button9, useTranslation as useTranslation14 } from "@dxos/react-ui";
2049
- import { descriptionText as descriptionText9, getSize as getSize13, mx as mx21 } from "@dxos/react-ui-theme";
1798
+ import React26, { cloneElement, forwardRef as forwardRef9 } from "react";
1799
+ import { Button as Button7, useTranslation as useTranslation12 } from "@dxos/react-ui";
1800
+ import { descriptionText as descriptionText9, getSize as getSize11, mx as mx20 } from "@dxos/react-ui-theme";
2050
1801
  var JoinHeading = /* @__PURE__ */ forwardRef9(({ mode, titleId, exitActionParent, onExit }, forwardedRef) => {
2051
- const { t } = useTranslation14("os");
2052
- const exitButton = /* @__PURE__ */ React28.createElement(Button9, {
1802
+ const { t } = useTranslation12("os");
1803
+ const exitButton = /* @__PURE__ */ React26.createElement(Button7, {
2053
1804
  variant: "ghost",
2054
1805
  ...onExit && {
2055
1806
  onClick: onExit
2056
1807
  },
2057
- classNames: mx21(descriptionText9, "plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
1808
+ classNames: mx20(descriptionText9, "plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
2058
1809
  "data-testid": "join-exit"
2059
- }, /* @__PURE__ */ React28.createElement(X4, {
1810
+ }, /* @__PURE__ */ React26.createElement(X4, {
2060
1811
  weight: "bold",
2061
- className: getSize13(4)
2062
- }), /* @__PURE__ */ React28.createElement("span", {
1812
+ className: getSize11(4)
1813
+ }), /* @__PURE__ */ React26.createElement("span", {
2063
1814
  className: "sr-only"
2064
1815
  }, t("exit label")));
2065
- return /* @__PURE__ */ React28.createElement(Heading, {
1816
+ return /* @__PURE__ */ React26.createElement(Heading, {
2066
1817
  ref: forwardedRef,
2067
1818
  titleId,
2068
1819
  title: t(mode === "halo-only" ? "selecting identity heading" : "joining space heading"),
@@ -2680,17 +2431,17 @@ var useJoinMachine = (client, options) => {
2680
2431
 
2681
2432
  // packages/sdk/shell/src/panels/JoinPanel/steps/AdditionMethodChooser.tsx
2682
2433
  import { CaretRight as CaretRight2, Plus as Plus3, QrCode, Textbox } from "@phosphor-icons/react";
2683
- import React29 from "react";
2684
- import { useTranslation as useTranslation15 } from "@dxos/react-ui";
2685
- import { getSize as getSize14 } from "@dxos/react-ui-theme";
2434
+ import React27 from "react";
2435
+ import { useTranslation as useTranslation13 } from "@dxos/react-ui";
2436
+ import { getSize as getSize12 } from "@dxos/react-ui-theme";
2686
2437
  var AdditionMethodChooser = (viewStateProps) => {
2687
2438
  const disabled = !viewStateProps.active;
2688
2439
  const { send } = viewStateProps;
2689
- const { t } = useTranslation15("os");
2440
+ const { t } = useTranslation13("os");
2690
2441
  const sharedButtonProps = {
2691
2442
  disabled,
2692
- after: /* @__PURE__ */ React29.createElement(CaretRight2, {
2693
- className: getSize14(4),
2443
+ after: /* @__PURE__ */ React27.createElement(CaretRight2, {
2444
+ className: getSize12(4),
2694
2445
  weight: "bold"
2695
2446
  }),
2696
2447
  slots: {
@@ -2699,35 +2450,35 @@ var AdditionMethodChooser = (viewStateProps) => {
2699
2450
  }
2700
2451
  }
2701
2452
  };
2702
- return /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(StepHeading, null, t("addition method chooser title")), /* @__PURE__ */ React29.createElement("div", {
2453
+ return /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(StepHeading, null, t("addition method chooser title")), /* @__PURE__ */ React27.createElement("div", {
2703
2454
  role: "none",
2704
2455
  className: "flex flex-col gap-1 grow"
2705
- }, /* @__PURE__ */ React29.createElement(CompoundButton, {
2456
+ }, /* @__PURE__ */ React27.createElement(CompoundButton, {
2706
2457
  ...sharedButtonProps,
2707
2458
  description: t("create identity description"),
2708
- before: /* @__PURE__ */ React29.createElement(Plus3, {
2709
- className: getSize14(6)
2459
+ before: /* @__PURE__ */ React27.createElement(Plus3, {
2460
+ className: getSize12(6)
2710
2461
  }),
2711
2462
  onClick: () => send({
2712
2463
  type: "createIdentity"
2713
2464
  }),
2714
2465
  "data-autofocus": "choosingAuthMethod",
2715
2466
  "data-testid": "identity-chooser.create-identity"
2716
- }, t("create identity label")), /* @__PURE__ */ React29.createElement(CompoundButton, {
2467
+ }, t("create identity label")), /* @__PURE__ */ React27.createElement(CompoundButton, {
2717
2468
  ...sharedButtonProps,
2718
2469
  description: t("join identity description"),
2719
- before: /* @__PURE__ */ React29.createElement(QrCode, {
2720
- className: getSize14(6)
2470
+ before: /* @__PURE__ */ React27.createElement(QrCode, {
2471
+ className: getSize12(6)
2721
2472
  }),
2722
2473
  onClick: () => send({
2723
2474
  type: "acceptHaloInvitation"
2724
2475
  }),
2725
2476
  "data-testid": "identity-chooser.join-identity"
2726
- }, t("join identity label")), /* @__PURE__ */ React29.createElement(CompoundButton, {
2477
+ }, t("join identity label")), /* @__PURE__ */ React27.createElement(CompoundButton, {
2727
2478
  ...sharedButtonProps,
2728
2479
  description: t("recover identity description"),
2729
- before: /* @__PURE__ */ React29.createElement(Textbox, {
2730
- className: getSize14(6)
2480
+ before: /* @__PURE__ */ React27.createElement(Textbox, {
2481
+ className: getSize12(6)
2731
2482
  }),
2732
2483
  onClick: () => send({
2733
2484
  type: "recoverIdentity"
@@ -2737,39 +2488,39 @@ var AdditionMethodChooser = (viewStateProps) => {
2737
2488
  };
2738
2489
 
2739
2490
  // packages/sdk/shell/src/panels/JoinPanel/steps/IdentityAdded.tsx
2740
- import React30, { cloneElement as cloneElement2 } from "react";
2491
+ import React28, { cloneElement as cloneElement2 } from "react";
2741
2492
  import { generateName as generateName4 } from "@dxos/display-name";
2742
- import { Avatar as Avatar7, useId as useId7, useTranslation as useTranslation16 } from "@dxos/react-ui";
2743
- import { mx as mx22 } from "@dxos/react-ui-theme";
2493
+ import { Avatar as Avatar7, useId as useId7, useTranslation as useTranslation14 } from "@dxos/react-ui";
2494
+ import { mx as mx21 } from "@dxos/react-ui-theme";
2744
2495
  import { hexToFallback } from "@dxos/util";
2745
2496
  var IdentityAdded = (props) => {
2746
2497
  const { mode, addedIdentity, active, send, onDone, doneActionParent } = props;
2747
2498
  const disabled = !active;
2748
- const { t } = useTranslation16("os");
2499
+ const { t } = useTranslation14("os");
2749
2500
  const addedIdentityHex = addedIdentity?.identityKey.toHex() ?? "0";
2750
2501
  const fallbackValue = hexToFallback(addedIdentityHex);
2751
2502
  const labelId = useId7("identityListItem__label");
2752
2503
  const displayName = addedIdentity?.profile?.displayName ?? (addedIdentity && generateName4(addedIdentityHex));
2753
- const doneAction = /* @__PURE__ */ React30.createElement(Action, {
2504
+ const doneAction = /* @__PURE__ */ React28.createElement(Action, {
2754
2505
  ...onDone && {
2755
2506
  onClick: () => onDone(null)
2756
2507
  },
2757
2508
  disabled,
2758
2509
  "data-autofocus": "confirmingAddedIdentity",
2759
2510
  "data-testid": "identity-added-done"
2760
- }, /* @__PURE__ */ React30.createElement("span", null, t("done label")));
2761
- return /* @__PURE__ */ React30.createElement(React30.Fragment, null, /* @__PURE__ */ React30.createElement(StepHeading, null, t("identity added label")), /* @__PURE__ */ React30.createElement("div", {
2511
+ }, /* @__PURE__ */ React28.createElement("span", null, t("done label")));
2512
+ return /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(StepHeading, null, t("identity added label")), /* @__PURE__ */ React28.createElement("div", {
2762
2513
  role: "none",
2763
2514
  className: "grow flex flex-col items-center justify-center text-center gap-2"
2764
- }, /* @__PURE__ */ React30.createElement(Avatar7.Root, {
2515
+ }, /* @__PURE__ */ React28.createElement(Avatar7.Root, {
2765
2516
  status: "active",
2766
2517
  labelId,
2767
2518
  hue: addedIdentity?.profile?.data?.hue || fallbackValue.hue
2768
- }, /* @__PURE__ */ React30.createElement(Avatar7.Frame, null, /* @__PURE__ */ React30.createElement(Avatar7.Fallback, {
2519
+ }, /* @__PURE__ */ React28.createElement(Avatar7.Frame, null, /* @__PURE__ */ React28.createElement(Avatar7.Fallback, {
2769
2520
  text: addedIdentity?.profile?.data?.emoji || fallbackValue.emoji
2770
- })), /* @__PURE__ */ React30.createElement(Avatar7.Label, {
2771
- classNames: mx22("text-lg truncate", !addedIdentity?.profile?.displayName && "font-mono")
2772
- }, displayName))), /* @__PURE__ */ React30.createElement(Actions, null, mode === "halo-only" ? doneActionParent ? /* @__PURE__ */ cloneElement2(doneActionParent, {}, doneAction) : doneAction : /* @__PURE__ */ React30.createElement(Action, {
2521
+ })), /* @__PURE__ */ React28.createElement(Avatar7.Label, {
2522
+ classNames: mx21("text-lg truncate", !addedIdentity?.profile?.displayName && "font-mono")
2523
+ }, displayName))), /* @__PURE__ */ React28.createElement(Actions, null, mode === "halo-only" ? doneActionParent ? /* @__PURE__ */ cloneElement2(doneActionParent, {}, doneAction) : doneAction : /* @__PURE__ */ React28.createElement(Action, {
2773
2524
  variant: "primary",
2774
2525
  disabled: disabled || !addedIdentity,
2775
2526
  onClick: () => addedIdentity && send({
@@ -2781,21 +2532,21 @@ var IdentityAdded = (props) => {
2781
2532
  };
2782
2533
 
2783
2534
  // packages/sdk/shell/src/panels/JoinPanel/steps/IdentityInput.tsx
2784
- import React31, { useCallback as useCallback5, useState as useState8 } from "react";
2535
+ import React29, { useCallback as useCallback5, useState as useState6 } from "react";
2785
2536
  import { log as log9 } from "@dxos/log";
2786
2537
  import { useClient as useClient7 } from "@dxos/react-client";
2787
- import { useTranslation as useTranslation17 } from "@dxos/react-ui";
2538
+ import { useTranslation as useTranslation15 } from "@dxos/react-ui";
2788
2539
  var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/steps/IdentityInput.tsx";
2789
2540
  var IdentityInput = (props) => {
2790
2541
  const { send, method } = props;
2791
2542
  const isRecover = method === "recover identity";
2792
2543
  const client = useClient7();
2793
- const { t } = useTranslation17("os");
2794
- const [validationMessage, setValidationMessage] = useState8("");
2544
+ const { t } = useTranslation15("os");
2545
+ const [validationMessage, setValidationMessage] = useState6("");
2795
2546
  const handleConfirm = async (value) => {
2796
2547
  if (isRecover) {
2797
2548
  await client.halo.recoverIdentity({
2798
- seedphrase: value
2549
+ recoveryCode: value
2799
2550
  }).then((identity) => {
2800
2551
  send?.({
2801
2552
  type: "selectIdentity",
@@ -2829,7 +2580,7 @@ var IdentityInput = (props) => {
2829
2580
  });
2830
2581
  }
2831
2582
  };
2832
- return /* @__PURE__ */ React31.createElement(IdentityInputImpl, {
2583
+ return /* @__PURE__ */ React29.createElement(IdentityInputImpl, {
2833
2584
  ...props,
2834
2585
  onConfirm: handleConfirm,
2835
2586
  validationMessage
@@ -2837,9 +2588,9 @@ var IdentityInput = (props) => {
2837
2588
  };
2838
2589
  var IdentityInputImpl = (props) => {
2839
2590
  const { method, active, onConfirm, validationMessage } = props;
2840
- const { t } = useTranslation17("os");
2841
- const [inputValue, setInputValue] = useState8("");
2842
- const [pending, setPending] = useState8(false);
2591
+ const { t } = useTranslation15("os");
2592
+ const [inputValue, setInputValue] = useState6("");
2593
+ const [pending, setPending] = useState6(false);
2843
2594
  const disabled = !active || pending;
2844
2595
  const isRecover = method === "recover identity";
2845
2596
  const handleConfirm = useCallback5(async () => {
@@ -2850,17 +2601,17 @@ var IdentityInputImpl = (props) => {
2850
2601
  onConfirm,
2851
2602
  inputValue
2852
2603
  ]);
2853
- return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement("div", {
2604
+ return /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("div", {
2854
2605
  role: "none",
2855
2606
  className: "grow flex flex-col justify-center"
2856
- }, /* @__PURE__ */ React31.createElement(Input, {
2607
+ }, /* @__PURE__ */ React29.createElement(Input, {
2857
2608
  validationMessage,
2858
- label: /* @__PURE__ */ React31.createElement(StepHeading, null, t(isRecover ? "recover identity input label" : "new identity input label")),
2609
+ label: /* @__PURE__ */ React29.createElement(StepHeading, null, t(isRecover ? "recover identity input label" : "new identity input label")),
2859
2610
  disabled,
2860
2611
  "data-testid": "identity-input",
2861
2612
  placeholder: isRecover ? t("recovery code placeholder") : t("display name placeholder"),
2862
2613
  onChange: ({ target: { value } }) => setInputValue(value)
2863
- })), /* @__PURE__ */ React31.createElement(Actions, null, /* @__PURE__ */ React31.createElement(Action, {
2614
+ })), /* @__PURE__ */ React29.createElement(Actions, null, /* @__PURE__ */ React29.createElement(Action, {
2864
2615
  variant: "primary",
2865
2616
  disabled: disabled || inputValue.trim().length === 0,
2866
2617
  onClick: handleConfirm,
@@ -2869,13 +2620,13 @@ var IdentityInputImpl = (props) => {
2869
2620
  };
2870
2621
 
2871
2622
  // packages/sdk/shell/src/panels/JoinPanel/steps/InvitationAccepted.tsx
2872
- import React32, { cloneElement as cloneElement3 } from "react";
2873
- import { useTranslation as useTranslation18 } from "@dxos/react-ui";
2623
+ import React30, { cloneElement as cloneElement3 } from "react";
2624
+ import { useTranslation as useTranslation16 } from "@dxos/react-ui";
2874
2625
 
2875
2626
  // packages/sdk/shell/src/panels/JoinPanel/steps/InvitationInput.tsx
2876
- import React33, { useState as useState9, useEffect as useEffect5, cloneElement as cloneElement4 } from "react";
2627
+ import React31, { useState as useState7, useEffect as useEffect5, cloneElement as cloneElement4 } from "react";
2877
2628
  import { log as log10 } from "@dxos/log";
2878
- import { useTranslation as useTranslation19 } from "@dxos/react-ui";
2629
+ import { useTranslation as useTranslation17 } from "@dxos/react-ui";
2879
2630
  var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/steps/InvitationInput.tsx";
2880
2631
  var invitationCodeFromUrl = (text) => {
2881
2632
  try {
@@ -2895,8 +2646,8 @@ var invitationCodeFromUrl = (text) => {
2895
2646
  var InvitationInput = (props) => {
2896
2647
  const { Kind, active, send, unredeemedCode, onExit, exitActionParent, onDone, doneActionParent, succeededKeys } = props;
2897
2648
  const disabled = !active;
2898
- const { t } = useTranslation19("os");
2899
- const [inputValue, setInputValue] = useState9(unredeemedCode ?? "");
2649
+ const { t } = useTranslation17("os");
2650
+ const [inputValue, setInputValue] = useState7(unredeemedCode ?? "");
2900
2651
  useEffect5(() => {
2901
2652
  unredeemedCode && setInputValue(unredeemedCode ?? "");
2902
2653
  }, [
@@ -2914,7 +2665,7 @@ var InvitationInput = (props) => {
2914
2665
  }
2915
2666
  });
2916
2667
  };
2917
- const exitAction = /* @__PURE__ */ React33.createElement(Action, {
2668
+ const exitAction = /* @__PURE__ */ React31.createElement(Action, {
2918
2669
  variant: "ghost",
2919
2670
  disabled,
2920
2671
  ...onExit ? {
@@ -2924,11 +2675,11 @@ var InvitationInput = (props) => {
2924
2675
  },
2925
2676
  "data-testid": "join-exit"
2926
2677
  }, t("cancel label"));
2927
- return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement("div", {
2678
+ return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement("div", {
2928
2679
  role: "none",
2929
2680
  className: "grow flex flex-col justify-center"
2930
- }, /* @__PURE__ */ React33.createElement(Input, {
2931
- label: /* @__PURE__ */ React33.createElement(StepHeading, null, t("invitation input label")),
2681
+ }, /* @__PURE__ */ React31.createElement(Input, {
2682
+ label: /* @__PURE__ */ React31.createElement(StepHeading, null, t("invitation input label")),
2932
2683
  placeholder: t("invitation input placeholder"),
2933
2684
  disabled,
2934
2685
  value: inputValue,
@@ -2936,7 +2687,7 @@ var InvitationInput = (props) => {
2936
2687
  "data-autofocus": `inputting${Kind}InvitationCode`,
2937
2688
  "data-testid": `${Kind.toLowerCase()}-invitation-input`,
2938
2689
  onKeyUp: ({ key }) => key === "Enter" && handleNext()
2939
- })), /* @__PURE__ */ React33.createElement(Actions, null, Kind === "Halo" ? null : exitActionParent ? /* @__PURE__ */ cloneElement4(exitActionParent, {}, exitAction) : doneActionParent ? /* @__PURE__ */ cloneElement4(doneActionParent, {}, exitAction) : exitAction, /* @__PURE__ */ React33.createElement(Action, {
2690
+ })), /* @__PURE__ */ React31.createElement(Actions, null, Kind === "Halo" ? null : exitActionParent ? /* @__PURE__ */ cloneElement4(exitActionParent, {}, exitAction) : doneActionParent ? /* @__PURE__ */ cloneElement4(doneActionParent, {}, exitAction) : exitAction, /* @__PURE__ */ React31.createElement(Action, {
2940
2691
  variant: "primary",
2941
2692
  disabled: disabled || inputValue.trim().length === 0,
2942
2693
  onClick: handleNext,
@@ -2945,8 +2696,8 @@ var InvitationInput = (props) => {
2945
2696
  };
2946
2697
 
2947
2698
  // packages/sdk/shell/src/panels/JoinPanel/steps/InvitationRescuer.tsx
2948
- import React34 from "react";
2949
- import { useTranslation as useTranslation20 } from "@dxos/react-ui";
2699
+ import React32 from "react";
2700
+ import { useTranslation as useTranslation18 } from "@dxos/react-ui";
2950
2701
  import { descriptionText as descriptionText10 } from "@dxos/react-ui-theme";
2951
2702
  var InvitationActions = ({
2952
2703
  // `invitationState` does report correct state, but here we evaluate whether `failReason` is a better source of truth
@@ -2958,14 +2709,14 @@ var InvitationActions = ({
2958
2709
  Kind,
2959
2710
  failReason
2960
2711
  }) => {
2961
- const { t } = useTranslation20("os");
2712
+ const { t } = useTranslation18("os");
2962
2713
  if (failReason) {
2963
- return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(StepHeading, {
2714
+ return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(StepHeading, {
2964
2715
  className: descriptionText10
2965
- }, t(failReason === "timeout" ? "timeout status label" : failReason === "cancelled" ? "cancelled status label" : "error status label")), /* @__PURE__ */ React34.createElement("div", {
2716
+ }, t(failReason === "timeout" ? "timeout status label" : failReason === "cancelled" ? "cancelled status label" : "error status label")), /* @__PURE__ */ React32.createElement("div", {
2966
2717
  role: "none",
2967
2718
  className: "grow"
2968
- }), /* @__PURE__ */ React34.createElement(Actions, null, /* @__PURE__ */ React34.createElement(Action, {
2719
+ }), /* @__PURE__ */ React32.createElement(Actions, null, /* @__PURE__ */ React32.createElement(Action, {
2969
2720
  disabled: !active,
2970
2721
  onClick: () => send({
2971
2722
  type: `reset${Kind}Invitation`
@@ -2973,16 +2724,16 @@ var InvitationActions = ({
2973
2724
  "data-testid": "invitation-rescuer-reset"
2974
2725
  }, t("reset label"))));
2975
2726
  } else {
2976
- return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(StepHeading, {
2727
+ return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(StepHeading, {
2977
2728
  className: descriptionText10
2978
- }, t("connecting status label")), /* @__PURE__ */ React34.createElement("div", {
2729
+ }, t("connecting status label")), /* @__PURE__ */ React32.createElement("div", {
2979
2730
  role: "none",
2980
2731
  className: "grow"
2981
- }), /* @__PURE__ */ React34.createElement(Actions, null, /* @__PURE__ */ React34.createElement(Action, {
2732
+ }), /* @__PURE__ */ React32.createElement(Actions, null, /* @__PURE__ */ React32.createElement(Action, {
2982
2733
  disabled: true,
2983
2734
  classNames: "order-2",
2984
2735
  "data-testid": "next"
2985
- }, t("next label")), /* @__PURE__ */ React34.createElement(Action, {
2736
+ }, t("next label")), /* @__PURE__ */ React32.createElement(Action, {
2986
2737
  disabled: !active,
2987
2738
  onClick: onInvitationCancel,
2988
2739
  "data-testid": "invitation-rescuer-cancel"
@@ -2991,52 +2742,52 @@ var InvitationActions = ({
2991
2742
  };
2992
2743
  var InvitationRescuer = (props) => {
2993
2744
  const { Kind, invitationState, active, send } = props;
2994
- const { t } = useTranslation20("os");
2995
- return /* @__PURE__ */ React34.createElement(React34.Fragment, null, typeof invitationState === "undefined" ? /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement("div", {
2745
+ const { t } = useTranslation18("os");
2746
+ return /* @__PURE__ */ React32.createElement(React32.Fragment, null, typeof invitationState === "undefined" ? /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement("div", {
2996
2747
  role: "none",
2997
2748
  className: "grow flex flex-col justify-center"
2998
- }, /* @__PURE__ */ React34.createElement(StepHeading, {
2749
+ }, /* @__PURE__ */ React32.createElement(StepHeading, {
2999
2750
  className: descriptionText10
3000
- }, "There was a problem joining the space")), /* @__PURE__ */ React34.createElement(Actions, null, /* @__PURE__ */ React34.createElement(Action, {
2751
+ }, "There was a problem joining the space")), /* @__PURE__ */ React32.createElement(Actions, null, /* @__PURE__ */ React32.createElement(Action, {
3001
2752
  disabled: !active,
3002
2753
  "data-testid": "invitation-rescuer-blank-reset",
3003
2754
  onClick: () => send({
3004
2755
  type: `reset${Kind}Invitation`
3005
2756
  })
3006
- }, t("reset label")))) : /* @__PURE__ */ React34.createElement(InvitationActions, props));
2757
+ }, t("reset label")))) : /* @__PURE__ */ React32.createElement(InvitationActions, props));
3007
2758
  };
3008
2759
 
3009
2760
  // packages/sdk/shell/src/panels/JoinPanel/steps/InvitationAuthenticator.tsx
3010
- import React35, { useState as useState10 } from "react";
2761
+ import React33, { useState as useState8 } from "react";
3011
2762
  import { Invitation as Invitation6 } from "@dxos/react-client/invitations";
3012
- import { Input as Input3, useTranslation as useTranslation21 } from "@dxos/react-ui";
2763
+ import { Input as Input3, useTranslation as useTranslation19 } from "@dxos/react-ui";
3013
2764
  import { descriptionText as descriptionText11 } from "@dxos/react-ui-theme";
3014
2765
  import { hexToEmoji as hexToEmoji5 } from "@dxos/util";
3015
2766
  var pinLength = 6;
3016
2767
  var InvitationAuthenticator = ({ failed, Kind, authMethod, active, pending, invitationId, onInvitationAuthenticate, onInvitationCancel }) => {
3017
2768
  const disabled = !active || pending;
3018
- const { t } = useTranslation21("os");
2769
+ const { t } = useTranslation19("os");
3019
2770
  const invitationType = Kind.toLowerCase();
3020
- const [authCode, setAuthCode] = useState10("");
2771
+ const [authCode, setAuthCode] = useState8("");
3021
2772
  const onChange = ({ target: { value } }) => {
3022
2773
  setAuthCode(value);
3023
2774
  if (value.length === pinLength) {
3024
2775
  document.querySelector(`[data-autofocus-pinlength="${invitationType}"]`)?.focus();
3025
2776
  }
3026
2777
  };
3027
- return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement("div", {
2778
+ return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement("div", {
3028
2779
  role: "none",
3029
2780
  className: "grow flex flex-col justify-center gap-4"
3030
- }, /* @__PURE__ */ React35.createElement(Input3.Root, failed && {
2781
+ }, /* @__PURE__ */ React33.createElement(Input3.Root, failed && {
3031
2782
  validationValence: "error"
3032
- }, /* @__PURE__ */ React35.createElement(Input3.Label, {
2783
+ }, /* @__PURE__ */ React33.createElement(Input3.Label, {
3033
2784
  asChild: true
3034
- }, authMethod === Invitation6.AuthMethod.SHARED_SECRET ? /* @__PURE__ */ React35.createElement(StepHeading, null, t("auth code input label")) : /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(StepHeading, {
2785
+ }, authMethod === Invitation6.AuthMethod.SHARED_SECRET ? /* @__PURE__ */ React33.createElement(StepHeading, null, t("auth code input label")) : /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement(StepHeading, {
3035
2786
  className: descriptionText11
3036
- }, t("authenticating label")), /* @__PURE__ */ React35.createElement("div", {
2787
+ }, t("authenticating label")), /* @__PURE__ */ React33.createElement("div", {
3037
2788
  role: "none",
3038
2789
  className: "grow"
3039
- }))), authMethod === Invitation6.AuthMethod.SHARED_SECRET && /* @__PURE__ */ React35.createElement(Input3.PinInput, {
2790
+ }))), authMethod === Invitation6.AuthMethod.SHARED_SECRET && /* @__PURE__ */ React33.createElement(Input3.PinInput, {
3040
2791
  disabled,
3041
2792
  length: pinLength,
3042
2793
  onChange,
@@ -3047,18 +2798,18 @@ var InvitationAuthenticator = ({ failed, Kind, authMethod, active, pending, invi
3047
2798
  "data-prevent-ios-autofocus": true,
3048
2799
  "data-testid": `${invitationType}-auth-code-input`,
3049
2800
  "data-1p-ignore": true
3050
- }), failed && /* @__PURE__ */ React35.createElement(Input3.DescriptionAndValidation, {
2801
+ }), failed && /* @__PURE__ */ React33.createElement(Input3.DescriptionAndValidation, {
3051
2802
  classNames: "text-center"
3052
- }, /* @__PURE__ */ React35.createElement(Input3.Validation, null, t("failed to authenticate message")))), invitationId && authMethod === Invitation6.AuthMethod.SHARED_SECRET && /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(Label, null, t("auth other device emoji message")), /* @__PURE__ */ React35.createElement("div", {
2803
+ }, /* @__PURE__ */ React33.createElement(Input3.Validation, null, t("failed to authenticate message")))), invitationId && authMethod === Invitation6.AuthMethod.SHARED_SECRET && /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement(Label, null, t("auth other device emoji message")), /* @__PURE__ */ React33.createElement("div", {
3053
2804
  className: "flex justify-center"
3054
- }, /* @__PURE__ */ React35.createElement(Emoji, {
2805
+ }, /* @__PURE__ */ React33.createElement(Emoji, {
3055
2806
  text: hexToEmoji5(invitationId)
3056
- })))), /* @__PURE__ */ React35.createElement(Actions, null, /* @__PURE__ */ React35.createElement(Action, {
2807
+ })))), /* @__PURE__ */ React33.createElement(Actions, null, /* @__PURE__ */ React33.createElement(Action, {
3057
2808
  variant: "ghost",
3058
2809
  disabled,
3059
2810
  onClick: () => onInvitationCancel?.(),
3060
2811
  "data-testid": `${invitationType}-invitation-authenticator-cancel`
3061
- }, t("cancel label")), /* @__PURE__ */ React35.createElement(Action, {
2812
+ }, t("cancel label")), /* @__PURE__ */ React33.createElement(Action, {
3062
2813
  variant: "primary",
3063
2814
  disabled,
3064
2815
  onClick: () => onInvitationAuthenticate?.(authCode),
@@ -3120,46 +2871,46 @@ var JoinPanelImpl = (props) => {
3120
2871
  IdentityInput: IdentityInputComponent = IdentityInput,
3121
2872
  ConfirmReset: ConfirmResetComponent = ConfirmReset
3122
2873
  } = props;
3123
- return /* @__PURE__ */ React36.createElement(React36.Fragment, null, mode !== "halo-only" && /* @__PURE__ */ React36.createElement(JoinHeading, {
2874
+ return /* @__PURE__ */ React34.createElement(React34.Fragment, null, mode !== "halo-only" && /* @__PURE__ */ React34.createElement(JoinHeading, {
3124
2875
  titleId,
3125
2876
  mode,
3126
2877
  onExit,
3127
2878
  exitActionParent
3128
- }), /* @__PURE__ */ React36.createElement(Viewport.Root, {
2879
+ }), /* @__PURE__ */ React34.createElement(Viewport.Root, {
3129
2880
  focusManaged: true,
3130
2881
  activeView
3131
- }, /* @__PURE__ */ React36.createElement(Viewport.Views, null, /* @__PURE__ */ React36.createElement(Viewport.View, {
2882
+ }, /* @__PURE__ */ React34.createElement(Viewport.Views, null, /* @__PURE__ */ React34.createElement(Viewport.View, {
3132
2883
  classNames: stepStyles,
3133
2884
  id: "addition method chooser"
3134
- }, /* @__PURE__ */ React36.createElement(AdditionMethodChooser, {
2885
+ }, /* @__PURE__ */ React34.createElement(AdditionMethodChooser, {
3135
2886
  send,
3136
2887
  active: activeView === "addition method chooser"
3137
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2888
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3138
2889
  classNames: stepStyles,
3139
2890
  id: "reset storage confirmation"
3140
- }, /* @__PURE__ */ React36.createElement(ConfirmResetComponent, {
2891
+ }, /* @__PURE__ */ React34.createElement(ConfirmResetComponent, {
3141
2892
  send,
3142
2893
  active: activeView === "reset storage confirmation",
3143
2894
  onCancel: onCancelResetStorage,
3144
2895
  onConfirm: onConfirmResetStorage
3145
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2896
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3146
2897
  classNames: stepStyles,
3147
2898
  id: "create identity input"
3148
- }, /* @__PURE__ */ React36.createElement(IdentityInputComponent, {
2899
+ }, /* @__PURE__ */ React34.createElement(IdentityInputComponent, {
3149
2900
  send,
3150
2901
  method: "create identity",
3151
2902
  active: activeView === "create identity input"
3152
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2903
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3153
2904
  classNames: stepStyles,
3154
2905
  id: "recover identity input"
3155
- }, /* @__PURE__ */ React36.createElement(IdentityInputComponent, {
2906
+ }, /* @__PURE__ */ React34.createElement(IdentityInputComponent, {
3156
2907
  send,
3157
2908
  method: "recover identity",
3158
2909
  active: activeView === "recover identity input"
3159
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2910
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3160
2911
  classNames: stepStyles,
3161
2912
  id: "halo invitation input"
3162
- }, /* @__PURE__ */ React36.createElement(InvitationInput, {
2913
+ }, /* @__PURE__ */ React34.createElement(InvitationInput, {
3163
2914
  send,
3164
2915
  Kind: "Halo",
3165
2916
  active: activeView === "halo invitation input",
@@ -3169,20 +2920,20 @@ var JoinPanelImpl = (props) => {
3169
2920
  ...succeededKeys?.Halo && {
3170
2921
  succeededKeys: succeededKeys.Halo
3171
2922
  }
3172
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2923
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3173
2924
  classNames: stepStyles,
3174
2925
  id: "halo invitation rescuer"
3175
- }, /* @__PURE__ */ React36.createElement(InvitationRescuer, {
2926
+ }, /* @__PURE__ */ React34.createElement(InvitationRescuer, {
3176
2927
  send,
3177
2928
  Kind: "Halo",
3178
2929
  active: activeView === "halo invitation rescuer",
3179
2930
  invitationState: invitationStates?.Halo,
3180
2931
  onInvitationCancel: onHaloInvitationCancel,
3181
2932
  failReason: failReasons?.Halo
3182
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2933
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3183
2934
  classNames: stepStyles,
3184
2935
  id: "halo invitation authenticator"
3185
- }, /* @__PURE__ */ React36.createElement(InvitationAuthenticator, {
2936
+ }, /* @__PURE__ */ React34.createElement(InvitationAuthenticator, {
3186
2937
  send,
3187
2938
  Kind: "Halo",
3188
2939
  invitationId: invitationIds?.Halo,
@@ -3193,19 +2944,19 @@ var JoinPanelImpl = (props) => {
3193
2944
  ...failed.has("Halo") && {
3194
2945
  failed: true
3195
2946
  }
3196
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2947
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3197
2948
  classNames: stepStyles,
3198
2949
  id: "identity added"
3199
- }, /* @__PURE__ */ React36.createElement(IdentityAdded, {
2950
+ }, /* @__PURE__ */ React34.createElement(IdentityAdded, {
3200
2951
  send,
3201
2952
  mode,
3202
2953
  active: activeView === "identity added",
3203
2954
  doneActionParent,
3204
2955
  onDone: onHaloDone
3205
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2956
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3206
2957
  classNames: stepStyles,
3207
2958
  id: "space invitation input"
3208
- }, /* @__PURE__ */ React36.createElement(InvitationInput, {
2959
+ }, /* @__PURE__ */ React34.createElement(InvitationInput, {
3209
2960
  send,
3210
2961
  Kind: "Space",
3211
2962
  active: activeView === "space invitation input",
@@ -3217,20 +2968,20 @@ var JoinPanelImpl = (props) => {
3217
2968
  },
3218
2969
  onExit,
3219
2970
  exitActionParent
3220
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2971
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3221
2972
  classNames: stepStyles,
3222
2973
  id: "space invitation rescuer"
3223
- }, /* @__PURE__ */ React36.createElement(InvitationRescuer, {
2974
+ }, /* @__PURE__ */ React34.createElement(InvitationRescuer, {
3224
2975
  send,
3225
2976
  Kind: "Space",
3226
2977
  active: activeView === "space invitation rescuer",
3227
2978
  invitationState: invitationStates?.Space,
3228
2979
  onInvitationCancel: onSpaceInvitationCancel,
3229
2980
  failReason: failReasons?.Space
3230
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2981
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3231
2982
  classNames: stepStyles,
3232
2983
  id: "space invitation authenticator"
3233
- }, /* @__PURE__ */ React36.createElement(InvitationAuthenticator, {
2984
+ }, /* @__PURE__ */ React34.createElement(InvitationAuthenticator, {
3234
2985
  send,
3235
2986
  Kind: "Space",
3236
2987
  invitationId: invitationIds?.Space,
@@ -3246,7 +2997,7 @@ var JoinPanelImpl = (props) => {
3246
2997
  var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialDisposition = "default", initialInvitationCode, exitActionParent, onExit, doneActionParent, onDone: propsOnDone, onCancelResetStorage }) => {
3247
2998
  const client = useClient8();
3248
2999
  const identity = useIdentity2();
3249
- const { hasIosKeyboard } = useThemeContext5();
3000
+ const { hasIosKeyboard } = useThemeContext3();
3250
3001
  const titleId = useId8("joinPanel__heading", propsTitleId);
3251
3002
  const [joinState, joinSend, joinService] = useJoinMachine(client, {
3252
3003
  context: {
@@ -3508,7 +3259,7 @@ var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialDisposition =
3508
3259
  client,
3509
3260
  joinSend
3510
3261
  ]);
3511
- return /* @__PURE__ */ React36.createElement(JoinPanelImpl, {
3262
+ return /* @__PURE__ */ React34.createElement(JoinPanelImpl, {
3512
3263
  titleId,
3513
3264
  mode,
3514
3265
  send: joinSend,
@@ -3551,10 +3302,10 @@ var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialDisposition =
3551
3302
 
3552
3303
  // packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx
3553
3304
  import { Planet } from "@phosphor-icons/react";
3554
- import React38, { useEffect as useEffect7, useMemo as useMemo5 } from "react";
3305
+ import React36, { useEffect as useEffect7, useMemo as useMemo5 } from "react";
3555
3306
  import { log as log14 } from "@dxos/log";
3556
3307
  import { useInvitationStatus as useInvitationStatus3 } from "@dxos/react-client/invitations";
3557
- import { useId as useId9, useTranslation as useTranslation23 } from "@dxos/react-ui";
3308
+ import { useId as useId9, useTranslation as useTranslation21 } from "@dxos/react-ui";
3558
3309
 
3559
3310
  // packages/sdk/shell/src/panels/SpacePanel/spaceMachine.ts
3560
3311
  import { useMachine as useMachine3 } from "@xstate/react";
@@ -3620,13 +3371,13 @@ var useSpaceMachine = (options) => {
3620
3371
 
3621
3372
  // packages/sdk/shell/src/panels/SpacePanel/steps/SpaceManager.tsx
3622
3373
  import { Placeholder as Placeholder2, UserPlus, UsersThree } from "@phosphor-icons/react";
3623
- import React37, { useCallback as useCallback7, useState as useState11 } from "react";
3374
+ import React35, { useCallback as useCallback7, useState as useState9 } from "react";
3624
3375
  import { log as log13 } from "@dxos/log";
3625
3376
  import { useConfig } from "@dxos/react-client";
3626
3377
  import { useSpaceInvitations as useSpaceInvitations2 } from "@dxos/react-client/echo";
3627
3378
  import { Invitation as Invitation8, InvitationEncoder as InvitationEncoder4 } from "@dxos/react-client/invitations";
3628
- import { ScrollArea, useTranslation as useTranslation22 } from "@dxos/react-ui";
3629
- import { descriptionText as descriptionText12, mx as mx23 } from "@dxos/react-ui-theme";
3379
+ import { ScrollArea, useTranslation as useTranslation20 } from "@dxos/react-ui";
3380
+ import { descriptionText as descriptionText12, mx as mx22 } from "@dxos/react-ui-theme";
3630
3381
  var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/SpacePanel/steps/SpaceManager.tsx";
3631
3382
  var activeActionKey = "dxos:react-shell/space-manager/active-action";
3632
3383
  var handleInvitationEvent = (invitation, subscription) => {
@@ -3646,7 +3397,7 @@ var handleInvitationEvent = (invitation, subscription) => {
3646
3397
  };
3647
3398
  var SpaceManager = (props) => {
3648
3399
  const { space, target } = props;
3649
- const { t } = useTranslation22("os");
3400
+ const { t } = useTranslation20("os");
3650
3401
  const config = useConfig();
3651
3402
  const invitations = useSpaceInvitations2(space?.key);
3652
3403
  const inviteActions = {
@@ -3691,7 +3442,7 @@ var SpaceManager = (props) => {
3691
3442
  ])
3692
3443
  }
3693
3444
  };
3694
- return /* @__PURE__ */ React37.createElement(SpaceManagerImpl, {
3445
+ return /* @__PURE__ */ React35.createElement(SpaceManagerImpl, {
3695
3446
  ...props,
3696
3447
  invitations,
3697
3448
  inviteActions
@@ -3700,7 +3451,7 @@ var SpaceManager = (props) => {
3700
3451
  var headingFragment = "pis-3 pie-1 plb-1 mbe-1 font-medium";
3701
3452
  var SpaceManagerImpl = (props) => {
3702
3453
  const { active, space, createInvitationUrl, send, inviteActions: propsInviteActions, invitations, showInactiveInvitations, SpaceMemberList: SpaceMemberListComponent = SpaceMemberList, InvitationList: InvitationListComponent = InvitationList } = props;
3703
- const { t } = useTranslation22("os");
3454
+ const { t } = useTranslation20("os");
3704
3455
  const inviteActions = propsInviteActions ?? {
3705
3456
  noopInvite: {
3706
3457
  label: t("create space invitation label"),
@@ -3710,7 +3461,7 @@ var SpaceManagerImpl = (props) => {
3710
3461
  }
3711
3462
  }
3712
3463
  };
3713
- const [activeAction, setInternalActiveAction] = useState11(localStorage.getItem(activeActionKey) ?? "inviteMany");
3464
+ const [activeAction, setInternalActiveAction] = useState9(localStorage.getItem(activeActionKey) ?? "inviteMany");
3714
3465
  const setActiveAction = (nextAction) => {
3715
3466
  setInternalActiveAction(nextAction);
3716
3467
  localStorage.setItem(activeActionKey, nextAction);
@@ -3718,26 +3469,26 @@ var SpaceManagerImpl = (props) => {
3718
3469
  const visibleInvitations = showInactiveInvitations ? invitations : invitations?.filter((invitation) => ![
3719
3470
  Invitation8.State.CANCELLED
3720
3471
  ].includes(invitation.get().state));
3721
- return /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement(ScrollArea.Root, {
3472
+ return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(ScrollArea.Root, {
3722
3473
  classNames: "grow shrink basis-28 -mli-2"
3723
- }, /* @__PURE__ */ React37.createElement(ScrollArea.Viewport, {
3474
+ }, /* @__PURE__ */ React35.createElement(ScrollArea.Viewport, {
3724
3475
  classNames: "is-full pie-2"
3725
- }, !!visibleInvitations?.length && /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement("h3", {
3726
- className: mx23(headingFragment, descriptionText12)
3727
- }, t("invitation list heading")), /* @__PURE__ */ React37.createElement(InvitationListComponent, {
3476
+ }, !!visibleInvitations?.length && /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement("h3", {
3477
+ className: mx22(headingFragment, descriptionText12)
3478
+ }, t("invitation list heading")), /* @__PURE__ */ React35.createElement(InvitationListComponent, {
3728
3479
  className: "mb-2",
3729
3480
  send,
3730
3481
  invitations: visibleInvitations ?? [],
3731
3482
  onClickRemove: (invitation) => invitation.cancel(),
3732
3483
  createInvitationUrl
3733
- }), /* @__PURE__ */ React37.createElement("h3", {
3734
- className: mx23(headingFragment, descriptionText12, "mbs-2")
3735
- }, t("space member list heading"))), /* @__PURE__ */ React37.createElement(SpaceMemberListComponent, {
3484
+ }), /* @__PURE__ */ React35.createElement("h3", {
3485
+ className: mx22(headingFragment, descriptionText12, "mbs-2")
3486
+ }, t("space member list heading"))), /* @__PURE__ */ React35.createElement(SpaceMemberListComponent, {
3736
3487
  spaceKey: space.key,
3737
3488
  includeSelf: true
3738
- })), /* @__PURE__ */ React37.createElement(ScrollArea.Scrollbar, {
3489
+ })), /* @__PURE__ */ React35.createElement(ScrollArea.Scrollbar, {
3739
3490
  orientation: "vertical"
3740
- }, /* @__PURE__ */ React37.createElement(ScrollArea.Thumb, null))), /* @__PURE__ */ React37.createElement(Actions, null, /* @__PURE__ */ React37.createElement(BifurcatedAction, {
3491
+ }, /* @__PURE__ */ React35.createElement(ScrollArea.Thumb, null))), /* @__PURE__ */ React35.createElement(Actions, null, /* @__PURE__ */ React35.createElement(BifurcatedAction, {
3741
3492
  disabled: !active,
3742
3493
  actions: inviteActions,
3743
3494
  activeAction,
@@ -3749,45 +3500,45 @@ var SpaceManagerImpl = (props) => {
3749
3500
  // packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx
3750
3501
  var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx";
3751
3502
  var SpacePanelHeading = ({ titleId, space, onDone }) => {
3752
- const { t } = useTranslation23("os");
3503
+ const { t } = useTranslation21("os");
3753
3504
  const name = space.properties.name;
3754
- return /* @__PURE__ */ React38.createElement(Heading, {
3505
+ return /* @__PURE__ */ React36.createElement(Heading, {
3755
3506
  titleId,
3756
3507
  title: t("space panel heading"),
3757
- corner: /* @__PURE__ */ React38.createElement(CloseButton, {
3508
+ corner: /* @__PURE__ */ React36.createElement(CloseButton, {
3758
3509
  "data-testid": "identity-panel-done",
3759
3510
  onDone
3760
3511
  })
3761
- }, /* @__PURE__ */ React38.createElement("div", {
3512
+ }, /* @__PURE__ */ React36.createElement("div", {
3762
3513
  role: "none",
3763
3514
  className: "flex gap-4 items-center justify-center mlb-4"
3764
- }, /* @__PURE__ */ React38.createElement(Planet, {
3515
+ }, /* @__PURE__ */ React36.createElement(Planet, {
3765
3516
  size: 32,
3766
3517
  weight: "light"
3767
- }), /* @__PURE__ */ React38.createElement("div", {
3518
+ }), /* @__PURE__ */ React36.createElement("div", {
3768
3519
  className: "block text-start font-light text-xl"
3769
3520
  }, name ?? space.key.truncate())));
3770
3521
  };
3771
3522
  var SpacePanelImpl = (props) => {
3772
3523
  const { titleId, activeView, space, hideHeading, target, SpaceManager: SpaceManagerComponent = SpaceManager, InvitationManager: InvitationManagerComponent = InvitationManager, ...rest } = props;
3773
- return /* @__PURE__ */ React38.createElement(React38.Fragment, null, !hideHeading && /* @__PURE__ */ React38.createElement(SpacePanelHeading, {
3524
+ return /* @__PURE__ */ React36.createElement(React36.Fragment, null, !hideHeading && /* @__PURE__ */ React36.createElement(SpacePanelHeading, {
3774
3525
  ...rest,
3775
3526
  titleId,
3776
3527
  space
3777
- }), /* @__PURE__ */ React38.createElement(Viewport.Root, {
3528
+ }), /* @__PURE__ */ React36.createElement(Viewport.Root, {
3778
3529
  activeView
3779
- }, /* @__PURE__ */ React38.createElement(Viewport.Views, null, /* @__PURE__ */ React38.createElement(Viewport.View, {
3530
+ }, /* @__PURE__ */ React36.createElement(Viewport.Views, null, /* @__PURE__ */ React36.createElement(Viewport.View, {
3780
3531
  id: "space manager",
3781
3532
  classNames: stepStyles
3782
- }, /* @__PURE__ */ React38.createElement(SpaceManagerComponent, {
3533
+ }, /* @__PURE__ */ React36.createElement(SpaceManagerComponent, {
3783
3534
  active: activeView === "space manager",
3784
3535
  space,
3785
3536
  target,
3786
3537
  ...rest
3787
- })), /* @__PURE__ */ React38.createElement(Viewport.View, {
3538
+ })), /* @__PURE__ */ React36.createElement(Viewport.View, {
3788
3539
  id: "space invitation manager",
3789
3540
  classNames: stepStyles
3790
- }, /* @__PURE__ */ React38.createElement(InvitationManagerComponent, {
3541
+ }, /* @__PURE__ */ React36.createElement(InvitationManagerComponent, {
3791
3542
  active: activeView === "space invitation manager",
3792
3543
  ...rest,
3793
3544
  invitationUrl: props.invitationUrl
@@ -3795,7 +3546,7 @@ var SpacePanelImpl = (props) => {
3795
3546
  };
3796
3547
  var SpacePanelWithInvitationImpl = ({ invitation, ...props }) => {
3797
3548
  const invitationStatus = useInvitationStatus3(invitation);
3798
- return /* @__PURE__ */ React38.createElement(SpacePanelImpl, {
3549
+ return /* @__PURE__ */ React36.createElement(SpacePanelImpl, {
3799
3550
  ...props,
3800
3551
  ...invitationStatus,
3801
3552
  invitationUrl: props.createInvitationUrl(invitationStatus.invitationCode)
@@ -3842,24 +3593,24 @@ var SpacePanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => code,
3842
3593
  };
3843
3594
  return spaceState.context.invitation ? (
3844
3595
  // TODO(wittjosiah): Unused? Remove?
3845
- /* @__PURE__ */ React38.createElement(SpacePanelWithInvitationImpl, {
3596
+ /* @__PURE__ */ React36.createElement(SpacePanelWithInvitationImpl, {
3846
3597
  ...implProps,
3847
3598
  invitation: spaceState.context.invitation
3848
3599
  })
3849
- ) : /* @__PURE__ */ React38.createElement(SpacePanelImpl, implProps);
3600
+ ) : /* @__PURE__ */ React36.createElement(SpacePanelImpl, implProps);
3850
3601
  };
3851
3602
 
3852
3603
  // packages/sdk/shell/src/panels/StatusPanel/StatusPanel.tsx
3853
- import React39 from "react";
3854
- import { Status, useTranslation as useTranslation24 } from "@dxos/react-ui";
3604
+ import React37 from "react";
3605
+ import { Status, useTranslation as useTranslation22 } from "@dxos/react-ui";
3855
3606
  var StatusPanel = ({ titleId }) => {
3856
- const { t } = useTranslation24("os");
3857
- return /* @__PURE__ */ React39.createElement("div", {
3607
+ const { t } = useTranslation22("os");
3608
+ return /* @__PURE__ */ React37.createElement("div", {
3858
3609
  className: "grid place-items-center p-2 gap-2"
3859
- }, /* @__PURE__ */ React39.createElement("p", {
3610
+ }, /* @__PURE__ */ React37.createElement("p", {
3860
3611
  id: titleId,
3861
3612
  className: "font-medium text-center"
3862
- }, t("resetting message")), /* @__PURE__ */ React39.createElement(Status, {
3613
+ }, t("resetting message")), /* @__PURE__ */ React37.createElement(Status, {
3863
3614
  indeterminate: true
3864
3615
  }, t("resetting message")));
3865
3616
  };
@@ -3867,96 +3618,96 @@ var StatusPanel = ({ titleId }) => {
3867
3618
  // packages/sdk/shell/src/composites/IdentityDialog/IdentityDialog.tsx
3868
3619
  var IdentityDialog = (props) => {
3869
3620
  const titleId = useId10("identityDialog__title", props.title);
3870
- return /* @__PURE__ */ React40.createElement(Dialog.Root, {
3621
+ return /* @__PURE__ */ React38.createElement(Dialog.Root, {
3871
3622
  defaultOpen: true,
3872
3623
  onOpenChange: (open) => open || props.onDone?.()
3873
- }, /* @__PURE__ */ React40.createElement(Dialog.Portal, null, /* @__PURE__ */ React40.createElement(Dialog.Overlay, null, /* @__PURE__ */ React40.createElement(Dialog.Content, {
3624
+ }, /* @__PURE__ */ React38.createElement(Dialog.Portal, null, /* @__PURE__ */ React38.createElement(Dialog.Overlay, null, /* @__PURE__ */ React38.createElement(Dialog.Content, {
3874
3625
  "aria-labelledby": titleId,
3875
3626
  onOpenAutoFocus: (e) => e.preventDefault()
3876
- }, /* @__PURE__ */ React40.createElement(Clipboard3.Provider, null, /* @__PURE__ */ React40.createElement(IdentityPanel, {
3627
+ }, /* @__PURE__ */ React38.createElement(Clipboard4.Provider, null, /* @__PURE__ */ React38.createElement(IdentityPanel, {
3877
3628
  ...props,
3878
3629
  titleId,
3879
- doneActionParent: /* @__PURE__ */ React40.createElement(Dialog.Close, {
3630
+ doneActionParent: /* @__PURE__ */ React38.createElement(Dialog.Close, {
3880
3631
  asChild: true
3881
3632
  })
3882
3633
  }))))));
3883
3634
  };
3884
3635
 
3885
3636
  // packages/sdk/shell/src/composites/JoinDialog/JoinDialog.tsx
3886
- import React41 from "react";
3637
+ import React39 from "react";
3887
3638
  import { AlertDialog, useId as useId11, useVisualViewport } from "@dxos/react-ui";
3888
3639
  var JoinDialog = (joinPanelProps) => {
3889
3640
  const titleId = useId11("joinDialog__title");
3890
3641
  const { height } = useVisualViewport();
3891
- return /* @__PURE__ */ React41.createElement(AlertDialog.Root, {
3642
+ return /* @__PURE__ */ React39.createElement(AlertDialog.Root, {
3892
3643
  defaultOpen: true,
3893
3644
  onOpenChange: (open) => open || (joinPanelProps.onExit ? joinPanelProps.onExit() : joinPanelProps.onDone?.(null))
3894
- }, /* @__PURE__ */ React41.createElement(AlertDialog.Portal, null, /* @__PURE__ */ React41.createElement(AlertDialog.Overlay, {
3645
+ }, /* @__PURE__ */ React39.createElement(AlertDialog.Portal, null, /* @__PURE__ */ React39.createElement(AlertDialog.Overlay, {
3895
3646
  classNames: "backdrop-blur",
3896
3647
  ...height && {
3897
3648
  style: {
3898
3649
  blockSize: `${height}px`
3899
3650
  }
3900
3651
  }
3901
- }, /* @__PURE__ */ React41.createElement(AlertDialog.Content, {
3652
+ }, /* @__PURE__ */ React39.createElement(AlertDialog.Content, {
3902
3653
  "aria-labelledby": titleId
3903
- }, /* @__PURE__ */ React41.createElement(JoinPanel, {
3654
+ }, /* @__PURE__ */ React39.createElement(JoinPanel, {
3904
3655
  ...joinPanelProps,
3905
3656
  titleId,
3906
- exitActionParent: /* @__PURE__ */ React41.createElement(AlertDialog.Cancel, {
3657
+ exitActionParent: /* @__PURE__ */ React39.createElement(AlertDialog.Cancel, {
3907
3658
  asChild: true
3908
3659
  }),
3909
- doneActionParent: /* @__PURE__ */ React41.createElement(AlertDialog.Action, {
3660
+ doneActionParent: /* @__PURE__ */ React39.createElement(AlertDialog.Action, {
3910
3661
  asChild: true
3911
3662
  })
3912
3663
  })))));
3913
3664
  };
3914
3665
 
3915
3666
  // packages/sdk/shell/src/composites/Shell/run-shell.tsx
3916
- import React45, { StrictMode } from "react";
3667
+ import React43, { StrictMode } from "react";
3917
3668
  import { createRoot } from "react-dom/client";
3918
3669
  import { DEFAULT_CLIENT_CHANNEL, DEFAULT_SHELL_CHANNEL } from "@dxos/client-protocol";
3919
3670
  import { AgentHostingProvider, ClientProvider, ClientServicesProxy, Config, ShellDisplay as ShellDisplay2 } from "@dxos/react-client";
3920
- import { Button as Button10, Clipboard as Clipboard5, Dialog as Dialog3, ThemeProvider, Tooltip as Tooltip6, useTranslation as useTranslation25 } from "@dxos/react-ui";
3671
+ import { Button as Button8, Clipboard as Clipboard6, Dialog as Dialog3, ThemeProvider, Tooltip as Tooltip4, useTranslation as useTranslation23 } from "@dxos/react-ui";
3921
3672
  import { defaultTx } from "@dxos/react-ui-theme";
3922
3673
  import { createIFramePort } from "@dxos/rpc-tunnel";
3923
3674
 
3924
3675
  // packages/sdk/shell/src/composites/Shell/Shell.tsx
3925
- import React44, { useEffect as useEffect8, useState as useState12 } from "react";
3676
+ import React42, { useEffect as useEffect8, useState as useState10 } from "react";
3926
3677
  import { log as log15 } from "@dxos/log";
3927
3678
  import { useClient as useClient9 } from "@dxos/react-client";
3928
3679
  import { ShellDisplay, ShellLayout } from "@dxos/react-client";
3929
3680
  import { useSpace as useSpace2 } from "@dxos/react-client/echo";
3930
3681
 
3931
3682
  // packages/sdk/shell/src/composites/SpaceDialog/SpaceDialog.tsx
3932
- import React42 from "react";
3933
- import { Clipboard as Clipboard4, Dialog as Dialog2, useId as useId12 } from "@dxos/react-ui";
3683
+ import React40 from "react";
3684
+ import { Clipboard as Clipboard5, Dialog as Dialog2, useId as useId12 } from "@dxos/react-ui";
3934
3685
  var SpaceDialog = (spacePanelProps) => {
3935
3686
  const titleId = useId12("spaceDialog__title");
3936
- return /* @__PURE__ */ React42.createElement(Dialog2.Root, {
3687
+ return /* @__PURE__ */ React40.createElement(Dialog2.Root, {
3937
3688
  defaultOpen: true,
3938
3689
  onOpenChange: (open) => open || spacePanelProps.onDone?.()
3939
- }, /* @__PURE__ */ React42.createElement(Dialog2.Portal, null, /* @__PURE__ */ React42.createElement(Dialog2.Overlay, null, /* @__PURE__ */ React42.createElement(Dialog2.Content, {
3690
+ }, /* @__PURE__ */ React40.createElement(Dialog2.Portal, null, /* @__PURE__ */ React40.createElement(Dialog2.Overlay, null, /* @__PURE__ */ React40.createElement(Dialog2.Content, {
3940
3691
  "aria-labelledby": titleId
3941
- }, /* @__PURE__ */ React42.createElement(Clipboard4.Provider, null, /* @__PURE__ */ React42.createElement(SpacePanel, {
3692
+ }, /* @__PURE__ */ React40.createElement(Clipboard5.Provider, null, /* @__PURE__ */ React40.createElement(SpacePanel, {
3942
3693
  ...spacePanelProps,
3943
3694
  titleId,
3944
- doneActionParent: /* @__PURE__ */ React42.createElement(Dialog2.Close, {
3695
+ doneActionParent: /* @__PURE__ */ React40.createElement(Dialog2.Close, {
3945
3696
  asChild: true
3946
3697
  })
3947
3698
  }))))));
3948
3699
  };
3949
3700
 
3950
3701
  // packages/sdk/shell/src/composites/StatusDialog/StatusDialog.tsx
3951
- import React43 from "react";
3702
+ import React41 from "react";
3952
3703
  import { AlertDialog as AlertDialog2, useId as useId13 } from "@dxos/react-ui";
3953
3704
  var StatusDialog = () => {
3954
3705
  const titleId = useId13("statusDialog__title");
3955
- return /* @__PURE__ */ React43.createElement(AlertDialog2.Root, {
3706
+ return /* @__PURE__ */ React41.createElement(AlertDialog2.Root, {
3956
3707
  open: true
3957
- }, /* @__PURE__ */ React43.createElement(AlertDialog2.Portal, null, /* @__PURE__ */ React43.createElement(AlertDialog2.Overlay, null, /* @__PURE__ */ React43.createElement(AlertDialog2.Content, {
3708
+ }, /* @__PURE__ */ React41.createElement(AlertDialog2.Portal, null, /* @__PURE__ */ React41.createElement(AlertDialog2.Overlay, null, /* @__PURE__ */ React41.createElement(AlertDialog2.Content, {
3958
3709
  "aria-labelledby": titleId
3959
- }, /* @__PURE__ */ React43.createElement(StatusPanel, {
3710
+ }, /* @__PURE__ */ React41.createElement(StatusPanel, {
3960
3711
  titleId
3961
3712
  })))));
3962
3713
  };
@@ -3965,14 +3716,14 @@ var StatusDialog = () => {
3965
3716
  var __dxlog_file14 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/composites/Shell/Shell.tsx";
3966
3717
  var blurActiveElement = () => document.activeElement?.blur?.();
3967
3718
  var Shell = ({ runtime }) => {
3968
- const [{ layout, invitationCode, spaceKey, spaceId, target }, setLayout] = useState12({
3719
+ const [{ layout, invitationCode, spaceKey, spaceId, target }, setLayout] = useState10({
3969
3720
  layout: runtime.layout,
3970
3721
  invitationCode: runtime.invitationCode,
3971
3722
  spaceKey: runtime.spaceKey,
3972
3723
  spaceId: runtime.spaceId,
3973
3724
  target: runtime.target
3974
3725
  });
3975
- const [{ invitationUrl, deviceInvitationParam, spaceInvitationParam }, setInvitationUrl] = useState12({
3726
+ const [{ invitationUrl, deviceInvitationParam, spaceInvitationParam }, setInvitationUrl] = useState10({
3976
3727
  invitationUrl: runtime.invitationUrl,
3977
3728
  deviceInvitationParam: runtime.deviceInvitationParam,
3978
3729
  spaceInvitationParam: runtime.spaceInvitationParam
@@ -4024,11 +3775,11 @@ var Shell = ({ runtime }) => {
4024
3775
  ]);
4025
3776
  switch (layout) {
4026
3777
  case ShellLayout.STATUS:
4027
- return /* @__PURE__ */ React44.createElement(StatusDialog, null);
3778
+ return /* @__PURE__ */ React42.createElement(StatusDialog, null);
4028
3779
  case ShellLayout.INITIALIZE_IDENTITY:
4029
3780
  case ShellLayout.INITIALIZE_IDENTITY_FROM_INVITATION:
4030
3781
  case ShellLayout.INITIALIZE_IDENTITY_FROM_RECOVERY:
4031
- return /* @__PURE__ */ React44.createElement(JoinDialog, {
3782
+ return /* @__PURE__ */ React42.createElement(JoinDialog, {
4032
3783
  mode: "halo-only",
4033
3784
  initialDisposition: layout === ShellLayout.INITIALIZE_IDENTITY_FROM_RECOVERY ? "recover-identity" : layout === ShellLayout.INITIALIZE_IDENTITY_FROM_INVITATION ? "accept-halo-invitation" : "default",
4034
3785
  initialInvitationCode: invitationCode,
@@ -4048,7 +3799,7 @@ var Shell = ({ runtime }) => {
4048
3799
  case ShellLayout.IDENTITY:
4049
3800
  case ShellLayout.SHARE_IDENTITY:
4050
3801
  case ShellLayout.EDIT_PROFILE:
4051
- return /* @__PURE__ */ React44.createElement(IdentityDialog, {
3802
+ return /* @__PURE__ */ React42.createElement(IdentityDialog, {
4052
3803
  createInvitationUrl: createDeviceInvitationUrl,
4053
3804
  onResetStorage: async () => {
4054
3805
  runtime.setLayout({
@@ -4094,7 +3845,7 @@ var Shell = ({ runtime }) => {
4094
3845
  initialDisposition: layout === ShellLayout.SHARE_IDENTITY ? "manage-device-invitation" : "default"
4095
3846
  });
4096
3847
  case ShellLayout.SPACE:
4097
- return space ? /* @__PURE__ */ React44.createElement(SpaceDialog, {
3848
+ return space ? /* @__PURE__ */ React42.createElement(SpaceDialog, {
4098
3849
  space,
4099
3850
  target,
4100
3851
  createInvitationUrl: createSpaceInvitationUrl,
@@ -4109,7 +3860,7 @@ var Shell = ({ runtime }) => {
4109
3860
  }
4110
3861
  }) : null;
4111
3862
  case ShellLayout.JOIN_SPACE:
4112
- return /* @__PURE__ */ React44.createElement(JoinDialog, {
3863
+ return /* @__PURE__ */ React42.createElement(JoinDialog, {
4113
3864
  initialInvitationCode: invitationCode,
4114
3865
  onDone: async (result) => {
4115
3866
  blurActiveElement();
@@ -4253,8 +4004,9 @@ var os = {
4253
4004
  "sidebar label": "DXOS sidebar",
4254
4005
  "copy invitation code label": "Copy URL",
4255
4006
  "copy success label": "Copied",
4256
- "copy self public key label": "Copy public key",
4007
+ "copy self did label": "Copy DID",
4257
4008
  "open share panel label": "View QR code",
4009
+ "manage credentials label": "Manage credentials",
4258
4010
  "joining space heading": "Joining space",
4259
4011
  "join space heading": "Enter space invitation",
4260
4012
  "halo heading": "Initialize device identity",
@@ -4361,6 +4113,7 @@ var os = {
4361
4113
  "select emoji label": "Avatar emoji",
4362
4114
  "select hue label": "Avatar background color",
4363
4115
  "resetting message": "One moment while the device is reset\u2026",
4116
+ // TODO(burdon): Factor out.
4364
4117
  "red label": "Red",
4365
4118
  "orange label": "Orange",
4366
4119
  "amber label": "Amber",
@@ -4378,11 +4131,14 @@ var os = {
4378
4131
  "fuchsia label": "Fuchsia",
4379
4132
  "pink label": "Pink",
4380
4133
  "rose label": "Rose",
4134
+ "select a hue label": "Select color",
4135
+ "hue label": "Hue",
4136
+ "icon label": "Icon",
4381
4137
  "current device tag label": "This device",
4382
4138
  "device name placeholder": "{{platform}} on {{os}}",
4383
4139
  "more options label": "More options",
4384
- "disconnect label": "Go offline.",
4385
- "connect label": "Go online.",
4140
+ "disconnect label": "Go offline",
4141
+ "connect label": "Go online",
4386
4142
  "edit device label": "Edit device name & avatar",
4387
4143
  "agent heading": "Agent",
4388
4144
  "create agent clickwrap": 'By creating an agent, you agree to our <tosLink href="https://dxos.org/tos">Terms of\xA0Service</tosLink>.',
@@ -4416,25 +4172,25 @@ var runShell = async (config = new Config()) => {
4416
4172
  const services = new ClientServicesProxy(createIFramePort({
4417
4173
  channel: DEFAULT_CLIENT_CHANNEL
4418
4174
  }));
4419
- createRoot(document.getElementById("root")).render(/* @__PURE__ */ React45.createElement(StrictMode, null, /* @__PURE__ */ React45.createElement(ThemeProvider, {
4175
+ createRoot(document.getElementById("root")).render(/* @__PURE__ */ React43.createElement(StrictMode, null, /* @__PURE__ */ React43.createElement(ThemeProvider, {
4420
4176
  tx: defaultTx,
4421
4177
  resourceExtensions: [
4422
4178
  osTranslations
4423
4179
  ]
4424
- }, /* @__PURE__ */ React45.createElement(ClientProvider, {
4180
+ }, /* @__PURE__ */ React43.createElement(ClientProvider, {
4425
4181
  config,
4426
4182
  services,
4427
4183
  noBanner: true
4428
- }, /* @__PURE__ */ React45.createElement(Clipboard5.Provider, null, /* @__PURE__ */ React45.createElement(Tooltip6.Provider, null, /* @__PURE__ */ React45.createElement(AgentHostingProvider, null, /* @__PURE__ */ React45.createElement(Shell, {
4184
+ }, /* @__PURE__ */ React43.createElement(Clipboard6.Provider, null, /* @__PURE__ */ React43.createElement(Tooltip4.Provider, null, /* @__PURE__ */ React43.createElement(AgentHostingProvider, null, /* @__PURE__ */ React43.createElement(Shell, {
4429
4185
  runtime
4430
4186
  }))))))));
4431
4187
  } catch {
4432
- createRoot(document.getElementById("root")).render(/* @__PURE__ */ React45.createElement(StrictMode, null, /* @__PURE__ */ React45.createElement(ThemeProvider, {
4188
+ createRoot(document.getElementById("root")).render(/* @__PURE__ */ React43.createElement(StrictMode, null, /* @__PURE__ */ React43.createElement(ThemeProvider, {
4433
4189
  tx: defaultTx,
4434
4190
  resourceExtensions: [
4435
4191
  osTranslations
4436
4192
  ]
4437
- }, /* @__PURE__ */ React45.createElement(Fallback, {
4193
+ }, /* @__PURE__ */ React43.createElement(Fallback, {
4438
4194
  onClose: () => runtime.setAppContext({
4439
4195
  display: ShellDisplay2.NONE
4440
4196
  })
@@ -4442,24 +4198,24 @@ var runShell = async (config = new Config()) => {
4442
4198
  }
4443
4199
  };
4444
4200
  var Fallback = ({ onClose }) => {
4445
- const { t } = useTranslation25("os");
4446
- return /* @__PURE__ */ React45.createElement(Dialog3.Root, {
4201
+ const { t } = useTranslation23("os");
4202
+ return /* @__PURE__ */ React43.createElement(Dialog3.Root, {
4447
4203
  modal: true,
4448
4204
  open: true,
4449
4205
  onOpenChange: () => onClose?.()
4450
- }, /* @__PURE__ */ React45.createElement(Dialog3.Overlay, null, /* @__PURE__ */ React45.createElement(Dialog3.Content, null, /* @__PURE__ */ React45.createElement(Dialog3.Title, null, t("shell fallback title")), /* @__PURE__ */ React45.createElement(Dialog3.Close, {
4206
+ }, /* @__PURE__ */ React43.createElement(Dialog3.Overlay, null, /* @__PURE__ */ React43.createElement(Dialog3.Content, null, /* @__PURE__ */ React43.createElement(Dialog3.Title, null, t("shell fallback title")), /* @__PURE__ */ React43.createElement(Dialog3.Close, {
4451
4207
  asChild: true,
4452
4208
  onClick: () => onClose?.()
4453
- }, /* @__PURE__ */ React45.createElement(Button10, {
4209
+ }, /* @__PURE__ */ React43.createElement(Button8, {
4454
4210
  variant: "primary"
4455
4211
  }, t("close label"))))));
4456
4212
  };
4457
4213
 
4458
4214
  // packages/sdk/shell/src/composites/Shell/ShellContext.tsx
4459
- import React46, { createContext, useCallback as useCallback8, useContext, useEffect as useEffect9, useMemo as useMemo6, useState as useState13 } from "react";
4215
+ import React44, { createContext, useCallback as useCallback8, useContext, useEffect as useEffect9, useMemo as useMemo6, useState as useState11 } from "react";
4460
4216
  import { useClient as useClient10, ShellDisplay as ShellDisplay3, ShellLayout as ShellLayout4 } from "@dxos/react-client";
4461
4217
  import { useIdentity as useIdentity3 } from "@dxos/react-client/halo";
4462
- import { mx as mx24 } from "@dxos/react-ui-theme";
4218
+ import { mx as mx23 } from "@dxos/react-ui-theme";
4463
4219
 
4464
4220
  // packages/sdk/shell/src/composites/Shell/memory-shell-runtime.ts
4465
4221
  import { Event as Event2 } from "@dxos/async";
@@ -4537,7 +4293,7 @@ var useShell = () => {
4537
4293
  var ShellProvider = ({ space, deviceInvitationCode, spaceInvitationCode, onJoinedSpace, children }) => {
4538
4294
  const client = useClient10();
4539
4295
  const identity = useIdentity3();
4540
- const [display, setDisplay] = useState13(!identity || spaceInvitationCode || deviceInvitationCode ? ShellDisplay3.FULLSCREEN : ShellDisplay3.NONE);
4296
+ const [display, setDisplay] = useState11(!identity || spaceInvitationCode || deviceInvitationCode ? ShellDisplay3.FULLSCREEN : ShellDisplay3.NONE);
4541
4297
  const shellRuntime = useMemo6(() => {
4542
4298
  if (client.config.get("runtime.app.env.DX_VAULT") !== "false") {
4543
4299
  return;
@@ -4607,11 +4363,11 @@ var ShellProvider = ({ space, deviceInvitationCode, spaceInvitationCode, onJoine
4607
4363
  }, [
4608
4364
  shellRuntime
4609
4365
  ]);
4610
- return /* @__PURE__ */ React46.createElement(React46.Fragment, null, shellRuntime && /* @__PURE__ */ React46.createElement("div", {
4611
- className: mx24(display === ShellDisplay3.NONE ? "hidden" : "")
4612
- }, /* @__PURE__ */ React46.createElement(Shell, {
4366
+ return /* @__PURE__ */ React44.createElement(React44.Fragment, null, shellRuntime && /* @__PURE__ */ React44.createElement("div", {
4367
+ className: mx23(display === ShellDisplay3.NONE ? "hidden" : "")
4368
+ }, /* @__PURE__ */ React44.createElement(Shell, {
4613
4369
  runtime: shellRuntime
4614
- })), /* @__PURE__ */ React46.createElement(ShellContext.Provider, {
4370
+ })), /* @__PURE__ */ React44.createElement(ShellContext.Provider, {
4615
4371
  value: {
4616
4372
  runtime: shellRuntime,
4617
4373
  setDisplay
@@ -4631,11 +4387,7 @@ export {
4631
4387
  ConfirmResetImpl,
4632
4388
  DeviceList,
4633
4389
  Emoji,
4634
- EmojiPickerBlock,
4635
- EmojiPickerToolbarButton,
4636
4390
  Heading,
4637
- HuePickerBlock,
4638
- HuePickerToolbarButton,
4639
4391
  IdentityDialog,
4640
4392
  IdentityListItem,
4641
4393
  IdentityPanel,