@dxos/shell 0.8.1-main.ba2dec9 → 0.8.1-staging.31c3ee1

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 (59) hide show
  1. package/dist/bundle/shell.js +26039 -25427
  2. package/dist/bundle/shell.js.map +1 -1
  3. package/dist/bundle/shell.umd.cjs +261 -149
  4. package/dist/bundle/shell.umd.cjs.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 +61 -74
  8. package/dist/lib/browser/react.mjs.map +3 -3
  9. package/dist/lib/node/meta.json +1 -1
  10. package/dist/lib/node/react.cjs +60 -72
  11. package/dist/lib/node/react.cjs.map +3 -3
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/react.mjs +61 -74
  14. package/dist/lib/node-esm/react.mjs.map +3 -3
  15. package/dist/types/src/components/AgentConfig.d.ts.map +1 -1
  16. package/dist/types/src/components/AgentConfig.js +3 -4
  17. package/dist/types/src/components/AgentConfig.js.map +1 -1
  18. package/dist/types/src/components/DeviceList/DeviceList.d.ts +1 -1
  19. package/dist/types/src/components/DeviceList/DeviceList.d.ts.map +1 -1
  20. package/dist/types/src/components/DeviceList/DeviceList.js.map +1 -1
  21. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts +1 -1
  22. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts.map +1 -1
  23. package/dist/types/src/components/DeviceList/DeviceListItem.js +26 -19
  24. package/dist/types/src/components/DeviceList/DeviceListItem.js.map +1 -1
  25. package/dist/types/src/components/DeviceList/index.d.ts +1 -0
  26. package/dist/types/src/components/DeviceList/index.d.ts.map +1 -1
  27. package/dist/types/src/components/DeviceList/index.js +1 -0
  28. package/dist/types/src/components/DeviceList/index.js.map +1 -1
  29. package/dist/types/src/components/IdentityList/IdentityListItem.d.ts.map +1 -1
  30. package/dist/types/src/components/IdentityList/IdentityListItem.js +2 -3
  31. package/dist/types/src/components/IdentityList/IdentityListItem.js.map +1 -1
  32. package/dist/types/src/components/InvitationList/InvitationListItem.d.ts.map +1 -1
  33. package/dist/types/src/components/InvitationList/InvitationListItem.js +2 -3
  34. package/dist/types/src/components/InvitationList/InvitationListItem.js.map +1 -1
  35. package/dist/types/src/components/SpaceListItem.d.ts.map +1 -1
  36. package/dist/types/src/components/SpaceListItem.js +1 -2
  37. package/dist/types/src/components/SpaceListItem.js.map +1 -1
  38. package/dist/types/src/components/Viewport/Viewport.d.ts.map +1 -1
  39. package/dist/types/src/components/Viewport/Viewport.js.map +1 -1
  40. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
  41. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +3 -4
  42. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
  43. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.d.ts.map +1 -1
  44. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js +2 -3
  45. package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js.map +1 -1
  46. package/dist/types/src/translations/locales/en-US.js +5 -5
  47. package/dist/types/src/translations/locales/en-US.js.map +1 -1
  48. package/package.json +29 -29
  49. package/src/components/AgentConfig.tsx +8 -12
  50. package/src/components/DeviceList/DeviceList.tsx +1 -1
  51. package/src/components/DeviceList/DeviceListItem.tsx +49 -62
  52. package/src/components/DeviceList/index.ts +1 -0
  53. package/src/components/IdentityList/IdentityListItem.tsx +7 -8
  54. package/src/components/InvitationList/InvitationListItem.tsx +12 -7
  55. package/src/components/SpaceListItem.tsx +1 -3
  56. package/src/components/Viewport/Viewport.tsx +2 -1
  57. package/src/panels/IdentityPanel/IdentityPanel.tsx +16 -5
  58. package/src/panels/JoinPanel/steps/IdentityAdded.tsx +6 -4
  59. package/src/translations/locales/en-US.ts +5 -5
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-J5LGTIGS.mjs";
4
4
 
