@dxos/shell 0.4.10-main.b9b4602 → 0.4.10-main.c2d5db5

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 (122) hide show
  1. package/dist/bundle/shell.mjs +81827 -10
  2. package/dist/bundle/shell.mjs.map +1 -1
  3. package/dist/bundle/shell.umd.js +89 -152
  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 +792 -831
  8. package/dist/lib/browser/react.mjs.map +4 -4
  9. package/dist/lib/browser/testing/index.mjs +2 -4
  10. package/dist/lib/browser/testing/index.mjs.map +2 -2
  11. package/dist/types/src/components/EmojiPicker.d.ts +2 -9
  12. package/dist/types/src/components/EmojiPicker.d.ts.map +1 -1
  13. package/dist/types/src/components/EmojiPicker.js +3 -57
  14. package/dist/types/src/components/EmojiPicker.js.map +1 -1
  15. package/dist/types/src/components/HuePicker.d.ts +2 -9
  16. package/dist/types/src/components/HuePicker.d.ts.map +1 -1
  17. package/dist/types/src/components/HuePicker.js +6 -75
  18. package/dist/types/src/components/HuePicker.js.map +1 -1
  19. package/dist/types/src/components/IdentityList/DeviceList.d.ts +7 -0
  20. package/dist/types/src/components/IdentityList/DeviceList.d.ts.map +1 -0
  21. package/dist/types/src/components/IdentityList/DeviceList.js +34 -0
  22. package/dist/types/src/components/IdentityList/DeviceList.js.map +1 -0
  23. package/dist/types/src/components/IdentityList/index.d.ts +1 -0
  24. package/dist/types/src/components/IdentityList/index.d.ts.map +1 -1
  25. package/dist/types/src/components/IdentityList/index.js +1 -0
  26. package/dist/types/src/components/IdentityList/index.js.map +1 -1
  27. package/dist/types/src/components/Panel/Action.d.ts +2 -2
  28. package/dist/types/src/components/Viewport/Viewport.d.ts +1 -1
  29. package/dist/types/src/components/index.d.ts +0 -2
  30. package/dist/types/src/components/index.d.ts.map +1 -1
  31. package/dist/types/src/components/index.js +0 -2
  32. package/dist/types/src/components/index.js.map +1 -1
  33. package/dist/types/src/composites/Shell/Shell.d.ts.map +1 -1
  34. package/dist/types/src/composites/Shell/Shell.js +5 -1
  35. package/dist/types/src/composites/Shell/Shell.js.map +1 -1
  36. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
  37. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +40 -80
  38. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
  39. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts +3 -0
  40. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -1
  41. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +43 -1
  42. package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
  43. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +11 -8
  44. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts.map +1 -1
  45. package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts +1 -1
  46. package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts.map +1 -1
  47. package/dist/types/src/panels/IdentityPanel/identityMachine.js +24 -0
  48. package/dist/types/src/panels/IdentityPanel/identityMachine.js.map +1 -1
  49. package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts +3 -0
  50. package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts.map +1 -0
  51. package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js +26 -0
  52. package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js.map +1 -0
  53. package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.d.ts +10 -0
  54. package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.d.ts.map +1 -0
  55. package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.js +23 -0
  56. package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.js.map +1 -0
  57. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts +4 -4
  58. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts.map +1 -1
  59. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js +43 -9
  60. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js.map +1 -1
  61. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts +1 -1
  62. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -1
  63. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +2 -2
  64. package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
  65. package/dist/types/src/panels/IdentityPanel/steps/index.d.ts +2 -0
  66. package/dist/types/src/panels/IdentityPanel/steps/index.d.ts.map +1 -1
  67. package/dist/types/src/panels/IdentityPanel/steps/index.js +2 -0
  68. package/dist/types/src/panels/IdentityPanel/steps/index.js.map +1 -1
  69. package/dist/types/src/testing/shell-manager.d.ts.map +1 -1
  70. package/dist/types/src/testing/shell-manager.js +2 -4
  71. package/dist/types/src/testing/shell-manager.js.map +1 -1
  72. package/dist/types/src/translations/locales/en-US.d.ts +2 -12
  73. package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
  74. package/dist/types/src/translations/locales/en-US.js +2 -12
  75. package/dist/types/src/translations/locales/en-US.js.map +1 -1
  76. package/package.json +19 -19
  77. package/src/components/EmojiPicker.tsx +4 -101
  78. package/src/components/HuePicker.tsx +5 -99
  79. package/src/components/IdentityList/DeviceList.tsx +49 -0
  80. package/src/components/IdentityList/index.ts +1 -0
  81. package/src/components/index.ts +0 -2
  82. package/src/composites/Shell/Shell.tsx +7 -1
  83. package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +63 -0
  84. package/src/panels/IdentityPanel/IdentityPanel.tsx +34 -123
  85. package/src/panels/IdentityPanel/IdentityPanelProps.ts +14 -10
  86. package/src/panels/IdentityPanel/identityMachine.ts +31 -1
  87. package/src/panels/IdentityPanel/steps/AgentForm.tsx +61 -0
  88. package/src/panels/IdentityPanel/steps/DeviceManager.tsx +41 -0
  89. package/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx +76 -23
  90. package/src/panels/IdentityPanel/steps/ProfileForm.tsx +4 -12
  91. package/src/panels/IdentityPanel/steps/index.ts +2 -0
  92. package/src/testing/shell-manager.ts +2 -4
  93. package/src/translations/locales/en-US.ts +2 -13
  94. package/dist/bundle/index-D-K0uxrm.mjs +0 -94
  95. package/dist/bundle/index-D-K0uxrm.mjs.map +0 -1
  96. package/dist/bundle/index-DRtLjStG.mjs +0 -96550
  97. package/dist/bundle/index-DRtLjStG.mjs.map +0 -1
  98. package/dist/types/src/components/AgentConfig.d.ts +0 -3
  99. package/dist/types/src/components/AgentConfig.d.ts.map +0 -1
  100. package/dist/types/src/components/AgentConfig.js +0 -37
  101. package/dist/types/src/components/AgentConfig.js.map +0 -1
  102. package/dist/types/src/components/DeviceList/DeviceList.d.ts +0 -3
  103. package/dist/types/src/components/DeviceList/DeviceList.d.ts.map +0 -1
  104. package/dist/types/src/components/DeviceList/DeviceList.js +0 -29
  105. package/dist/types/src/components/DeviceList/DeviceList.js.map +0 -1
  106. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts +0 -6
  107. package/dist/types/src/components/DeviceList/DeviceListItem.d.ts.map +0 -1
  108. package/dist/types/src/components/DeviceList/DeviceListItem.js +0 -72
  109. package/dist/types/src/components/DeviceList/DeviceListItem.js.map +0 -1
  110. package/dist/types/src/components/DeviceList/DeviceListProps.d.ts +0 -27
  111. package/dist/types/src/components/DeviceList/DeviceListProps.d.ts.map +0 -1
  112. package/dist/types/src/components/DeviceList/DeviceListProps.js +0 -6
  113. package/dist/types/src/components/DeviceList/DeviceListProps.js.map +0 -1
  114. package/dist/types/src/components/DeviceList/index.d.ts +0 -3
  115. package/dist/types/src/components/DeviceList/index.d.ts.map +0 -1
  116. package/dist/types/src/components/DeviceList/index.js +0 -22
  117. package/dist/types/src/components/DeviceList/index.js.map +0 -1
  118. package/src/components/AgentConfig.tsx +0 -66
  119. package/src/components/DeviceList/DeviceList.tsx +0 -54
  120. package/src/components/DeviceList/DeviceListItem.tsx +0 -120
  121. package/src/components/DeviceList/DeviceListProps.ts +0 -33
  122. package/src/components/DeviceList/index.ts +0 -6
