@dxos/shell 0.7.4 → 0.7.5-labs.071a3e2

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 (127) hide show
  1. package/dist/bundle/shell.mjs +17886 -21578
  2. package/dist/bundle/shell.mjs.map +1 -1
  3. package/dist/bundle/shell.umd.js +139 -137
  4. package/dist/bundle/shell.umd.js.map +1 -1
  5. package/dist/bundle/style.css +1 -1
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/react.mjs +523 -800
  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 +620 -897
  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 +523 -800
  14. package/dist/lib/node-esm/react.mjs.map +4 -4
  15. package/dist/types/src/components/AgentConfig.d.ts.map +1 -1
  16. package/dist/types/src/components/AgentConfig.js +2 -2
  17. package/dist/types/src/components/AgentConfig.js.map +1 -1
  18. package/dist/types/src/components/AuthCode.js +17 -7
  19. package/dist/types/src/components/AuthCode.js.map +1 -1
  20. package/dist/types/src/components/DeviceList/DeviceList.js +1 -1
  21. package/dist/types/src/components/DeviceList/DeviceList.js.map +1 -1
  22. package/dist/types/src/components/DeviceList/DeviceListItem.js +17 -7
  23. package/dist/types/src/components/DeviceList/DeviceListItem.js.map +1 -1
  24. package/dist/types/src/components/IdentityList/IdentityListItem.js +17 -7
  25. package/dist/types/src/components/IdentityList/IdentityListItem.js.map +1 -1
  26. package/dist/types/src/components/IdentityList/SpaceMemberList.js +17 -7
  27. package/dist/types/src/components/IdentityList/SpaceMemberList.js.map +1 -1
  28. package/dist/types/src/components/InvitationList/InvitationListContainer.js +17 -7
  29. package/dist/types/src/components/InvitationList/InvitationListContainer.js.map +1 -1
  30. package/dist/types/src/components/InvitationList/InvitationListItem.js +19 -9
  31. package/dist/types/src/components/InvitationList/InvitationListItem.js.map +1 -1
  32. package/dist/types/src/components/Panel/Action.js +17 -7
  33. package/dist/types/src/components/Panel/Action.js.map +1 -1
  34. package/dist/types/src/components/Panel/Actions.js +17 -7
  35. package/dist/types/src/components/Panel/Actions.js.map +1 -1
  36. package/dist/types/src/components/Panel/Heading.js +17 -7
  37. package/dist/types/src/components/Panel/Heading.js.map +1 -1
  38. package/dist/types/src/components/Panel/StepHeading.js +17 -7
  39. package/dist/types/src/components/Panel/StepHeading.js.map +1 -1
  40. package/dist/types/src/components/SpaceListItem.js +17 -7
  41. package/dist/types/src/components/SpaceListItem.js.map +1 -1
  42. package/dist/types/src/components/StorybookDialog.js +1 -1
  43. package/dist/types/src/components/Viewport/Viewport.js +17 -7
  44. package/dist/types/src/components/Viewport/Viewport.js.map +1 -1
  45. package/dist/types/src/components/index.d.ts +0 -2
  46. package/dist/types/src/components/index.d.ts.map +1 -1
  47. package/dist/types/src/components/index.js +0 -2
  48. package/dist/types/src/components/index.js.map +1 -1
  49. package/dist/types/src/composites/Shell/Shell.js +17 -7
  50. package/dist/types/src/composites/Shell/Shell.js.map +1 -1
  51. package/dist/types/src/composites/Shell/ShellContext.js +17 -7
  52. package/dist/types/src/composites/Shell/ShellContext.js.map +1 -1
  53. package/dist/types/src/composites/Shell/run-shell.js +17 -7
  54. package/dist/types/src/composites/Shell/run-shell.js.map +1 -1
  55. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
  56. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +22 -11
  57. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
  58. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -1
  59. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +2 -0
  60. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
  61. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -1
  62. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +20 -9
  63. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
  64. package/dist/types/src/panels/JoinPanel/JoinHeading.js +17 -7
  65. package/dist/types/src/panels/JoinPanel/JoinHeading.js.map +1 -1
  66. package/dist/types/src/panels/JoinPanel/JoinPanel.js +17 -7
  67. package/dist/types/src/panels/JoinPanel/JoinPanel.js.map +1 -1
  68. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js +17 -7
  69. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js.map +1 -1
  70. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js +18 -8
  71. package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js.map +1 -1
  72. package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.js +17 -7
  73. package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.js.map +1 -1
  74. package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js +17 -7
  75. package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js.map +1 -1
  76. package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js +17 -7
  77. package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js.map +1 -1
  78. package/dist/types/src/panels/Panels.stories.js +17 -7
  79. package/dist/types/src/panels/Panels.stories.js.map +1 -1
  80. package/dist/types/src/panels/SpacePanel/SpacePanel.js +17 -7
  81. package/dist/types/src/panels/SpacePanel/SpacePanel.js.map +1 -1
  82. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts.map +1 -1
  83. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js +5 -0
  84. package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js.map +1 -1
  85. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js +17 -7
  86. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js.map +1 -1
  87. package/dist/types/src/steps/ConfirmReset.js +17 -7
  88. package/dist/types/src/steps/ConfirmReset.js.map +1 -1
  89. package/dist/types/src/steps/InvitationManager.js +17 -7
  90. package/dist/types/src/steps/InvitationManager.js.map +1 -1
  91. package/dist/types/src/stories/Invitations.e2e-stories.js +17 -7
  92. package/dist/types/src/stories/Invitations.e2e-stories.js.map +1 -1
  93. package/dist/types/src/testing/fixtures/identities.d.ts.map +1 -1
  94. package/dist/types/src/testing/fixtures/identities.js +2 -0
  95. package/dist/types/src/testing/fixtures/identities.js.map +1 -1
  96. package/dist/types/src/translations/index.js +17 -7
  97. package/dist/types/src/translations/index.js.map +1 -1
  98. package/dist/types/tsconfig.tsbuildinfo +1 -0
  99. package/package.json +31 -30
  100. package/src/components/AgentConfig.tsx +2 -4
  101. package/src/components/DeviceList/DeviceList.tsx +1 -1
  102. package/src/components/InvitationList/InvitationListItem.tsx +2 -2
  103. package/src/components/StorybookDialog.tsx +1 -1
  104. package/src/components/index.ts +0 -2
  105. package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +2 -0
  106. package/src/panels/IdentityPanel/IdentityPanel.tsx +4 -3
  107. package/src/panels/IdentityPanel/steps/ProfileForm.tsx +2 -1
  108. package/src/panels/JoinPanel/steps/IdentityInput.tsx +1 -1
  109. package/src/panels/SpacePanel/SpacePanel.stories.tsx +6 -1
  110. package/src/testing/fixtures/identities.ts +2 -0
  111. package/dist/lib/browser/react.css +0 -7
  112. package/dist/lib/browser/react.css.map +0 -7
  113. package/dist/lib/node/react.css +0 -7
  114. package/dist/lib/node/react.css.map +0 -7
  115. package/dist/lib/node-esm/react.css +0 -7
  116. package/dist/lib/node-esm/react.css.map +0 -7
  117. package/dist/types/src/components/EmojiPicker.d.ts +0 -19
  118. package/dist/types/src/components/EmojiPicker.d.ts.map +0 -1
  119. package/dist/types/src/components/EmojiPicker.js +0 -136
  120. package/dist/types/src/components/EmojiPicker.js.map +0 -1
  121. package/dist/types/src/components/HuePicker.d.ts +0 -18
  122. package/dist/types/src/components/HuePicker.d.ts.map +0 -1
  123. package/dist/types/src/components/HuePicker.js +0 -123
  124. package/dist/types/src/components/HuePicker.js.map +0 -1
  125. package/src/components/EmojiPicker.tsx +0 -187
  126. package/src/components/HuePicker.tsx +0 -182
  127. package/src/components/emoji.css +0 -25
@@ -50,14 +50,13 @@ var AgentConfig = ({ agentStatus, validationMessage, onAgentDestroy, onAgentCrea
50
50
  }, t("destroy agent label")), /* @__PURE__ */ React.createElement(Power, {
51
51
  className: getSize(5)
52
52
  }))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
53
- side: "bottom",
54
- classNames: "z-50"
53
+ side: "bottom"
55
54
  }, t("destroy agent label"))))), agentStatus === "created" && /* @__PURE__ */ React.createElement("p", {
56
55
  id: "devices-panel.create-agent.description",
57
56
  className: mx(descriptionText, "mlb-2")
58
57
  }, t("agent requested description"))) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Button, {
59
58
  variant: "ghost",
60
- classNames: "mlb-2 is-full justify-start gap-2 !pis-0 !pie-3",
59
+ classNames: "mlb-2 is-full justify-start gap-2 pis-0 pie-3",
61
60
  "data-testid": agentStatus === "creatable" ? "devices-panel.create-agent" : "devices-panel.agent-error",
62
61
  onClick: agentStatus === "creatable" ? onAgentCreate : onAgentRefresh,
63
62
  "aria-describedby": "devices-panel.create-agent.description"
@@ -137,359 +136,89 @@ var CompoundButton = ({ children, description, before, after, variant = "default
137
136
  }, after));
138
137
  };
139
138
 
140
- // packages/sdk/shell/src/components/EmojiPicker.tsx
141
- import emojiData from "@emoji-mart/data";
142
- import EmojiMart from "@emoji-mart/react";
143
- import { ArrowCounterClockwise, CaretDown, UserCircle } from "@phosphor-icons/react";
144
- import { useControllableState } from "@radix-ui/react-use-controllable-state";
145
- import React3, { useRef, useState } from "react";
146
- import { Button as Button2, Popover, Toolbar, Tooltip as Tooltip2, useMediaQuery, useThemeContext as useThemeContext2, useTranslation as useTranslation2 } from "@dxos/react-ui";
147
- import { getSize as getSize2 } from "@dxos/react-ui-theme";
148
- var EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji, classNames }) => {
149
- const { t } = useTranslation2("os");
150
- const { themeMode } = useThemeContext2();
151
- const [_emojiValue, setEmojiValue] = useControllableState({
152
- prop: emoji,
153
- onChange: onChangeEmoji,
154
- defaultProp: defaultEmoji
155
- });
156
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
157
- const suppressNextTooltip = useRef(false);
158
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);
159
- return /* @__PURE__ */ React3.createElement(Tooltip2.Root, {
160
- open: triggerTooltipOpen,
161
- onOpenChange: (nextOpen) => {
162
- if (suppressNextTooltip.current) {
163
- setTriggerTooltipOpen(false);
164
- suppressNextTooltip.current = false;
165
- } else {
166
- setTriggerTooltipOpen(nextOpen);
167
- }
168
- }
169
- }, /* @__PURE__ */ React3.createElement(Popover.Root, {
170
- open: emojiPickerOpen,
171
- onOpenChange: (nextOpen) => {
172
- setEmojiPickerOpen(nextOpen);
173
- suppressNextTooltip.current = true;
174
- }
175
- }, /* @__PURE__ */ React3.createElement(Tooltip2.Trigger, {
176
- asChild: true
177
- }, /* @__PURE__ */ React3.createElement(Popover.Trigger, {
178
- asChild: true
179
- }, /* @__PURE__ */ React3.createElement(Toolbar.Button, {
180
- classNames: [
181
- "gap-2 text-2xl plb-1",
182
- classNames
183
- ],
184
- disabled
185
- }, /* @__PURE__ */ React3.createElement("span", {
186
- className: "sr-only"
187
- }, t("select emoji label")), /* @__PURE__ */ React3.createElement(UserCircle, {
188
- className: getSize2(5)
189
- })))), /* @__PURE__ */ React3.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React3.createElement(Tooltip2.Content, {
190
- side: "bottom",
191
- classNames: "z-50"
192
- }, t("select emoji label"), /* @__PURE__ */ React3.createElement(Tooltip2.Arrow, null))), /* @__PURE__ */ React3.createElement(Popover.Content, {
193
- side: "bottom",
194
- onKeyDownCapture: (event) => {
195
- if (event.key === "Escape") {
196
- event.stopPropagation();
197
- setEmojiPickerOpen(false);
198
- suppressNextTooltip.current = true;
199
- }
200
- }
201
- }, /* @__PURE__ */ React3.createElement(EmojiMart, {
202
- data: emojiData,
203
- onEmojiSelect: ({ native }) => {
204
- if (native) {
205
- setEmojiValue(native);
206
- setEmojiPickerOpen(false);
207
- }
208
- },
209
- autoFocus: true,
210
- maxFrequentRows: 0,
211
- noCountryFlags: true,
212
- theme: themeMode
213
- }), /* @__PURE__ */ React3.createElement(Popover.Arrow, null))));
214
- };
215
- var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }) => {
216
- const { t } = useTranslation2("os");
217
- const [isMd] = useMediaQuery("md", {
218
- ssr: false
219
- });
220
- const [emojiValue, setEmojiValue] = useControllableState({
221
- prop: emoji,
222
- onChange: onChangeEmoji,
223
- defaultProp: defaultEmoji
224
- });
225
- const [emojiPickerOpen, setEmojiPickerOpen] = useState(false);
226
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(Popover.Root, {
227
- open: emojiPickerOpen,
228
- onOpenChange: setEmojiPickerOpen
229
- }, /* @__PURE__ */ React3.createElement(Popover.Trigger, {
230
- asChild: true
231
- }, /* @__PURE__ */ React3.createElement(Button2, {
232
- variant: "ghost",
233
- classNames: "gap-2 text-2xl plb-1",
234
- disabled
235
- }, /* @__PURE__ */ React3.createElement("span", {
236
- className: "sr-only"
237
- }, t("select emoji label")), /* @__PURE__ */ React3.createElement("span", {
238
- className: "grow pis-14"
239
- }, emojiValue), /* @__PURE__ */ React3.createElement(CaretDown, {
240
- className: getSize2(4)
241
- }))), /* @__PURE__ */ React3.createElement(Popover.Content, {
242
- side: "right",
243
- sideOffset: isMd ? 0 : -310,
244
- onKeyDownCapture: (event) => {
245
- if (event.key === "Escape") {
246
- event.stopPropagation();
247
- setEmojiPickerOpen(false);
248
- }
249
- }
250
- }, /* @__PURE__ */ React3.createElement(EmojiMart, {
251
- data: emojiData,
252
- onEmojiSelect: ({ native }) => {
253
- if (native) {
254
- setEmojiValue(native);
255
- setEmojiPickerOpen(false);
256
- }
257
- },
258
- autoFocus: true,
259
- maxFrequentRows: 0,
260
- noCountryFlags: true
261
- }), /* @__PURE__ */ React3.createElement(Popover.Arrow, null))), /* @__PURE__ */ React3.createElement(Tooltip2.Root, null, /* @__PURE__ */ React3.createElement(Tooltip2.Trigger, {
262
- asChild: true
263
- }, /* @__PURE__ */ React3.createElement(Button2, {
264
- variant: "ghost",
265
- onClick: onClickClear,
266
- disabled
267
- }, /* @__PURE__ */ React3.createElement("span", {
268
- className: "sr-only"
269
- }, t("clear label")), /* @__PURE__ */ React3.createElement(ArrowCounterClockwise, null))), /* @__PURE__ */ React3.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React3.createElement(Tooltip2.Content, {
270
- style: {
271
- zIndex: 70
272
- },
273
- side: "right"
274
- }, t("clear label"), /* @__PURE__ */ React3.createElement(Tooltip2.Arrow, null)))));
275
- };
276
-
277
- // packages/sdk/shell/src/components/HuePicker.tsx
278
- import { ArrowCounterClockwise as ArrowCounterClockwise2, CaretDown as CaretDown2, Check, Palette } from "@phosphor-icons/react";
279
- import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
280
- import React4, { useRef as useRef2, useState as useState2 } from "react";
281
- import { Button as Button3, DropdownMenu, Toolbar as Toolbar2, Tooltip as Tooltip3, useThemeContext as useThemeContext3, useTranslation as useTranslation3 } from "@dxos/react-ui";
282
- import { getSize as getSize3, hueTokenThemes, mx as mx3 } from "@dxos/react-ui-theme";
283
- var HuePreview = ({ hue }) => {
284
- const { tx } = useThemeContext3();
285
- const size = 20;
286
- return /* @__PURE__ */ React4.createElement("svg", {
287
- width: size,
288
- height: size,
289
- viewBox: `0 0 ${size} ${size}`
290
- }, /* @__PURE__ */ React4.createElement("rect", {
291
- x: 0,
292
- y: 0,
293
- width: size,
294
- height: size,
295
- className: tx("hue.fill", "select--hue__preview", {
296
- hue
297
- })
298
- }));
299
- };
300
- var hueTokens = Object.keys(hueTokenThemes).slice(0, 16);
301
- var HuePickerToolbarButton = ({ disabled, hue, onChangeHue, classNames, defaultHue }) => {
302
- const { t } = useTranslation3("os");
303
- const [hueValue, setHueValue] = useControllableState2({
304
- prop: hue,
305
- onChange: onChangeHue,
306
- defaultProp: defaultHue
307
- });
308
- const [huePickerOpen, setHuePickerOpen] = useState2(false);
309
- const suppressNextTooltip = useRef2(false);
310
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState2(false);
311
- return /* @__PURE__ */ React4.createElement(Tooltip3.Root, {
312
- open: triggerTooltipOpen,
313
- onOpenChange: (nextOpen) => {
314
- if (suppressNextTooltip.current) {
315
- setTriggerTooltipOpen(false);
316
- suppressNextTooltip.current = false;
317
- } else {
318
- setTriggerTooltipOpen(nextOpen);
319
- }
320
- }
321
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Root, {
322
- modal: false,
323
- open: huePickerOpen,
324
- onOpenChange: (nextOpen) => {
325
- setHuePickerOpen(nextOpen);
326
- suppressNextTooltip.current = true;
327
- }
328
- }, /* @__PURE__ */ React4.createElement(Tooltip3.Trigger, {
329
- asChild: true
330
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Trigger, {
331
- asChild: true
332
- }, /* @__PURE__ */ React4.createElement(Toolbar2.Button, {
333
- classNames: mx3("gap-2 plb-1", classNames),
334
- disabled
335
- }, /* @__PURE__ */ React4.createElement("span", {
336
- className: "sr-only"
337
- }, t("select hue label")), /* @__PURE__ */ React4.createElement(Palette, {
338
- className: getSize3(5)
339
- })))), /* @__PURE__ */ React4.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React4.createElement(Tooltip3.Content, {
340
- side: "bottom",
341
- classNames: "z-50"
342
- }, t("select hue label"), /* @__PURE__ */ React4.createElement(Tooltip3.Arrow, null))), /* @__PURE__ */ React4.createElement(DropdownMenu.Content, {
343
- side: "bottom",
344
- classNames: "!w-40"
345
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Viewport, {
346
- classNames: "grid grid-cols-4"
347
- }, hueTokens.map((hue2) => {
348
- return /* @__PURE__ */ React4.createElement(DropdownMenu.CheckboxItem, {
349
- key: hue2,
350
- checked: hue2 === hueValue,
351
- onCheckedChange: () => setHueValue(hue2),
352
- classNames: "px-0 py-2 items-center justify-center"
353
- }, /* @__PURE__ */ React4.createElement(HuePreview, {
354
- hue: hue2
355
- }));
356
- })))));
357
- };
358
- var HuePickerBlock = ({ disabled, hue, onChangeHue, defaultHue, onClickClear }) => {
359
- const { t } = useTranslation3("os");
360
- const [hueValue, setHueValue] = useControllableState2({
361
- prop: hue,
362
- onChange: onChangeHue,
363
- defaultProp: defaultHue
364
- });
365
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(DropdownMenu.Root, {
366
- modal: false
367
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Trigger, {
368
- asChild: true
369
- }, /* @__PURE__ */ React4.createElement(Button3, {
370
- variant: "ghost",
371
- classNames: "gap-2 plb-1",
372
- disabled
373
- }, /* @__PURE__ */ React4.createElement("span", {
374
- className: "sr-only"
375
- }, t("select hue label")), /* @__PURE__ */ React4.createElement("div", {
376
- role: "none",
377
- className: "pis-14 grow flex items-center justify-center gap-2"
378
- }, /* @__PURE__ */ React4.createElement(HuePreview, {
379
- hue: hueValue
380
- }), /* @__PURE__ */ React4.createElement("span", null, t(`${hueValue} label`))), /* @__PURE__ */ React4.createElement(CaretDown2, {
381
- className: getSize3(4)
382
- }))), /* @__PURE__ */ React4.createElement(DropdownMenu.Content, {
383
- side: "right"
384
- }, /* @__PURE__ */ React4.createElement(DropdownMenu.Viewport, null, Object.keys(hueTokenThemes).map((hue2) => {
385
- return /* @__PURE__ */ React4.createElement(DropdownMenu.CheckboxItem, {
386
- key: hue2,
387
- checked: hue2 === hueValue,
388
- onCheckedChange: () => setHueValue(hue2)
389
- }, /* @__PURE__ */ React4.createElement(HuePreview, {
390
- hue: hue2
391
- }), /* @__PURE__ */ React4.createElement("span", {
392
- className: "grow"
393
- }, t(`${hue2} label`)), /* @__PURE__ */ React4.createElement(DropdownMenu.ItemIndicator, null, /* @__PURE__ */ React4.createElement(Check, null)));
394
- })), /* @__PURE__ */ React4.createElement(DropdownMenu.Arrow, null))), /* @__PURE__ */ React4.createElement(Tooltip3.Root, null, /* @__PURE__ */ React4.createElement(Tooltip3.Trigger, {
395
- asChild: true
396
- }, /* @__PURE__ */ React4.createElement(Button3, {
397
- variant: "ghost",
398
- onClick: onClickClear,
399
- disabled
400
- }, /* @__PURE__ */ React4.createElement("span", {
401
- className: "sr-only"
402
- }, t("clear label")), /* @__PURE__ */ React4.createElement(ArrowCounterClockwise2, null))), /* @__PURE__ */ React4.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React4.createElement(Tooltip3.Content, {
403
- style: {
404
- zIndex: 70
405
- },
406
- side: "right"
407
- }, t("clear label"), /* @__PURE__ */ React4.createElement(Tooltip3.Arrow, null)))));
408
- };
409
-
410
139
  // packages/sdk/shell/src/components/IdentityList/IdentityListItem.tsx
411
- import React5, { forwardRef } from "react";
140
+ import React3, { forwardRef } from "react";
412
141
  import { generateName } from "@dxos/display-name";
413
142
  import { SpaceMember } from "@dxos/react-client/echo";
414
143
  import { ListItem, Avatar as Avatar2, useId as useId2 } from "@dxos/react-ui";
415
- import { mx as mx4 } from "@dxos/react-ui-theme";
144
+ import { mx as mx3 } from "@dxos/react-ui-theme";
416
145
  import { keyToFallback } from "@dxos/util";
