@dxos/shell 0.6.14-staging.8758a12 → 0.6.14-staging.9b873ce

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 (53) hide show
  1. package/dist/bundle/shell.mjs +4344 -4251
  2. package/dist/bundle/shell.mjs.map +1 -1
  3. package/dist/bundle/shell.umd.js +45 -45
  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 +40 -46
  8. package/dist/lib/browser/react.mjs.map +3 -3
  9. package/dist/lib/browser/testing/index.mjs +2 -0
  10. package/dist/lib/browser/testing/index.mjs.map +2 -2
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/react.cjs +23 -29
  13. package/dist/lib/node/react.cjs.map +3 -3
  14. package/dist/lib/node/testing/index.cjs +2 -0
  15. package/dist/lib/node/testing/index.cjs.map +2 -2
  16. package/dist/lib/node-esm/meta.json +1 -1
  17. package/dist/lib/node-esm/react.mjs +40 -46
  18. package/dist/lib/node-esm/react.mjs.map +3 -3
  19. package/dist/lib/node-esm/testing/index.mjs +2 -0
  20. package/dist/lib/node-esm/testing/index.mjs.map +2 -2
  21. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts.map +1 -1
  22. package/dist/types/src/components/DeviceList/DeviceListItem.js +4 -10
  23. package/dist/types/src/components/DeviceList/DeviceListItem.js.map +1 -1
  24. package/dist/types/src/components/Panel/Action.d.ts +2 -0
  25. package/dist/types/src/components/Panel/Action.d.ts.map +1 -1
  26. package/dist/types/src/components/Panel/Action.js +16 -14
  27. package/dist/types/src/components/Panel/Action.js.map +1 -1
  28. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts.map +1 -1
  29. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js +2 -2
  30. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js.map +1 -1
  31. package/dist/types/src/panels/SpacePanel/SpacePanel.d.ts.map +1 -1
  32. package/dist/types/src/panels/SpacePanel/SpacePanel.js +2 -2
  33. package/dist/types/src/panels/SpacePanel/SpacePanel.js.map +1 -1
  34. package/dist/types/src/panels/SpacePanel/SpacePanelProps.d.ts +1 -0
  35. package/dist/types/src/panels/SpacePanel/SpacePanelProps.d.ts.map +1 -1
  36. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.d.ts.map +1 -1
  37. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js +5 -3
  38. package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js.map +1 -1
  39. package/dist/types/src/playwright/invitations-manager.d.ts.map +1 -1
  40. package/dist/types/src/playwright/invitations-manager.js +9 -1
  41. package/dist/types/src/playwright/invitations-manager.js.map +1 -1
  42. package/dist/types/src/testing/shell-manager.d.ts.map +1 -1
  43. package/dist/types/src/testing/shell-manager.js +2 -0
  44. package/dist/types/src/testing/shell-manager.js.map +1 -1
  45. package/package.json +25 -25
  46. package/src/components/DeviceList/DeviceListItem.tsx +38 -42
  47. package/src/components/Panel/Action.tsx +40 -31
  48. package/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx +4 -2
  49. package/src/panels/SpacePanel/SpacePanel.tsx +2 -1
  50. package/src/panels/SpacePanel/SpacePanelProps.ts +1 -0
  51. package/src/panels/SpacePanel/steps/SpaceManager.tsx +5 -3
  52. package/src/playwright/invitations-manager.ts +8 -1
  53. package/src/testing/shell-manager.ts +2 -0
@@ -577,7 +577,7 @@ import React9, { forwardRef as forwardRef2 } from "react";
577
577
  import { generateName as generateName2 } from "@dxos/display-name";
578
578
  import { Device, DeviceType, DeviceKind } from "@dxos/react-client/halo";
579
579
  import { ConnectionState } from "@dxos/react-client/mesh";