@@ -1,3 +0,0 @@
1
- import { type AgentFormProps } from './DeviceList';
2
- export declare const AgentConfig: ({ agentActive, agentStatus, onAgentDestroy, onAgentCreate }: AgentFormProps) => JSX.Element;
3
- //# sourceMappingURL=AgentConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentConfig.d.ts","sourceRoot":"","sources":["../../../../src/components/AgentConfig.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,WAAW,gEAAiE,cAAc,gBAqDtG,CAAC"}
@@ -1,37 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AgentConfig = void 0;
10
- const react_1 = require("@phosphor-icons/react");
11
- const react_2 = __importDefault(require("react"));
12
- const react_ui_1 = require("@dxos/react-ui");
13
- const react_ui_theme_1 = require("@dxos/react-ui-theme");
14
- const AgentConfig = ({ agentActive, agentStatus, onAgentDestroy, onAgentCreate }) => {
15
- const { t } = (0, react_ui_1.useTranslation)('os');
16
- return (react_2.default.createElement(react_2.default.Fragment, null,
17
- react_2.default.createElement("h2", { className: (0, react_ui_theme_1.mx)(react_ui_theme_1.descriptionText, 'text-center mbs-4') }, t('agent heading')),
18
- agentActive ? (react_2.default.createElement("div", { role: 'group', className: 'flex gap-2 items-center' },
19
- react_2.default.createElement(react_ui_1.Avatar.Root, { status: agentStatus ? 'active' : 'inactive', variant: 'square' },
20
- react_2.default.createElement(react_ui_1.Avatar.Frame, { classNames: 'place-self-center' },
21
- react_2.default.createElement(react_1.Database, { weight: 'duotone', width: 24, height: 24, x: 8, y: 8 })),
22
- react_2.default.createElement(react_ui_1.Avatar.Label, { classNames: 'flex-1 text-sm truncate' }, t('agent device label'))),
23
- react_2.default.createElement(react_ui_1.Tooltip.Root, null,
24
- react_2.default.createElement(react_ui_1.Tooltip.Trigger, { asChild: true },
25
- react_2.default.createElement(react_ui_1.Button, { variant: 'ghost', classNames: 'pli-0 is-[--rail-action] bs-[--rail-action]', "data-testid": 'agent.destroy', onClick: onAgentDestroy },
26
- react_2.default.createElement("span", { className: 'sr-only' }, t('destroy agent label')),
27
- react_2.default.createElement(react_1.Power, { className: (0, react_ui_theme_1.getSize)(5) }))),
28
- react_2.default.createElement(react_ui_1.Tooltip.Portal, null,
29
- react_2.default.createElement(react_ui_1.Tooltip.Content, { side: 'bottom', classNames: 'z-50' }, t('destroy agent label')))))) : (react_2.default.createElement(react_2.default.Fragment, null,
30
- react_2.default.createElement(react_ui_1.Button, { variant: 'ghost', classNames: 'mlb-2 is-full justify-start gap-2 !pis-0 !pie-3', "data-testid": 'devices-panel.create-agent', onClick: onAgentCreate, "aria-describedby": 'devices-panel.create-agent.description' },
31
- react_2.default.createElement("div", { role: 'img', className: (0, react_ui_theme_1.mx)((0, react_ui_theme_1.getSize)(8), 'm-1 rounded-sm surface-input grid place-items-center') },
32
- react_2.default.createElement(react_1.Plus, { weight: 'light', className: (0, react_ui_theme_1.getSize)(6) })),
33
- react_2.default.createElement("span", { className: 'grow font-medium text-start' }, t('create agent label'))),
34
- react_2.default.createElement("p", { id: 'devices-panel.create-agent.description', className: react_ui_theme_1.descriptionText }, t('agent message body'))))));
35
- };
36
- exports.AgentConfig = AgentConfig;
37
- //# sourceMappingURL=AgentConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentConfig.js","sourceRoot":"","sources":["../../../../src/components/AgentConfig.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,iDAA8D;AAC9D,kDAA0B;AAE1B,6CAAyE;AACzE,yDAAoE;AAI7D,MAAM,WAAW,GAAG,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAkB,EAAE,EAAE;IACzG,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CACL;QACE,sCAAI,SAAS,EAAE,IAAA,mBAAE,EAAC,gCAAe,EAAE,mBAAmB,CAAC,IAAG,CAAC,CAAC,eAAe,CAAC,CAAM;QACjF,WAAW,CAAC,CAAC,CAAC,CACb,uCAAK,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,yBAAyB;YACnD,8BAAC,iBAAM,CAAC,IAAI,IAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,EAAC,QAAQ;gBACxE,8BAAC,iBAAM,CAAC,KAAK,IAAC,UAAU,EAAC,mBAAmB;oBAC1C,8BAAC,gBAAQ,IAAC,MAAM,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAI,CACnD;gBACf,8BAAC,iBAAM,CAAC,KAAK,IAAC,UAAU,EAAC,yBAAyB,IAAE,CAAC,CAAC,oBAAoB,CAAC,CAAgB,CAC/E;YACd,8BAAC,kBAAO,CAAC,IAAI;gBACX,8BAAC,kBAAO,CAAC,OAAO,IAAC,OAAO;oBACtB,8BAAC,iBAAM,IACL,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,6CAA6C,iBAC5C,eAAe,EAC3B,OAAO,EAAE,cAAc;wBAEvB,wCAAM,SAAS,EAAC,SAAS,IAAE,CAAC,CAAC,qBAAqB,CAAC,CAAQ;wBAC3D,8BAAC,aAAK,IAAC,SAAS,EAAE,IAAA,wBAAO,EAAC,CAAC,CAAC,GAAI,CACzB,CACO;gBAClB,8BAAC,kBAAO,CAAC,MAAM;oBACb,8BAAC,kBAAO,CAAC,OAAO,IAAC,IAAI,EAAC,QAAQ,EAAC,UAAU,EAAC,MAAM,IAC7C,CAAC,CAAC,qBAAqB,CAAC,CACT,CACH,CACJ,CACX,CACP,CAAC,CAAC,CAAC,CACF;YACE,8BAAC,iBAAM,IACL,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,iDAAiD,iBAChD,4BAA4B,EACxC,OAAO,EAAE,aAAa,sBACL,wCAAwC;gBAEzD,uCAAK,IAAI,EAAC,KAAK,EAAC,SAAS,EAAE,IAAA,mBAAE,EAAC,IAAA,wBAAO,EAAC,CAAC,CAAC,EAAE,sDAAsD,CAAC;oBAC/F,8BAAC,YAAI,IAAC,MAAM,EAAC,OAAO,EAAC,SAAS,EAAE,IAAA,wBAAO,EAAC,CAAC,CAAC,GAAI,CAC1C;gBACN,wCAAM,SAAS,EAAC,6BAA6B,IAAE,CAAC,CAAC,oBAAoB,CAAC,CAAQ,CACvE;YACT,qCAAG,EAAE,EAAC,wCAAwC,EAAC,SAAS,EAAE,gCAAe,IACtE,CAAC,CAAC,oBAAoB,CAAC,CACtB,CACH,CACJ,CACA,CACJ,CAAC;AACJ,CAAC,CAAC;AArDW,QAAA,WAAW,eAqDtB"}
@@ -1,3 +0,0 @@
1
- import { type DeviceListProps } from './DeviceListProps';
2
- export declare const DeviceList: ({ devices, onClickAdd, onClickEdit, onClickReset, onClickJoinExisting, }: DeviceListProps) => JSX.Element;
3
- //# sourceMappingURL=DeviceList.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceList.d.ts","sourceRoot":"","sources":["../../../../../src/components/DeviceList/DeviceList.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,eAAO,MAAM,UAAU,6EAMpB,eAAe,gBAiCjB,CAAC"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2023 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.DeviceList = void 0;
10
- const react_1 = require("@phosphor-icons/react");
11
- const react_2 = __importDefault(require("react"));
12
- const react_ui_1 = require("@dxos/react-ui");
13
- const react_ui_theme_1 = require("@dxos/react-ui-theme");
14
- const DeviceListItem_1 = require("./DeviceListItem");
15
- const DeviceList = ({ devices, onClickAdd, onClickEdit, onClickReset, onClickJoinExisting, }) => {
16
- const { t } = (0, react_ui_1.useTranslation)('os');
17
- return (react_2.default.createElement(react_2.default.Fragment, null,
18
- react_2.default.createElement("h2", { className: (0, react_ui_theme_1.mx)(react_ui_theme_1.descriptionText, 'text-center mbs-4') }, t('devices heading')),
19
- devices.length > 0 && (react_2.default.createElement(react_ui_1.List, null, devices.map((device) => {
20
- return (react_2.default.createElement(DeviceListItem_1.DeviceListItem, { key: device.deviceKey.toHex(), device: device, onClickEdit: () => onClickEdit === null || onClickEdit === void 0 ? void 0 : onClickEdit(device), onClickReset, onClickJoinExisting }));
21
- }))),
22
- react_2.default.createElement(react_ui_1.Button, { variant: 'ghost', classNames: 'justify-start gap-2 !pis-0 !pie-3', "data-testid": 'devices-panel.create-invitation', onClick: onClickAdd },
23
- react_2.default.createElement("div", { role: 'img', className: (0, react_ui_theme_1.mx)((0, react_ui_theme_1.getSize)(8), 'm-1 rounded-sm surface-input grid place-items-center') },
24
- react_2.default.createElement(react_1.Plus, { weight: 'light', className: (0, react_ui_theme_1.getSize)(6) })),
25
- react_2.default.createElement("span", { className: 'grow font-medium text-start' }, t('choose add device label')),
26
- react_2.default.createElement(react_1.CaretRight, { weight: 'bold', className: (0, react_ui_theme_1.getSize)(4) }))));
27
- };
28
- exports.DeviceList = DeviceList;
29
- //# sourceMappingURL=DeviceList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceList.js","sourceRoot":"","sources":["../../../../../src/components/DeviceList/DeviceList.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,iDAAyD;AACzD,kDAA0B;AAG1B,6CAA8D;AAC9D,yDAAoE;AAEpE,qDAAkD;AAG3C,MAAM,UAAU,GAAG,CAAC,EACzB,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,mBAAmB,GACH,EAAE,EAAE;IACpB,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CACL;QACE,sCAAI,SAAS,EAAE,IAAA,mBAAE,EAAC,gCAAe,EAAE,mBAAmB,CAAC,IAAG,CAAC,CAAC,iBAAiB,CAAC,CAAM;QACnF,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,8BAAC,eAAI,QACF,OAAO,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YAC9B,OAAO,CACL,8BAAC,+BAAc,IACb,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAC7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,MAAM,CAAC,EAClC,YAAY,EAAE,mBAAmB,GACvC,CACH,CAAC;QACJ,CAAC,CAAC,CACG,CACR;QACD,8BAAC,iBAAM,IACL,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,mCAAmC,iBAClC,iCAAiC,EAC7C,OAAO,EAAE,UAAU;YAEnB,uCAAK,IAAI,EAAC,KAAK,EAAC,SAAS,EAAE,IAAA,mBAAE,EAAC,IAAA,wBAAO,EAAC,CAAC,CAAC,EAAE,sDAAsD,CAAC;gBAC/F,8BAAC,YAAI,IAAC,MAAM,EAAC,OAAO,EAAC,SAAS,EAAE,IAAA,wBAAO,EAAC,CAAC,CAAC,GAAI,CAC1C;YACN,wCAAM,SAAS,EAAC,6BAA6B,IAAE,CAAC,CAAC,yBAAyB,CAAC,CAAQ;YACnF,8BAAC,kBAAU,IAAC,MAAM,EAAC,MAAM,EAAC,SAAS,EAAE,IAAA,wBAAO,EAAC,CAAC,CAAC,GAAI,CAC5C,CACR,CACJ,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,UAAU,cAuCrB"}
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import { type DeviceListItemProps } from './DeviceListProps';
3
- export declare const DeviceListItem: React.ForwardRefExoticComponent<Omit<Pick<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "key" | keyof React.LiHTMLAttributes<HTMLLIElement>>, "className"> & {
4
- classNames?: import("@dxos/react-ui").ClassNameValue;
5
- } & DeviceListItemProps & React.RefAttributes<HTMLLIElement>>;
6
- //# sourceMappingURL=DeviceListItem.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceListItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/DeviceList/DeviceListItem.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAiBzE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAU7D,eAAO,MAAM,cAAc;;6DA6EzB,CAAC"}
@@ -1,72 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2023 DXOS.org
4
- //
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.DeviceListItem = void 0;
30
- const react_1 = require("@phosphor-icons/react");
31
- const react_2 = __importStar(require("react"));
32
- const display_name_1 = require("@dxos/display-name");
33
- const halo_1 = require("@dxos/react-client/halo");
34
- const react_ui_1 = require("@dxos/react-ui");
35
- const react_ui_theme_1 = require("@dxos/react-ui-theme");
36
- const util_1 = require("@dxos/util");
37
- const iconProps = {
38
- weight: 'duotone',
39
- width: 24,
40
- height: 24,
41
- x: 8,
42
- y: 8,
43
- };
44
- exports.DeviceListItem = (0, react_2.forwardRef)(({ device, onClickAdd, onClickEdit, onClickReset, onClickJoinExisting, classNames, ...props }, forwardedRef) => {
45
- var _a;
46
- const { t } = (0, react_ui_1.useTranslation)('os');
47
- const fallbackValue = (0, util_1.keyToFallback)(device.deviceKey);
48
- const labelId = (0, react_ui_1.useId)('identityListItem__label');
49
- const displayName = device.profile
50
- ? t('device name placeholder', { os: device.profile.os, platform: device.profile.platform })
51
- : (0, display_name_1.generateName)(device.deviceKey.toHex());
52
- const isCurrent = device.kind === halo_1.DeviceKind.CURRENT;
53
- return (react_2.default.createElement(react_ui_1.ListItem.Root, { ...props, classNames: ['flex gap-2 items-center mlb-2', classNames], "data-testid": `device-list-item${isCurrent ? '-current' : ''}`, labelId: labelId, ref: forwardedRef },
54
- react_2.default.createElement(react_ui_1.Avatar.Root, { status: device.presence === halo_1.Device.PresenceState.ONLINE ? 'active' : 'inactive', labelId: labelId, hue: fallbackValue.hue, variant: 'square' },
55
- react_2.default.createElement(react_ui_1.Avatar.Frame, { classNames: 'place-self-center' }, ((_a = device.profile) === null || _a === void 0 ? void 0 : _a.type) ? (device.profile.type === halo_1.DeviceType.BROWSER ? (react_2.default.createElement(react_1.Compass, { ...iconProps })) : device.profile.type === halo_1.DeviceType.NATIVE ? (react_2.default.createElement(react_1.Desktop, { ...iconProps })) : [halo_1.DeviceType.AGENT, halo_1.DeviceType.AGENT_MANAGED].includes(device.profile.type) ? (react_2.default.createElement(react_1.Robot, { ...iconProps })) : device.profile.type === halo_1.DeviceType.MOBILE ? (react_2.default.createElement(react_1.DeviceMobile, { ...iconProps })) : (react_2.default.createElement(react_1.Devices, { ...iconProps }))) : (react_2.default.createElement(react_ui_1.Avatar.Fallback, { text: fallbackValue.emoji }))),
56
- isCurrent && react_2.default.createElement(react_ui_1.Tag, { color: 'primary' }, t('current device tag label')),
57
- react_2.default.createElement(react_ui_1.Avatar.Label, { classNames: 'flex-1 text-sm truncate' }, displayName),
58
- device.kind === halo_1.DeviceKind.CURRENT && (react_2.default.createElement(react_ui_1.DropdownMenu.Root, null,
59
- react_2.default.createElement(react_ui_1.DropdownMenu.Trigger, { asChild: true },
60
- react_2.default.createElement(react_ui_1.Button, { variant: 'ghost', classNames: 'pli-0 is-[--rail-action] bs-[--rail-action]', "data-testid": `device-list-item${isCurrent ? '-current' : ''}.options` },
61
- react_2.default.createElement("span", { className: 'sr-only' }, t('more options label')),
62
- react_2.default.createElement(react_1.DotsThree, { className: (0, react_ui_theme_1.getSize)(5) }))),
63
- react_2.default.createElement(react_ui_1.DropdownMenu.Content, null,
64
- react_2.default.createElement(react_ui_1.DropdownMenu.Viewport, null,
65
- react_2.default.createElement(react_ui_1.DropdownMenu.Item, { "data-testid": 'device-list-item-current.join-existing', onClick: onClickJoinExisting },
66
- react_2.default.createElement(react_1.Intersect, { className: (0, react_ui_theme_1.getSize)(5) }),
67
- t('choose join new identity label')),
68
- react_2.default.createElement(react_ui_1.DropdownMenu.Item, { "data-testid": 'device-list-item-current.reset', onClick: onClickReset },
69
- react_2.default.createElement(react_1.Power, { className: (0, react_ui_theme_1.getSize)(5) }),
70
- t('reset device label')))))))));
71
- });
72
- //# sourceMappingURL=DeviceListItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceListItem.js","sourceRoot":"","sources":["../../../../../src/components/DeviceList/DeviceListItem.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,iDAU+B;AAC/B,+CAAyE;AAEzE,qDAAkD;AAClD,kDAAyE;AACzE,6CASwB;AACxB,yDAA+C;AAC/C,qCAA2C;AAI3C,MAAM,SAAS,GAAc;IAC3B,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACL,CAAC;AAEW,QAAA,cAAc,GAAG,IAAA,kBAAU,EAGtC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;;IAC/G,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,IAAA,oBAAa,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAA,gBAAK,EAAC,yBAAyB,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO;QAChC,CAAC,CAAC,CAAC,CAAC,yBAAyB,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5F,CAAC,CAAC,IAAA,2BAAY,EAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,iBAAU,CAAC,OAAO,CAAC;IACrD,OAAO,CACL,8BAAC,mBAAQ,CAAC,IAAI,OACR,KAAK,EACT,UAAU,EAAE,CAAC,+BAA+B,EAAE,UAAU,CAAC,iBAC5C,mBAAmB,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAC7D,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,YAAY;QAEjB,8BAAC,iBAAM,CAAC,IAAI,IACV,MAAM,EAAE,MAAM,CAAC,QAAQ,KAAK,aAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAC/E,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,aAAa,CAAC,GAAG,EACtB,OAAO,EAAC,QAAQ;YAEhB,8BAAC,iBAAM,CAAC,KAAK,IAAC,UAAU,EAAC,mBAAmB,IACzC,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,IAAI,EAAC,CAAC,CAAC,CACtB,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAC3C,8BAAC,eAAO,OAAK,SAAS,GAAI,CAC3B,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAC9C,8BAAC,eAAO,OAAK,SAAS,GAAI,CAC3B,CAAC,CAAC,CAAC,CAAC,iBAAU,CAAC,KAAK,EAAE,iBAAU,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC/E,8BAAC,aAAK,OAAK,SAAS,GAAI,CACzB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAC9C,8BAAC,oBAAY,OAAK,SAAS,GAAI,CAChC,CAAC,CAAC,CAAC,CACF,8BAAC,eAAO,OAAK,SAAS,GAAI,CAC3B,CACF,CAAC,CAAC,CAAC,CACF,8BAAC,iBAAM,CAAC,QAAQ,IAAC,IAAI,EAAE,aAAa,CAAC,KAAK,GAAI,CAC/C,CACY;YACd,SAAS,IAAI,8BAAC,cAAG,IAAC,KAAK,EAAC,SAAS,IAAE,CAAC,CAAC,0BAA0B,CAAC,CAAO;YACxE,8BAAC,iBAAM,CAAC,KAAK,IAAC,UAAU,EAAC,yBAAyB,IAAE,WAAW,CAAgB;YAC9E,MAAM,CAAC,IAAI,KAAK,iBAAU,CAAC,OAAO,IAAI,CACrC,8BAAC,uBAAY,CAAC,IAAI;gBAChB,8BAAC,uBAAY,CAAC,OAAO,IAAC,OAAO;oBAC3B,8BAAC,iBAAM,IACL,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,6CAA6C,iBAC3C,mBAAmB,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU;wBAErE,wCAAM,SAAS,EAAC,SAAS,IAAE,CAAC,CAAC,oBAAoB,CAAC,CAAQ;wBAC1D,8BAAC,iBAAS,IAAC,SAAS,EAAE,IAAA,wBAAO,EAAC,CAAC,CAAC,GAAI,CAC7B,CACY;gBACvB,8BAAC,uBAAY,CAAC,OAAO;oBACnB,8BAAC,uBAAY,CAAC,QAAQ;wBAKpB,8BAAC,uBAAY,CAAC,IAAI,mBAAa,wCAAwC,EAAC,OAAO,EAAE,mBAAmB;4BAClG,8BAAC,iBAAS,IAAC,SAAS,EAAE,IAAA,wBAAO,EAAC,CAAC,CAAC,GAAI;4BACnC,CAAC,CAAC,gCAAgC,CAAC,CAClB;wBACpB,8BAAC,uBAAY,CAAC,IAAI,mBAAa,gCAAgC,EAAC,OAAO,EAAE,YAAY;4BACnF,8BAAC,aAAK,IAAC,SAAS,EAAE,IAAA,wBAAO,EAAC,CAAC,CAAC,GAAI;4BAC/B,CAAC,CAAC,oBAAoB,CAAC,CACN,CACE,CACH,CACL,CACrB,CACW,CACA,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,27 +0,0 @@
1
- import { type SpaceMember } from '@dxos/react-client/echo';
2
- import { type Device } from '@dxos/react-client/halo';
3
- export type DeviceListProps = {
4
- devices: Device[];
5
- onClickAdd?: () => void;
6
- onClickEdit?: (device: Device) => void;
7
- onClickReset?: () => void;
8
- onClickJoinExisting?: () => void;
9
- };
10
- export type AgentFormProps = {
11
- onAgentCreate?: () => Promise<void>;
12
- onAgentDestroy?: () => Promise<void>;
13
- agentStatus?: string;
14
- agentActive?: boolean;
15
- agentProviderDisabled?: boolean;
16
- validationMessage?: string;
17
- agentHostingEnabled?: boolean;
18
- };
19
- export type DeviceListItemProps = {
20
- device: Device;
21
- presence?: SpaceMember['presence'];
22
- onClickAdd?: () => void;
23
- onClickEdit?: () => void;
24
- onClickReset?: () => void;
25
- onClickJoinExisting?: () => void;
26
- };
27
- //# sourceMappingURL=DeviceListProps.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceListProps.d.ts","sourceRoot":"","sources":["../../../../../src/components/DeviceList/DeviceListProps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC,CAAC"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=DeviceListProps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeviceListProps.js","sourceRoot":"","sources":["../../../../../src/components/DeviceList/DeviceListProps.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE"}
@@ -1,3 +0,0 @@
1
- export * from './DeviceList';
2
- export * from './DeviceListProps';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/DeviceList/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- __exportStar(require("./DeviceList"), exports);
21
- __exportStar(require("./DeviceListProps"), exports);
22
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/DeviceList/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,+CAA6B;AAC7B,oDAAkC"}
@@ -1,66 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { Database, Plus, Power } from '@phosphor-icons/react';
6
- import React from 'react';
7
-
8
- import { Avatar, Button, Tooltip, useTranslation } from '@dxos/react-ui';
9
- import { descriptionText, getSize, mx } from '@dxos/react-ui-theme';
10
-
11
- import { type AgentFormProps } from './DeviceList';
12
-
13
- export const AgentConfig = ({ agentActive, agentStatus, onAgentDestroy, onAgentCreate }: AgentFormProps) => {
14
- const { t } = useTranslation('os');
15
- return (
16
- <>
17
- <h2 className={mx(descriptionText, 'text-center mbs-4')}>{t('agent heading')}</h2>
18
- {agentActive ? (
19
- <div role='group' className='flex gap-2 items-center'>
20
- <Avatar.Root status={agentStatus ? 'active' : 'inactive'} variant='square'>
21
- <Avatar.Frame classNames='place-self-center'>
22
- <Database weight='duotone' width={24} height={24} x={8} y={8} />
23
- </Avatar.Frame>
24
- <Avatar.Label classNames='flex-1 text-sm truncate'>{t('agent device label')}</Avatar.Label>
25
- </Avatar.Root>
26
- <Tooltip.Root>
27
- <Tooltip.Trigger asChild>
28
- <Button
29
- variant='ghost'
30
- classNames='pli-0 is-[--rail-action] bs-[--rail-action]'
31
- data-testid='agent.destroy'
32
- onClick={onAgentDestroy}
33
- >
34
- <span className='sr-only'>{t('destroy agent label')}</span>
35
- <Power className={getSize(5)} />
36
- </Button>
37
- </Tooltip.Trigger>
38
- <Tooltip.Portal>
39
- <Tooltip.Content side='bottom' classNames='z-50'>
40
- {t('destroy agent label')}
41
- </Tooltip.Content>
42
- </Tooltip.Portal>
43
- </Tooltip.Root>
44
- </div>
45
- ) : (
46
- <>
47
- <Button
48
- variant='ghost'
49
- classNames='mlb-2 is-full justify-start gap-2 !pis-0 !pie-3'
50
- data-testid='devices-panel.create-agent'
51
- onClick={onAgentCreate}
52
- aria-describedby='devices-panel.create-agent.description'
53
- >
54
- <div role='img' className={mx(getSize(8), 'm-1 rounded-sm surface-input grid place-items-center')}>
55
- <Plus weight='light' className={getSize(6)} />
56
- </div>
57
- <span className='grow font-medium text-start'>{t('create agent label')}</span>
58
- </Button>
59
- <p id='devices-panel.create-agent.description' className={descriptionText}>
60
- {t('agent message body')}
61
- </p>
62
- </>
63
- )}
64
- </>
65
- );
66
- };
@@ -1,54 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { CaretRight, Plus } from '@phosphor-icons/react';
6
- import React from 'react';
7
-
8
- import { type Device } from '@dxos/react-client/halo';
9
- import { Button, List, useTranslation } from '@dxos/react-ui';
10
- import { descriptionText, getSize, mx } from '@dxos/react-ui-theme';
11
-
12
- import { DeviceListItem } from './DeviceListItem';
13
- import { type DeviceListProps } from './DeviceListProps';
14
-
15
- export const DeviceList = ({
16
- devices,
17
- onClickAdd,
18
- onClickEdit,
19
- onClickReset,
20
- onClickJoinExisting,
21
- }: DeviceListProps) => {
22
- const { t } = useTranslation('os');
23
- return (
24
- <>
25
- <h2 className={mx(descriptionText, 'text-center mbs-4')}>{t('devices heading')}</h2>
26
- {devices.length > 0 && (
27
- <List>
28
- {devices.map((device: Device) => {
29
- return (
30
- <DeviceListItem
31
- key={device.deviceKey.toHex()}
32
- device={device}
33
- onClickEdit={() => onClickEdit?.(device)}
34
- {...{ onClickReset, onClickJoinExisting }}
35
- />
36
- );
37
- })}
38
- </List>
39
- )}
40
- <Button
41
- variant='ghost'
42
- classNames='justify-start gap-2 !pis-0 !pie-3'
43
- data-testid='devices-panel.create-invitation'
44
- onClick={onClickAdd}
45
- >
46
- <div role='img' className={mx(getSize(8), 'm-1 rounded-sm surface-input grid place-items-center')}>
47
- <Plus weight='light' className={getSize(6)} />
48
- </div>
49
- <span className='grow font-medium text-start'>{t('choose add device label')}</span>
50
- <CaretRight weight='bold' className={getSize(4)} />
51
- </Button>
52
- </>
53
- );
54
- };
@@ -1,120 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import {
6
- Compass,
7
- Desktop,
8
- DeviceMobile,
9
- Devices,
10
- DotsThree,
11
- type IconProps,
12
- Intersect,
13
- Power,
14
- Robot,
15
- } from '@phosphor-icons/react';
16
- import React, { type ComponentPropsWithoutRef, forwardRef } from 'react';
17
-
18
- import { generateName } from '@dxos/display-name';
19
- import { Device, DeviceType, DeviceKind } from '@dxos/react-client/halo';
20
- import {
21
- ListItem,
22
- Avatar,
23
- useId,
24
- type ThemedClassName,
25
- Tag,
26
- useTranslation,
27
- DropdownMenu,
28
- Button,
29
- } from '@dxos/react-ui';
30
- import { getSize } from '@dxos/react-ui-theme';
31
- import { keyToFallback } from '@dxos/util';
32
-
33
- import { type DeviceListItemProps } from './DeviceListProps';
34
-
35
- const iconProps: IconProps = {
36
- weight: 'duotone',
37
- width: 24,
38
- height: 24,
39
- x: 8,
40
- y: 8,
41
- };
42
-
43
- export const DeviceListItem = forwardRef<
44
- HTMLLIElement,
45
- ThemedClassName<ComponentPropsWithoutRef<'li'>> & DeviceListItemProps
46
- >(({ device, onClickAdd, onClickEdit, onClickReset, onClickJoinExisting, classNames, ...props }, forwardedRef) => {
47
- const { t } = useTranslation('os');
48
- const fallbackValue = keyToFallback(device.deviceKey);
49
- const labelId = useId('identityListItem__label');
50
- const displayName = device.profile
51
- ? t('device name placeholder', { os: device.profile.os, platform: device.profile.platform })
52
- : generateName(device.deviceKey.toHex());
53
- const isCurrent = device.kind === DeviceKind.CURRENT;
54
- return (
55
- <ListItem.Root
56
- {...props}
57
- classNames={['flex gap-2 items-center mlb-2', classNames]}
58
- data-testid={`device-list-item${isCurrent ? '-current' : ''}`}
59
- labelId={labelId}
60
- ref={forwardedRef}
61
- >
62
- <Avatar.Root
63
- status={device.presence === Device.PresenceState.ONLINE ? 'active' : 'inactive'}
64
- labelId={labelId}
65
- hue={fallbackValue.hue}
66
- variant='square'
67
- >
68
- <Avatar.Frame classNames='place-self-center'>
69
- {device.profile?.type ? (
70
- device.profile.type === DeviceType.BROWSER ? (
71
- <Compass {...iconProps} />
72
- ) : device.profile.type === DeviceType.NATIVE ? (
73
- <Desktop {...iconProps} />
74
- ) : [DeviceType.AGENT, DeviceType.AGENT_MANAGED].includes(device.profile.type) ? (
75
- <Robot {...iconProps} />
76
- ) : device.profile.type === DeviceType.MOBILE ? (
77
- <DeviceMobile {...iconProps} />
78
- ) : (
79
- <Devices {...iconProps} />
80
- )
81
- ) : (
82
- <Avatar.Fallback text={fallbackValue.emoji} />
83
- )}
84
- </Avatar.Frame>
85
- {isCurrent && <Tag color='primary'>{t('current device tag label')}</Tag>}
86
- <Avatar.Label classNames='flex-1 text-sm truncate'>{displayName}</Avatar.Label>
87
- {device.kind === DeviceKind.CURRENT && (
88
- <DropdownMenu.Root>
89
- <DropdownMenu.Trigger asChild>
90
- <Button
91
- variant='ghost'
92
- classNames='pli-0 is-[--rail-action] bs-[--rail-action]'
93
- data-testid={`device-list-item${isCurrent ? '-current' : ''}.options`}
94
- >
95
- <span className='sr-only'>{t('more options label')}</span>
96
- <DotsThree className={getSize(5)} />
97
- </Button>
98
- </DropdownMenu.Trigger>
99
- <DropdownMenu.Content>
100
- <DropdownMenu.Viewport>
101
- {/* <DropdownMenu.Item disabled onClick={onClickEdit}> */}
102
- {/* <PencilSimpleLine className={getSize(5)} /> */}
103
- {/* {t('edit device label')} */}
104
- {/* </DropdownMenu.Item> */}
105
- <DropdownMenu.Item data-testid='device-list-item-current.join-existing' onClick={onClickJoinExisting}>
106
- <Intersect className={getSize(5)} />
107
- {t('choose join new identity label')}
108
- </DropdownMenu.Item>
109
- <DropdownMenu.Item data-testid='device-list-item-current.reset' onClick={onClickReset}>
110
- <Power className={getSize(5)} />
111
- {t('reset device label')}
112
- </DropdownMenu.Item>
113
- </DropdownMenu.Viewport>
114
- </DropdownMenu.Content>
115
- </DropdownMenu.Root>
116
- )}
117
- </Avatar.Root>
118
- </ListItem.Root>
119
- );
120
- });
@@ -1,33 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type SpaceMember } from '@dxos/react-client/echo';
6
- import { type Device } from '@dxos/react-client/halo';
7
-
8
- export type DeviceListProps = {
9
- devices: Device[];
10
- onClickAdd?: () => void;
11
- onClickEdit?: (device: Device) => void;
12
- onClickReset?: () => void;
13
- onClickJoinExisting?: () => void;
14
- };
15
-
16
- export type AgentFormProps = {
17
- onAgentCreate?: () => Promise<void>;
18
- onAgentDestroy?: () => Promise<void>;
19
- agentStatus?: string;
20
- agentActive?: boolean;
21
- agentProviderDisabled?: boolean;
22
- validationMessage?: string;
23
- agentHostingEnabled?: boolean;
24
- };
25
-
26
- export type DeviceListItemProps = {
27
- device: Device;
28
- presence?: SpaceMember['presence'];
29
- onClickAdd?: () => void;
30
- onClickEdit?: () => void;
31
- onClickReset?: () => void;
32
- onClickJoinExisting?: () => void;
33
- };
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './DeviceList';
6
- export * from './DeviceListProps';