@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.
- package/dist/bundle/shell.mjs +81827 -10
- package/dist/bundle/shell.mjs.map +1 -1
- package/dist/bundle/shell.umd.js +89 -152
- package/dist/bundle/shell.umd.js.map +1 -1
- package/dist/bundle/style.css +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react.mjs +792 -831
- package/dist/lib/browser/react.mjs.map +4 -4
- package/dist/lib/browser/testing/index.mjs +2 -4
- package/dist/lib/browser/testing/index.mjs.map +2 -2
- package/dist/types/src/components/EmojiPicker.d.ts +2 -9
- package/dist/types/src/components/EmojiPicker.d.ts.map +1 -1
- package/dist/types/src/components/EmojiPicker.js +3 -57
- package/dist/types/src/components/EmojiPicker.js.map +1 -1
- package/dist/types/src/components/HuePicker.d.ts +2 -9
- package/dist/types/src/components/HuePicker.d.ts.map +1 -1
- package/dist/types/src/components/HuePicker.js +6 -75
- package/dist/types/src/components/HuePicker.js.map +1 -1
- package/dist/types/src/components/IdentityList/DeviceList.d.ts +7 -0
- package/dist/types/src/components/IdentityList/DeviceList.d.ts.map +1 -0
- package/dist/types/src/components/IdentityList/DeviceList.js +34 -0
- package/dist/types/src/components/IdentityList/DeviceList.js.map +1 -0
- package/dist/types/src/components/IdentityList/index.d.ts +1 -0
- package/dist/types/src/components/IdentityList/index.d.ts.map +1 -1
- package/dist/types/src/components/IdentityList/index.js +1 -0
- package/dist/types/src/components/IdentityList/index.js.map +1 -1
- package/dist/types/src/components/Panel/Action.d.ts +2 -2
- package/dist/types/src/components/Viewport/Viewport.d.ts +1 -1
- package/dist/types/src/components/index.d.ts +0 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/index.js +0 -2
- package/dist/types/src/components/index.js.map +1 -1
- package/dist/types/src/composites/Shell/Shell.d.ts.map +1 -1
- package/dist/types/src/composites/Shell/Shell.js +5 -1
- package/dist/types/src/composites/Shell/Shell.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +40 -80
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts +3 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +43 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +11 -8
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts +1 -1
- package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/identityMachine.js +24 -0
- package/dist/types/src/panels/IdentityPanel/identityMachine.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts +3 -0
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js +26 -0
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.d.ts +10 -0
- package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.js +23 -0
- package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts +4 -4
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js +43 -9
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +2 -2
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/index.d.ts +2 -0
- package/dist/types/src/panels/IdentityPanel/steps/index.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/index.js +2 -0
- package/dist/types/src/panels/IdentityPanel/steps/index.js.map +1 -1
- package/dist/types/src/testing/shell-manager.d.ts.map +1 -1
- package/dist/types/src/testing/shell-manager.js +2 -4
- package/dist/types/src/testing/shell-manager.js.map +1 -1
- package/dist/types/src/translations/locales/en-US.d.ts +2 -12
- package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
- package/dist/types/src/translations/locales/en-US.js +2 -12
- package/dist/types/src/translations/locales/en-US.js.map +1 -1
- package/package.json +19 -19
- package/src/components/EmojiPicker.tsx +4 -101
- package/src/components/HuePicker.tsx +5 -99
- package/src/components/IdentityList/DeviceList.tsx +49 -0
- package/src/components/IdentityList/index.ts +1 -0
- package/src/components/index.ts +0 -2
- package/src/composites/Shell/Shell.tsx +7 -1
- package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +63 -0
- package/src/panels/IdentityPanel/IdentityPanel.tsx +34 -123
- package/src/panels/IdentityPanel/IdentityPanelProps.ts +14 -10
- package/src/panels/IdentityPanel/identityMachine.ts +31 -1
- package/src/panels/IdentityPanel/steps/AgentForm.tsx +61 -0
- package/src/panels/IdentityPanel/steps/DeviceManager.tsx +41 -0
- package/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx +76 -23
- package/src/panels/IdentityPanel/steps/ProfileForm.tsx +4 -12
- package/src/panels/IdentityPanel/steps/index.ts +2 -0
- package/src/testing/shell-manager.ts +2 -4
- package/src/translations/locales/en-US.ts +2 -13
- package/dist/bundle/index-D-K0uxrm.mjs +0 -94
- package/dist/bundle/index-D-K0uxrm.mjs.map +0 -1
- package/dist/bundle/index-DRtLjStG.mjs +0 -96550
- package/dist/bundle/index-DRtLjStG.mjs.map +0 -1
- package/dist/types/src/components/AgentConfig.d.ts +0 -3
- package/dist/types/src/components/AgentConfig.d.ts.map +0 -1
- package/dist/types/src/components/AgentConfig.js +0 -37
- package/dist/types/src/components/AgentConfig.js.map +0 -1
- package/dist/types/src/components/DeviceList/DeviceList.d.ts +0 -3
- package/dist/types/src/components/DeviceList/DeviceList.d.ts.map +0 -1
- package/dist/types/src/components/DeviceList/DeviceList.js +0 -29
- package/dist/types/src/components/DeviceList/DeviceList.js.map +0 -1
- package/dist/types/src/components/DeviceList/DeviceListItem.d.ts +0 -6
- package/dist/types/src/components/DeviceList/DeviceListItem.d.ts.map +0 -1
- package/dist/types/src/components/DeviceList/DeviceListItem.js +0 -72
- package/dist/types/src/components/DeviceList/DeviceListItem.js.map +0 -1
- package/dist/types/src/components/DeviceList/DeviceListProps.d.ts +0 -27
- package/dist/types/src/components/DeviceList/DeviceListProps.d.ts.map +0 -1
- package/dist/types/src/components/DeviceList/DeviceListProps.js +0 -6
- package/dist/types/src/components/DeviceList/DeviceListProps.js.map +0 -1
- package/dist/types/src/components/DeviceList/index.d.ts +0 -3
- package/dist/types/src/components/DeviceList/index.d.ts.map +0 -1
- package/dist/types/src/components/DeviceList/index.js +0 -22
- package/dist/types/src/components/DeviceList/index.js.map +0 -1
- package/src/components/AgentConfig.tsx +0 -66
- package/src/components/DeviceList/DeviceList.tsx +0 -54
- package/src/components/DeviceList/DeviceListItem.tsx +0 -120
- package/src/components/DeviceList/DeviceListProps.ts +0 -33
- package/src/components/DeviceList/index.ts +0 -6
|
@@ -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 +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":"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"}
|
|
@@ -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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceListProps.js","sourceRoot":"","sources":["../../../../../src/components/DeviceList/DeviceListProps.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE"}
|
|
@@ -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
|
-
};
|