580
- import { ListItem as ListItem2, Avatar as Avatar3, useId as useId3, Tag, useTranslation as useTranslation6, DropdownMenu as DropdownMenu2, Button as Button5, Tooltip as Tooltip5 } from "@dxos/react-ui";
580
+ import { ListItem as ListItem2, Avatar as Avatar3, useId as useId3, Tag, useTranslation as useTranslation6, DropdownMenu as DropdownMenu2, Button as Button5 } from "@dxos/react-ui";
581
581
  import { getSize as getSize5 } from "@dxos/react-ui-theme";
582
582
  import { keyToFallback as keyToFallback2 } from "@dxos/util";
583
583
  var iconProps = {
@@ -587,7 +587,7 @@ var iconProps = {
587
587
  x: 8,
588
588
  y: 8
589
589
  };
590
- var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickEdit, onClickReset, onClickRecover, onClickJoinExisting, classNames, connectionState, onAgentDestroy, ...props }, forwardedRef) => {
590
+ var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickEdit, onClickReset, onClickRecover, onClickJoinExisting, classNames, connectionState, onAgentDestroy: _, ...props }, forwardedRef) => {
591
591
  const { t } = useTranslation6("os");
592
592
  const fallbackValue = keyToFallback2(device.deviceKey);
593
593
  const labelId = useId3("identityListItem__label");
@@ -621,21 +621,7 @@ var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickE
621
621
  classNames: "flex-1 text-sm truncate"
622
622
  }, displayName), isCurrent && /* @__PURE__ */ React9.createElement(Tag, {
623
623
  color: "primary"
624
- }, t("current device tag label")), device.profile?.type === DeviceType.AGENT_MANAGED ? /* @__PURE__ */ React9.createElement(Tooltip5.Root, null, /* @__PURE__ */ React9.createElement(Tooltip5.Trigger, {
625
- asChild: true
626
- }, /* @__PURE__ */ React9.createElement(Button5, {
627
- variant: "ghost",
628
- classNames: "pli-0 is-[--rail-action] bs-[--rail-action]",
629
- "data-testid": "agent.destroy",
630
- onClick: onAgentDestroy
631
- }, /* @__PURE__ */ React9.createElement("span", {
632
- className: "sr-only"
633
- }, t("destroy agent label")), /* @__PURE__ */ React9.createElement(Power2, {
634
- className: getSize5(5)
635
- }))), /* @__PURE__ */ React9.createElement(Tooltip5.Portal, null, /* @__PURE__ */ React9.createElement(Tooltip5.Content, {
636
- side: "bottom",
637
- classNames: "z-50"
638
- }, t("destroy agent label")))) : device.kind === DeviceKind.CURRENT && /* @__PURE__ */ React9.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React9.createElement(DropdownMenu2.Trigger, {
624
+ }, t("current device tag label")), device.kind === DeviceKind.CURRENT && /* @__PURE__ */ React9.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React9.createElement(DropdownMenu2.Trigger, {
639
625
  asChild: true
640
626
  }, /* @__PURE__ */ React9.createElement(Button5, {
641
627
  variant: "ghost",
@@ -703,7 +689,7 @@ import { X } from "@phosphor-icons/react";
703
689
  import { formatDistanceToNow } from "date-fns";
704
690
  import React12, { useCallback as useCallback2 } from "react";
705
691
  import { Invitation, useInvitationStatus } from "@dxos/react-client/invitations";
706
- import { Button as Button7, ListItem as ListItem3, useTranslation as useTranslation8, Avatar as Avatar4, useThemeContext as useThemeContext4, Tooltip as Tooltip6 } from "@dxos/react-ui";
692
+ import { Button as Button7, ListItem as ListItem3, useTranslation as useTranslation8, Avatar as Avatar4, useThemeContext as useThemeContext4, Tooltip as Tooltip5 } from "@dxos/react-ui";
707
693
  import { focusRing, getSize as getSize7, mx as mx9 } from "@dxos/react-ui-theme";
708
694
  import { hexToEmoji } from "@dxos/util";
709
695
 
@@ -834,11 +820,11 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
834
820
  status: avatarStatus,
835
821
  animation: avatarAnimation,
836
822
  reverseEffects
837
- }), /* @__PURE__ */ React12.createElement(Tooltip6.Root, null, /* @__PURE__ */ React12.createElement(Avatar4.Root, {
823
+ }), /* @__PURE__ */ React12.createElement(Tooltip5.Root, null, /* @__PURE__ */ React12.createElement(Avatar4.Root, {
838
824
  ...avatarProps,
839
825
  animation: avatarAnimation,
840
826
  status: avatarStatus
841
- }, /* @__PURE__ */ React12.createElement(Tooltip6.Trigger, {
827
+ }, /* @__PURE__ */ React12.createElement(Tooltip5.Trigger, {
842
828
  asChild: true
843
829
  }, /* @__PURE__ */ React12.createElement(Avatar4.Frame, {
844
830
  tabIndex: 0,
@@ -848,10 +834,10 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
848
834
  ]
849
835
  }, /* @__PURE__ */ React12.createElement(Avatar4.Fallback, {
850
836
  text: hexToEmoji(invitationId)
851
- })))), /* @__PURE__ */ React12.createElement(Tooltip6.Portal, null, /* @__PURE__ */ React12.createElement(Tooltip6.Content, {
837
+ })))), /* @__PURE__ */ React12.createElement(Tooltip5.Portal, null, /* @__PURE__ */ React12.createElement(Tooltip5.Content, {
852
838
  side: "left",
853
839
  classNames: "z-[70]"
854
- }, t(multiUse ? "invite many qr label" : "invite one qr label"), /* @__PURE__ */ React12.createElement(Tooltip6.Arrow, null)))), showShare && invitationUrl ? /* @__PURE__ */ React12.createElement(Tooltip6.Root, null, /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(Tooltip6.Trigger, {
840
+ }, t(multiUse ? "invite many qr label" : "invite one qr label"), /* @__PURE__ */ React12.createElement(Tooltip5.Arrow, null)))), showShare && invitationUrl ? /* @__PURE__ */ React12.createElement(Tooltip5.Root, null, /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(Tooltip5.Trigger, {
855
841
  asChild: true
856
842
  }, /* @__PURE__ */ React12.createElement(Button7, {
857
843
  variant: "ghost",
@@ -864,7 +850,7 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
864
850
  }, /* @__PURE__ */ React12.createElement("span", null, t("open share panel label")))), /* @__PURE__ */ React12.createElement(CopyButtonIconOnly, {
865
851
  variant: "ghost",
866
852
  value: invitationUrl
867
- })), /* @__PURE__ */ React12.createElement(Tooltip6.Portal, null, /* @__PURE__ */ React12.createElement(Tooltip6.Content, {
853
+ })), /* @__PURE__ */ React12.createElement(Tooltip5.Portal, null, /* @__PURE__ */ React12.createElement(Tooltip5.Content, {
868
854
  side: "left",
869
855
  classNames: "z-[70]"
870
856
  }, invitationHasLifetime && /* @__PURE__ */ React12.createElement("span", null, "Expires ", invitationTimeLeft)))) : showAuthCode ? /* @__PURE__ */ React12.createElement(AuthCode, {
@@ -961,7 +947,8 @@ var defaultActions = {
961
947
  }
962
948
  };
963
949
  var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
964
- const { classNames, variant, isFull = true, actions = defaultActions, activeAction: propsActiveAction, onChangeActiveAction, defaultActiveAction, ...rest } = props;
950
+ const { classNames, variant, isFull = true, actions = defaultActions, activeAction: propsActiveAction, onChangeActiveAction, defaultActiveAction, "data-testid": testId, ...rest } = props;
951
+ const dropdownTestId = testId && `${testId}.more`;
965
952
  const [activeActionKey2 = Object.keys(actions)[0], setActiveAction] = useControllableState3({
966
953
  prop: propsActiveAction,
967
954
  onChange: onChangeActiveAction,
@@ -980,6 +967,7 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
980
967
  ],
981
968
  ref: forwardedRef,
982
969
  variant,
970
+ "data-testid": testId,
983
971
  onClick: activeAction.onClick
984
972
  }, activeAction.icon && /* @__PURE__ */ React15.createElement(activeAction.icon, {
985
973
  className: getSize8(5)
@@ -989,19 +977,21 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
989
977
  classNames: [
990
978
  "bs-11 flex-none rounded-is-none",
991
979
  classNames
992
- ]
980
+ ],
981
+ "data-testid": dropdownTestId
993
982
  }, /* @__PURE__ */ React15.createElement("span", {
994
983
  className: "sr-only"
995
984
  }, t("invite options label")), /* @__PURE__ */ React15.createElement(CaretDown3, {
996
985
  className: getSize8(4)
997
- }))), /* @__PURE__ */ React15.createElement(DropdownMenu3.Content, null, /* @__PURE__ */ React15.createElement(DropdownMenu3.Viewport, null, Object.entries(actions).map(([id, action]) => {
986
+ }))), /* @__PURE__ */ React15.createElement(DropdownMenu3.Portal, null, /* @__PURE__ */ React15.createElement(DropdownMenu3.Content, null, /* @__PURE__ */ React15.createElement(DropdownMenu3.Viewport, null, Object.entries(actions).map(([id, action]) => {
998
987
  return /* @__PURE__ */ React15.createElement(DropdownMenu3.CheckboxItem, {
999
988
  key: id,
1000
989
  "aria-labelledby": `${id}__label`,
1001
990
  "aria-describedby": `${id}__description`,
1002
991
  checked: activeActionKey2 === id,
1003
992
  onCheckedChange: (checked) => checked && setActiveAction(id),
1004
- classNames: "gap-2"
993
+ classNames: "gap-2",
994
+ "data-testid": action.testId
1005
995
  }, action.icon && /* @__PURE__ */ React15.createElement(action.icon, {
1006
996
  className: getSize8(5)
1007
997
  }), /* @__PURE__ */ React15.createElement("div", {
@@ -1018,7 +1008,7 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
1018
1008
  weight: "bold",
1019
1009
  className: getSize8(4)
1020
1010
  })));
1021
- })), /* @__PURE__ */ React15.createElement(DropdownMenu3.Arrow, null))));
1011
+ })), /* @__PURE__ */ React15.createElement(DropdownMenu3.Arrow, null)))));
1022
1012
  });