5
5
  // packages/sdk/shell/src/components/AgentConfig.tsx
6
- import { ArrowsClockwise, Database, Plus, Power } from "@phosphor-icons/react";
6
+ import { ArrowsClockwise, Plus, Power } from "@phosphor-icons/react";
7
7
  import React from "react";
8
8
  import { Avatar, Button, Link, Tooltip, Trans, useTranslation } from "@dxos/react-ui";
9
9
  import { descriptionText, getSize, mx, valenceColorText } from "@dxos/react-ui-theme";
@@ -21,21 +21,15 @@ var AgentConfig = ({ agentStatus, validationMessage, onAgentDestroy, onAgentCrea
21
21
  role: "group",
22
22
  className: "mlb-2 flex gap-2 items-center",
23
23
  "aria-describedby": "devices-panel.create-agent.description"
24
- }, /* @__PURE__ */ React.createElement(Avatar.Root, {
24
+ }, /* @__PURE__ */ React.createElement(Avatar.Root, null, /* @__PURE__ */ React.createElement(Avatar.Content, {
25
25
  status: agentStatus === "created" ? "warning" : "inactive",
26
- variant: "square"
27
- }, /* @__PURE__ */ React.createElement(Avatar.Frame, {
28
- classNames: "place-self-center"
29
- }, /* @__PURE__ */ React.createElement(Database, {
30
- weight: "duotone",
31
- width: 24,
32
- height: 24,
33
- x: 8,
34
- y: 8,
35
- ...agentStatus !== "created" && {
36
- className: "opacity-50"
37
- }
38
- })), /* @__PURE__ */ React.createElement(Avatar.Label, {
26
+ variant: "square",
27
+ classNames: [
28
+ "place-self-center",
29
+ agentStatus !== "created" && "opactiy-50"
30
+ ],
31
+ icon: "ph--database--duotone"
32
+ }), /* @__PURE__ */ React.createElement(Avatar.Label, {
39
33
  classNames: "flex-1 text-sm truncate"
40
34
  }, t(agentStatus === "created" ? "agent requested label" : agentStatus === "creating" ? "creating agent label" : agentStatus === "destroying" ? "destroying agent label" : "getting agent label"))), agentStatus === "created" && /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
41
35
  asChild: true
@@ -154,14 +148,13 @@ var IdentityListItem = /* @__PURE__ */ forwardRef(({ identity, presence, onClick
154
148
  labelId,
155
149
  ref: forwardedRef
156
150
  }, /* @__PURE__ */ React3.createElement(Avatar2.Root, {
151
+ labelId
152
+ }, /* @__PURE__ */ React3.createElement(Avatar2.Content, {
157
153
  status: presence === SpaceMember.PresenceState.ONLINE ? "active" : "inactive",
158
- labelId,
159
- hue: identity.profile?.data?.hue || fallbackValue.hue
160
- }, /* @__PURE__ */ React3.createElement(Avatar2.Frame, {
154
+ hue: identity.profile?.data?.hue || fallbackValue.hue,
155
+ fallback: identity.profile?.data?.emoji || fallbackValue.emoji,
161
156
  classNames: "place-self-center"
162
- }, /* @__PURE__ */ React3.createElement(Avatar2.Fallback, {
163
- text: identity.profile?.data?.emoji || fallbackValue.emoji
164
- })), /* @__PURE__ */ React3.createElement(Avatar2.Label, {
157
+ }), /* @__PURE__ */ React3.createElement(Avatar2.Label, {
165
158
  classNames: "text-sm truncate pli-2"
166
159
  }, displayName)));
167
160
  });
@@ -211,7 +204,7 @@ import { Button as Button3, List as List2, useTranslation as useTranslation4 } f
211
204
  import { descriptionText as descriptionText4, getSize as getSize3, mx as mx5 } from "@dxos/react-ui-theme";
212
205
 
213
206
  // packages/sdk/shell/src/components/DeviceList/DeviceListItem.tsx
214
- import { Compass, Desktop, DeviceMobile, Devices, DotsThree, ShareFat, Power as Power2, Robot, Database as Database2, FirstAidKit } from "@phosphor-icons/react";
207
+ import { DotsThree, ShareFat, Power as Power2, FirstAidKit } from "@phosphor-icons/react";
215
208
  import React5, { forwardRef as forwardRef2 } from "react";
216
209
  import { generateName as generateName2 } from "@dxos/display-name";
217
210
  import { Device, DeviceType, DeviceKind } from "@dxos/react-client/halo";
@@ -219,13 +212,6 @@ import { ConnectionState } from "@dxos/react-client/mesh";
219
212
  import { ListItem as ListItem2, Avatar as Avatar3, useId as useId3, Tag, useTranslation as useTranslation3, DropdownMenu, Button as Button2 } from "@dxos/react-ui";
220
213
  import { getSize as getSize2 } from "@dxos/react-ui-theme";
221
214
  import { keyToFallback as keyToFallback2 } from "@dxos/util";
222
- var iconProps = {
223
- weight: "duotone",
224
- width: 24,
225
- height: 24,
226
- x: 8,
227
- y: 8
228
- };
229
215
  var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickEdit, onClickReset, onClickRecover, onClickJoinExisting, classNames, connectionState, onAgentDestroy: _, ...props }, forwardedRef) => {
230
216
  const { t } = useTranslation3("os");
231
217
  const fallbackValue = keyToFallback2(device.deviceKey);
@@ -245,22 +231,25 @@ var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickE
245
231
  labelId,
246
232
  ref: forwardedRef
247
233
  }, /* @__PURE__ */ React5.createElement(Avatar3.Root, {
234
+ labelId
235
+ }, /* @__PURE__ */ React5.createElement(Avatar3.Content, {
248
236
  status: isCurrent && connectionState === ConnectionState.OFFLINE ? "error" : device.presence === Device.PresenceState.ONLINE ? "active" : "inactive",
249
- labelId,
250
237
  hue: fallbackValue.hue,
251
- variant: "square"
252
- }, /* @__PURE__ */ React5.createElement(Avatar3.Frame, {
253
- classNames: "place-self-center"
254
- }, device.profile?.type ? device.profile.type === DeviceType.AGENT_MANAGED ? /* @__PURE__ */ React5.createElement(Database2, iconProps) : device.profile.type === DeviceType.BROWSER ? /* @__PURE__ */ React5.createElement(Compass, iconProps) : device.profile.type === DeviceType.NATIVE ? /* @__PURE__ */ React5.createElement(Desktop, iconProps) : [
255
- DeviceType.AGENT,
256
- DeviceType.AGENT_MANAGED
257
- ].includes(device.profile.type) ? /* @__PURE__ */ React5.createElement(Robot, iconProps) : device.profile.type === DeviceType.MOBILE ? /* @__PURE__ */ React5.createElement(DeviceMobile, iconProps) : /* @__PURE__ */ React5.createElement(Devices, iconProps) : /* @__PURE__ */ React5.createElement(Avatar3.Fallback, {
258
- text: fallbackValue.emoji
259
- })), /* @__PURE__ */ React5.createElement(Avatar3.Label, {
238
+ variant: "square",
239
+ classNames: "place-self-center",
240
+ ...device.profile?.type ? {
241
+ icon: device.profile.type === DeviceType.AGENT_MANAGED ? "ph--database--regular" : device.profile.type === DeviceType.BROWSER ? "ph--compass--regular" : device.profile.type === DeviceType.NATIVE ? "ph--desktop--regular" : [
242
+ DeviceType.AGENT,
243
+ DeviceType.AGENT_MANAGED
244
+ ].includes(device.profile.type) ? "ph--robot--regular" : device.profile.type === DeviceType.MOBILE ? "ph--device-mobile--regular" : "ph--devices--regular"
245
+ } : {
246
+ fallback: fallbackValue.emoji
247
+ }
248
+ }), /* @__PURE__ */ React5.createElement(Avatar3.Label, {
260
249
  classNames: "flex-1 text-sm truncate"
261
250
  }, displayName), isCurrent && /* @__PURE__ */ React5.createElement(Tag, {
262
251
  color: "primary"
263
- }, t("current device tag label")), device.kind === DeviceKind.CURRENT && /* @__PURE__ */ React5.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Trigger, {
252
+ }, t("current device tag label")), device.kind === DeviceKind.CURRENT && (onClickJoinExisting || onClickRecover || onClickReset) && /* @__PURE__ */ React5.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Trigger, {
264
253
  asChild: true
265
254
  }, /* @__PURE__ */ React5.createElement(Button2, {
266
255
  variant: "ghost",
@@ -270,7 +259,7 @@ var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickE
270
259
  className: "sr-only"
271
260
  }, t("more options label")), /* @__PURE__ */ React5.createElement(DotsThree, {
272
261
  className: getSize2(5)
273
- }))), /* @__PURE__ */ React5.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Viewport, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
262
+ }))), /* @__PURE__ */ React5.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React5.createElement(DropdownMenu.Viewport, null, onClickJoinExisting && /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
274
263
  "data-testid": "device-list-item-current.join-existing",
275
264
  onClick: onClickJoinExisting
276
265
  }, /* @__PURE__ */ React5.createElement(ShareFat, {
@@ -280,7 +269,7 @@ var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickE
280
269
  onClick: onClickRecover
281
270
  }, /* @__PURE__ */ React5.createElement(FirstAidKit, {
282
271
  className: getSize2(5)
283
- }), t("choose recover identity label")), /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
272
+ }), t("choose recover identity label")), onClickReset && /* @__PURE__ */ React5.createElement(DropdownMenu.Item, {
284
273
  "data-testid": "device-list-item-current.reset",
285
274
  onClick: onClickReset
286
275
  }, /* @__PURE__ */ React5.createElement(Power2, {
@@ -462,21 +451,19 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
462
451
  status: avatarStatus,
463
452
  animation: avatarAnimation,
464
453
  reverseEffects
465
- }), /* @__PURE__ */ React8.createElement(Tooltip2.Root, null, /* @__PURE__ */ React8.createElement(Avatar4.Root, {
454
+ }), /* @__PURE__ */ React8.createElement(Tooltip2.Root, null, /* @__PURE__ */ React8.createElement(Avatar4.Root, null, /* @__PURE__ */ React8.createElement(Tooltip2.Trigger, {
455
+ asChild: true
456
+ }, /* @__PURE__ */ React8.createElement(Avatar4.Content, {
466
457
  ...avatarProps,
467
458
  animation: avatarAnimation,
468
- status: avatarStatus
469
- }, /* @__PURE__ */ React8.createElement(Tooltip2.Trigger, {
470
- asChild: true
471
- }, /* @__PURE__ */ React8.createElement(Avatar4.Frame, {
459
+ status: avatarStatus,
460
+ fallback: hexToEmoji(invitationId),
472
461
  tabIndex: 0,
473
462
  classNames: [
474
463
  focusRing,
475
464
  "relative rounded-full place-self-center"
476
465
  ]
477
- }, /* @__PURE__ */ React8.createElement(Avatar4.Fallback, {
478
- text: hexToEmoji(invitationId)
479
- })))), /* @__PURE__ */ React8.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React8.createElement(Tooltip2.Content, {
466
+ }))), /* @__PURE__ */ React8.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React8.createElement(Tooltip2.Content, {
480
467
  side: "left"
481
468
  }, 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, {
482
469
  asChild: true
@@ -862,9 +849,9 @@ var SpaceListItem = /* @__PURE__ */ forwardRef8(({ space, onClick }, ref) => {
862
849
  "data-testid": "space-list-item"
863
850
  }, /* @__PURE__ */ React20.createElement(Avatar5.Root, {
864
851
  labelId
865
- }, /* @__PURE__ */ React20.createElement(Avatar5.Frame, null, /* @__PURE__ */ React20.createElement(Avatar5.Fallback, {
866
- text: fallbackValue
867
- })), /* @__PURE__ */ React20.createElement(Avatar5.Label, {
852
+ }, /* @__PURE__ */ React20.createElement(Avatar5.Content, {
853
+ fallback: fallbackValue
854
+ }), /* @__PURE__ */ React20.createElement(Avatar5.Label, {
868
855
  classNames: "text-sm truncate"
869
856
  }, displayName)));
870
857
  });
@@ -1558,18 +1545,16 @@ var IdentityHeading = ({ titleId, title, identity, onDone, onUpdateProfile, conn
1558
1545
  corner: /* @__PURE__ */ React25.createElement(CloseButton, {
1559
1546
  onDone
1560
1547
  })
1561
- }, /* @__PURE__ */ React25.createElement(Avatar6.Root, {
1548
+ }, /* @__PURE__ */ React25.createElement(Avatar6.Root, null, /* @__PURE__ */ React25.createElement(Toolbar.Root, {
1549
+ classNames: "flex justify-center"
1550
+ }, /* @__PURE__ */ React25.createElement(Avatar6.Content, {
1562
1551
  size: 16,
1563
1552
  variant: "circle",
1564
1553
  status: isConnected ? "active" : "error",
1565
- hue: hue || fallbackValue.hue
1566
- }, /* @__PURE__ */ React25.createElement(Toolbar.Root, {
1567
- classNames: "flex justify-center"
1568
- }, /* @__PURE__ */ React25.createElement(Avatar6.Frame, {
1554
+ hue: hue || fallbackValue.hue,
1555
+ fallback: emoji || fallbackValue.emoji,
1569
1556
  classNames: "relative z-[2] -mli-4 chromatic-ignore"
1570
- }, /* @__PURE__ */ React25.createElement(Avatar6.Fallback, {
1571
- text: emoji || fallbackValue.emoji
1572
- }))), /* @__PURE__ */ React25.createElement(Avatar6.Label, {
1557
+ })), /* @__PURE__ */ React25.createElement(Avatar6.Label, {
1573
1558
  classNames: "sr-only",
1574
1559
  "data-testid": "identityHeading.displayName"
1575
1560
  }, identity.profile?.displayName ?? generateName3(identity.identityKey.toHex())), /* @__PURE__ */ React25.createElement(Input2.Root, null, /* @__PURE__ */ React25.createElement(Input2.Label, {
@@ -1591,7 +1576,8 @@ var IdentityHeading = ({ titleId, title, identity, onDone, onUpdateProfile, conn
1591
1576
  value: hue,
1592
1577
  onChange: setHue,
1593
1578
  onReset: () => setHue(void 0),
1594
- classNames: "bs-[--rail-action]"
1579
+ classNames: "bs-[--rail-action]",
1580
+ rootVariant: "toolbar-button"
1595
1581
  }), /* @__PURE__ */ React25.createElement(Clipboard3.IconButton, {
1596
1582
  classNames: "bs-[--rail-action]",
1597
1583
  "data-testid": "update-profile-form-copy-key",
@@ -1717,7 +1703,7 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
1717
1703
  if (!identity) {
1718
1704
  log7.error("IdentityPanel rendered with no active identity.", void 0, {
1719
1705
  F: __dxlog_file6,
1720
- L: 272,
1706
+ L: 283,
1721
1707
  S: void 0,
1722
1708
  C: (f, a) => f(...a)
1723
1709
  });
@@ -1734,7 +1720,7 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
1734
1720
  const subscription = identityService.subscribe((state) => {
1735
1721
  log7("[state]", state, {
1736
1722
  F: __dxlog_file6,
1737
- L: 285,
1723
+ L: 296,
1738
1724
  S: void 0,
1739
1725
  C: (f, a) => f(...a)
1740
1726
  });
@@ -2513,12 +2499,12 @@ var IdentityAdded = (props) => {
2513
2499
  role: "none",
2514
2500
  className: "grow flex flex-col items-center justify-center text-center gap-2"
2515
2501
  }, /* @__PURE__ */ React28.createElement(Avatar7.Root, {
2502
+ labelId
2503
+ }, /* @__PURE__ */ React28.createElement(Avatar7.Content, {
2516
2504
  status: "active",
2517
- labelId,
2518
- hue: addedIdentity?.profile?.data?.hue || fallbackValue.hue
2519
- }, /* @__PURE__ */ React28.createElement(Avatar7.Frame, null, /* @__PURE__ */ React28.createElement(Avatar7.Fallback, {
2520
- text: addedIdentity?.profile?.data?.emoji || fallbackValue.emoji
2521
- })), /* @__PURE__ */ React28.createElement(Avatar7.Label, {
2505
+ hue: addedIdentity?.profile?.data?.hue || fallbackValue.hue,
2506
+ fallback: addedIdentity?.profile?.data?.emoji || fallbackValue.emoji
2507
+ }), /* @__PURE__ */ React28.createElement(Avatar7.Label, {
2522
2508
  classNames: mx21("text-lg truncate", !addedIdentity?.profile?.displayName && "font-mono")
2523
2509
  }, displayName))), /* @__PURE__ */ React28.createElement(Actions, null, mode === "halo-only" ? doneActionParent ? /* @__PURE__ */ cloneElement2(doneActionParent, {}, doneAction) : doneAction : /* @__PURE__ */ React28.createElement(Action, {
2524
2510
  variant: "primary",
@@ -4083,15 +4069,15 @@ var os = {
4083
4069
  "device list heading": "Devices",
4084
4070
  "space member list heading": "Members",
4085
4071
  "space panel heading": "Space membership",
4086
- "auth code message": "Enter the following auth code on the joining device.",
4087
- "auth other device emoji message": "Be sure the other device shows the following symbol:",
4072
+ "auth code message": "Enter the following auth code on the joining device. Click the code to copy\xA0it.",
4073
+ "auth other device emoji message": "Be sure the other device shows the following\xA0emoji.",
4088
4074
  "display name input label": "Display name",
4089
4075
  "display name input placeholder": "Enter a display name",
4090
- "invite one label": "Single-use invitation",
4076
+ "invite one label": "Create single-use invitation",
4091
4077
  "invite one description": "Only one user may join.",
4092
4078
  "invite one qr label": "Single-use invitation",
4093
4079
  "invite one list item label": "Active single-use invitation",
4094
- "invite many label": "Multi-use invitation",
4080
+ "invite many label": "Create multi-use invitation",
4095
4081
  "invite many description": "Anyone with the link can join.",
4096
4082
  "invite many qr label": "Multi-use invitation",
4097
4083
  "invite many list item label": "Active multi-use invitation",
@@ -4105,7 +4091,7 @@ var os = {
4105
4091
  "confirmation placeholder": "Enter {{confirmationValue}} to continue.",
4106
4092
  "sign out chooser title": "Danger zone",
4107
4093
  "sign out chooser message": "Proceeding with the action below will erase all data on this device.",
4108
- "join new identity label": "Join a new identity",
4094
+ "join new identity label": "Join an existing identity",
4109
4095
  "reset device label": "Reset storage",
4110
4096
  "reset device confirm message": "Are you sure you want to reset your device? All data will be lost.",
4111
4097
  "emoji and color label": "Emoji and color",
@@ -4386,6 +4372,7 @@ export {
4386
4372
  ConfirmReset,
4387
4373
  ConfirmResetImpl,
4388
4374
  DeviceList,
4375
+ DeviceListItem,
4389
4376
  Emoji,
4390
4377
  Heading,
4391
4378
  IdentityDialog,