417
146
  var IdentityListItem = /* @__PURE__ */ forwardRef(({ identity, presence, onClick, classNames, ...props }, forwardedRef) => {
418
147
  const fallbackValue = keyToFallback(identity.identityKey);
419
148
  const labelId = useId2("identityListItem__label");
420
149
  const displayName = identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
421
- return /* @__PURE__ */ React5.createElement(ListItem.Root, {
150
+ return /* @__PURE__ */ React3.createElement(ListItem.Root, {
422
151
  ...props,
423
- classNames: mx4("flex gap-2 pis-3 pie-1 items-center", onClick && "cursor-pointer", classNames),
152
+ classNames: mx3("flex gap-2 pis-3 pie-1 items-center", onClick && "cursor-pointer", classNames),
424
153
  onClick: () => onClick?.(),
425
154
  "data-testid": "identity-list-item",
426
155
  labelId,
427
156
  ref: forwardedRef
428
- }, /* @__PURE__ */ React5.createElement(Avatar2.Root, {
157
+ }, /* @__PURE__ */ React3.createElement(Avatar2.Root, {
429
158
  status: presence === SpaceMember.PresenceState.ONLINE ? "active" : "inactive",
430
159
  labelId,
431
160
  hue: identity.profile?.data?.hue || fallbackValue.hue
432
- }, /* @__PURE__ */ React5.createElement(Avatar2.Frame, {
161
+ }, /* @__PURE__ */ React3.createElement(Avatar2.Frame, {
433
162
  classNames: "place-self-center"
434
- }, /* @__PURE__ */ React5.createElement(Avatar2.Fallback, {
163
+ }, /* @__PURE__ */ React3.createElement(Avatar2.Fallback, {
435
164
  text: identity.profile?.data?.emoji || fallbackValue.emoji
436
- })), /* @__PURE__ */ React5.createElement(Avatar2.Label, {
165
+ })), /* @__PURE__ */ React3.createElement(Avatar2.Label, {
437
166
  classNames: "text-sm truncate pli-2"
438
167
  }, displayName)));
439
168
  });
440
169
 
441
170
  // packages/sdk/shell/src/components/IdentityList/SpaceMemberList.tsx
442
- import React6, { useMemo } from "react";
171
+ import React4, { useMemo } from "react";
443
172
  import { useClient } from "@dxos/react-client";
444
173
  import { useMembers } from "@dxos/react-client/echo";
445
- import { useTranslation as useTranslation4, List } from "@dxos/react-ui";
446
- import { descriptionText as descriptionText3, mx as mx5 } from "@dxos/react-ui-theme";
174
+ import { useTranslation as useTranslation2, List } from "@dxos/react-ui";
175
+ import { descriptionText as descriptionText3, mx as mx4 } from "@dxos/react-ui-theme";
447
176
  var SpaceMemberList = ({ spaceKey, includeSelf, onSelect }) => {
448
177
  const client = useClient();
449
178
  const allUnsortedMembers = useMembers(spaceKey);
450
179
  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)), [
451
180
  allUnsortedMembers
452
181
  ]);
453
- return /* @__PURE__ */ React6.createElement(SpaceMemberListImpl, {
182
+ return /* @__PURE__ */ React4.createElement(SpaceMemberListImpl, {
454
183
  members,
455
184
  onSelect
456
185
  });
457
186
  };
458
187
  var SpaceMemberListImpl = ({ members, onSelect }) => {
459
- const { t } = useTranslation4("os");
188
+ const { t } = useTranslation2("os");
460
189
  const visibleMembers = members.filter((member) => member.identity);
461
- return visibleMembers.length > 0 ? /* @__PURE__ */ React6.createElement(List, {
190
+ return visibleMembers.length > 0 ? /* @__PURE__ */ React4.createElement(List, {
462
191
  classNames: "flex flex-col gap-2",
463
192
  "data-testid": "space-members-list"
464
193
  }, visibleMembers.map((member) => {
465
- return /* @__PURE__ */ React6.createElement(IdentityListItem, {
194
+ return /* @__PURE__ */ React4.createElement(IdentityListItem, {
466
195
  key: member.identity.identityKey.toHex(),
467
196
  identity: member.identity,
468
197
  presence: member.presence,
469
198
  onClick: onSelect && (() => onSelect(member))
470
199
  });
471
- })) : /* @__PURE__ */ React6.createElement("div", {
200
+ })) : /* @__PURE__ */ React4.createElement("div", {
472
201
  role: "none",
473
202
  className: "grow flex items-center p-2"
474
- }, /* @__PURE__ */ React6.createElement("p", {
475
- className: mx5(descriptionText3, "text-center is-full mlb-2")
203
+ }, /* @__PURE__ */ React4.createElement("p", {
204
+ className: mx4(descriptionText3, "text-center is-full mlb-2")
476
205
  }, t("empty space members message")));
477
206
  };
478
207
 
479
208
  // packages/sdk/shell/src/components/DeviceList/DeviceList.tsx
480
209
  import { CaretRight, Plus as Plus2 } from "@phosphor-icons/react";
481
- import React8 from "react";
482
- import { Button as Button5, List as List2, useTranslation as useTranslation6 } from "@dxos/react-ui";
483
- import { descriptionText as descriptionText4, getSize as getSize5, mx as mx6 } from "@dxos/react-ui-theme";
210
+ import React6 from "react";
211
+ import { Button as Button3, List as List2, useTranslation as useTranslation4 } from "@dxos/react-ui";
212
+ import { descriptionText as descriptionText4, getSize as getSize3, mx as mx5 } from "@dxos/react-ui-theme";
484
213
 
485
214
  // packages/sdk/shell/src/components/DeviceList/DeviceListItem.tsx
486
215
  import { Compass, Desktop, DeviceMobile, Devices, DotsThree, ShareFat, Power as Power2, Robot, Database as Database2, FirstAidKit } from "@phosphor-icons/react";
487
- import React7, { forwardRef as forwardRef2 } from "react";
216
+ import React5, { forwardRef as forwardRef2 } from "react";
488
217
  import { generateName as generateName2 } from "@dxos/display-name";
489
218
  import { Device, DeviceType, DeviceKind } from "@dxos/react-client/halo";
490
219
  import { ConnectionState } from "@dxos/react-client/mesh";
491
- import { ListItem as ListItem2, Avatar as Avatar3, useId as useId3, Tag, useTranslation as useTranslation5, DropdownMenu as DropdownMenu2, Button as Button4 } from "@dxos/react-ui";
492
- import { getSize as getSize4 } from "@dxos/react-ui-theme";
220
+ import { ListItem as ListItem2, Avatar as Avatar3, useId as useId3, Tag, useTranslation as useTranslation3, DropdownMenu, Button as Button2 } from "@dxos/react-ui";
221
+ import { getSize as getSize2 } from "@dxos/react-ui-theme";
493
222
  import { keyToFallback as keyToFallback2 } from "@dxos/util";
494
223
  var iconProps = {
495
224
  weight: "duotone",
@@ -499,7 +228,7 @@ var iconProps = {
499
228
  y: 8
500
229
  };
501
230
  var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickEdit, onClickReset, onClickRecover, onClickJoinExisting, classNames, connectionState, onAgentDestroy: _, ...props }, forwardedRef) => {
502
- const { t } = useTranslation5("os");
231
+ const { t } = useTranslation3("os");
503
232
  const fallbackValue = keyToFallback2(device.deviceKey);
504
233
  const labelId = useId3("identityListItem__label");
505
234
  const displayName = device.profile ? t("device name placeholder", {
@@ -507,7 +236,7 @@ var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickE
507
236
  platform: device.profile.platform
508
237
  }) : generateName2(device.deviceKey.toHex());
509
238
  const isCurrent = device.kind === DeviceKind.CURRENT;
510
- return /* @__PURE__ */ React7.createElement(ListItem2.Root, {
239
+ return /* @__PURE__ */ React5.createElement(ListItem2.Root, {
511
240
  ...props,
512
241
  classNames: [
513
242
  "flex gap-2 items-center mlb-2",
@@ -516,60 +245,60 @@ var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickE
516
245
  "data-testid": `device-list-item${isCurrent ? "-current" : ""}`,
517
246
  labelId,
518
247
  ref: forwardedRef
519
- }, /* @__PURE__ */ React7.createElement(Avatar3.Root, {
248
+ }, /* @__PURE__ */ React5.createElement(Avatar3.Root, {
520
249
  status: isCurrent && connectionState === ConnectionState.OFFLINE ? "error" : device.presence === Device.PresenceState.ONLINE ? "active" : "inactive",
521
250
  labelId,
522
251
  hue: fallbackValue.hue,
523
252
  variant: "square"
524
- }, /* @__PURE__ */ React7.createElement(Avatar3.Frame, {
253
+ }, /* @__PURE__ */ React5.createElement(Avatar3.Frame, {
525
254
  classNames: "place-self-center"
526
- }, 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) : [
255
+ }, 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) : [
527
256
  DeviceType.AGENT,
528
257
  DeviceType.AGENT_MANAGED
529
- ].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, {
258
+ ].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, {
530
259
  text: fallbackValue.emoji
531
- })), /* @__PURE__ */ React7.createElement(Avatar3.Label, {
260
+ })), /* @__PURE__ */ React5.createElement(Avatar3.Label, {
532
261
  classNames: "flex-1 text-sm truncate"
533
- }, displayName), isCurrent && /* @__PURE__ */ React7.createElement(Tag, {
262
+ }, displayName), isCurrent && /* @__PURE__ */ React5.createElement(Tag, {
534
263
  color: "primary"
535
- }, t("current device tag label")), device.kind === DeviceKind.CURRENT && /* @__PURE__ */ React7.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React7.createElement(DropdownMenu2.Trigger, {
264
+ }, t("current device tag label")), device.kind === DeviceKind.CURRENT && /* @__PURE__ */ React5.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Trigger, {
536
265
  asChild: true
537
- }, /* @__PURE__ */ React7.createElement(Button4, {
266
+ }, /* @__PURE__ */ React5.createElement(Button2, {
538
267
  variant: "ghost",
539
268
  classNames: "pli-0 is-[--rail-action] bs-[--rail-action]",
540
269
  "data-testid": `device-list-item${isCurrent ? "-current" : ""}.options`
541
- }, /* @__PURE__ */ React7.createElement("span", {
270
+ }, /* @__PURE__ */ React5.createElement("span", {
542
271
  className: "sr-only"
543
- }, t("more options label")), /* @__PURE__ */ React7.createElement(DotsThree, {
544
- className: getSize4(5)
545
- }))), /* @__PURE__ */ React7.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React7.createElement(DropdownMenu2.Viewport, null, /* @__PURE__ */ React7.createElement(DropdownMenu2.Item, {
272
+ }, t("more options label")), /* @__PURE__ */ React5.createElement(DotsThree, {
273
+ className: getSize2(5)
274
+ }))), /* @__PURE__ */ React5.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Viewport, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
546
275
  "data-testid": "device-list-item-current.join-existing",
547
276
  onClick: onClickJoinExisting
548
- }, /* @__PURE__ */ React7.createElement(ShareFat, {
549
- className: getSize4(5)
550
- }), t("choose join new identity label")), onClickRecover && /* @__PURE__ */ React7.createElement(DropdownMenu2.Item, {
277
+ }, /* @__PURE__ */ React5.createElement(ShareFat, {
278
+ className: getSize2(5)
279
+ }), t("choose join new identity label")), onClickRecover && /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
551
280
  "data-testid": "device-list-item-current.recover",
552
281
  onClick: onClickRecover
553
- }, /* @__PURE__ */ React7.createElement(FirstAidKit, {
554
- className: getSize4(5)
555
- }), t("choose recover identity label")), /* @__PURE__ */ React7.createElement(DropdownMenu2.Item, {
282
+ }, /* @__PURE__ */ React5.createElement(FirstAidKit, {
283
+ className: getSize2(5)
284
+ }), t("choose recover identity label")), /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
556
285
  "data-testid": "device-list-item-current.reset",
557
286
  onClick: onClickReset
558
- }, /* @__PURE__ */ React7.createElement(Power2, {
559
- className: getSize4(5)
287
+ }, /* @__PURE__ */ React5.createElement(Power2, {
288
+ className: getSize2(5)
560
289
  }), t("reset device label")))))));
561
290
  });
562
291
 
563
292
  // packages/sdk/shell/src/components/DeviceList/DeviceList.tsx