1023
1013
  var Action = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
1024
1014
  const { children, classNames, variant, isFull = true, ...rest } = props;
@@ -1253,7 +1243,7 @@ import { useClient as useClient6 } from "@dxos/react-client";
1253
1243
  import { useIdentity, useDevices, useHaloInvitations as useHaloInvitations2 } from "@dxos/react-client/halo";
1254
1244
  import { useInvitationStatus as useInvitationStatus2 } from "@dxos/react-client/invitations";
1255
1245
  import { useNetworkStatus, ConnectionState as ConnectionState2 } from "@dxos/react-client/mesh";
1256
- import { Avatar as Avatar6, Input as Input2, Toolbar as Toolbar3, Tooltip as Tooltip7, useId as useId6, useTranslation as useTranslation14 } from "@dxos/react-ui";
1246
+ import { Avatar as Avatar6, Input as Input2, Toolbar as Toolbar3, Tooltip as Tooltip6, useId as useId6, useTranslation as useTranslation14 } from "@dxos/react-ui";
1257
1247
  import { getSize as getSize13 } from "@dxos/react-ui-theme";
1258
1248
  import { hexToEmoji as hexToEmoji4, hexToHue as hexToHue2, keyToFallback as keyToFallback3 } from "@dxos/util";
1259
1249
 
@@ -1421,7 +1411,7 @@ var IdentityActionChooser = (props) => {
1421
1411
  });
1422
1412
  };
1423
1413
  var IdentityActionChooserImpl = ({ devices, connectionState, agentHostingEnabled, onClickAdd, onClickJoinExisting, onClickRecover, onClickReset, ...agentProps }) => {
1424
- const managedDeviceAvailable = devices.find((device) => device.profile?.type === DeviceType2.AGENT_MANAGED);
1414
+ const edgeDeviceAvailable = devices.find((device) => device.profile?.type === DeviceType2.AGENT_MANAGED && device.profile?.os?.toUpperCase() === "EDGE");
1425
1415
  return /* @__PURE__ */ React25.createElement("div", {
1426
1416
  role: "none",
1427
1417
  className: "bs-40 grow overflow-y-auto overflow-x-hidden"
@@ -1433,7 +1423,7 @@ var IdentityActionChooserImpl = ({ devices, connectionState, agentHostingEnabled
1433
1423
  onClickRecover: agentProps.agentStatus === "created" ? onClickRecover : void 0,
1434
1424
  onClickReset,
1435
1425
  onAgentDestroy: agentProps.onAgentDestroy
1436
- }), !managedDeviceAvailable && agentHostingEnabled && /* @__PURE__ */ React25.createElement(AgentConfig, agentProps));
1426
+ }), !edgeDeviceAvailable && agentHostingEnabled && /* @__PURE__ */ React25.createElement(AgentConfig, agentProps));
1437
1427
  };