564
293
  var DeviceList = ({ devices, connectionState, onClickAdd, onClickEdit, onClickReset, onClickRecover, onClickJoinExisting, onAgentDestroy }) => {
565
- const { t } = useTranslation6("os");
566
- return /* @__PURE__ */ React8.createElement("div", {
294
+ const { t } = useTranslation4("os");
295
+ return /* @__PURE__ */ React6.createElement("div", {
567
296
  role: "none",
568
297
  className: "p-1"
569
- }, /* @__PURE__ */ React8.createElement("h2", {
570
- className: mx6(descriptionText4, "text-center mbs-2")
571
- }, t("devices heading")), devices.length > 0 && /* @__PURE__ */ React8.createElement(List2, null, devices.map((device) => {
572
- return /* @__PURE__ */ React8.createElement(DeviceListItem, {
298
+ }, /* @__PURE__ */ React6.createElement("h2", {
299
+ className: mx5(descriptionText4, "text-center mbs-2")
300
+ }, t("devices heading")), devices.length > 0 && /* @__PURE__ */ React6.createElement(List2, null, devices.map((device) => {
301
+ return /* @__PURE__ */ React6.createElement(DeviceListItem, {
573
302
  key: device.deviceKey.toHex(),
574
303
  device,
575
304
  onClickEdit: () => onClickEdit?.(device),
@@ -579,43 +308,43 @@ var DeviceList = ({ devices, connectionState, onClickAdd, onClickEdit, onClickRe
579
308
  connectionState,
580
309
  onAgentDestroy
581
310
  });
582
- })), /* @__PURE__ */ React8.createElement(Button5, {
311
+ })), /* @__PURE__ */ React6.createElement(Button3, {
583
312
  variant: "ghost",
584
- classNames: "justify-start gap-2 !pis-0 !pie-3 is-full",
313
+ classNames: "justify-start gap-2 pis-0 pie-3 is-full",
585
314
  "data-testid": "devices-panel.create-invitation",
586
315
  onClick: onClickAdd
587
- }, /* @__PURE__ */ React8.createElement("div", {
316
+ }, /* @__PURE__ */ React6.createElement("div", {
588
317
  role: "img",
589
- className: mx6(getSize5(8), "m-1 rounded-sm bg-input grid place-items-center")
590
- }, /* @__PURE__ */ React8.createElement(Plus2, {
318
+ className: mx5(getSize3(8), "m-1 rounded-sm bg-input grid place-items-center")
319
+ }, /* @__PURE__ */ React6.createElement(Plus2, {
591
320
  weight: "light",
592
- className: getSize5(6)
593
- })), /* @__PURE__ */ React8.createElement("span", {
321
+ className: getSize3(6)
322
+ })), /* @__PURE__ */ React6.createElement("span", {
594
323
  className: "grow font-medium text-start"
595
- }, t("choose add device label")), /* @__PURE__ */ React8.createElement(CaretRight, {
324
+ }, t("choose add device label")), /* @__PURE__ */ React6.createElement(CaretRight, {
596
325
  weight: "bold",
597
- className: getSize5(4)
326
+ className: getSize3(4)
598
327
  })));
599
328
  };
600
329
 
601
330
  // packages/sdk/shell/src/components/InvitationList/InvitationListItem.tsx
602
331
  import { X } from "@phosphor-icons/react";
603
332
  import { formatDistanceToNow } from "date-fns";
604
- import React10, { useCallback } from "react";
333
+ import React8, { useCallback } from "react";
605
334
  import { Invitation, useInvitationStatus } from "@dxos/react-client/invitations";
606
- import { Button as Button6, Clipboard, ListItem as ListItem3, useTranslation as useTranslation7, Avatar as Avatar4, useThemeContext as useThemeContext4, Tooltip as Tooltip4 } from "@dxos/react-ui";
607
- import { focusRing, getSize as getSize6, mx as mx8 } from "@dxos/react-ui-theme";
335
+ import { Button as Button4, Clipboard, ListItem as ListItem3, useTranslation as useTranslation5, Avatar as Avatar4, useThemeContext as useThemeContext2, Tooltip as Tooltip2 } from "@dxos/react-ui";
336
+ import { focusRing, getSize as getSize4, mx as mx7 } from "@dxos/react-ui-theme";
608
337
  import { hexToEmoji } from "@dxos/util";
609
338
 
610
339
  // packages/sdk/shell/src/components/AuthCode.tsx
611
- import React9, { useRef as useRef3 } from "react";
612
- import { mx as mx7 } from "@dxos/react-ui-theme";
340
+ import React7, { useRef } from "react";
341
+ import { mx as mx6 } from "@dxos/react-ui-theme";
613
342
  var AuthCode = (props) => {
614
343
  const { code, large, classNames } = props;
615
344
  const l = code?.length ?? 0;
616
345
  const left = code?.slice(0, l / 2);
617
346
  const right = code?.slice(l / 2);
618
- const codeRef = useRef3(null);
347
+ const codeRef = useRef(null);
619
348
  const handleClick = () => {
620
349
  if (codeRef.current) {
621
350
  const selection = window.getSelection();
@@ -626,20 +355,20 @@ var AuthCode = (props) => {
626
355
  }
627
356
  void navigator.clipboard.writeText(code ?? "");
628
357
  };
629
- return /* @__PURE__ */ React9.createElement("span", {
630
- className: mx7(large ? "text-6xl" : "text-2xl", "font-mono pli-2.5 rounded cursor-pointer", classNames),
358
+ return /* @__PURE__ */ React7.createElement("span", {
359
+ className: mx6(large ? "text-6xl" : "text-2xl", "font-mono pli-2.5 rounded cursor-pointer", classNames),
631
360
  onClick: handleClick,
632
361
  ref: codeRef
633
- }, /* @__PURE__ */ React9.createElement("span", {
362
+ }, /* @__PURE__ */ React7.createElement("span", {
634
363
  className: "mie-[0.4em]"
635
- }, left), /* @__PURE__ */ React9.createElement("span", null, right));
364
+ }, left), /* @__PURE__ */ React7.createElement("span", null, right));
636
365
  };
637
366
 
638
367
  // packages/sdk/shell/src/components/InvitationList/InvitationListItem.tsx
639
368
  var InvitationListItem = (props) => {
640
369
  const { invitation } = props;
641
370
  const invitationStatus = useInvitationStatus(invitation);
642
- return /* @__PURE__ */ React10.createElement(InvitationListItemImpl, {
371
+ return /* @__PURE__ */ React8.createElement(InvitationListItemImpl, {
643
372
  ...props,
644
373
  invitationStatus
645
374
  });
@@ -649,11 +378,11 @@ var avatarProps = {
649
378
  variant: "circle"
650
379
  };
651
380
  var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
652
- const { tx } = useThemeContext4();
653
- return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement("span", {
381
+ const { tx } = useThemeContext2();
382
+ return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("span", {
654
383
  role: "none",
655
- className: mx8("absolute inline-end-auto opacity-20", reverseEffects ? "inline-start-3" : "inline-start-1", getSize6(avatarProps.size))
656
- }, /* @__PURE__ */ React10.createElement("span", {
384
+ className: mx7("absolute inline-end-auto opacity-20", reverseEffects ? "inline-start-3" : "inline-start-1", getSize4(avatarProps.size))
385
+ }, /* @__PURE__ */ React8.createElement("span", {
657
386
  role: "none",
658
387
  className: tx("avatar.ring", "avatar__ring", {
659
388
  ...avatarProps,
@@ -663,10 +392,10 @@ var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
663
392
  style: {
664
393
  animationDelay: "400ms"
665
394
  }
666
- })), /* @__PURE__ */ React10.createElement("span", {
395
+ })), /* @__PURE__ */ React8.createElement("span", {
667
396
  role: "none",
668
- className: mx8("absolute inline-end-auto opacity-50", reverseEffects ? "inline-start-2" : "inline-start-2", getSize6(avatarProps.size))
669
- }, /* @__PURE__ */ React10.createElement("span", {
397
+ className: mx7("absolute inline-end-auto opacity-50", reverseEffects ? "inline-start-2" : "inline-start-2", getSize4(avatarProps.size))
398
+ }, /* @__PURE__ */ React8.createElement("span", {
670
399
  role: "none",
671
400
  className: tx("avatar.ring", "avatar__ring", {
672
401
  ...avatarProps,
@@ -679,7 +408,7 @@ var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
679
408
  })));
680
409
  };
681
410
  var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationStatus, send, onClickRemove, createInvitationUrl, reverseEffects, ...props }) => {
682
- const { t } = useTranslation7("os");
411
+ const { t } = useTranslation5("os");
683
412
  const { cancel, status: invitationStatus, invitationCode, authCode, multiUse, shareable } = propsInvitationStatus;
684
413
  const isCancellable = !([
685
414
  Invitation.State.ERROR,
@@ -721,39 +450,38 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
721
450
  Invitation.State.SUCCESS
722
451
  ].includes(invitationStatus);
723
452
  const avatarStatus = avatarError ? "error" : avatarGreen ? "active" : "inactive";
724
- return /* @__PURE__ */ React10.createElement(ListItem3.Root, {
453
+ return /* @__PURE__ */ React8.createElement(ListItem3.Root, {
725
454
  id: invitationCode,
726
455
  ...props,
727
456
  classNames: [
728
457
  "flex gap-2 pis-3 pie-1 items-center relative",
729
458
  props.classNames
730
459
  ]
731
- }, /* @__PURE__ */ React10.createElement(ListItem3.Heading, {
460
+ }, /* @__PURE__ */ React8.createElement(ListItem3.Heading, {
732
461
  classNames: "sr-only"
733
- }, t(multiUse ? "invite many list item label" : "invite one list item label")), multiUse && /* @__PURE__ */ React10.createElement(AvatarStackEffect, {
462
+ }, t(multiUse ? "invite many list item label" : "invite one list item label")), multiUse && /* @__PURE__ */ React8.createElement(AvatarStackEffect, {
734
463
  status: avatarStatus,
735
464
  animation: avatarAnimation,
736
465
  reverseEffects
737
- }), /* @__PURE__ */ React10.createElement(Tooltip4.Root, null, /* @__PURE__ */ React10.createElement(Avatar4.Root, {
466
+ }), /* @__PURE__ */ React8.createElement(Tooltip2.Root, null, /* @__PURE__ */ React8.createElement(Avatar4.Root, {
738
467
  ...avatarProps,
739
468
  animation: avatarAnimation,
740
469
  status: avatarStatus
741
- }, /* @__PURE__ */ React10.createElement(Tooltip4.Trigger, {
470
+ }, /* @__PURE__ */ React8.createElement(Tooltip2.Trigger, {
742
471
  asChild: true
743
- }, /* @__PURE__ */ React10.createElement(Avatar4.Frame, {
472
+ }, /* @__PURE__ */ React8.createElement(Avatar4.Frame, {
744
473
  tabIndex: 0,
745
474
  classNames: [
746
475
  focusRing,
747
476
  "relative rounded-full place-self-center"
748
477
  ]
749
- }, /* @__PURE__ */ React10.createElement(Avatar4.Fallback, {
478
+ }, /* @__PURE__ */ React8.createElement(Avatar4.Fallback, {
750
479
  text: hexToEmoji(invitationId)
751
- })))), /* @__PURE__ */ React10.createElement(Tooltip4.Portal, null, /* @__PURE__ */ React10.createElement(Tooltip4.Content, {
752
- side: "left",
753
- classNames: "z-[70]"
754
- }, 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, {
480
+ })))), /* @__PURE__ */ React8.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React8.createElement(Tooltip2.Content, {
481
+ side: "left"
482
+ }, 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, {
755
483
  asChild: true
756
- }, /* @__PURE__ */ React10.createElement(Button6, {
484
+ }, /* @__PURE__ */ React8.createElement(Button4, {
757
485
  variant: "ghost",
758
486
  classNames: "grow justify-start font-medium",
759
487
  onClick: () => send({
@@ -761,65 +489,64 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
761
489
  invitation
762
490
  }),
763
491
  "data-testid": "show-qrcode"
764
- }, /* @__PURE__ */ React10.createElement("span", null, t("open share panel label")))), /* @__PURE__ */ React10.createElement(Clipboard.IconButton, {
492
+ }, /* @__PURE__ */ React8.createElement("span", null, t("open share panel label")))), /* @__PURE__ */ React8.createElement(Clipboard.IconButton, {
765
493
  variant: "ghost",
766
494
  value: invitationUrl
767
- })), /* @__PURE__ */ React10.createElement(Tooltip4.Portal, null, /* @__PURE__ */ React10.createElement(Tooltip4.Content, {
768
- side: "left",
769
- classNames: "z-[70]"
770
- }, invitationHasLifetime && /* @__PURE__ */ React10.createElement("span", null, "Expires ", invitationTimeLeft)))) : showAuthCode ? /* @__PURE__ */ React10.createElement(AuthCode, {
495
+ })), /* @__PURE__ */ React8.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React8.createElement(Tooltip2.Content, {
496
+ side: "left"
497
+ }, invitationHasLifetime && /* @__PURE__ */ React8.createElement("span", null, "Expires ", invitationTimeLeft)))) : showAuthCode ? /* @__PURE__ */ React8.createElement(AuthCode, {
771
498
  code: authCode,
772
499
  classNames: "grow"
773
- }) : invitationStatus === Invitation.State.CONNECTING ? /* @__PURE__ */ React10.createElement("span", {
500
+ }) : invitationStatus === Invitation.State.CONNECTING ? /* @__PURE__ */ React8.createElement("span", {
774
501
  className: "pli-2 grow text-neutral-500"
775
- }, "Connecting...") : invitationStatus === Invitation.State.AUTHENTICATING ? /* @__PURE__ */ React10.createElement("span", {
502
+ }, "Connecting...") : invitationStatus === Invitation.State.AUTHENTICATING ? /* @__PURE__ */ React8.createElement("span", {
776
503
  className: "pli-2 grow text-neutral-500"
777
- }, "Authenticating...") : invitationStatus === Invitation.State.ERROR || invitationStatus === Invitation.State.TIMEOUT ? /* @__PURE__ */ React10.createElement("span", {
504
+ }, "Authenticating...") : invitationStatus === Invitation.State.ERROR || invitationStatus === Invitation.State.TIMEOUT ? /* @__PURE__ */ React8.createElement("span", {
778
505
  className: "pli-2 grow text-neutral-500"
779
- }, "Failed") : invitationStatus === Invitation.State.CANCELLED ? /* @__PURE__ */ React10.createElement("span", {
506
+ }, "Failed") : invitationStatus === Invitation.State.CANCELLED ? /* @__PURE__ */ React8.createElement("span", {
780
507
  className: "pli-2 grow text-neutral-500"
781
- }, "Cancelled") : invitationStatus === Invitation.State.SUCCESS ? /* @__PURE__ */ React10.createElement("span", {
508
+ }, "Cancelled") : invitationStatus === Invitation.State.SUCCESS ? /* @__PURE__ */ React8.createElement("span", {
782
509
  className: "pli-2 grow truncate"
783
- }, "User joined") : !shareable ? /* @__PURE__ */ React10.createElement("span", {
510
+ }, "User joined") : !shareable ? /* @__PURE__ */ React8.createElement("span", {
784
511
  className: "pli-2 grow text-neutral-500"
785
- }, "Pending Invitation") : /* @__PURE__ */ React10.createElement("span", {
512
+ }, "Pending Invitation") : /* @__PURE__ */ React8.createElement("span", {
786
513
  className: "grow"
787
- }, " "), isCancellable ? /* @__PURE__ */ React10.createElement(Button6, {
514
+ }, " "), isCancellable ? /* @__PURE__ */ React8.createElement(Button4, {
788
515
  variant: "ghost",
789
516
  classNames: "flex gap-1 pli-0",
790
517
  onClick: cancel,
791
518
  "data-testid": "cancel-invitation"
792
- }, /* @__PURE__ */ React10.createElement("span", {
519
+ }, /* @__PURE__ */ React8.createElement("span", {
793
520
  className: "sr-only"
794
- }, t("cancel invitation label")), /* @__PURE__ */ React10.createElement(X, {
795
- className: getSize6(4)
796
- })) : /* @__PURE__ */ React10.createElement(Button6, {
521
+ }, t("cancel invitation label")), /* @__PURE__ */ React8.createElement(X, {
522
+ className: getSize4(4)
523
+ })) : /* @__PURE__ */ React8.createElement(Button4, {
797
524
  variant: "ghost",
798
525
  classNames: "flex gap-1 pli-0",
799
526
  onClick: handleClickRemove,
800
527
  "data-testid": "remove-invitation"
801
- }, /* @__PURE__ */ React10.createElement("span", {
528
+ }, /* @__PURE__ */ React8.createElement("span", {
802
529
  className: "sr-only"
803
- }, t("remove invitation label")), /* @__PURE__ */ React10.createElement(X, {
804
- className: getSize6(4)
530
+ }, t("remove invitation label")), /* @__PURE__ */ React8.createElement(X, {
531
+ className: getSize4(4)
805
532
  })));
806
533
  };
807
534
 
808
535
  // packages/sdk/shell/src/components/InvitationList/InvitationListContainer.tsx
809
- import React12, { useCallback as useCallback2 } from "react";
536
+ import React10, { useCallback as useCallback2 } from "react";
810
537
  import { useSpace, useSpaceInvitations } from "@dxos/react-client/echo";
811
538
 
812
539
  // packages/sdk/shell/src/components/InvitationList/InvitationList.tsx
813
- import React11 from "react";
540
+ import React9 from "react";
814
541
  import { List as List3 } from "@dxos/react-ui";
815
- import { mx as mx9 } from "@dxos/react-ui-theme";
542
+ import { mx as mx8 } from "@dxos/react-ui-theme";
816
543
  var InvitationList = ({ invitations, send, ...invitationProps }) => {
817
544
  const { className, InvitationListItem: Item = InvitationListItem } = invitationProps;
818
- return /* @__PURE__ */ React11.createElement(List3, {
819
- classNames: mx9("flex flex-col gap-2", className)
545
+ return /* @__PURE__ */ React9.createElement(List3, {
546
+ classNames: mx8("flex flex-col gap-2", className)
820
547
  }, invitations.map((invitation) => {
821
548
  const value = invitation.get().invitationId;
822
- return /* @__PURE__ */ React11.createElement(Item, {
549
+ return /* @__PURE__ */ React9.createElement(Item, {
823
550
  key: value,
824
551
  send,
825
552
  invitation,
@@ -837,7 +564,7 @@ var InvitationListContainer = ({ spaceKey, createInvitationUrl, send }) => {
837
564
  }, [
838
565
  space
839
566
  ]);
840
- return /* @__PURE__ */ React12.createElement(InvitationList, {
567
+ return /* @__PURE__ */ React10.createElement(InvitationList, {
841
568
  invitations,
842
569
  onClickRemove: handleClickRemove,
843
570
  createInvitationUrl,
@@ -846,11 +573,11 @@ var InvitationListContainer = ({ spaceKey, createInvitationUrl, send }) => {
846
573
  };
847
574
 
848
575
  // packages/sdk/shell/src/components/Panel/Action.tsx
849
- import { CaretDown as CaretDown3, Check as Check2, Placeholder } from "@phosphor-icons/react";
850
- import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
851
- import React13, { forwardRef as forwardRef3 } from "react";
852
- import { Button as Button7, DropdownMenu as DropdownMenu3, useTranslation as useTranslation8 } from "@dxos/react-ui";
853
- import { descriptionText as descriptionText5, getSize as getSize7, mx as mx10 } from "@dxos/react-ui-theme";
576
+ import { CaretDown, Check, Placeholder } from "@phosphor-icons/react";
577
+ import { useControllableState } from "@radix-ui/react-use-controllable-state";
578
+ import React11, { forwardRef as forwardRef3 } from "react";
579
+ import { Button as Button5, DropdownMenu as DropdownMenu2, useTranslation as useTranslation6 } from "@dxos/react-ui";
580
+ import { descriptionText as descriptionText5, getSize as getSize5, mx as mx9 } from "@dxos/react-ui-theme";
854
581
  var defaultActions = {
855
582
  noopAction: {
856
583
  label: "No-op",
@@ -863,17 +590,17 @@ var defaultActions = {
863
590
  var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
864
591
  const { classNames, variant, isFull = true, actions = defaultActions, activeAction: propsActiveAction, onChangeActiveAction, defaultActiveAction, "data-testid": testId, ...rest } = props;
865
592
  const dropdownTestId = testId && `${testId}.more`;
866
- const [activeActionKey2 = Object.keys(actions)[0], setActiveAction] = useControllableState3({
593
+ const [activeActionKey2 = Object.keys(actions)[0], setActiveAction] = useControllableState({
867
594
  prop: propsActiveAction,
868
595
  onChange: onChangeActiveAction,
869
596
  defaultProp: defaultActiveAction
870
597
  });
871
598
  const activeAction = actions[activeActionKey2] ?? {};
872
- const { t } = useTranslation8("os");
873
- return /* @__PURE__ */ React13.createElement("div", {
599
+ const { t } = useTranslation6("os");
600
+ return /* @__PURE__ */ React11.createElement("div", {
874
601
  role: "none",
875
- className: mx10("mbs-2 flex gap-px items-center", isFull && "is-full")
876
- }, /* @__PURE__ */ React13.createElement(Button7, {
602
+ className: mx9("mbs-2 flex gap-px items-center", isFull && "is-full")
603
+ }, /* @__PURE__ */ React11.createElement(Button5, {
877
604
  ...rest,
878
605
  classNames: [
879
606
  "bs-11 flex-1 min-is-0 flex gap-2 rounded-ie-none",
@@ -883,22 +610,22 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
883
610
  variant,
884
611
  "data-testid": testId,
885
612
  onClick: activeAction.onClick
886
- }, activeAction.icon && /* @__PURE__ */ React13.createElement(activeAction.icon, {
887
- className: getSize7(5)
888
- }), /* @__PURE__ */ React13.createElement("span", null, activeAction.label)), /* @__PURE__ */ React13.createElement(DropdownMenu3.Root, null, /* @__PURE__ */ React13.createElement(DropdownMenu3.Trigger, {
613
+ }, activeAction.icon && /* @__PURE__ */ React11.createElement(activeAction.icon, {
614
+ className: getSize5(5)
615
+ }), /* @__PURE__ */ React11.createElement("span", null, activeAction.label)), /* @__PURE__ */ React11.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Trigger, {
889
616
  asChild: true
890
- }, /* @__PURE__ */ React13.createElement(Button7, {
617
+ }, /* @__PURE__ */ React11.createElement(Button5, {
891
618
  classNames: [
892
619
  "bs-11 flex-none rounded-is-none",
893
620
  classNames
894
621
  ],
895
622
  "data-testid": dropdownTestId
896
- }, /* @__PURE__ */ React13.createElement("span", {
623
+ }, /* @__PURE__ */ React11.createElement("span", {
897
624
  className: "sr-only"
898
- }, t("invite options label")), /* @__PURE__ */ React13.createElement(CaretDown3, {
899
- className: getSize7(4)
900
- }))), /* @__PURE__ */ React13.createElement(DropdownMenu3.Portal, null, /* @__PURE__ */ React13.createElement(DropdownMenu3.Content, null, /* @__PURE__ */ React13.createElement(DropdownMenu3.Viewport, null, Object.entries(actions).map(([id, action]) => {
901
- return /* @__PURE__ */ React13.createElement(DropdownMenu3.CheckboxItem, {
625
+ }, t("invite options label")), /* @__PURE__ */ React11.createElement(CaretDown, {
626
+ className: getSize5(4)
627
+ }))), /* @__PURE__ */ React11.createElement(DropdownMenu2.Portal, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React11.createElement(DropdownMenu2.Viewport, null, Object.entries(actions).map(([id, action]) => {
628
+ return /* @__PURE__ */ React11.createElement(DropdownMenu2.CheckboxItem, {
902
629
  key: id,
903
630
  "aria-labelledby": `${id}__label`,
904
631
  "aria-describedby": `${id}__description`,
@@ -906,27 +633,27 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
906
633
  onCheckedChange: (checked) => checked && setActiveAction(id),
907
634
  classNames: "gap-2",
908
635
  "data-testid": action.testId
909
- }, action.icon && /* @__PURE__ */ React13.createElement(action.icon, {
910
- className: getSize7(5)
911
- }), /* @__PURE__ */ React13.createElement("div", {
636
+ }, action.icon && /* @__PURE__ */ React11.createElement(action.icon, {
637
+ className: getSize5(5)
638
+ }), /* @__PURE__ */ React11.createElement("div", {
912
639
  role: "none",
913
640
  className: "flex-1 min-is-0 space-b-1"
914
- }, /* @__PURE__ */ React13.createElement("p", {
641
+ }, /* @__PURE__ */ React11.createElement("p", {
915
642
  id: `${id}__label`
916
- }, action.label), action.description && /* @__PURE__ */ React13.createElement("p", {
643
+ }, action.label), action.description && /* @__PURE__ */ React11.createElement("p", {
917
644
  id: `${id}__description`,
918
645
  className: descriptionText5
919
- }, action.description)), /* @__PURE__ */ React13.createElement(DropdownMenu3.ItemIndicator, {
646
+ }, action.description)), /* @__PURE__ */ React11.createElement(DropdownMenu2.ItemIndicator, {
920
647
  asChild: true
921
- }, /* @__PURE__ */ React13.createElement(Check2, {
648
+ }, /* @__PURE__ */ React11.createElement(Check, {
922
649
  weight: "bold",
923
- className: getSize7(4)
650
+ className: getSize5(4)
924
651
  })));
925
- })), /* @__PURE__ */ React13.createElement(DropdownMenu3.Arrow, null)))));
652
+ })), /* @__PURE__ */ React11.createElement(DropdownMenu2.Arrow, null)))));
926
653
  });
927
654
  var Action = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
928
655
  const { children, classNames, variant, isFull = true, ...rest } = props;
929
- return /* @__PURE__ */ React13.createElement(Button7, {
656
+ return /* @__PURE__ */ React11.createElement(Button5, {
930
657
  ...rest,
931
658
  classNames: [
932
659
  isFull && "is-full",
@@ -939,49 +666,49 @@ var Action = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
939
666
  });
940
667
 
941
668
  // packages/sdk/shell/src/components/Panel/Actions.tsx
942
- import React14, { forwardRef as forwardRef4 } from "react";
943
- import { mx as mx11 } from "@dxos/react-ui-theme";
669
+ import React12, { forwardRef as forwardRef4 } from "react";
670
+ import { mx as mx10 } from "@dxos/react-ui-theme";
944
671
  var Actions = /* @__PURE__ */ forwardRef4(({ classNames, children, ...props }, forwardedRef) => {
945
- return /* @__PURE__ */ React14.createElement("div", {
672
+ return /* @__PURE__ */ React12.createElement("div", {
946
673
  ...props,
947
- className: mx11("flex flex-col gap-2 mbs-2", Array.isArray(children) && children.length > 1 ? "justify-between" : "justify-center", classNames),
674
+ className: mx10("flex flex-col gap-2 mbs-2", Array.isArray(children) && children.length > 1 ? "justify-between" : "justify-center", classNames),
948
675
  ref: forwardedRef
949
676
  }, children);
950
677
  });
951
678
 
952
679
  // packages/sdk/shell/src/components/Panel/CloseButton.tsx
953
680
  import { X as X2 } from "@phosphor-icons/react";
954
- import React15 from "react";
955
- import { Button as Button8, useTranslation as useTranslation9 } from "@dxos/react-ui";
956
- import { getSize as getSize8, mx as mx12 } from "@dxos/react-ui-theme";
681
+ import React13 from "react";
682
+ import { Button as Button6, useTranslation as useTranslation7 } from "@dxos/react-ui";
683
+ import { getSize as getSize6, mx as mx11 } from "@dxos/react-ui-theme";
957
684
  var CloseButton = ({ onDone, ...props }) => {
958
- const { t } = useTranslation9("os");
959
- return /* @__PURE__ */ React15.createElement(Button8, {
685
+ const { t } = useTranslation7("os");
686
+ return /* @__PURE__ */ React13.createElement(Button6, {
960
687
  variant: "ghost",
961
- classNames: mx12("plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
688
+ classNames: mx11("plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
962
689
  onClick: () => onDone?.(),
963
690
  ...props
964
- }, /* @__PURE__ */ React15.createElement(X2, {
691
+ }, /* @__PURE__ */ React13.createElement(X2, {
965
692
  weight: "bold",
966
- className: getSize8(4)
967
- }), /* @__PURE__ */ React15.createElement("span", {
693
+ className: getSize6(4)
694
+ }), /* @__PURE__ */ React13.createElement("span", {
968
695
  className: "sr-only"
969
696
  }, t("exit label")));
970
697
  };
971
698
 
972
699
  // packages/sdk/shell/src/components/Panel/Emoji.tsx
973
- import React16 from "react";
974
- import { mx as mx13, getSize as getSize9 } from "@dxos/react-ui-theme";
700
+ import React14 from "react";
701
+ import { mx as mx12, getSize as getSize7 } from "@dxos/react-ui-theme";
975
702
  var Emoji = ({ text, className }) => {
976
703
  const size = 14;
977
- return /* @__PURE__ */ React16.createElement("div", {
704
+ return /* @__PURE__ */ React14.createElement("div", {
978
705
  role: "none",
979
- className: mx13(getSize9(size), "rounded relative pointer-events-none", className)
980
- }, /* @__PURE__ */ React16.createElement("svg", {
706
+ className: mx12(getSize7(size), "rounded relative pointer-events-none", className)
707
+ }, /* @__PURE__ */ React14.createElement("svg", {
981
708
  viewBox: `0 0 ${size * 4} ${size * 4}`,
982
709
  width: size * 4,
983
710
  height: size * 4
984
- }, /* @__PURE__ */ React16.createElement("text", {
711
+ }, /* @__PURE__ */ React14.createElement("text", {
985
712
  x: "50%",
986
713
  y: "50%",
987
714
  textAnchor: "middle",
@@ -992,57 +719,57 @@ var Emoji = ({ text, className }) => {
992
719
  };
993
720
  var Centered = (props) => {
994
721
  const { children } = props;
995
- return /* @__PURE__ */ React16.createElement("div", {
722
+ return /* @__PURE__ */ React14.createElement("div", {
996
723
  role: "none",
997
724
  className: "absolute inset-0 flex items-center justify-center"
998
725
  }, children);
999
726
  };
1000
727
 
1001
728
  // packages/sdk/shell/src/components/Panel/Heading.tsx
1002
- import React17, { forwardRef as forwardRef5 } from "react";
1003
- import { descriptionText as descriptionText6, mx as mx14 } from "@dxos/react-ui-theme";
729
+ import React15, { forwardRef as forwardRef5 } from "react";
730
+ import { descriptionText as descriptionText6, mx as mx13 } from "@dxos/react-ui-theme";
1004
731
  var Heading = /* @__PURE__ */ forwardRef5(({ titleId, title, titleSrOnly, children, corner }, forwardedRef) => {
1005
- return /* @__PURE__ */ React17.createElement("div", {
732
+ return /* @__PURE__ */ React15.createElement("div", {
1006
733
  role: "none",
1007
734
  className: "pbe-2 relative",
1008
735
  ref: forwardedRef
1009
- }, corner, /* @__PURE__ */ React17.createElement("h1", {
736
+ }, corner, /* @__PURE__ */ React15.createElement("h1", {
1010
737
  ...!titleSrOnly && {
1011
738
  id: titleId
1012
739
  },
1013
- className: mx14(descriptionText6, "text-center mlb-2", titleSrOnly && "invisible")
1014
- }, title), titleSrOnly && /* @__PURE__ */ React17.createElement("span", {
740
+ className: mx13(descriptionText6, "text-center mlb-2", titleSrOnly && "invisible")
741
+ }, title), titleSrOnly && /* @__PURE__ */ React15.createElement("span", {
1015
742
  id: titleId
1016
743
  }, title), children);
1017
744
  });
1018
745
 
1019
746
  // packages/sdk/shell/src/components/Panel/Label.tsx
1020
- import React18 from "react";
1021
- import { descriptionText as descriptionText7, mx as mx15 } from "@dxos/react-ui-theme";
747
+ import React16 from "react";
748
+ import { descriptionText as descriptionText7, mx as mx14 } from "@dxos/react-ui-theme";
1022
749
  var Label = (props) => {
1023
750
  const { children } = props;
1024
- return /* @__PURE__ */ React18.createElement("span", {
1025
- className: mx15(descriptionText7, "text-center mli-6 whitespace-normal")
751
+ return /* @__PURE__ */ React16.createElement("span", {
752
+ className: mx14(descriptionText7, "text-center mli-6 whitespace-normal")
1026
753
  }, children);
1027
754
  };
1028
755
 
1029
756
  // packages/sdk/shell/src/components/Panel/Input.tsx
1030
- import React19 from "react";
757
+ import React17 from "react";
1031
758
  import { Input as UiInput } from "@dxos/react-ui";
1032
759
  var Input = ({ validationMessage, label, ...props }) => {
1033
- return /* @__PURE__ */ React19.createElement(UiInput.Root, null, /* @__PURE__ */ React19.createElement(UiInput.Label, null, label), /* @__PURE__ */ React19.createElement(UiInput.TextInput, {
760
+ return /* @__PURE__ */ React17.createElement(UiInput.Root, null, /* @__PURE__ */ React17.createElement(UiInput.Label, null, label), /* @__PURE__ */ React17.createElement(UiInput.TextInput, {
1034
761
  ...props,
1035
762
  classNames: "plb-3 mbs-2 text-center"
1036
- }), /* @__PURE__ */ React19.createElement(UiInput.DescriptionAndValidation, null, validationMessage && /* @__PURE__ */ React19.createElement(UiInput.Validation, null, validationMessage)));
763
+ }), /* @__PURE__ */ React17.createElement(UiInput.DescriptionAndValidation, null, validationMessage && /* @__PURE__ */ React17.createElement(UiInput.Validation, null, validationMessage)));
1037
764
  };
1038
765
 
1039
766
  // packages/sdk/shell/src/components/Panel/StepHeading.tsx
1040
- import React20, { forwardRef as forwardRef6 } from "react";
1041
- import { mx as mx16 } from "@dxos/react-ui-theme";
767
+ import React18, { forwardRef as forwardRef6 } from "react";
768
+ import { mx as mx15 } from "@dxos/react-ui-theme";
1042
769
  var StepHeading = /* @__PURE__ */ forwardRef6(({ children, className, ...props }, forwardedRef) => {
1043
- return /* @__PURE__ */ React20.createElement("h2", {
770
+ return /* @__PURE__ */ React18.createElement("h2", {
1044
771
  ...props,
1045
- className: mx16("font-normal text-sm mbe-4 mli-1 text-center", className),
772
+ className: mx15("font-normal text-sm mbe-4 mli-1 text-center", className),
1046
773
  ref: forwardedRef
1047
774
  }, children);
1048
775
  });
@@ -1050,31 +777,31 @@ var StepHeading = /* @__PURE__ */ forwardRef6(({ children, className, ...props }
1050
777
  // packages/sdk/shell/src/components/Viewport/Viewport.tsx
1051
778
  import { useFocusFinders } from "@fluentui/react-tabster";
1052
779
  import { createContextScope } from "@radix-ui/react-context";
1053
- import { useControllableState as useControllableState4 } from "@radix-ui/react-use-controllable-state";
1054
- import React21, { forwardRef as forwardRef7, useEffect } from "react";
780
+ import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
781
+ import React19, { forwardRef as forwardRef7, useEffect } from "react";
1055
782
  import { useForwardedRef } from "@dxos/react-ui";
1056
- import { mx as mx17 } from "@dxos/react-ui-theme";
783
+ import { mx as mx16 } from "@dxos/react-ui-theme";
1057
784
  var VIEWPORT_NAME = "Viewport";
1058
785
  var VIEWS_NAME = "ViewportViews";
1059
786
  var VIEW_NAME = "ViewportView";
1060
787
  var [createViewportContext, createViewportScope] = createContextScope(VIEWPORT_NAME, []);
1061
788
  var [ViewportProvider, useViewportContext] = createViewportContext(VIEWPORT_NAME);
1062
789
  var ViewportRoot = ({ __viewportScope, classNames, children, defaultActiveView, activeView: propsActiveView, focusManaged = false, onActiveViewChange, ...props }) => {
1063
- const [activeView = "never", setActiveView] = useControllableState4({
790
+ const [activeView = "never", setActiveView] = useControllableState2({
1064
791
  prop: propsActiveView,
1065
792
  defaultProp: defaultActiveView,
1066
793
  onChange: onActiveViewChange
1067
794
  });
1068
- return /* @__PURE__ */ React21.createElement(ViewportProvider, {
795
+ return /* @__PURE__ */ React19.createElement(ViewportProvider, {
1069
796
  focusManaged,
1070
797
  activeView,
1071
798
  setActiveView,
1072
799
  scope: __viewportScope
1073
- }, /* @__PURE__ */ React21.createElement("div", {
800
+ }, /* @__PURE__ */ React19.createElement("div", {
1074
801
  role: "region",
1075
802
  "aria-live": "polite",
1076
803
  ...props,
1077
- className: mx17("is-full overflow-hidden", classNames)
804
+ className: mx16("is-full overflow-hidden", classNames)
1078
805
  }, children));
1079
806
  };
1080
807
  ViewportRoot.displayName = VIEWPORT_NAME;
@@ -1082,11 +809,11 @@ var ViewportViews = ({ classNames, children, ...props }) => {
1082
809
  const size = {
1083
810
  inlineSize: `${Math.ceil(children.length) * 100}%`
1084
811
  };
1085
- return /* @__PURE__ */ React21.createElement("div", {
812
+ return /* @__PURE__ */ React19.createElement("div", {
1086
813
  role: "none",
1087
814
  style: size,
1088
815
  ...props,
1089
- className: mx17("flex", classNames)
816
+ className: mx16("flex", classNames)
1090
817
  }, children);
1091
818
  };
1092
819
  ViewportViews.displayName = VIEWS_NAME;
@@ -1104,12 +831,12 @@ var ViewportView = /* @__PURE__ */ forwardRef7(({ __viewportScope, classNames, c
1104
831
  ref.current,
1105
832
  isActive
1106
833
  ]);
1107
- return /* @__PURE__ */ React21.createElement("section", {
834
+ return /* @__PURE__ */ React19.createElement("section", {
1108
835
  ...props,
1109
836
  ...!isActive && {
1110
837
  "aria-hidden": true
1111
838
  },
1112
- className: mx17("min-is-0 flex-1 flex flex-col", isActive ? "order-2" : "order-4 invisible", classNames),
839
+ className: mx16("min-is-0 flex-1 flex flex-col", isActive ? "order-2" : "order-4 invisible", classNames),
1113
840
  ref
1114
841
  }, children);
1115
842
  });
@@ -1121,43 +848,44 @@ var Viewport = {
1121
848
  };
1122
849
 
1123
850
  // packages/sdk/shell/src/components/SpaceListItem.tsx
1124
- import React22, { forwardRef as forwardRef8 } from "react";
851
+ import React20, { forwardRef as forwardRef8 } from "react";
1125
852
  import { Avatar as Avatar5, useId as useId4 } from "@dxos/react-ui";
1126
- import { mx as mx18 } from "@dxos/react-ui-theme";
853
+ import { mx as mx17 } from "@dxos/react-ui-theme";
1127
854
  import { humanize, keyToEmoji } from "@dxos/util";
1128
855
  var SpaceListItem = /* @__PURE__ */ forwardRef8(({ space, onClick }, ref) => {
1129
856
  const fallbackValue = keyToEmoji(space.key);
1130
857
  const labelId = useId4("identityListItem__label");
1131
858
  const displayName = space.properties.name ?? humanize(space.key.toHex());
1132
- return /* @__PURE__ */ React22.createElement("li", {
1133
- className: mx18("flex gap-2 items-center mbe-2", onClick && "cursor-pointer"),
859
+ return /* @__PURE__ */ React20.createElement("li", {
860
+ className: mx17("flex gap-2 items-center mbe-2", onClick && "cursor-pointer"),
1134
861
  onClick: () => onClick?.(),
1135
862
  ref,
1136
863
  "data-testid": "space-list-item"
1137
- }, /* @__PURE__ */ React22.createElement(Avatar5.Root, {
864
+ }, /* @__PURE__ */ React20.createElement(Avatar5.Root, {
1138
865
  labelId
1139
- }, /* @__PURE__ */ React22.createElement(Avatar5.Frame, null, /* @__PURE__ */ React22.createElement(Avatar5.Fallback, {
866
+ }, /* @__PURE__ */ React20.createElement(Avatar5.Frame, null, /* @__PURE__ */ React20.createElement(Avatar5.Fallback, {
1140
867
  text: fallbackValue
1141
- })), /* @__PURE__ */ React22.createElement(Avatar5.Label, {
868
+ })), /* @__PURE__ */ React20.createElement(Avatar5.Label, {
1142
869
  classNames: "text-sm truncate"
1143
870
  }, displayName)));
1144
871
  });
1145
872
 
1146
873
  // packages/sdk/shell/src/composites/IdentityDialog/IdentityDialog.tsx
1147
- import React40 from "react";
874
+ import React38 from "react";
1148
875
  import { Clipboard as Clipboard3, Dialog, useId as useId10 } from "@dxos/react-ui";
1149
876
 
1150
877
  // packages/sdk/shell/src/panels/IdentityPanel/IdentityPanel.tsx
1151
878
  import { Key, Plugs, PlugsConnected } from "@phosphor-icons/react";
1152
- import React27, { useEffect as useEffect4, useMemo as useMemo3, useState as useState7 } from "react";
879
+ import React25, { useEffect as useEffect4, useMemo as useMemo3, useState as useState5 } from "react";
1153
880
  import { generateName as generateName3 } from "@dxos/display-name";
1154
881
  import { log as log7 } from "@dxos/log";
1155
882
  import { useClient as useClient6 } from "@dxos/react-client";
1156
883
  import { useIdentity, useDevices, useHaloInvitations as useHaloInvitations2 } from "@dxos/react-client/halo";
1157
884
  import { useInvitationStatus as useInvitationStatus2 } from "@dxos/react-client/invitations";
1158
885
  import { useNetworkStatus, ConnectionState as ConnectionState2 } from "@dxos/react-client/mesh";
1159
- 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";
1160
- import { getSize as getSize12 } from "@dxos/react-ui-theme";
886
+ import { Avatar as Avatar6, Input as Input2, Toolbar, Tooltip as Tooltip3, useClipboard as useClipboard2, useId as useId6, useTranslation as useTranslation11 } from "@dxos/react-ui";
887
+ import { EmojiPickerToolbarButton, HuePickerToolbarButton } from "@dxos/react-ui-pickers";
888
+ import { getSize as getSize10 } from "@dxos/react-ui-theme";
1161
889
  import { hexToEmoji as hexToEmoji4, hexToHue as hexToHue2, keyToFallback as keyToFallback3 } from "@dxos/util";
1162
890
 
1163
891
  // packages/sdk/shell/src/panels/IdentityPanel/identityMachine.ts
@@ -1273,7 +1001,7 @@ var useIdentityMachine = (client, options) => {
1273
1001
  };
1274
1002
 
1275
1003
  // packages/sdk/shell/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx
1276
- import React23 from "react";
1004
+ import React21 from "react";
1277
1005
  import { log as log2 } from "@dxos/log";
1278
1006
  import { useClient as useClient2 } from "@dxos/react-client";
1279
1007
  import { useHaloInvitations, DeviceType as DeviceType2 } from "@dxos/react-client/halo";
@@ -1309,7 +1037,7 @@ var IdentityActionChooser = (props) => {
1309
1037
  });
1310
1038
  };
1311
1039
  const isProduction = client.config.values.runtime?.app?.env?.DX_ENVIRONMENT === "production";
1312
- return /* @__PURE__ */ React23.createElement(IdentityActionChooserImpl, {
1040
+ return /* @__PURE__ */ React21.createElement(IdentityActionChooserImpl, {
1313
1041
  ...props,
1314
1042
  onClickAdd: createInvitation,
1315
1043
  onClickJoinExisting: () => send?.({
@@ -1325,10 +1053,10 @@ var IdentityActionChooser = (props) => {
1325
1053
  };
1326
1054
  var IdentityActionChooserImpl = ({ devices, connectionState, agentHostingEnabled, onClickAdd, onClickJoinExisting, onClickRecover, onClickReset, ...agentProps }) => {
1327
1055
  const edgeDeviceAvailable = devices.find((device) => device.profile?.type === DeviceType2.AGENT_MANAGED && device.profile?.os?.toUpperCase() === "EDGE");
1328
- return /* @__PURE__ */ React23.createElement("div", {
1056
+ return /* @__PURE__ */ React21.createElement("div", {
1329
1057
  role: "none",
1330
1058
  className: "bs-40 grow overflow-y-auto"
1331
- }, /* @__PURE__ */ React23.createElement(DeviceList, {
1059
+ }, /* @__PURE__ */ React21.createElement(DeviceList, {
1332
1060
  devices,
1333
1061
  connectionState,
1334
1062
  onClickAdd,
@@ -1336,20 +1064,21 @@ var IdentityActionChooserImpl = ({ devices, connectionState, agentHostingEnabled
1336
1064
  onClickRecover: agentProps.agentStatus === "created" ? onClickRecover : void 0,
1337
1065
  onClickReset,
1338
1066
  onAgentDestroy: agentProps.onAgentDestroy
1339
- }), !edgeDeviceAvailable && agentHostingEnabled && /* @__PURE__ */ React23.createElement(AgentConfig, agentProps));
1067
+ }), !edgeDeviceAvailable && agentHostingEnabled && /* @__PURE__ */ React21.createElement(AgentConfig, agentProps));
1340
1068
  };
1341
1069
 
1342
1070
  // packages/sdk/shell/src/panels/IdentityPanel/steps/ProfileForm.tsx
1343
- import React24, { useState as useState3 } from "react";
1071
+ import React22, { useState } from "react";
1344
1072
  import { log as log3 } from "@dxos/log";
1345
- import { useClipboard, useTranslation as useTranslation10 } from "@dxos/react-ui";
1073
+ import { useClipboard, useTranslation as useTranslation8 } from "@dxos/react-ui";
1074
+ import { EmojiPickerBlock, HuePickerBlock } from "@dxos/react-ui-pickers";
1346
1075
  import { hexToEmoji as hexToEmoji2, hexToHue } from "@dxos/util";
1347
1076
 
1348
1077
  // packages/sdk/shell/src/panels/IdentityPanel/useAgentHandlers.ts
1349
1078
  import { useClient as useClient5 } from "@dxos/react-client";
1350
1079
 
1351
1080
  // packages/sdk/shell/src/panels/IdentityPanel/useEdgeAgentsHandlers.ts
1352
- import { useEffect as useEffect2, useState as useState4 } from "react";
1081
+ import { useEffect as useEffect2, useState as useState2 } from "react";
1353
1082
  import { invariant } from "@dxos/invariant";
1354
1083
  import { log as log4 } from "@dxos/log";
1355
1084
  import { QueryAgentStatusResponse } from "@dxos/protocols/proto/dxos/client/services";
@@ -1357,9 +1086,9 @@ import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata
1357
1086
  import { useClient as useClient3 } from "@dxos/react-client";
1358
1087
  var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/useEdgeAgentsHandlers.ts";
1359
1088
  var useEdgeAgentHandlers = ({ identity }) => {
1360
- const [validationMessage, setValidationMessage] = useState4("");
1361
- const [lastReceivedStatus, setLastReceivedStatus] = useState4(QueryAgentStatusResponse.AgentStatus.UNKNOWN);
1362
- const [agentStatus, setAgentStatus] = useState4("getting");
1089
+ const [validationMessage, setValidationMessage] = useState2("");
1090
+ const [lastReceivedStatus, setLastReceivedStatus] = useState2(QueryAgentStatusResponse.AgentStatus.UNKNOWN);
1091
+ const [agentStatus, setAgentStatus] = useState2("getting");
1363
1092
  const client = useClient3();
1364
1093
  const agentHostingEnabled = Boolean(client.config.values.runtime?.client?.edgeFeatures?.agents);
1365
1094
  const handleStatus = (status) => {
@@ -1445,15 +1174,15 @@ var useEdgeAgentHandlers = ({ identity }) => {
1445
1174
  };
1446
1175
 
1447
1176
  // packages/sdk/shell/src/panels/IdentityPanel/useKubeAgentHandlers.ts
1448
- 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";
1449
1178
  import { invariant as invariant2 } from "@dxos/invariant";
1450
1179
  import { log as log5 } from "@dxos/log";
1451
1180
  import { useClient as useClient4, useAgentHostingClient } from "@dxos/react-client";
1452
1181
  import { Invitation as Invitation3, InvitationEncoder as InvitationEncoder2 } from "@dxos/react-client/invitations";
1453
1182
  var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/useKubeAgentHandlers.ts";
1454
1183
  var useKubeAgentHandlers = ({ invitations, identity }) => {
1455
- const [validationMessage, setValidationMessage] = useState5("");
1456
- const [agentStatus, setAgentStatus] = useState5("getting");
1184
+ const [validationMessage, setValidationMessage] = useState3("");
1185
+ const [agentStatus, setAgentStatus] = useState3("getting");
1457
1186
  const agentHostingProviderClient = useAgentHostingClient();
1458
1187
  const client = useClient4();
1459
1188
  const updateAgentStatus = async () => {
@@ -1582,11 +1311,11 @@ var useAgentHandlers = (params) => {
1582
1311
  };
1583
1312
 
1584
1313
  // packages/sdk/shell/src/steps/InvitationManager.tsx
1585
- import { Check as Check3, X as X3 } from "@phosphor-icons/react";
1586
- 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";
1587
1316
  import { QR } from "react-qr-rounded";
1588
- import { Clipboard as Clipboard2, useId as useId5, useTranslation as useTranslation11 } from "@dxos/react-ui";
1589
- 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";
1590
1319
  import { hexToEmoji as hexToEmoji3 } from "@dxos/util";
1591
1320
 
1592
1321
  // packages/sdk/shell/src/util/invitationStatusValue.ts
@@ -1632,13 +1361,13 @@ var invitationStatusValue = /* @__PURE__ */ new Map([
1632
1361
 
1633
1362
  // packages/sdk/shell/src/steps/InvitationManager.tsx
1634
1363
  var InvitationManagerView = ({ children, ...props }) => {
1635
- return /* @__PURE__ */ React25.createElement(Viewport.View, {
1364
+ return /* @__PURE__ */ React23.createElement(Viewport.View, {
1636
1365
  ...props,
1637
1366
  classNames: "grow flex flex-col justify-around items-center"
1638
1367
  }, children);
1639
1368
  };
1640
1369
  var InvitationManager = ({ invitationUrl, active, send, status, multiUse, authCode, id = "0" }) => {
1641
- const { t } = useTranslation11("os");
1370
+ const { t } = useTranslation9("os");
1642
1371
  const qrLabel = useId5("invitation-manager__qr-code");
1643
1372
  const statusValue = multiUse ? 0 : invitationStatusValue.get(status) ?? 0;
1644
1373
  const showAuthCode = statusValue === 3;
@@ -1659,50 +1388,50 @@ var InvitationManager = ({ invitationUrl, active, send, status, multiUse, authCo
1659
1388
  }, [
1660
1389
  statusValue
1661
1390
  ]);
1662
- 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, {
1663
1392
  activeView,
1664
1393
  classNames: "grow plb-1"
1665
- }, /* @__PURE__ */ React25.createElement(Viewport.Views, null, /* @__PURE__ */ React25.createElement(InvitationManagerView, {
1394
+ }, /* @__PURE__ */ React23.createElement(Viewport.Views, null, /* @__PURE__ */ React23.createElement(InvitationManagerView, {
1666
1395
  id: "showing qr",
1667
1396
  emoji
1668
- }, /* @__PURE__ */ React25.createElement("p", {
1397
+ }, /* @__PURE__ */ React23.createElement("p", {
1669
1398
  className: "text-sm mlb-1 font-normal text-center"
1670
- }, 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", {
1671
1400
  role: "none",
1672
- className: mx19(descriptionText8, "is-full max-is-[14rem] relative")
1673
- }, /* @__PURE__ */ React25.createElement(QR, {
1401
+ className: mx18(descriptionText8, "is-full max-is-[14rem] relative")
1402
+ }, /* @__PURE__ */ React23.createElement(QR, {
1674
1403
  rounding: 100,
1675
1404
  backgroundColor: "transparent",
1676
1405
  color: "currentColor",
1677
- className: mx19("is-full bs-full p-2", showAuthCode && "invisible"),
1406
+ className: mx18("is-full bs-full p-2", showAuthCode && "invisible"),
1678
1407
  "aria-labelledby": qrLabel,
1679
1408
  errorCorrectionLevel: "Q",
1680
1409
  cutout: true
1681
- }, invitationUrl ?? "never"), /* @__PURE__ */ React25.createElement(Centered, null, /* @__PURE__ */ React25.createElement(Emoji, {
1410
+ }, invitationUrl ?? "never"), /* @__PURE__ */ React23.createElement(Centered, null, /* @__PURE__ */ React23.createElement(Emoji, {
1682
1411
  text: emoji
1683
- }))), /* @__PURE__ */ React25.createElement("span", {
1412
+ }))), /* @__PURE__ */ React23.createElement("span", {
1684
1413
  id: qrLabel,
1685
1414
  className: "sr-only"
1686
- }, t("qr label")), /* @__PURE__ */ React25.createElement(Clipboard2.Button, {
1415
+ }, t("qr label")), /* @__PURE__ */ React23.createElement(Clipboard2.Button, {
1687
1416
  variant: "ghost",
1688
1417
  value: invitationUrl ?? "never"
1689
- })), /* @__PURE__ */ React25.createElement(InvitationManagerView, {
1418
+ })), /* @__PURE__ */ React23.createElement(InvitationManagerView, {
1690
1419
  id: "showing auth code"
1691
- }, /* @__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, {
1692
1421
  code: authCode,
1693
1422
  large: true,
1694
1423
  classNames: "text-black dark:text-white"
1695
- }), /* @__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, {
1696
1425
  text: emoji
1697
- })), /* @__PURE__ */ React25.createElement(InvitationManagerView, {
1426
+ })), /* @__PURE__ */ React23.createElement(InvitationManagerView, {
1698
1427
  id: "showing final"
1699
- }, statusValue > 0 ? /* @__PURE__ */ React25.createElement(Check3, {
1700
- className: mx19("m-1.5", getSize10(6))
1701
- }) : /* @__PURE__ */ React25.createElement(X3, {
1702
- className: mx19("m-1.5", getSize10(6))
1703
- })))), /* @__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, {
1704
1433
  classNames: "mbs-4"
1705
- }, /* @__PURE__ */ React25.createElement(Action, {
1434
+ }, /* @__PURE__ */ React23.createElement(Action, {
1706
1435
  disabled: !active,
1707
1436
  onClick: () => send?.({
1708
1437
  type: "deselectInvitation"
@@ -1712,15 +1441,15 @@ var InvitationManager = ({ invitationUrl, active, send, status, multiUse, authCo
1712
1441
 
1713
1442
  // packages/sdk/shell/src/steps/ConfirmReset.tsx
1714
1443
  import { Warning } from "@phosphor-icons/react";
1715
- import React26, { useState as useState6 } from "react";
1444
+ import React24, { useState as useState4 } from "react";
1716
1445
  import { log as log6 } from "@dxos/log";
1717
- import { Message, useTranslation as useTranslation12 } from "@dxos/react-ui";
1718
- 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";
1719
1448
  var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/steps/ConfirmReset.tsx";
1720
1449
  var ConfirmReset = ({ active, onCancel, onConfirm, mode }) => {
1721
- const { t } = useTranslation12("os");
1722
- const [validationMessage, setValidationMessage] = useState6("");
1723
- const [pending, setPending] = useState6(false);
1450
+ const { t } = useTranslation10("os");
1451
+ const [validationMessage, setValidationMessage] = useState4("");
1452
+ const [pending, setPending] = useState4(false);
1724
1453
  const processReset = async () => {
1725
1454
  setPending(true);
1726
1455
  return onConfirm?.().then(() => setPending(false), (error) => {
@@ -1734,7 +1463,7 @@ var ConfirmReset = ({ active, onCancel, onConfirm, mode }) => {
1734
1463
  setPending(false);
1735
1464
  });
1736
1465
  };
1737
- return /* @__PURE__ */ React26.createElement(ConfirmResetImpl, {
1466
+ return /* @__PURE__ */ React24.createElement(ConfirmResetImpl, {
1738
1467
  disabled: !active,
1739
1468
  pending,
1740
1469
  validationMessage,
@@ -1744,20 +1473,20 @@ var ConfirmReset = ({ active, onCancel, onConfirm, mode }) => {
1744
1473
  });
1745
1474
  };
1746
1475
  var ConfirmResetImpl = ({ disabled, pending, validationMessage, onConfirm, onCancel, mode }) => {
1747
- const { t } = useTranslation12("os");
1476
+ const { t } = useTranslation10("os");
1748
1477
  const confirmationValue = t("confirmation value");
1749
- const [inputValue, setInputValue] = useState6("");
1478
+ const [inputValue, setInputValue] = useState4("");
1750
1479
  const testIdAffix = mode === "join new identity" ? "join-new-identity" : mode === "recover" ? "recover" : "reset-storage";
1751
- return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement("div", {
1480
+ return /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("div", {
1752
1481
  role: "none",
1753
1482
  className: "grow flex flex-col gap-2 justify-center"
1754
- }, /* @__PURE__ */ React26.createElement(Message.Root, {
1483
+ }, /* @__PURE__ */ React24.createElement(Message.Root, {
1755
1484
  valence: "error"
1756
- }, /* @__PURE__ */ React26.createElement(Message.Title, null, /* @__PURE__ */ React26.createElement(Warning, {
1757
- className: mx20(getSize11(6), "inline mie-2")
1758
- }), 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, {
1759
1488
  validationMessage,
1760
- label: /* @__PURE__ */ React26.createElement(StepHeading, {
1489
+ label: /* @__PURE__ */ React24.createElement(StepHeading, {
1761
1490
  className: "text-start mlb-2"
1762
1491
  }, t(mode === "join new identity" ? "join new identity input label" : mode === "recover" ? "recover reset input label" : "reset storage input label", {
1763
1492
  confirmationValue
@@ -1768,11 +1497,11 @@ var ConfirmResetImpl = ({ disabled, pending, validationMessage, onConfirm, onCan
1768
1497
  confirmationValue
1769
1498
  }),
1770
1499
  onChange: ({ target: { value } }) => setInputValue(value)
1771
- })), /* @__PURE__ */ React26.createElement(Actions, null, onCancel && /* @__PURE__ */ React26.createElement(Action, {
1500
+ })), /* @__PURE__ */ React24.createElement(Actions, null, onCancel && /* @__PURE__ */ React24.createElement(Action, {
1772
1501
  disabled,
1773
1502
  onClick: onCancel,
1774
1503
  "data-testid": `${testIdAffix}.reset-identity-cancel`
1775
- }, t("cancel label")), onConfirm && /* @__PURE__ */ React26.createElement(Action, {
1504
+ }, t("cancel label")), onConfirm && /* @__PURE__ */ React24.createElement(Action, {
1776
1505
  variant: "destructive",
1777
1506
  disabled: disabled || pending || inputValue !== confirmationValue,
1778
1507
  onClick: onConfirm,
@@ -1787,10 +1516,10 @@ var getHueValue = (identity) => identity?.profile?.data?.hue || hexToHue2(identi
1787
1516
  var getEmojiValue = (identity) => identity?.profile?.data?.emoji || hexToEmoji4(identity?.identityKey.toHex() ?? "0");
1788
1517
  var IdentityHeading = ({ titleId, title, identity, onDone, onUpdateProfile, connectionState, onChangeConnectionState }) => {
1789
1518
  const fallbackValue = keyToFallback3(identity.identityKey);
1790
- const { t } = useTranslation13("os");
1791
- const [displayName, setDisplayName] = useState7(identity.profile?.displayName ?? "");
1792
- const [emoji, setEmojiDirectly] = useState7(getEmojiValue(identity));
1793
- const [hue, setHueDirectly] = useState7(getHueValue(identity));
1519
+ const { t } = useTranslation11("os");
1520
+ const [displayName, setDisplayName] = useState5(identity.profile?.displayName ?? "");
1521
+ const [emoji, setEmojiDirectly] = useState5(getEmojiValue(identity));
1522
+ const [hue, setHueDirectly] = useState5(getHueValue(identity));
1794
1523
  const { textValue, setTextValue } = useClipboard2();
1795
1524
  const identityHex = identity.identityKey.toHex();
1796
1525
  const publicKeyCopied = textValue === identityHex;
@@ -1815,29 +1544,29 @@ var IdentityHeading = ({ titleId, title, identity, onDone, onUpdateProfile, conn
1815
1544
  });
1816
1545
  };
1817
1546
  const isConnected = connectionState === ConnectionState2.ONLINE;
1818
- return /* @__PURE__ */ React27.createElement(Heading, {
1547
+ return /* @__PURE__ */ React25.createElement(Heading, {
1819
1548
  titleId,
1820
1549
  title,
1821
- corner: /* @__PURE__ */ React27.createElement(CloseButton, {
1550
+ corner: /* @__PURE__ */ React25.createElement(CloseButton, {
1822
1551
  onDone
1823
1552
  })
1824
- }, /* @__PURE__ */ React27.createElement(Avatar6.Root, {
1553
+ }, /* @__PURE__ */ React25.createElement(Avatar6.Root, {
1825
1554
  size: 16,
1826
1555
  variant: "circle",
1827
1556
  status: isConnected ? "active" : "error",
1828
1557
  hue: hue || fallbackValue.hue
1829
- }, /* @__PURE__ */ React27.createElement(Toolbar3.Root, {
1558
+ }, /* @__PURE__ */ React25.createElement(Toolbar.Root, {
1830
1559
  classNames: "flex justify-center"
1831
- }, /* @__PURE__ */ React27.createElement(Avatar6.Frame, {
1560
+ }, /* @__PURE__ */ React25.createElement(Avatar6.Frame, {
1832
1561
  classNames: "relative z-[2] -mli-4 chromatic-ignore"
1833
- }, /* @__PURE__ */ React27.createElement(Avatar6.Fallback, {
1562
+ }, /* @__PURE__ */ React25.createElement(Avatar6.Fallback, {
1834
1563
  text: emoji || fallbackValue.emoji
1835
- }))), /* @__PURE__ */ React27.createElement(Avatar6.Label, {
1564
+ }))), /* @__PURE__ */ React25.createElement(Avatar6.Label, {
1836
1565
  classNames: "sr-only",
1837
1566
  "data-testid": "identityHeading.displayName"
1838
- }, identity.profile?.displayName ?? generateName3(identity.identityKey.toHex())), /* @__PURE__ */ React27.createElement(Input2.Root, null, /* @__PURE__ */ React27.createElement(Input2.Label, {
1567
+ }, identity.profile?.displayName ?? generateName3(identity.identityKey.toHex())), /* @__PURE__ */ React25.createElement(Input2.Root, null, /* @__PURE__ */ React25.createElement(Input2.Label, {
1839
1568
  srOnly: true
1840
- }, t("display name input label")), /* @__PURE__ */ React27.createElement(Input2.TextInput, {
1569
+ }, t("display name input label")), /* @__PURE__ */ React25.createElement(Input2.TextInput, {
1841
1570
  variant: "subdued",
1842
1571
  "data-testid": "display-name-input",
1843
1572
  placeholder: t("display name input placeholder"),
@@ -1848,51 +1577,49 @@ var IdentityHeading = ({ titleId, title, identity, onDone, onUpdateProfile, conn
1848
1577
  ...identity.profile,
1849
1578
  displayName: value
1850
1579
  })
1851
- })), /* @__PURE__ */ React27.createElement(Toolbar3.Root, {
1580
+ })), /* @__PURE__ */ React25.createElement(Toolbar.Root, {
1852
1581
  classNames: "flex justify-center items-center gap-1 pt-3"
1853
- }, /* @__PURE__ */ React27.createElement(EmojiPickerToolbarButton, {
1582
+ }, /* @__PURE__ */ React25.createElement(EmojiPickerToolbarButton, {
1854
1583
  emoji,
1855
1584
  onChangeEmoji: setEmoji,
1856
1585
  classNames: "bs-[--rail-action]"
1857
- }), /* @__PURE__ */ React27.createElement(HuePickerToolbarButton, {
1586
+ }), /* @__PURE__ */ React25.createElement(HuePickerToolbarButton, {
1858
1587
  hue,
1859
1588
  onChangeHue: setHue,
1860
1589
  classNames: "bs-[--rail-action]"
1861
- }), /* @__PURE__ */ React27.createElement(Tooltip5.Root, null, /* @__PURE__ */ React27.createElement(Tooltip5.Trigger, {
1590
+ }), /* @__PURE__ */ React25.createElement(Tooltip3.Root, null, /* @__PURE__ */ React25.createElement(Tooltip3.Trigger, {
1862
1591
  asChild: true
1863
- }, /* @__PURE__ */ React27.createElement(Toolbar3.Button, {
1592
+ }, /* @__PURE__ */ React25.createElement(Toolbar.Button, {
1864
1593
  classNames: "bs-[--rail-action]",
1865
1594
  "data-testid": "update-profile-form-copy-key",
1866
1595
  onClick: () => setTextValue(identityHex)
1867
- }, /* @__PURE__ */ React27.createElement("span", {
1596
+ }, /* @__PURE__ */ React25.createElement("span", {
1868
1597
  className: "sr-only"
1869
- }, t(publicKeyCopied ? "copy success label" : "copy self public key label")), /* @__PURE__ */ React27.createElement(Key, {
1870
- className: getSize12(5)
1871
- }))), /* @__PURE__ */ React27.createElement(Tooltip5.Portal, null, /* @__PURE__ */ React27.createElement(Tooltip5.Content, {
1872
- side: "bottom",
1873
- classNames: "z-50"
1874
- }, 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, {
1598
+ }, t(publicKeyCopied ? "copy success label" : "copy self public key label")), /* @__PURE__ */ React25.createElement(Key, {
1599
+ className: getSize10(5)
1600
+ }))), /* @__PURE__ */ React25.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React25.createElement(Tooltip3.Content, {
1601
+ side: "bottom"
1602
+ }, t(publicKeyCopied ? "copy success label" : "copy self public key label"), /* @__PURE__ */ React25.createElement(Tooltip3.Arrow, null)))), /* @__PURE__ */ React25.createElement(Tooltip3.Root, null, /* @__PURE__ */ React25.createElement(Tooltip3.Trigger, {
1875
1603
  asChild: true
1876
- }, /* @__PURE__ */ React27.createElement(Toolbar3.Button, {
1604
+ }, /* @__PURE__ */ React25.createElement(Toolbar.Button, {
1877
1605
  classNames: [
1878
1606
  "bs-[--rail-action]",
1879
1607
  !isConnected && "text-error-500"
1880
1608
  ],
1881
1609
  onClick: () => onChangeConnectionState?.(isConnected ? ConnectionState2.OFFLINE : ConnectionState2.ONLINE)
1882
- }, /* @__PURE__ */ React27.createElement("span", {
1610
+ }, /* @__PURE__ */ React25.createElement("span", {
1883
1611
  className: "sr-only"
1884
- }, t(isConnected ? "disconnect label" : "connect label")), isConnected ? /* @__PURE__ */ React27.createElement(PlugsConnected, {
1885
- className: getSize12(5)
1886
- }) : /* @__PURE__ */ React27.createElement(Plugs, {
1887
- className: getSize12(5)
1888
- }))), /* @__PURE__ */ React27.createElement(Tooltip5.Portal, null, /* @__PURE__ */ React27.createElement(Tooltip5.Content, {
1889
- side: "bottom",
1890
- classNames: "z-50"
1891
- }, t(isConnected ? "disconnect label" : "connect label"), /* @__PURE__ */ React27.createElement(Tooltip5.Arrow, null)))))));
1612
+ }, t(isConnected ? "disconnect label" : "connect label")), isConnected ? /* @__PURE__ */ React25.createElement(PlugsConnected, {
1613
+ className: getSize10(5)
1614
+ }) : /* @__PURE__ */ React25.createElement(Plugs, {
1615
+ className: getSize10(5)
1616
+ }))), /* @__PURE__ */ React25.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React25.createElement(Tooltip3.Content, {
1617
+ side: "bottom"
1618
+ }, t(isConnected ? "disconnect label" : "connect label"), /* @__PURE__ */ React25.createElement(Tooltip3.Arrow, null)))))));
1892
1619
  };
1893
1620
  var IdentityPanelImpl = (props) => {
1894
1621
  const { identity, titleId, activeView, onUpdateProfile, onResetStorage, onRecover, onJoinNewIdentity, IdentityActionChooser: IdentityActionChooserComponent = IdentityActionChooser, InvitationManager: InvitationManagerComponent = InvitationManager, connectionState, onChangeConnectionState, onDone, ...rest } = props;
1895
- const { t } = useTranslation13("os");
1622
+ const { t } = useTranslation11("os");
1896
1623
  const title = useMemo3(() => {
1897
1624
  switch (activeView) {
1898
1625
  case "device invitation manager":
@@ -1906,7 +1633,7 @@ var IdentityPanelImpl = (props) => {
1906
1633
  ]);
1907
1634
  const onCancelReset = () => rest.send?.("unchooseAction");
1908
1635
  const hideRecover = rest.agentStatus !== "created";
1909
- return /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(IdentityHeading, {
1636
+ return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(IdentityHeading, {
1910
1637
  identity,
1911
1638
  titleId,
1912
1639
  title,
@@ -1915,44 +1642,44 @@ var IdentityPanelImpl = (props) => {
1915
1642
  onUpdateProfile,
1916
1643
  connectionState,
1917
1644
  onChangeConnectionState
1918
- }), /* @__PURE__ */ React27.createElement(Viewport.Root, {
1645
+ }), /* @__PURE__ */ React25.createElement(Viewport.Root, {
1919
1646
  activeView
1920
- }, /* @__PURE__ */ React27.createElement(Viewport.Views, null, /* @__PURE__ */ React27.createElement(Viewport.View, {
1647
+ }, /* @__PURE__ */ React25.createElement(Viewport.Views, null, /* @__PURE__ */ React25.createElement(Viewport.View, {
1921
1648
  id: "identity action chooser",
1922
1649
  classNames: viewStyles
1923
- }, /* @__PURE__ */ React27.createElement(IdentityActionChooserComponent, {
1650
+ }, /* @__PURE__ */ React25.createElement(IdentityActionChooserComponent, {
1924
1651
  active: activeView === "identity action chooser",
1925
1652
  ...rest,
1926
1653
  connectionState
1927
- })), /* @__PURE__ */ React27.createElement(Viewport.View, {
1654
+ })), /* @__PURE__ */ React25.createElement(Viewport.View, {
1928
1655
  id: "device invitation manager",
1929
1656
  classNames: viewStyles
1930
- }, /* @__PURE__ */ React27.createElement(InvitationManagerComponent, {
1657
+ }, /* @__PURE__ */ React25.createElement(InvitationManagerComponent, {
1931
1658
  active: activeView === "device invitation manager",
1932
1659
  ...rest,
1933
1660
  invitationUrl: rest.createInvitationUrl(rest.invitationCode)
1934
- })), /* @__PURE__ */ React27.createElement(Viewport.View, {
1661
+ })), /* @__PURE__ */ React25.createElement(Viewport.View, {
1935
1662
  classNames: viewStyles,
1936
1663
  id: "confirm join new identity"
1937
- }, /* @__PURE__ */ React27.createElement(ConfirmReset, {
1664
+ }, /* @__PURE__ */ React25.createElement(ConfirmReset, {
1938
1665
  active: activeView === "confirm join new identity",
1939
1666
  ...rest,
1940
1667
  mode: "join new identity",
1941
1668
  onConfirm: onJoinNewIdentity,
1942
1669
  onCancel: onCancelReset
1943
- })), /* @__PURE__ */ React27.createElement(Viewport.View, {
1670
+ })), /* @__PURE__ */ React25.createElement(Viewport.View, {
1944
1671
  classNames: viewStyles,
1945
1672
  id: "confirm recover"
1946
- }, /* @__PURE__ */ React27.createElement(ConfirmReset, {
1673
+ }, /* @__PURE__ */ React25.createElement(ConfirmReset, {
1947
1674
  active: activeView === "confirm recover",
1948
1675
  ...rest,
1949
1676
  mode: "recover",
1950
1677
  onConfirm: onRecover,
1951
1678
  onCancel: onCancelReset
1952
- })), /* @__PURE__ */ React27.createElement(Viewport.View, {
1679
+ })), /* @__PURE__ */ React25.createElement(Viewport.View, {
1953
1680
  classNames: viewStyles,
1954
1681
  id: "confirm reset storage"
1955
- }, /* @__PURE__ */ React27.createElement(ConfirmReset, {
1682
+ }, /* @__PURE__ */ React25.createElement(ConfirmReset, {
1956
1683
  active: activeView === "confirm reset storage",
1957
1684
  ...rest,
1958
1685
  mode: "reset storage",
@@ -1962,7 +1689,7 @@ var IdentityPanelImpl = (props) => {
1962
1689
  };
1963
1690
  var IdentityPanelWithInvitationImpl = ({ invitation, ...props }) => {
1964
1691
  const invitationStatus = useInvitationStatus2(invitation);
1965
- return /* @__PURE__ */ React27.createElement(IdentityPanelImpl, {
1692
+ return /* @__PURE__ */ React25.createElement(IdentityPanelImpl, {
1966
1693
  ...props,
1967
1694
  ...invitationStatus
1968
1695
  });
@@ -1980,7 +1707,7 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
1980
1707
  if (!identity) {
1981
1708
  log7.error("IdentityPanel rendered with no active identity.", void 0, {
1982
1709
  F: __dxlog_file6,
1983
- L: 255,
1710
+ L: 256,
1984
1711
  S: void 0,
1985
1712
  C: (f, a) => f(...a)
1986
1713
  });
@@ -1997,7 +1724,7 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
1997
1724
  const subscription = identityService.subscribe((state) => {
1998
1725
  log7("[state]", state, {
1999
1726
  F: __dxlog_file6,
2000
- L: 268,
1727
+ L: 269,
2001
1728
  S: void 0,
2002
1729
  C: (f, a) => f(...a)
2003
1730
  });
@@ -2043,40 +1770,40 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
2043
1770
  onChangeConnectionState: handleChangeConnectionState,
2044
1771
  ...agentProps
2045
1772
  };
2046
- return identityState.context.invitation ? /* @__PURE__ */ React27.createElement(IdentityPanelWithInvitationImpl, {
1773
+ return identityState.context.invitation ? /* @__PURE__ */ React25.createElement(IdentityPanelWithInvitationImpl, {
2047
1774
  ...implProps,
2048
1775
  invitation: identityState.context.invitation
2049
- }) : /* @__PURE__ */ React27.createElement(IdentityPanelImpl, implProps);
1776
+ }) : /* @__PURE__ */ React25.createElement(IdentityPanelImpl, implProps);
2050
1777
  };
2051
1778
 
2052
1779
  // packages/sdk/shell/src/panels/JoinPanel/JoinPanel.tsx
2053
- import React36, { useCallback as useCallback6, useEffect as useEffect6, useMemo as useMemo4 } from "react";
1780
+ import React34, { useCallback as useCallback6, useEffect as useEffect6, useMemo as useMemo4 } from "react";
2054
1781
  import { log as log11 } from "@dxos/log";
2055
1782
  import { useClient as useClient8, useMulticastObservable } from "@dxos/react-client";
2056
1783
  import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
2057
- import { useId as useId8, useThemeContext as useThemeContext5 } from "@dxos/react-ui";
1784
+ import { useId as useId8, useThemeContext as useThemeContext3 } from "@dxos/react-ui";
2058
1785
 
2059
1786
  // packages/sdk/shell/src/panels/JoinPanel/JoinHeading.tsx
2060
1787
  import { X as X4 } from "@phosphor-icons/react";
2061
- import React28, { cloneElement, forwardRef as forwardRef9 } from "react";
2062
- import { Button as Button9, useTranslation as useTranslation14 } from "@dxos/react-ui";
2063
- import { descriptionText as descriptionText9, getSize as getSize13, mx as mx21 } from "@dxos/react-ui-theme";
1788
+ import React26, { cloneElement, forwardRef as forwardRef9 } from "react";
1789
+ import { Button as Button7, useTranslation as useTranslation12 } from "@dxos/react-ui";
1790
+ import { descriptionText as descriptionText9, getSize as getSize11, mx as mx20 } from "@dxos/react-ui-theme";
2064
1791
  var JoinHeading = /* @__PURE__ */ forwardRef9(({ mode, titleId, exitActionParent, onExit }, forwardedRef) => {
2065
- const { t } = useTranslation14("os");
2066
- const exitButton = /* @__PURE__ */ React28.createElement(Button9, {
1792
+ const { t } = useTranslation12("os");
1793
+ const exitButton = /* @__PURE__ */ React26.createElement(Button7, {
2067
1794
  variant: "ghost",
2068
1795
  ...onExit && {
2069
1796
  onClick: onExit
2070
1797
  },
2071
- classNames: mx21(descriptionText9, "plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
1798
+ classNames: mx20(descriptionText9, "plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
2072
1799
  "data-testid": "join-exit"
2073
- }, /* @__PURE__ */ React28.createElement(X4, {
1800
+ }, /* @__PURE__ */ React26.createElement(X4, {
2074
1801
  weight: "bold",
2075
- className: getSize13(4)
2076
- }), /* @__PURE__ */ React28.createElement("span", {
1802
+ className: getSize11(4)
1803
+ }), /* @__PURE__ */ React26.createElement("span", {
2077
1804
  className: "sr-only"
2078
1805
  }, t("exit label")));
2079
- return /* @__PURE__ */ React28.createElement(Heading, {
1806
+ return /* @__PURE__ */ React26.createElement(Heading, {
2080
1807
  ref: forwardedRef,
2081
1808
  titleId,
2082
1809
  title: t(mode === "halo-only" ? "selecting identity heading" : "joining space heading"),
@@ -2694,17 +2421,17 @@ var useJoinMachine = (client, options) => {
2694
2421
 
2695
2422
  // packages/sdk/shell/src/panels/JoinPanel/steps/AdditionMethodChooser.tsx
2696
2423
  import { CaretRight as CaretRight2, Plus as Plus3, QrCode, Textbox } from "@phosphor-icons/react";
2697
- import React29 from "react";
2698
- import { useTranslation as useTranslation15 } from "@dxos/react-ui";
2699
- import { getSize as getSize14 } from "@dxos/react-ui-theme";
2424
+ import React27 from "react";
2425
+ import { useTranslation as useTranslation13 } from "@dxos/react-ui";
2426
+ import { getSize as getSize12 } from "@dxos/react-ui-theme";
2700
2427
  var AdditionMethodChooser = (viewStateProps) => {
2701
2428
  const disabled = !viewStateProps.active;
2702
2429
  const { send } = viewStateProps;
2703
- const { t } = useTranslation15("os");
2430
+ const { t } = useTranslation13("os");
2704
2431
  const sharedButtonProps = {
2705
2432
  disabled,
2706
- after: /* @__PURE__ */ React29.createElement(CaretRight2, {
2707
- className: getSize14(4),
2433
+ after: /* @__PURE__ */ React27.createElement(CaretRight2, {
2434
+ className: getSize12(4),
2708
2435
  weight: "bold"
2709
2436
  }),
2710
2437
  slots: {
@@ -2713,35 +2440,35 @@ var AdditionMethodChooser = (viewStateProps) => {
2713
2440
  }
2714
2441
  }
2715
2442
  };
2716
- return /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(StepHeading, null, t("addition method chooser title")), /* @__PURE__ */ React29.createElement("div", {
2443
+ return /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(StepHeading, null, t("addition method chooser title")), /* @__PURE__ */ React27.createElement("div", {
2717
2444
  role: "none",
2718
2445
  className: "flex flex-col gap-1 grow"
2719
- }, /* @__PURE__ */ React29.createElement(CompoundButton, {
2446
+ }, /* @__PURE__ */ React27.createElement(CompoundButton, {
2720
2447
  ...sharedButtonProps,
2721
2448
  description: t("create identity description"),
2722
- before: /* @__PURE__ */ React29.createElement(Plus3, {
2723
- className: getSize14(6)
2449
+ before: /* @__PURE__ */ React27.createElement(Plus3, {
2450
+ className: getSize12(6)
2724
2451
  }),
2725
2452
  onClick: () => send({
2726
2453
  type: "createIdentity"
2727
2454
  }),
2728
2455
  "data-autofocus": "choosingAuthMethod",
2729
2456
  "data-testid": "identity-chooser.create-identity"
2730
- }, t("create identity label")), /* @__PURE__ */ React29.createElement(CompoundButton, {
2457
+ }, t("create identity label")), /* @__PURE__ */ React27.createElement(CompoundButton, {
2731
2458
  ...sharedButtonProps,
2732
2459
  description: t("join identity description"),
2733
- before: /* @__PURE__ */ React29.createElement(QrCode, {
2734
- className: getSize14(6)
2460
+ before: /* @__PURE__ */ React27.createElement(QrCode, {
2461
+ className: getSize12(6)
2735
2462
  }),
2736
2463
  onClick: () => send({
2737
2464
  type: "acceptHaloInvitation"
2738
2465
  }),
2739
2466
  "data-testid": "identity-chooser.join-identity"
2740
- }, t("join identity label")), /* @__PURE__ */ React29.createElement(CompoundButton, {
2467
+ }, t("join identity label")), /* @__PURE__ */ React27.createElement(CompoundButton, {
2741
2468
  ...sharedButtonProps,
2742
2469
  description: t("recover identity description"),
2743
- before: /* @__PURE__ */ React29.createElement(Textbox, {
2744
- className: getSize14(6)
2470
+ before: /* @__PURE__ */ React27.createElement(Textbox, {
2471
+ className: getSize12(6)
2745
2472
  }),
2746
2473
  onClick: () => send({
2747
2474
  type: "recoverIdentity"
@@ -2751,39 +2478,39 @@ var AdditionMethodChooser = (viewStateProps) => {
2751
2478
  };
2752
2479
 
2753
2480
  // packages/sdk/shell/src/panels/JoinPanel/steps/IdentityAdded.tsx
2754
- import React30, { cloneElement as cloneElement2 } from "react";
2481
+ import React28, { cloneElement as cloneElement2 } from "react";
2755
2482
  import { generateName as generateName4 } from "@dxos/display-name";
2756
- import { Avatar as Avatar7, useId as useId7, useTranslation as useTranslation16 } from "@dxos/react-ui";
2757
- import { mx as mx22 } from "@dxos/react-ui-theme";
2483
+ import { Avatar as Avatar7, useId as useId7, useTranslation as useTranslation14 } from "@dxos/react-ui";
2484
+ import { mx as mx21 } from "@dxos/react-ui-theme";
2758
2485
  import { hexToFallback } from "@dxos/util";
2759
2486
  var IdentityAdded = (props) => {
2760
2487
  const { mode, addedIdentity, active, send, onDone, doneActionParent } = props;
2761
2488
  const disabled = !active;
2762
- const { t } = useTranslation16("os");
2489
+ const { t } = useTranslation14("os");
2763
2490
  const addedIdentityHex = addedIdentity?.identityKey.toHex() ?? "0";
2764
2491
  const fallbackValue = hexToFallback(addedIdentityHex);
2765
2492
  const labelId = useId7("identityListItem__label");
2766
2493
  const displayName = addedIdentity?.profile?.displayName ?? (addedIdentity && generateName4(addedIdentityHex));
2767
- const doneAction = /* @__PURE__ */ React30.createElement(Action, {
2494
+ const doneAction = /* @__PURE__ */ React28.createElement(Action, {
2768
2495
  ...onDone && {
2769
2496
  onClick: () => onDone(null)
2770
2497
  },
2771
2498
  disabled,
2772
2499
  "data-autofocus": "confirmingAddedIdentity",
2773
2500
  "data-testid": "identity-added-done"
2774
- }, /* @__PURE__ */ React30.createElement("span", null, t("done label")));
2775
- return /* @__PURE__ */ React30.createElement(React30.Fragment, null, /* @__PURE__ */ React30.createElement(StepHeading, null, t("identity added label")), /* @__PURE__ */ React30.createElement("div", {
2501
+ }, /* @__PURE__ */ React28.createElement("span", null, t("done label")));
2502
+ return /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement(StepHeading, null, t("identity added label")), /* @__PURE__ */ React28.createElement("div", {
2776
2503
  role: "none",
2777
2504
  className: "grow flex flex-col items-center justify-center text-center gap-2"
2778
- }, /* @__PURE__ */ React30.createElement(Avatar7.Root, {
2505
+ }, /* @__PURE__ */ React28.createElement(Avatar7.Root, {
2779
2506
  status: "active",
2780
2507
  labelId,
2781
2508
  hue: addedIdentity?.profile?.data?.hue || fallbackValue.hue
2782
- }, /* @__PURE__ */ React30.createElement(Avatar7.Frame, null, /* @__PURE__ */ React30.createElement(Avatar7.Fallback, {
2509
+ }, /* @__PURE__ */ React28.createElement(Avatar7.Frame, null, /* @__PURE__ */ React28.createElement(Avatar7.Fallback, {
2783
2510
  text: addedIdentity?.profile?.data?.emoji || fallbackValue.emoji
2784
- })), /* @__PURE__ */ React30.createElement(Avatar7.Label, {
2785
- classNames: mx22("text-lg truncate", !addedIdentity?.profile?.displayName && "font-mono")
2786
- }, displayName))), /* @__PURE__ */ React30.createElement(Actions, null, mode === "halo-only" ? doneActionParent ? /* @__PURE__ */ cloneElement2(doneActionParent, {}, doneAction) : doneAction : /* @__PURE__ */ React30.createElement(Action, {
2511
+ })), /* @__PURE__ */ React28.createElement(Avatar7.Label, {
2512
+ classNames: mx21("text-lg truncate", !addedIdentity?.profile?.displayName && "font-mono")
2513
+ }, displayName))), /* @__PURE__ */ React28.createElement(Actions, null, mode === "halo-only" ? doneActionParent ? /* @__PURE__ */ cloneElement2(doneActionParent, {}, doneAction) : doneAction : /* @__PURE__ */ React28.createElement(Action, {
2787
2514
  variant: "primary",
2788
2515
  disabled: disabled || !addedIdentity,
2789
2516
  onClick: () => addedIdentity && send({
@@ -2795,21 +2522,21 @@ var IdentityAdded = (props) => {
2795
2522
  };
2796
2523
 
2797
2524
  // packages/sdk/shell/src/panels/JoinPanel/steps/IdentityInput.tsx
2798
- import React31, { useCallback as useCallback5, useState as useState8 } from "react";
2525
+ import React29, { useCallback as useCallback5, useState as useState6 } from "react";
2799
2526
  import { log as log9 } from "@dxos/log";
2800
2527
  import { useClient as useClient7 } from "@dxos/react-client";
2801
- import { useTranslation as useTranslation17 } from "@dxos/react-ui";
2528
+ import { useTranslation as useTranslation15 } from "@dxos/react-ui";
2802
2529
  var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/steps/IdentityInput.tsx";
2803
2530
  var IdentityInput = (props) => {
2804
2531
  const { send, method } = props;
2805
2532
  const isRecover = method === "recover identity";
2806
2533
  const client = useClient7();
2807
- const { t } = useTranslation17("os");
2808
- const [validationMessage, setValidationMessage] = useState8("");
2534
+ const { t } = useTranslation15("os");
2535
+ const [validationMessage, setValidationMessage] = useState6("");
2809
2536
  const handleConfirm = async (value) => {
2810
2537
  if (isRecover) {
2811
2538
  await client.halo.recoverIdentity({
2812
- seedphrase: value
2539
+ recoveryCode: value
2813
2540
  }).then((identity) => {
2814
2541
  send?.({
2815
2542
  type: "selectIdentity",
@@ -2843,7 +2570,7 @@ var IdentityInput = (props) => {
2843
2570
  });
2844
2571
  }
2845
2572
  };
2846
- return /* @__PURE__ */ React31.createElement(IdentityInputImpl, {
2573
+ return /* @__PURE__ */ React29.createElement(IdentityInputImpl, {
2847
2574
  ...props,
2848
2575
  onConfirm: handleConfirm,
2849
2576
  validationMessage
@@ -2851,9 +2578,9 @@ var IdentityInput = (props) => {
2851
2578
  };
2852
2579
  var IdentityInputImpl = (props) => {
2853
2580
  const { method, active, onConfirm, validationMessage } = props;
2854
- const { t } = useTranslation17("os");
2855
- const [inputValue, setInputValue] = useState8("");
2856
- const [pending, setPending] = useState8(false);
2581
+ const { t } = useTranslation15("os");
2582
+ const [inputValue, setInputValue] = useState6("");
2583
+ const [pending, setPending] = useState6(false);
2857
2584
  const disabled = !active || pending;
2858
2585
  const isRecover = method === "recover identity";
2859
2586
  const handleConfirm = useCallback5(async () => {
@@ -2864,17 +2591,17 @@ var IdentityInputImpl = (props) => {
2864
2591
  onConfirm,
2865
2592
  inputValue
2866
2593
  ]);
2867
- return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement("div", {
2594
+ return /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("div", {
2868
2595
  role: "none",
2869
2596
  className: "grow flex flex-col justify-center"
2870
- }, /* @__PURE__ */ React31.createElement(Input, {
2597
+ }, /* @__PURE__ */ React29.createElement(Input, {
2871
2598
  validationMessage,
2872
- label: /* @__PURE__ */ React31.createElement(StepHeading, null, t(isRecover ? "recover identity input label" : "new identity input label")),
2599
+ label: /* @__PURE__ */ React29.createElement(StepHeading, null, t(isRecover ? "recover identity input label" : "new identity input label")),
2873
2600
  disabled,
2874
2601
  "data-testid": "identity-input",
2875
2602
  placeholder: isRecover ? t("recovery code placeholder") : t("display name placeholder"),
2876
2603
  onChange: ({ target: { value } }) => setInputValue(value)
2877
- })), /* @__PURE__ */ React31.createElement(Actions, null, /* @__PURE__ */ React31.createElement(Action, {
2604
+ })), /* @__PURE__ */ React29.createElement(Actions, null, /* @__PURE__ */ React29.createElement(Action, {
2878
2605
  variant: "primary",
2879
2606
  disabled: disabled || inputValue.trim().length === 0,
2880
2607
  onClick: handleConfirm,
@@ -2883,13 +2610,13 @@ var IdentityInputImpl = (props) => {
2883
2610
  };
2884
2611
 
2885
2612
  // packages/sdk/shell/src/panels/JoinPanel/steps/InvitationAccepted.tsx
2886
- import React32, { cloneElement as cloneElement3 } from "react";
2887
- import { useTranslation as useTranslation18 } from "@dxos/react-ui";
2613
+ import React30, { cloneElement as cloneElement3 } from "react";
2614
+ import { useTranslation as useTranslation16 } from "@dxos/react-ui";
2888
2615
 
2889
2616
  // packages/sdk/shell/src/panels/JoinPanel/steps/InvitationInput.tsx
2890
- import React33, { useState as useState9, useEffect as useEffect5, cloneElement as cloneElement4 } from "react";
2617
+ import React31, { useState as useState7, useEffect as useEffect5, cloneElement as cloneElement4 } from "react";
2891
2618
  import { log as log10 } from "@dxos/log";
2892
- import { useTranslation as useTranslation19 } from "@dxos/react-ui";
2619
+ import { useTranslation as useTranslation17 } from "@dxos/react-ui";
2893
2620
  var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/steps/InvitationInput.tsx";
2894
2621
  var invitationCodeFromUrl = (text) => {
2895
2622
  try {
@@ -2909,8 +2636,8 @@ var invitationCodeFromUrl = (text) => {
2909
2636
  var InvitationInput = (props) => {
2910
2637
  const { Kind, active, send, unredeemedCode, onExit, exitActionParent, onDone, doneActionParent, succeededKeys } = props;
2911
2638
  const disabled = !active;
2912
- const { t } = useTranslation19("os");
2913
- const [inputValue, setInputValue] = useState9(unredeemedCode ?? "");
2639
+ const { t } = useTranslation17("os");
2640
+ const [inputValue, setInputValue] = useState7(unredeemedCode ?? "");
2914
2641
  useEffect5(() => {
2915
2642
  unredeemedCode && setInputValue(unredeemedCode ?? "");
2916
2643
  }, [
@@ -2928,7 +2655,7 @@ var InvitationInput = (props) => {
2928
2655
  }
2929
2656
  });
2930
2657
  };
2931
- const exitAction = /* @__PURE__ */ React33.createElement(Action, {
2658
+ const exitAction = /* @__PURE__ */ React31.createElement(Action, {
2932
2659
  variant: "ghost",
2933
2660
  disabled,
2934
2661
  ...onExit ? {
@@ -2938,11 +2665,11 @@ var InvitationInput = (props) => {
2938
2665
  },
2939
2666
  "data-testid": "join-exit"
2940
2667
  }, t("cancel label"));
2941
- return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement("div", {
2668
+ return /* @__PURE__ */ React31.createElement(React31.Fragment, null, /* @__PURE__ */ React31.createElement("div", {
2942
2669
  role: "none",
2943
2670
  className: "grow flex flex-col justify-center"
2944
- }, /* @__PURE__ */ React33.createElement(Input, {
2945
- label: /* @__PURE__ */ React33.createElement(StepHeading, null, t("invitation input label")),
2671
+ }, /* @__PURE__ */ React31.createElement(Input, {
2672
+ label: /* @__PURE__ */ React31.createElement(StepHeading, null, t("invitation input label")),
2946
2673
  placeholder: t("invitation input placeholder"),
2947
2674
  disabled,
2948
2675
  value: inputValue,
@@ -2950,7 +2677,7 @@ var InvitationInput = (props) => {
2950
2677
  "data-autofocus": `inputting${Kind}InvitationCode`,
2951
2678
  "data-testid": `${Kind.toLowerCase()}-invitation-input`,
2952
2679
  onKeyUp: ({ key }) => key === "Enter" && handleNext()
2953
- })), /* @__PURE__ */ React33.createElement(Actions, null, Kind === "Halo" ? null : exitActionParent ? /* @__PURE__ */ cloneElement4(exitActionParent, {}, exitAction) : doneActionParent ? /* @__PURE__ */ cloneElement4(doneActionParent, {}, exitAction) : exitAction, /* @__PURE__ */ React33.createElement(Action, {
2680
+ })), /* @__PURE__ */ React31.createElement(Actions, null, Kind === "Halo" ? null : exitActionParent ? /* @__PURE__ */ cloneElement4(exitActionParent, {}, exitAction) : doneActionParent ? /* @__PURE__ */ cloneElement4(doneActionParent, {}, exitAction) : exitAction, /* @__PURE__ */ React31.createElement(Action, {
2954
2681
  variant: "primary",
2955
2682
  disabled: disabled || inputValue.trim().length === 0,
2956
2683
  onClick: handleNext,
@@ -2959,8 +2686,8 @@ var InvitationInput = (props) => {
2959
2686
  };
2960
2687
 
2961
2688
  // packages/sdk/shell/src/panels/JoinPanel/steps/InvitationRescuer.tsx
2962
- import React34 from "react";
2963
- import { useTranslation as useTranslation20 } from "@dxos/react-ui";
2689
+ import React32 from "react";
2690
+ import { useTranslation as useTranslation18 } from "@dxos/react-ui";
2964
2691
  import { descriptionText as descriptionText10 } from "@dxos/react-ui-theme";
2965
2692
  var InvitationActions = ({
2966
2693
  // `invitationState` does report correct state, but here we evaluate whether `failReason` is a better source of truth
@@ -2972,14 +2699,14 @@ var InvitationActions = ({
2972
2699
  Kind,
2973
2700
  failReason
2974
2701
  }) => {
2975
- const { t } = useTranslation20("os");
2702
+ const { t } = useTranslation18("os");
2976
2703
  if (failReason) {
2977
- return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(StepHeading, {
2704
+ return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(StepHeading, {
2978
2705
  className: descriptionText10
2979
- }, t(failReason === "timeout" ? "timeout status label" : failReason === "cancelled" ? "cancelled status label" : "error status label")), /* @__PURE__ */ React34.createElement("div", {
2706
+ }, t(failReason === "timeout" ? "timeout status label" : failReason === "cancelled" ? "cancelled status label" : "error status label")), /* @__PURE__ */ React32.createElement("div", {
2980
2707
  role: "none",
2981
2708
  className: "grow"
2982
- }), /* @__PURE__ */ React34.createElement(Actions, null, /* @__PURE__ */ React34.createElement(Action, {
2709
+ }), /* @__PURE__ */ React32.createElement(Actions, null, /* @__PURE__ */ React32.createElement(Action, {
2983
2710
  disabled: !active,
2984
2711
  onClick: () => send({
2985
2712
  type: `reset${Kind}Invitation`
@@ -2987,16 +2714,16 @@ var InvitationActions = ({
2987
2714
  "data-testid": "invitation-rescuer-reset"
2988
2715
  }, t("reset label"))));
2989
2716
  } else {
2990
- return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(StepHeading, {
2717
+ return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(StepHeading, {
2991
2718
  className: descriptionText10
2992
- }, t("connecting status label")), /* @__PURE__ */ React34.createElement("div", {
2719
+ }, t("connecting status label")), /* @__PURE__ */ React32.createElement("div", {
2993
2720
  role: "none",
2994
2721
  className: "grow"
2995
- }), /* @__PURE__ */ React34.createElement(Actions, null, /* @__PURE__ */ React34.createElement(Action, {
2722
+ }), /* @__PURE__ */ React32.createElement(Actions, null, /* @__PURE__ */ React32.createElement(Action, {
2996
2723
  disabled: true,
2997
2724
  classNames: "order-2",
2998
2725
  "data-testid": "next"
2999
- }, t("next label")), /* @__PURE__ */ React34.createElement(Action, {
2726
+ }, t("next label")), /* @__PURE__ */ React32.createElement(Action, {
3000
2727
  disabled: !active,
3001
2728
  onClick: onInvitationCancel,
3002
2729
  "data-testid": "invitation-rescuer-cancel"
@@ -3005,52 +2732,52 @@ var InvitationActions = ({
3005
2732
  };
3006
2733
  var InvitationRescuer = (props) => {
3007
2734
  const { Kind, invitationState, active, send } = props;
3008
- const { t } = useTranslation20("os");
3009
- return /* @__PURE__ */ React34.createElement(React34.Fragment, null, typeof invitationState === "undefined" ? /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement("div", {
2735
+ const { t } = useTranslation18("os");
2736
+ return /* @__PURE__ */ React32.createElement(React32.Fragment, null, typeof invitationState === "undefined" ? /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement("div", {
3010
2737
  role: "none",
3011
2738
  className: "grow flex flex-col justify-center"
3012
- }, /* @__PURE__ */ React34.createElement(StepHeading, {
2739
+ }, /* @__PURE__ */ React32.createElement(StepHeading, {
3013
2740
  className: descriptionText10
3014
- }, "There was a problem joining the space")), /* @__PURE__ */ React34.createElement(Actions, null, /* @__PURE__ */ React34.createElement(Action, {
2741
+ }, "There was a problem joining the space")), /* @__PURE__ */ React32.createElement(Actions, null, /* @__PURE__ */ React32.createElement(Action, {
3015
2742
  disabled: !active,
3016
2743
  "data-testid": "invitation-rescuer-blank-reset",
3017
2744
  onClick: () => send({
3018
2745
  type: `reset${Kind}Invitation`
3019
2746
  })
3020
- }, t("reset label")))) : /* @__PURE__ */ React34.createElement(InvitationActions, props));
2747
+ }, t("reset label")))) : /* @__PURE__ */ React32.createElement(InvitationActions, props));
3021
2748
  };
3022
2749
 
3023
2750
  // packages/sdk/shell/src/panels/JoinPanel/steps/InvitationAuthenticator.tsx
3024
- import React35, { useState as useState10 } from "react";
2751
+ import React33, { useState as useState8 } from "react";
3025
2752
  import { Invitation as Invitation6 } from "@dxos/react-client/invitations";
3026
- import { Input as Input3, useTranslation as useTranslation21 } from "@dxos/react-ui";
2753
+ import { Input as Input3, useTranslation as useTranslation19 } from "@dxos/react-ui";
3027
2754
  import { descriptionText as descriptionText11 } from "@dxos/react-ui-theme";
3028
2755
  import { hexToEmoji as hexToEmoji5 } from "@dxos/util";
3029
2756
  var pinLength = 6;
3030
2757
  var InvitationAuthenticator = ({ failed, Kind, authMethod, active, pending, invitationId, onInvitationAuthenticate, onInvitationCancel }) => {
3031
2758
  const disabled = !active || pending;
3032
- const { t } = useTranslation21("os");
2759
+ const { t } = useTranslation19("os");
3033
2760
  const invitationType = Kind.toLowerCase();
3034
- const [authCode, setAuthCode] = useState10("");
2761
+ const [authCode, setAuthCode] = useState8("");
3035
2762
  const onChange = ({ target: { value } }) => {
3036
2763
  setAuthCode(value);
3037
2764
  if (value.length === pinLength) {
3038
2765
  document.querySelector(`[data-autofocus-pinlength="${invitationType}"]`)?.focus();
3039
2766
  }
3040
2767
  };
3041
- return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement("div", {
2768
+ return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement("div", {
3042
2769
  role: "none",
3043
2770
  className: "grow flex flex-col justify-center gap-4"
3044
- }, /* @__PURE__ */ React35.createElement(Input3.Root, failed && {
2771
+ }, /* @__PURE__ */ React33.createElement(Input3.Root, failed && {
3045
2772
  validationValence: "error"
3046
- }, /* @__PURE__ */ React35.createElement(Input3.Label, {
2773
+ }, /* @__PURE__ */ React33.createElement(Input3.Label, {
3047
2774
  asChild: true
3048
- }, 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, {
2775
+ }, 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, {
3049
2776
  className: descriptionText11
3050
- }, t("authenticating label")), /* @__PURE__ */ React35.createElement("div", {
2777
+ }, t("authenticating label")), /* @__PURE__ */ React33.createElement("div", {
3051
2778
  role: "none",
3052
2779
  className: "grow"
3053
- }))), authMethod === Invitation6.AuthMethod.SHARED_SECRET && /* @__PURE__ */ React35.createElement(Input3.PinInput, {
2780
+ }))), authMethod === Invitation6.AuthMethod.SHARED_SECRET && /* @__PURE__ */ React33.createElement(Input3.PinInput, {
3054
2781
  disabled,
3055
2782
  length: pinLength,
3056
2783
  onChange,
@@ -3061,18 +2788,18 @@ var InvitationAuthenticator = ({ failed, Kind, authMethod, active, pending, invi
3061
2788
  "data-prevent-ios-autofocus": true,
3062
2789
  "data-testid": `${invitationType}-auth-code-input`,
3063
2790
  "data-1p-ignore": true
3064
- }), failed && /* @__PURE__ */ React35.createElement(Input3.DescriptionAndValidation, {
2791
+ }), failed && /* @__PURE__ */ React33.createElement(Input3.DescriptionAndValidation, {
3065
2792
  classNames: "text-center"
3066
- }, /* @__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", {
2793
+ }, /* @__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", {
3067
2794
  className: "flex justify-center"
3068
- }, /* @__PURE__ */ React35.createElement(Emoji, {
2795
+ }, /* @__PURE__ */ React33.createElement(Emoji, {
3069
2796
  text: hexToEmoji5(invitationId)
3070
- })))), /* @__PURE__ */ React35.createElement(Actions, null, /* @__PURE__ */ React35.createElement(Action, {
2797
+ })))), /* @__PURE__ */ React33.createElement(Actions, null, /* @__PURE__ */ React33.createElement(Action, {
3071
2798
  variant: "ghost",
3072
2799
  disabled,
3073
2800
  onClick: () => onInvitationCancel?.(),
3074
2801
  "data-testid": `${invitationType}-invitation-authenticator-cancel`
3075
- }, t("cancel label")), /* @__PURE__ */ React35.createElement(Action, {
2802
+ }, t("cancel label")), /* @__PURE__ */ React33.createElement(Action, {
3076
2803
  variant: "primary",
3077
2804
  disabled,
3078
2805
  onClick: () => onInvitationAuthenticate?.(authCode),
@@ -3134,46 +2861,46 @@ var JoinPanelImpl = (props) => {
3134
2861
  IdentityInput: IdentityInputComponent = IdentityInput,
3135
2862
  ConfirmReset: ConfirmResetComponent = ConfirmReset
3136
2863
  } = props;
3137
- return /* @__PURE__ */ React36.createElement(React36.Fragment, null, mode !== "halo-only" && /* @__PURE__ */ React36.createElement(JoinHeading, {
2864
+ return /* @__PURE__ */ React34.createElement(React34.Fragment, null, mode !== "halo-only" && /* @__PURE__ */ React34.createElement(JoinHeading, {
3138
2865
  titleId,
3139
2866
  mode,
3140
2867
  onExit,
3141
2868
  exitActionParent
3142
- }), /* @__PURE__ */ React36.createElement(Viewport.Root, {
2869
+ }), /* @__PURE__ */ React34.createElement(Viewport.Root, {
3143
2870
  focusManaged: true,
3144
2871
  activeView
3145
- }, /* @__PURE__ */ React36.createElement(Viewport.Views, null, /* @__PURE__ */ React36.createElement(Viewport.View, {
2872
+ }, /* @__PURE__ */ React34.createElement(Viewport.Views, null, /* @__PURE__ */ React34.createElement(Viewport.View, {
3146
2873
  classNames: stepStyles,
3147
2874
  id: "addition method chooser"
3148
- }, /* @__PURE__ */ React36.createElement(AdditionMethodChooser, {
2875
+ }, /* @__PURE__ */ React34.createElement(AdditionMethodChooser, {
3149
2876
  send,
3150
2877
  active: activeView === "addition method chooser"
3151
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2878
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3152
2879
  classNames: stepStyles,
3153
2880
  id: "reset storage confirmation"
3154
- }, /* @__PURE__ */ React36.createElement(ConfirmResetComponent, {
2881
+ }, /* @__PURE__ */ React34.createElement(ConfirmResetComponent, {
3155
2882
  send,
3156
2883
  active: activeView === "reset storage confirmation",
3157
2884
  onCancel: onCancelResetStorage,
3158
2885
  onConfirm: onConfirmResetStorage
3159
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2886
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3160
2887
  classNames: stepStyles,
3161
2888
  id: "create identity input"
3162
- }, /* @__PURE__ */ React36.createElement(IdentityInputComponent, {
2889
+ }, /* @__PURE__ */ React34.createElement(IdentityInputComponent, {
3163
2890
  send,
3164
2891
  method: "create identity",
3165
2892
  active: activeView === "create identity input"
3166
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2893
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3167
2894
  classNames: stepStyles,
3168
2895
  id: "recover identity input"
3169
- }, /* @__PURE__ */ React36.createElement(IdentityInputComponent, {
2896
+ }, /* @__PURE__ */ React34.createElement(IdentityInputComponent, {
3170
2897
  send,
3171
2898
  method: "recover identity",
3172
2899
  active: activeView === "recover identity input"
3173
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2900
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3174
2901
  classNames: stepStyles,
3175
2902
  id: "halo invitation input"
3176
- }, /* @__PURE__ */ React36.createElement(InvitationInput, {
2903
+ }, /* @__PURE__ */ React34.createElement(InvitationInput, {
3177
2904
  send,
3178
2905
  Kind: "Halo",
3179
2906
  active: activeView === "halo invitation input",
@@ -3183,20 +2910,20 @@ var JoinPanelImpl = (props) => {
3183
2910
  ...succeededKeys?.Halo && {
3184
2911
  succeededKeys: succeededKeys.Halo
3185
2912
  }
3186
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2913
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3187
2914
  classNames: stepStyles,
3188
2915
  id: "halo invitation rescuer"
3189
- }, /* @__PURE__ */ React36.createElement(InvitationRescuer, {
2916
+ }, /* @__PURE__ */ React34.createElement(InvitationRescuer, {
3190
2917
  send,
3191
2918
  Kind: "Halo",
3192
2919
  active: activeView === "halo invitation rescuer",
3193
2920
  invitationState: invitationStates?.Halo,
3194
2921
  onInvitationCancel: onHaloInvitationCancel,
3195
2922
  failReason: failReasons?.Halo
3196
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2923
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3197
2924
  classNames: stepStyles,
3198
2925
  id: "halo invitation authenticator"
3199
- }, /* @__PURE__ */ React36.createElement(InvitationAuthenticator, {
2926
+ }, /* @__PURE__ */ React34.createElement(InvitationAuthenticator, {
3200
2927
  send,
3201
2928
  Kind: "Halo",
3202
2929
  invitationId: invitationIds?.Halo,
@@ -3207,19 +2934,19 @@ var JoinPanelImpl = (props) => {
3207
2934
  ...failed.has("Halo") && {
3208
2935
  failed: true
3209
2936
  }
3210
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2937
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3211
2938
  classNames: stepStyles,
3212
2939
  id: "identity added"
3213
- }, /* @__PURE__ */ React36.createElement(IdentityAdded, {
2940
+ }, /* @__PURE__ */ React34.createElement(IdentityAdded, {
3214
2941
  send,
3215
2942
  mode,
3216
2943
  active: activeView === "identity added",
3217
2944
  doneActionParent,
3218
2945
  onDone: onHaloDone
3219
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2946
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3220
2947
  classNames: stepStyles,
3221
2948
  id: "space invitation input"
3222
- }, /* @__PURE__ */ React36.createElement(InvitationInput, {
2949
+ }, /* @__PURE__ */ React34.createElement(InvitationInput, {
3223
2950
  send,
3224
2951
  Kind: "Space",
3225
2952
  active: activeView === "space invitation input",
@@ -3231,20 +2958,20 @@ var JoinPanelImpl = (props) => {
3231
2958
  },
3232
2959
  onExit,
3233
2960
  exitActionParent
3234
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2961
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3235
2962
  classNames: stepStyles,
3236
2963
  id: "space invitation rescuer"
3237
- }, /* @__PURE__ */ React36.createElement(InvitationRescuer, {
2964
+ }, /* @__PURE__ */ React34.createElement(InvitationRescuer, {
3238
2965
  send,
3239
2966
  Kind: "Space",
3240
2967
  active: activeView === "space invitation rescuer",
3241
2968
  invitationState: invitationStates?.Space,
3242
2969
  onInvitationCancel: onSpaceInvitationCancel,
3243
2970
  failReason: failReasons?.Space
3244
- })), /* @__PURE__ */ React36.createElement(Viewport.View, {
2971
+ })), /* @__PURE__ */ React34.createElement(Viewport.View, {
3245
2972
  classNames: stepStyles,
3246
2973
  id: "space invitation authenticator"
3247
- }, /* @__PURE__ */ React36.createElement(InvitationAuthenticator, {
2974
+ }, /* @__PURE__ */ React34.createElement(InvitationAuthenticator, {
3248
2975
  send,
3249
2976
  Kind: "Space",
3250
2977
  invitationId: invitationIds?.Space,
@@ -3260,7 +2987,7 @@ var JoinPanelImpl = (props) => {
3260
2987
  var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialDisposition = "default", initialInvitationCode, exitActionParent, onExit, doneActionParent, onDone: propsOnDone, onCancelResetStorage }) => {
3261
2988
  const client = useClient8();
3262
2989
  const identity = useIdentity2();
3263
- const { hasIosKeyboard } = useThemeContext5();
2990
+ const { hasIosKeyboard } = useThemeContext3();
3264
2991
  const titleId = useId8("joinPanel__heading", propsTitleId);
3265
2992
  const [joinState, joinSend, joinService] = useJoinMachine(client, {
3266
2993
  context: {
@@ -3522,7 +3249,7 @@ var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialDisposition =
3522
3249
  client,
3523
3250
  joinSend
3524
3251
  ]);
3525
- return /* @__PURE__ */ React36.createElement(JoinPanelImpl, {
3252
+ return /* @__PURE__ */ React34.createElement(JoinPanelImpl, {
3526
3253
  titleId,
3527
3254
  mode,
3528
3255
  send: joinSend,
@@ -3565,10 +3292,10 @@ var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialDisposition =
3565
3292
 
3566
3293
  // packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx
3567
3294
  import { Planet } from "@phosphor-icons/react";
3568
- import React38, { useEffect as useEffect7, useMemo as useMemo5 } from "react";
3295
+ import React36, { useEffect as useEffect7, useMemo as useMemo5 } from "react";
3569
3296
  import { log as log14 } from "@dxos/log";
3570
3297
  import { useInvitationStatus as useInvitationStatus3 } from "@dxos/react-client/invitations";
3571
- import { useId as useId9, useTranslation as useTranslation23 } from "@dxos/react-ui";
3298
+ import { useId as useId9, useTranslation as useTranslation21 } from "@dxos/react-ui";
3572
3299
 
3573
3300
  // packages/sdk/shell/src/panels/SpacePanel/spaceMachine.ts
3574
3301
  import { useMachine as useMachine3 } from "@xstate/react";
@@ -3634,13 +3361,13 @@ var useSpaceMachine = (options) => {
3634
3361
 
3635
3362
  // packages/sdk/shell/src/panels/SpacePanel/steps/SpaceManager.tsx
3636
3363
  import { Placeholder as Placeholder2, UserPlus, UsersThree } from "@phosphor-icons/react";
3637
- import React37, { useCallback as useCallback7, useState as useState11 } from "react";
3364
+ import React35, { useCallback as useCallback7, useState as useState9 } from "react";
3638
3365
  import { log as log13 } from "@dxos/log";
3639
3366
  import { useConfig } from "@dxos/react-client";
3640
3367
  import { useSpaceInvitations as useSpaceInvitations2 } from "@dxos/react-client/echo";
3641
3368
  import { Invitation as Invitation8, InvitationEncoder as InvitationEncoder4 } from "@dxos/react-client/invitations";
3642
- import { ScrollArea, useTranslation as useTranslation22 } from "@dxos/react-ui";
3643
- import { descriptionText as descriptionText12, mx as mx23 } from "@dxos/react-ui-theme";
3369
+ import { ScrollArea, useTranslation as useTranslation20 } from "@dxos/react-ui";
3370
+ import { descriptionText as descriptionText12, mx as mx22 } from "@dxos/react-ui-theme";
3644
3371
  var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/SpacePanel/steps/SpaceManager.tsx";
3645
3372
  var activeActionKey = "dxos:react-shell/space-manager/active-action";
3646
3373
  var handleInvitationEvent = (invitation, subscription) => {
@@ -3660,7 +3387,7 @@ var handleInvitationEvent = (invitation, subscription) => {
3660
3387
  };
3661
3388
  var SpaceManager = (props) => {
3662
3389
  const { space, target } = props;
3663
- const { t } = useTranslation22("os");
3390
+ const { t } = useTranslation20("os");
3664
3391
  const config = useConfig();
3665
3392
  const invitations = useSpaceInvitations2(space?.key);
3666
3393
  const inviteActions = {
@@ -3705,7 +3432,7 @@ var SpaceManager = (props) => {
3705
3432
  ])
3706
3433
  }
3707
3434
  };
3708
- return /* @__PURE__ */ React37.createElement(SpaceManagerImpl, {
3435
+ return /* @__PURE__ */ React35.createElement(SpaceManagerImpl, {
3709
3436
  ...props,
3710
3437
  invitations,
3711
3438
  inviteActions
@@ -3714,7 +3441,7 @@ var SpaceManager = (props) => {
3714
3441
  var headingFragment = "pis-3 pie-1 plb-1 mbe-1 font-medium";
3715
3442
  var SpaceManagerImpl = (props) => {
3716
3443
  const { active, space, createInvitationUrl, send, inviteActions: propsInviteActions, invitations, showInactiveInvitations, SpaceMemberList: SpaceMemberListComponent = SpaceMemberList, InvitationList: InvitationListComponent = InvitationList } = props;
3717
- const { t } = useTranslation22("os");
3444
+ const { t } = useTranslation20("os");
3718
3445
  const inviteActions = propsInviteActions ?? {
3719
3446
  noopInvite: {
3720
3447
  label: t("create space invitation label"),
@@ -3724,7 +3451,7 @@ var SpaceManagerImpl = (props) => {
3724
3451
  }
3725
3452
  }
3726
3453
  };
3727
- const [activeAction, setInternalActiveAction] = useState11(localStorage.getItem(activeActionKey) ?? "inviteMany");
3454
+ const [activeAction, setInternalActiveAction] = useState9(localStorage.getItem(activeActionKey) ?? "inviteMany");
3728
3455
  const setActiveAction = (nextAction) => {
3729
3456
  setInternalActiveAction(nextAction);
3730
3457
  localStorage.setItem(activeActionKey, nextAction);
@@ -3732,26 +3459,26 @@ var SpaceManagerImpl = (props) => {
3732
3459
  const visibleInvitations = showInactiveInvitations ? invitations : invitations?.filter((invitation) => ![
3733
3460
  Invitation8.State.CANCELLED
3734
3461
  ].includes(invitation.get().state));
3735
- return /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement(ScrollArea.Root, {
3462
+ return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(ScrollArea.Root, {
3736
3463
  classNames: "grow shrink basis-28 -mli-2"
3737
- }, /* @__PURE__ */ React37.createElement(ScrollArea.Viewport, {
3464
+ }, /* @__PURE__ */ React35.createElement(ScrollArea.Viewport, {
3738
3465
  classNames: "is-full pie-2"
3739
- }, !!visibleInvitations?.length && /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement("h3", {
3740
- className: mx23(headingFragment, descriptionText12)
3741
- }, t("invitation list heading")), /* @__PURE__ */ React37.createElement(InvitationListComponent, {
3466
+ }, !!visibleInvitations?.length && /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement("h3", {
3467
+ className: mx22(headingFragment, descriptionText12)
3468
+ }, t("invitation list heading")), /* @__PURE__ */ React35.createElement(InvitationListComponent, {
3742
3469
  className: "mb-2",
3743
3470
  send,
3744
3471
  invitations: visibleInvitations ?? [],
3745
3472
  onClickRemove: (invitation) => invitation.cancel(),
3746
3473
  createInvitationUrl
3747
- }), /* @__PURE__ */ React37.createElement("h3", {
3748
- className: mx23(headingFragment, descriptionText12, "mbs-2")
3749
- }, t("space member list heading"))), /* @__PURE__ */ React37.createElement(SpaceMemberListComponent, {
3474
+ }), /* @__PURE__ */ React35.createElement("h3", {
3475
+ className: mx22(headingFragment, descriptionText12, "mbs-2")
3476
+ }, t("space member list heading"))), /* @__PURE__ */ React35.createElement(SpaceMemberListComponent, {
3750
3477
  spaceKey: space.key,
3751
3478
  includeSelf: true
3752
- })), /* @__PURE__ */ React37.createElement(ScrollArea.Scrollbar, {
3479
+ })), /* @__PURE__ */ React35.createElement(ScrollArea.Scrollbar, {
3753
3480
  orientation: "vertical"
3754
- }, /* @__PURE__ */ React37.createElement(ScrollArea.Thumb, null))), /* @__PURE__ */ React37.createElement(Actions, null, /* @__PURE__ */ React37.createElement(BifurcatedAction, {
3481
+ }, /* @__PURE__ */ React35.createElement(ScrollArea.Thumb, null))), /* @__PURE__ */ React35.createElement(Actions, null, /* @__PURE__ */ React35.createElement(BifurcatedAction, {
3755
3482
  disabled: !active,
3756
3483
  actions: inviteActions,
3757
3484
  activeAction,
@@ -3763,45 +3490,45 @@ var SpaceManagerImpl = (props) => {
3763
3490
  // packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx
3764
3491
  var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx";
3765
3492
  var SpacePanelHeading = ({ titleId, space, onDone }) => {
3766
- const { t } = useTranslation23("os");
3493
+ const { t } = useTranslation21("os");
3767
3494
  const name = space.properties.name;
3768
- return /* @__PURE__ */ React38.createElement(Heading, {
3495
+ return /* @__PURE__ */ React36.createElement(Heading, {
3769
3496
  titleId,
3770
3497
  title: t("space panel heading"),
3771
- corner: /* @__PURE__ */ React38.createElement(CloseButton, {
3498
+ corner: /* @__PURE__ */ React36.createElement(CloseButton, {
3772
3499
  "data-testid": "identity-panel-done",
3773
3500
  onDone
3774
3501
  })
3775
- }, /* @__PURE__ */ React38.createElement("div", {
3502
+ }, /* @__PURE__ */ React36.createElement("div", {
3776
3503
  role: "none",
3777
3504
  className: "flex gap-4 items-center justify-center mlb-4"
3778
- }, /* @__PURE__ */ React38.createElement(Planet, {
3505
+ }, /* @__PURE__ */ React36.createElement(Planet, {
3779
3506
  size: 32,
3780
3507
  weight: "light"
3781
- }), /* @__PURE__ */ React38.createElement("div", {
3508
+ }), /* @__PURE__ */ React36.createElement("div", {
3782
3509
  className: "block text-start font-light text-xl"
3783
3510
  }, name ?? space.key.truncate())));
3784
3511
  };
3785
3512
  var SpacePanelImpl = (props) => {
3786
3513
  const { titleId, activeView, space, hideHeading, target, SpaceManager: SpaceManagerComponent = SpaceManager, InvitationManager: InvitationManagerComponent = InvitationManager, ...rest } = props;
3787
- return /* @__PURE__ */ React38.createElement(React38.Fragment, null, !hideHeading && /* @__PURE__ */ React38.createElement(SpacePanelHeading, {
3514
+ return /* @__PURE__ */ React36.createElement(React36.Fragment, null, !hideHeading && /* @__PURE__ */ React36.createElement(SpacePanelHeading, {
3788
3515
  ...rest,
3789
3516
  titleId,
3790
3517
  space
3791
- }), /* @__PURE__ */ React38.createElement(Viewport.Root, {
3518
+ }), /* @__PURE__ */ React36.createElement(Viewport.Root, {
3792
3519
  activeView
3793
- }, /* @__PURE__ */ React38.createElement(Viewport.Views, null, /* @__PURE__ */ React38.createElement(Viewport.View, {
3520
+ }, /* @__PURE__ */ React36.createElement(Viewport.Views, null, /* @__PURE__ */ React36.createElement(Viewport.View, {
3794
3521
  id: "space manager",
3795
3522
  classNames: stepStyles
3796
- }, /* @__PURE__ */ React38.createElement(SpaceManagerComponent, {
3523
+ }, /* @__PURE__ */ React36.createElement(SpaceManagerComponent, {
3797
3524
  active: activeView === "space manager",
3798
3525
  space,
3799
3526
  target,
3800
3527
  ...rest
3801
- })), /* @__PURE__ */ React38.createElement(Viewport.View, {
3528
+ })), /* @__PURE__ */ React36.createElement(Viewport.View, {
3802
3529
  id: "space invitation manager",
3803
3530
  classNames: stepStyles
3804
- }, /* @__PURE__ */ React38.createElement(InvitationManagerComponent, {
3531
+ }, /* @__PURE__ */ React36.createElement(InvitationManagerComponent, {
3805
3532
  active: activeView === "space invitation manager",
3806
3533
  ...rest,
3807
3534
  invitationUrl: props.invitationUrl
@@ -3809,7 +3536,7 @@ var SpacePanelImpl = (props) => {
3809
3536
  };
3810
3537
  var SpacePanelWithInvitationImpl = ({ invitation, ...props }) => {
3811
3538
  const invitationStatus = useInvitationStatus3(invitation);
3812
- return /* @__PURE__ */ React38.createElement(SpacePanelImpl, {
3539
+ return /* @__PURE__ */ React36.createElement(SpacePanelImpl, {
3813
3540
  ...props,
3814
3541
  ...invitationStatus,
3815
3542
  invitationUrl: props.createInvitationUrl(invitationStatus.invitationCode)
@@ -3856,24 +3583,24 @@ var SpacePanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => code,
3856
3583
  };
3857
3584
  return spaceState.context.invitation ? (
3858
3585
  // TODO(wittjosiah): Unused? Remove?
3859
- /* @__PURE__ */ React38.createElement(SpacePanelWithInvitationImpl, {
3586
+ /* @__PURE__ */ React36.createElement(SpacePanelWithInvitationImpl, {
3860
3587
  ...implProps,
3861
3588
  invitation: spaceState.context.invitation
3862
3589
  })
3863
- ) : /* @__PURE__ */ React38.createElement(SpacePanelImpl, implProps);
3590
+ ) : /* @__PURE__ */ React36.createElement(SpacePanelImpl, implProps);
3864
3591
  };
3865
3592
 
3866
3593
  // packages/sdk/shell/src/panels/StatusPanel/StatusPanel.tsx
3867
- import React39 from "react";
3868
- import { Status, useTranslation as useTranslation24 } from "@dxos/react-ui";
3594
+ import React37 from "react";
3595
+ import { Status, useTranslation as useTranslation22 } from "@dxos/react-ui";
3869
3596
  var StatusPanel = ({ titleId }) => {
3870
- const { t } = useTranslation24("os");
3871
- return /* @__PURE__ */ React39.createElement("div", {
3597
+ const { t } = useTranslation22("os");
3598
+ return /* @__PURE__ */ React37.createElement("div", {
3872
3599
  className: "grid place-items-center p-2 gap-2"
3873
- }, /* @__PURE__ */ React39.createElement("p", {
3600
+ }, /* @__PURE__ */ React37.createElement("p", {
3874
3601
  id: titleId,
3875
3602
  className: "font-medium text-center"
3876
- }, t("resetting message")), /* @__PURE__ */ React39.createElement(Status, {
3603
+ }, t("resetting message")), /* @__PURE__ */ React37.createElement(Status, {
3877
3604
  indeterminate: true
3878
3605
  }, t("resetting message")));
3879
3606
  };
@@ -3881,96 +3608,96 @@ var StatusPanel = ({ titleId }) => {
3881
3608
  // packages/sdk/shell/src/composites/IdentityDialog/IdentityDialog.tsx
3882
3609
  var IdentityDialog = (props) => {
3883
3610
  const titleId = useId10("identityDialog__title", props.title);
3884
- return /* @__PURE__ */ React40.createElement(Dialog.Root, {
3611
+ return /* @__PURE__ */ React38.createElement(Dialog.Root, {
3885
3612
  defaultOpen: true,
3886
3613
  onOpenChange: (open) => open || props.onDone?.()
3887
- }, /* @__PURE__ */ React40.createElement(Dialog.Portal, null, /* @__PURE__ */ React40.createElement(Dialog.Overlay, null, /* @__PURE__ */ React40.createElement(Dialog.Content, {
3614
+ }, /* @__PURE__ */ React38.createElement(Dialog.Portal, null, /* @__PURE__ */ React38.createElement(Dialog.Overlay, null, /* @__PURE__ */ React38.createElement(Dialog.Content, {
3888
3615
  "aria-labelledby": titleId,
3889
3616
  onOpenAutoFocus: (e) => e.preventDefault()
3890
- }, /* @__PURE__ */ React40.createElement(Clipboard3.Provider, null, /* @__PURE__ */ React40.createElement(IdentityPanel, {
3617
+ }, /* @__PURE__ */ React38.createElement(Clipboard3.Provider, null, /* @__PURE__ */ React38.createElement(IdentityPanel, {
3891
3618
  ...props,
3892
3619
  titleId,
3893
- doneActionParent: /* @__PURE__ */ React40.createElement(Dialog.Close, {
3620
+ doneActionParent: /* @__PURE__ */ React38.createElement(Dialog.Close, {
3894
3621
  asChild: true
3895
3622
  })
3896
3623
  }))))));
3897
3624
  };
3898
3625
 
3899
3626
  // packages/sdk/shell/src/composites/JoinDialog/JoinDialog.tsx
3900
- import React41 from "react";
3627
+ import React39 from "react";
3901
3628
  import { AlertDialog, useId as useId11, useVisualViewport } from "@dxos/react-ui";
3902
3629
  var JoinDialog = (joinPanelProps) => {
3903
3630
  const titleId = useId11("joinDialog__title");
3904
3631
  const { height } = useVisualViewport();
3905
- return /* @__PURE__ */ React41.createElement(AlertDialog.Root, {
3632
+ return /* @__PURE__ */ React39.createElement(AlertDialog.Root, {
3906
3633
  defaultOpen: true,
3907
3634
  onOpenChange: (open) => open || (joinPanelProps.onExit ? joinPanelProps.onExit() : joinPanelProps.onDone?.(null))
3908
- }, /* @__PURE__ */ React41.createElement(AlertDialog.Portal, null, /* @__PURE__ */ React41.createElement(AlertDialog.Overlay, {
3635
+ }, /* @__PURE__ */ React39.createElement(AlertDialog.Portal, null, /* @__PURE__ */ React39.createElement(AlertDialog.Overlay, {
3909
3636
  classNames: "backdrop-blur",
3910
3637
  ...height && {
3911
3638
  style: {
3912
3639
  blockSize: `${height}px`
3913
3640
  }
3914
3641
  }
3915
- }, /* @__PURE__ */ React41.createElement(AlertDialog.Content, {
3642
+ }, /* @__PURE__ */ React39.createElement(AlertDialog.Content, {
3916
3643
  "aria-labelledby": titleId
3917
- }, /* @__PURE__ */ React41.createElement(JoinPanel, {
3644
+ }, /* @__PURE__ */ React39.createElement(JoinPanel, {
3918
3645
  ...joinPanelProps,
3919
3646
  titleId,
3920
- exitActionParent: /* @__PURE__ */ React41.createElement(AlertDialog.Cancel, {
3647
+ exitActionParent: /* @__PURE__ */ React39.createElement(AlertDialog.Cancel, {
3921
3648
  asChild: true
3922
3649
  }),
3923
- doneActionParent: /* @__PURE__ */ React41.createElement(AlertDialog.Action, {
3650
+ doneActionParent: /* @__PURE__ */ React39.createElement(AlertDialog.Action, {
3924
3651
  asChild: true
3925
3652
  })
3926
3653
  })))));
3927
3654
  };
3928
3655
 
3929
3656
  // packages/sdk/shell/src/composites/Shell/run-shell.tsx
3930
- import React45, { StrictMode } from "react";
3657
+ import React43, { StrictMode } from "react";
3931
3658
  import { createRoot } from "react-dom/client";
3932
3659
  import { DEFAULT_CLIENT_CHANNEL, DEFAULT_SHELL_CHANNEL } from "@dxos/client-protocol";
3933
3660
  import { AgentHostingProvider, ClientProvider, ClientServicesProxy, Config, ShellDisplay as ShellDisplay2 } from "@dxos/react-client";
3934
- import { Button as Button10, Clipboard as Clipboard5, Dialog as Dialog3, ThemeProvider, Tooltip as Tooltip6, useTranslation as useTranslation25 } from "@dxos/react-ui";
3661
+ import { Button as Button8, Clipboard as Clipboard5, Dialog as Dialog3, ThemeProvider, Tooltip as Tooltip4, useTranslation as useTranslation23 } from "@dxos/react-ui";
3935
3662
  import { defaultTx } from "@dxos/react-ui-theme";
3936
3663
  import { createIFramePort } from "@dxos/rpc-tunnel";
3937
3664
 
3938
3665
  // packages/sdk/shell/src/composites/Shell/Shell.tsx
3939
- import React44, { useEffect as useEffect8, useState as useState12 } from "react";
3666
+ import React42, { useEffect as useEffect8, useState as useState10 } from "react";
3940
3667
  import { log as log15 } from "@dxos/log";
3941
3668
  import { useClient as useClient9 } from "@dxos/react-client";
3942
3669
  import { ShellDisplay, ShellLayout } from "@dxos/react-client";
3943
3670
  import { useSpace as useSpace2 } from "@dxos/react-client/echo";
3944
3671
 
3945
3672
  // packages/sdk/shell/src/composites/SpaceDialog/SpaceDialog.tsx
3946
- import React42 from "react";
3673
+ import React40 from "react";
3947
3674
  import { Clipboard as Clipboard4, Dialog as Dialog2, useId as useId12 } from "@dxos/react-ui";
3948
3675
  var SpaceDialog = (spacePanelProps) => {
3949
3676
  const titleId = useId12("spaceDialog__title");
3950
- return /* @__PURE__ */ React42.createElement(Dialog2.Root, {
3677
+ return /* @__PURE__ */ React40.createElement(Dialog2.Root, {
3951
3678
  defaultOpen: true,
3952
3679
  onOpenChange: (open) => open || spacePanelProps.onDone?.()
3953
- }, /* @__PURE__ */ React42.createElement(Dialog2.Portal, null, /* @__PURE__ */ React42.createElement(Dialog2.Overlay, null, /* @__PURE__ */ React42.createElement(Dialog2.Content, {
3680
+ }, /* @__PURE__ */ React40.createElement(Dialog2.Portal, null, /* @__PURE__ */ React40.createElement(Dialog2.Overlay, null, /* @__PURE__ */ React40.createElement(Dialog2.Content, {
3954
3681
  "aria-labelledby": titleId
3955
- }, /* @__PURE__ */ React42.createElement(Clipboard4.Provider, null, /* @__PURE__ */ React42.createElement(SpacePanel, {
3682
+ }, /* @__PURE__ */ React40.createElement(Clipboard4.Provider, null, /* @__PURE__ */ React40.createElement(SpacePanel, {
3956
3683
  ...spacePanelProps,
3957
3684
  titleId,
3958
- doneActionParent: /* @__PURE__ */ React42.createElement(Dialog2.Close, {
3685
+ doneActionParent: /* @__PURE__ */ React40.createElement(Dialog2.Close, {
3959
3686
  asChild: true
3960
3687
  })
3961
3688
  }))))));
3962
3689
  };
3963
3690
 
3964
3691
  // packages/sdk/shell/src/composites/StatusDialog/StatusDialog.tsx
3965
- import React43 from "react";
3692
+ import React41 from "react";
3966
3693
  import { AlertDialog as AlertDialog2, useId as useId13 } from "@dxos/react-ui";
3967
3694
  var StatusDialog = () => {
3968
3695
  const titleId = useId13("statusDialog__title");
3969
- return /* @__PURE__ */ React43.createElement(AlertDialog2.Root, {
3696
+ return /* @__PURE__ */ React41.createElement(AlertDialog2.Root, {
3970
3697
  open: true
3971
- }, /* @__PURE__ */ React43.createElement(AlertDialog2.Portal, null, /* @__PURE__ */ React43.createElement(AlertDialog2.Overlay, null, /* @__PURE__ */ React43.createElement(AlertDialog2.Content, {
3698
+ }, /* @__PURE__ */ React41.createElement(AlertDialog2.Portal, null, /* @__PURE__ */ React41.createElement(AlertDialog2.Overlay, null, /* @__PURE__ */ React41.createElement(AlertDialog2.Content, {
3972
3699
  "aria-labelledby": titleId
3973
- }, /* @__PURE__ */ React43.createElement(StatusPanel, {
3700
+ }, /* @__PURE__ */ React41.createElement(StatusPanel, {
3974
3701
  titleId
3975
3702
  })))));
3976
3703
  };
@@ -3979,14 +3706,14 @@ var StatusDialog = () => {
3979
3706
  var __dxlog_file14 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/composites/Shell/Shell.tsx";
3980
3707
  var blurActiveElement = () => document.activeElement?.blur?.();
3981
3708
  var Shell = ({ runtime }) => {
3982
- const [{ layout, invitationCode, spaceKey, spaceId, target }, setLayout] = useState12({
3709
+ const [{ layout, invitationCode, spaceKey, spaceId, target }, setLayout] = useState10({
3983
3710
  layout: runtime.layout,
3984
3711
  invitationCode: runtime.invitationCode,
3985
3712
  spaceKey: runtime.spaceKey,
3986
3713
  spaceId: runtime.spaceId,
3987
3714
  target: runtime.target
3988
3715
  });
3989
- const [{ invitationUrl, deviceInvitationParam, spaceInvitationParam }, setInvitationUrl] = useState12({
3716
+ const [{ invitationUrl, deviceInvitationParam, spaceInvitationParam }, setInvitationUrl] = useState10({
3990
3717
  invitationUrl: runtime.invitationUrl,
3991
3718
  deviceInvitationParam: runtime.deviceInvitationParam,
3992
3719
  spaceInvitationParam: runtime.spaceInvitationParam
@@ -4038,11 +3765,11 @@ var Shell = ({ runtime }) => {
4038
3765
  ]);
4039
3766
  switch (layout) {
4040
3767
  case ShellLayout.STATUS:
4041
- return /* @__PURE__ */ React44.createElement(StatusDialog, null);
3768
+ return /* @__PURE__ */ React42.createElement(StatusDialog, null);
4042
3769
  case ShellLayout.INITIALIZE_IDENTITY:
4043
3770
  case ShellLayout.INITIALIZE_IDENTITY_FROM_INVITATION:
4044
3771
  case ShellLayout.INITIALIZE_IDENTITY_FROM_RECOVERY:
4045
- return /* @__PURE__ */ React44.createElement(JoinDialog, {
3772
+ return /* @__PURE__ */ React42.createElement(JoinDialog, {
4046
3773
  mode: "halo-only",
4047
3774
  initialDisposition: layout === ShellLayout.INITIALIZE_IDENTITY_FROM_RECOVERY ? "recover-identity" : layout === ShellLayout.INITIALIZE_IDENTITY_FROM_INVITATION ? "accept-halo-invitation" : "default",
4048
3775
  initialInvitationCode: invitationCode,
@@ -4062,7 +3789,7 @@ var Shell = ({ runtime }) => {
4062
3789
  case ShellLayout.IDENTITY:
4063
3790
  case ShellLayout.SHARE_IDENTITY:
4064
3791
  case ShellLayout.EDIT_PROFILE:
4065
- return /* @__PURE__ */ React44.createElement(IdentityDialog, {
3792
+ return /* @__PURE__ */ React42.createElement(IdentityDialog, {
4066
3793
  createInvitationUrl: createDeviceInvitationUrl,
4067
3794
  onResetStorage: async () => {
4068
3795
  runtime.setLayout({
@@ -4108,7 +3835,7 @@ var Shell = ({ runtime }) => {
4108
3835
  initialDisposition: layout === ShellLayout.SHARE_IDENTITY ? "manage-device-invitation" : "default"
4109
3836
  });
4110
3837
  case ShellLayout.SPACE:
4111
- return space ? /* @__PURE__ */ React44.createElement(SpaceDialog, {
3838
+ return space ? /* @__PURE__ */ React42.createElement(SpaceDialog, {
4112
3839
  space,
4113
3840
  target,
4114
3841
  createInvitationUrl: createSpaceInvitationUrl,
@@ -4123,7 +3850,7 @@ var Shell = ({ runtime }) => {
4123
3850
  }
4124
3851
  }) : null;
4125
3852
  case ShellLayout.JOIN_SPACE:
4126
- return /* @__PURE__ */ React44.createElement(JoinDialog, {
3853
+ return /* @__PURE__ */ React42.createElement(JoinDialog, {
4127
3854
  initialInvitationCode: invitationCode,
4128
3855
  onDone: async (result) => {
4129
3856
  blurActiveElement();
@@ -4430,25 +4157,25 @@ var runShell = async (config = new Config()) => {
4430
4157
  const services = new ClientServicesProxy(createIFramePort({
4431
4158
  channel: DEFAULT_CLIENT_CHANNEL
4432
4159
  }));
4433
- createRoot(document.getElementById("root")).render(/* @__PURE__ */ React45.createElement(StrictMode, null, /* @__PURE__ */ React45.createElement(ThemeProvider, {
4160
+ createRoot(document.getElementById("root")).render(/* @__PURE__ */ React43.createElement(StrictMode, null, /* @__PURE__ */ React43.createElement(ThemeProvider, {
4434
4161
  tx: defaultTx,
4435
4162
  resourceExtensions: [
4436
4163
  osTranslations
4437
4164
  ]
4438
- }, /* @__PURE__ */ React45.createElement(ClientProvider, {
4165
+ }, /* @__PURE__ */ React43.createElement(ClientProvider, {
4439
4166
  config,
4440
4167
  services,
4441
4168
  noBanner: true
4442
- }, /* @__PURE__ */ React45.createElement(Clipboard5.Provider, null, /* @__PURE__ */ React45.createElement(Tooltip6.Provider, null, /* @__PURE__ */ React45.createElement(AgentHostingProvider, null, /* @__PURE__ */ React45.createElement(Shell, {
4169
+ }, /* @__PURE__ */ React43.createElement(Clipboard5.Provider, null, /* @__PURE__ */ React43.createElement(Tooltip4.Provider, null, /* @__PURE__ */ React43.createElement(AgentHostingProvider, null, /* @__PURE__ */ React43.createElement(Shell, {
4443
4170
  runtime
4444
4171
  }))))))));
4445
4172
  } catch {
4446
- createRoot(document.getElementById("root")).render(/* @__PURE__ */ React45.createElement(StrictMode, null, /* @__PURE__ */ React45.createElement(ThemeProvider, {
4173
+ createRoot(document.getElementById("root")).render(/* @__PURE__ */ React43.createElement(StrictMode, null, /* @__PURE__ */ React43.createElement(ThemeProvider, {
4447
4174
  tx: defaultTx,
4448
4175
  resourceExtensions: [
4449
4176
  osTranslations
4450
4177
  ]
4451
- }, /* @__PURE__ */ React45.createElement(Fallback, {
4178
+ }, /* @__PURE__ */ React43.createElement(Fallback, {
4452
4179
  onClose: () => runtime.setAppContext({
4453
4180
  display: ShellDisplay2.NONE
4454
4181
  })
@@ -4456,24 +4183,24 @@ var runShell = async (config = new Config()) => {
4456
4183
  }
4457
4184
  };
4458
4185
  var Fallback = ({ onClose }) => {
4459
- const { t } = useTranslation25("os");
4460
- return /* @__PURE__ */ React45.createElement(Dialog3.Root, {
4186
+ const { t } = useTranslation23("os");
4187
+ return /* @__PURE__ */ React43.createElement(Dialog3.Root, {
4461
4188
  modal: true,
4462
4189
  open: true,
4463
4190
  onOpenChange: () => onClose?.()
4464
- }, /* @__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, {
4191
+ }, /* @__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, {
4465
4192
  asChild: true,
4466
4193
  onClick: () => onClose?.()
4467
- }, /* @__PURE__ */ React45.createElement(Button10, {
4194
+ }, /* @__PURE__ */ React43.createElement(Button8, {
4468
4195
  variant: "primary"
4469
4196
  }, t("close label"))))));
4470
4197
  };
4471
4198
 
4472
4199
  // packages/sdk/shell/src/composites/Shell/ShellContext.tsx
4473
- import React46, { createContext, useCallback as useCallback8, useContext, useEffect as useEffect9, useMemo as useMemo6, useState as useState13 } from "react";
4200
+ import React44, { createContext, useCallback as useCallback8, useContext, useEffect as useEffect9, useMemo as useMemo6, useState as useState11 } from "react";
4474
4201
  import { useClient as useClient10, ShellDisplay as ShellDisplay3, ShellLayout as ShellLayout4 } from "@dxos/react-client";
4475
4202
  import { useIdentity as useIdentity3 } from "@dxos/react-client/halo";
4476
- import { mx as mx24 } from "@dxos/react-ui-theme";
4203
+ import { mx as mx23 } from "@dxos/react-ui-theme";
4477
4204
 
4478
4205
  // packages/sdk/shell/src/composites/Shell/memory-shell-runtime.ts
4479
4206
  import { Event as Event2 } from "@dxos/async";
@@ -4551,7 +4278,7 @@ var useShell = () => {
4551
4278
  var ShellProvider = ({ space, deviceInvitationCode, spaceInvitationCode, onJoinedSpace, children }) => {
4552
4279
  const client = useClient10();
4553
4280
  const identity = useIdentity3();
4554
- const [display, setDisplay] = useState13(!identity || spaceInvitationCode || deviceInvitationCode ? ShellDisplay3.FULLSCREEN : ShellDisplay3.NONE);
4281
+ const [display, setDisplay] = useState11(!identity || spaceInvitationCode || deviceInvitationCode ? ShellDisplay3.FULLSCREEN : ShellDisplay3.NONE);
4555
4282
  const shellRuntime = useMemo6(() => {
4556
4283
  if (client.config.get("runtime.app.env.DX_VAULT") !== "false") {
4557
4284
  return;
@@ -4621,11 +4348,11 @@ var ShellProvider = ({ space, deviceInvitationCode, spaceInvitationCode, onJoine
4621
4348
  }, [
4622
4349
  shellRuntime
4623
4350
  ]);
4624
- return /* @__PURE__ */ React46.createElement(React46.Fragment, null, shellRuntime && /* @__PURE__ */ React46.createElement("div", {
4625
- className: mx24(display === ShellDisplay3.NONE ? "hidden" : "")
4626
- }, /* @__PURE__ */ React46.createElement(Shell, {
4351
+ return /* @__PURE__ */ React44.createElement(React44.Fragment, null, shellRuntime && /* @__PURE__ */ React44.createElement("div", {
4352
+ className: mx23(display === ShellDisplay3.NONE ? "hidden" : "")
4353
+ }, /* @__PURE__ */ React44.createElement(Shell, {
4627
4354
  runtime: shellRuntime
4628
- })), /* @__PURE__ */ React46.createElement(ShellContext.Provider, {
4355
+ })), /* @__PURE__ */ React44.createElement(ShellContext.Provider, {
4629
4356
  value: {
4630
4357
  runtime: shellRuntime,
4631
4358
  setDisplay
@@ -4645,11 +4372,7 @@ export {
4645
4372
  ConfirmResetImpl,
4646
4373
  DeviceList,
4647
4374
  Emoji,
4648
- EmojiPickerBlock,
4649
- EmojiPickerToolbarButton,
4650
4375
  Heading,
4651
- HuePickerBlock,
4652
- HuePickerToolbarButton,
4653
4376
  IdentityDialog,
4654
4377
  IdentityListItem,
4655
4378
  IdentityPanel,