1438
1428
 
1439
1429
  // packages/sdk/shell/src/panels/IdentityPanel/steps/ProfileForm.tsx
@@ -1960,7 +1950,7 @@ var IdentityHeading = ({ titleId, title, identity, hideRecover, onDone, onUpdate
1960
1950
  hue,
1961
1951
  onChangeHue: setHue,
1962
1952
  classNames: "bs-[--rail-action]"
1963
- }), /* @__PURE__ */ React29.createElement(Tooltip7.Root, null, /* @__PURE__ */ React29.createElement(Tooltip7.Trigger, {
1953
+ }), /* @__PURE__ */ React29.createElement(Tooltip6.Root, null, /* @__PURE__ */ React29.createElement(Tooltip6.Trigger, {
1964
1954
  asChild: true
1965
1955
  }, /* @__PURE__ */ React29.createElement(Toolbar3.Button, {
1966
1956
  classNames: "bs-[--rail-action]",
@@ -1970,20 +1960,20 @@ var IdentityHeading = ({ titleId, title, identity, hideRecover, onDone, onUpdate
1970
1960
  className: "sr-only"
1971
1961
  }, t(publicKeyCopied ? "copy success label" : "copy self public key label")), /* @__PURE__ */ React29.createElement(Key, {
1972
1962
  className: getSize13(5)
1973
- }))), /* @__PURE__ */ React29.createElement(Tooltip7.Portal, null, /* @__PURE__ */ React29.createElement(Tooltip7.Content, {
1963
+ }))), /* @__PURE__ */ React29.createElement(Tooltip6.Portal, null, /* @__PURE__ */ React29.createElement(Tooltip6.Content, {
1974
1964
  side: "bottom",
1975
1965
  classNames: "z-50"
1976
- }, t(publicKeyCopied ? "copy success label" : "copy self public key label"), /* @__PURE__ */ React29.createElement(Tooltip7.Arrow, null)))), !hideRecover && /* @__PURE__ */ React29.createElement(Tooltip7.Root, null, /* @__PURE__ */ React29.createElement(Tooltip7.Trigger, {
1966
+ }, t(publicKeyCopied ? "copy success label" : "copy self public key label"), /* @__PURE__ */ React29.createElement(Tooltip6.Arrow, null)))), !hideRecover && /* @__PURE__ */ React29.createElement(Tooltip6.Root, null, /* @__PURE__ */ React29.createElement(Tooltip6.Trigger, {
1977
1967
  asChild: true
1978
1968
  }, /* @__PURE__ */ React29.createElement(Toolbar3.Button, {
1979
1969
  classNames: "bs-[--rail-action]",
1980
1970
  onClick: handleRecoveryCode
1981
1971
  }, /* @__PURE__ */ React29.createElement(FirstAidKit2, {
1982
1972
  className: getSize13(5)
1983
- }))), /* @__PURE__ */ React29.createElement(Tooltip7.Portal, null, /* @__PURE__ */ React29.createElement(Tooltip7.Content, {
1973
+ }))), /* @__PURE__ */ React29.createElement(Tooltip6.Portal, null, /* @__PURE__ */ React29.createElement(Tooltip6.Content, {
1984
1974
  side: "bottom",
1985
1975
  classNames: "z-50"
1986
- }, t("create recovery code label"), /* @__PURE__ */ React29.createElement(Tooltip7.Arrow, null)))), /* @__PURE__ */ React29.createElement(Tooltip7.Root, null, /* @__PURE__ */ React29.createElement(Tooltip7.Trigger, {
1976
+ }, t("create recovery code label"), /* @__PURE__ */ React29.createElement(Tooltip6.Arrow, null)))), /* @__PURE__ */ React29.createElement(Tooltip6.Root, null, /* @__PURE__ */ React29.createElement(Tooltip6.Trigger, {
1987
1977
  asChild: true
1988
1978
  }, /* @__PURE__ */ React29.createElement(Toolbar3.Button, {
1989
1979
  classNames: [
@@ -1997,10 +1987,10 @@ var IdentityHeading = ({ titleId, title, identity, hideRecover, onDone, onUpdate
1997
1987
  className: getSize13(5)
1998
1988
  }) : /* @__PURE__ */ React29.createElement(Plugs, {
1999
1989
  className: getSize13(5)
2000
- }))), /* @__PURE__ */ React29.createElement(Tooltip7.Portal, null, /* @__PURE__ */ React29.createElement(Tooltip7.Content, {
1990
+ }))), /* @__PURE__ */ React29.createElement(Tooltip6.Portal, null, /* @__PURE__ */ React29.createElement(Tooltip6.Content, {
2001
1991
  side: "bottom",
2002
1992
  classNames: "z-50"
2003
- }, t(isConnected ? "disconnect label" : "connect label"), /* @__PURE__ */ React29.createElement(Tooltip7.Arrow, null)))))));
1993
+ }, t(isConnected ? "disconnect label" : "connect label"), /* @__PURE__ */ React29.createElement(Tooltip6.Arrow, null)))))));
2004
1994
  };
2005
1995
  var IdentityPanelImpl = (props) => {
2006
1996
  const { identity, titleId, activeView, onUpdateProfile, onResetStorage, onRecover, onJoinNewIdentity, IdentityActionChooser: IdentityActionChooserComponent = IdentityActionChooser, InvitationManager: InvitationManagerComponent = InvitationManager, connectionState, onChangeConnectionState, onDone, ...rest } = props;
@@ -3779,6 +3769,7 @@ var SpaceManager = (props) => {
3779
3769
  label: t("invite one label"),
3780
3770
  description: t("invite one description"),
3781
3771
  icon: UserPlus,
3772
+ testId: "spaces-panel.invite-one",
3782
3773
  onClick: useCallback7(() => {
3783
3774
  const invitation = space.share?.({
3784
3775
  type: Invitation8.Type.INTERACTIVE,
@@ -3790,13 +3781,15 @@ var SpaceManager = (props) => {
3790
3781
  const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
3791
3782
  }
3792
3783
  }, [
3793
- space
3784
+ space,
3785
+ target
3794
3786
  ])
3795
3787
  },
3796
3788
  inviteMany: {
3797
3789
  label: t("invite many label"),
3798
3790
  description: t("invite many description"),
3799
3791
  icon: UsersThree,
3792
+ testId: "spaces-panel.invite-many",
3800
3793
  onClick: useCallback7(() => {
3801
3794
  const invitation = space.share?.({
3802
3795
  type: Invitation8.Type.DELEGATED,
@@ -3808,7 +3801,8 @@ var SpaceManager = (props) => {
3808
3801
  const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
3809
3802
  }
3810
3803
  }, [
3811
- space
3804
+ space,
3805
+ target
3812
3806
  ])
3813
3807
  }
3814
3808
  };
@@ -3831,7 +3825,7 @@ var SpaceManagerImpl = (props) => {
3831
3825
  }
3832
3826
  }
3833
3827
  };
3834
- const [activeAction, setInternalActiveAction] = useState13(localStorage.getItem(activeActionKey) ?? "inviteOne");
3828
+ const [activeAction, setInternalActiveAction] = useState13(localStorage.getItem(activeActionKey) ?? "inviteMany");
3835
3829
  const setActiveAction = (nextAction) => {
3836
3830
  setInternalActiveAction(nextAction);
3837
3831
  localStorage.setItem(activeActionKey, nextAction);
@@ -3890,8 +3884,8 @@ var SpacePanelHeading = ({ titleId, space, onDone }) => {
3890
3884
  }, name ?? space.key.truncate())));
3891
3885
  };
3892
3886
  var SpacePanelImpl = (props) => {
3893
- const { titleId, activeView, space, target, SpaceManager: SpaceManagerComponent = SpaceManager, InvitationManager: InvitationManagerComponent = InvitationManager, ...rest } = props;
3894
- return /* @__PURE__ */ React40.createElement(React40.Fragment, null, /* @__PURE__ */ React40.createElement(SpacePanelHeading, {
3887
+ const { titleId, activeView, space, hideHeading, target, SpaceManager: SpaceManagerComponent = SpaceManager, InvitationManager: InvitationManagerComponent = InvitationManager, ...rest } = props;
3888
+ return /* @__PURE__ */ React40.createElement(React40.Fragment, null, !hideHeading && /* @__PURE__ */ React40.createElement(SpacePanelHeading, {
3895
3889
  ...rest,
3896
3890
  titleId,
3897
3891
  space
@@ -3933,7 +3927,7 @@ var SpacePanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => code,
3933
3927
  const subscription = spaceService.subscribe((state) => {
3934
3928
  log13("[state]", state, {
3935
3929
  F: __dxlog_file13,
3936
- L: 94,
3930
+ L: 95,
3937
3931
  S: void 0,
3938
3932
  C: (f, a) => f(...a)
3939
3933
  });
@@ -4038,7 +4032,7 @@ import React47, { StrictMode } from "react";
4038
4032
  import { createRoot } from "react-dom/client";
4039
4033
  import { DEFAULT_CLIENT_CHANNEL, DEFAULT_SHELL_CHANNEL } from "@dxos/client-protocol";
4040
4034
  import { AgentHostingProvider, ClientProvider, ClientServicesProxy, Config, ShellDisplay as ShellDisplay2 } from "@dxos/react-client";
4041
- import { Button as Button11, Dialog as Dialog3, ThemeProvider, Tooltip as Tooltip8, useTranslation as useTranslation26 } from "@dxos/react-ui";
4035
+ import { Button as Button11, Dialog as Dialog3, ThemeProvider, Tooltip as Tooltip7, useTranslation as useTranslation26 } from "@dxos/react-ui";
4042
4036
  import { defaultTx } from "@dxos/react-ui-theme";
4043
4037
  import { createIFramePort } from "@dxos/rpc-tunnel";
4044
4038
 
@@ -4542,7 +4536,7 @@ var runShell = async (config = new Config()) => {
4542
4536
  config,
4543
4537
  services,
4544
4538
  noBanner: true
4545
- }, /* @__PURE__ */ React47.createElement(ClipboardProvider, null, /* @__PURE__ */ React47.createElement(Tooltip8.Provider, null, /* @__PURE__ */ React47.createElement(AgentHostingProvider, null, /* @__PURE__ */ React47.createElement(Shell, {
4539
+ }, /* @__PURE__ */ React47.createElement(ClipboardProvider, null, /* @__PURE__ */ React47.createElement(Tooltip7.Provider, null, /* @__PURE__ */ React47.createElement(AgentHostingProvider, null, /* @__PURE__ */ React47.createElement(Shell, {
4546
4540
  runtime
4547
4541
  }))))))));
4548
4542
  } catch {