@dxos/shell 0.4.6 → 0.4.7-main.0a4f1cd
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 +63680 -21117
- package/dist/bundle/shell.mjs.map +1 -1
- package/dist/bundle/shell.umd.js +793 -78
- 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 +769 -591
- package/dist/lib/browser/react.mjs.map +4 -4
- package/dist/types/src/components/EmojiPicker.d.ts +11 -0
- package/dist/types/src/components/EmojiPicker.d.ts.map +1 -0
- package/dist/types/src/components/EmojiPicker.js +79 -0
- package/dist/types/src/components/EmojiPicker.js.map +1 -0
- package/dist/types/src/components/HuePicker.d.ts +11 -0
- package/dist/types/src/components/HuePicker.d.ts.map +1 -0
- package/dist/types/src/components/HuePicker.js +56 -0
- package/dist/types/src/components/HuePicker.js.map +1 -0
- package/dist/types/src/components/IdentityList/DeviceList.d.ts.map +1 -1
- package/dist/types/src/components/IdentityList/DeviceList.js +1 -1
- package/dist/types/src/components/IdentityList/DeviceList.js.map +1 -1
- package/dist/types/src/components/IdentityList/IdentityListItem.d.ts.map +1 -1
- package/dist/types/src/components/IdentityList/IdentityListItem.js +5 -5
- package/dist/types/src/components/IdentityList/IdentityListItem.js.map +1 -1
- package/dist/types/src/components/InvitationList/InvitationListItem.d.ts.map +1 -1
- package/dist/types/src/components/InvitationList/InvitationListItem.js +2 -2
- package/dist/types/src/components/InvitationList/InvitationListItem.js.map +1 -1
- package/dist/types/src/components/SpaceListItem.d.ts.map +1 -1
- package/dist/types/src/components/SpaceListItem.js +2 -3
- package/dist/types/src/components/SpaceListItem.js.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/index.js +2 -0
- package/dist/types/src/components/index.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +6 -5
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +16 -3
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +12 -3
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.d.ts.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js +8 -7
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js +2 -2
- package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js.map +1 -1
- package/dist/types/src/steps/InvitationManager.d.ts.map +1 -1
- package/dist/types/src/steps/InvitationManager.js +5 -4
- package/dist/types/src/steps/InvitationManager.js.map +1 -1
- package/dist/types/src/translations/locales/en-US.d.ts +21 -0
- package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
- package/dist/types/src/translations/locales/en-US.js +21 -0
- package/dist/types/src/translations/locales/en-US.js.map +1 -1
- package/dist/types/src/util/index.d.ts +0 -1
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/src/util/index.js +0 -1
- package/dist/types/src/util/index.js.map +1 -1
- package/package.json +22 -21
- package/src/components/EmojiPicker.tsx +82 -0
- package/src/components/HuePicker.tsx +87 -0
- package/src/components/IdentityList/DeviceList.tsx +1 -0
- package/src/components/IdentityList/IdentityListItem.tsx +9 -5
- package/src/components/InvitationList/InvitationListItem.tsx +2 -2
- package/src/components/SpaceListItem.tsx +4 -5
- package/src/components/index.ts +2 -0
- package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +17 -4
- package/src/panels/IdentityPanel/IdentityPanel.tsx +5 -4
- package/src/panels/IdentityPanel/steps/ProfileForm.tsx +29 -7
- package/src/panels/JoinPanel/steps/IdentityAdded.tsx +7 -7
- package/src/panels/JoinPanel/steps/InvitationAuthenticator.tsx +2 -2
- package/src/steps/InvitationManager.tsx +4 -3
- package/src/translations/locales/en-US.ts +21 -0
- package/src/util/index.ts +0 -1
- package/dist/types/src/util/toEmoji.d.ts +0 -2
- package/dist/types/src/util/toEmoji.d.ts.map +0 -1
- package/dist/types/src/util/toEmoji.js +0 -26
- package/dist/types/src/util/toEmoji.js.map +0 -1
- package/src/util/toEmoji.ts +0 -22
|
@@ -31,25 +31,26 @@ const react_1 = __importStar(require("react"));
|
|
|
31
31
|
const display_name_1 = require("@dxos/display-name");
|
|
32
32
|
const react_ui_1 = require("@dxos/react-ui");
|
|
33
33
|
const react_ui_theme_1 = require("@dxos/react-ui-theme");
|
|
34
|
+
const util_1 = require("@dxos/util");
|
|
34
35
|
const components_1 = require("../../../components");
|
|
35
36
|
const IdentityAdded = (props) => {
|
|
36
|
-
var _a, _b, _c;
|
|
37
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
37
38
|
const { mode, addedIdentity, active, send, onDone, doneActionParent } = props;
|
|
38
39
|
const disabled = !active;
|
|
39
40
|
const { t } = (0, react_ui_1.useTranslation)('os');
|
|
40
|
-
const
|
|
41
|
+
const addedIdentityHex = (_a = addedIdentity === null || addedIdentity === void 0 ? void 0 : addedIdentity.identityKey.toHex()) !== null && _a !== void 0 ? _a : '0';
|
|
42
|
+
const fallbackValue = (0, util_1.hexToFallback)(addedIdentityHex);
|
|
41
43
|
const labelId = (0, react_ui_1.useId)('identityListItem__label');
|
|
42
|
-
const
|
|
43
|
-
const displayName = (_b = (_a = addedIdentity === null || addedIdentity === void 0 ? void 0 : addedIdentity.profile) === null || _a === void 0 ? void 0 : _a.displayName) !== null && _b !== void 0 ? _b : (addedIdentity && (0, display_name_1.generateName)(addedIdentity === null || addedIdentity === void 0 ? void 0 : addedIdentity.identityKey.toHex()));
|
|
44
|
+
const displayName = (_c = (_b = addedIdentity === null || addedIdentity === void 0 ? void 0 : addedIdentity.profile) === null || _b === void 0 ? void 0 : _b.displayName) !== null && _c !== void 0 ? _c : (addedIdentity && (0, display_name_1.generateName)(addedIdentityHex));
|
|
44
45
|
const doneAction = (react_1.default.createElement(components_1.Action, { ...(onDone && { onClick: () => onDone(null) }), disabled: disabled, "data-autofocus": 'confirmingAddedIdentity', "data-testid": 'identity-added-done' },
|
|
45
46
|
react_1.default.createElement("span", null, t('done label'))));
|
|
46
47
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
47
48
|
react_1.default.createElement(components_1.StepHeading, null, t('identity added label')),
|
|
48
49
|
react_1.default.createElement("div", { role: 'none', className: 'grow flex flex-col items-center justify-center text-center gap-2' },
|
|
49
|
-
react_1.default.createElement(react_ui_1.Avatar.Root, { status: 'active', labelId: labelId },
|
|
50
|
+
react_1.default.createElement(react_ui_1.Avatar.Root, { status: 'active', labelId: labelId, hue: ((_e = (_d = addedIdentity === null || addedIdentity === void 0 ? void 0 : addedIdentity.profile) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.hue) || fallbackValue.hue },
|
|
50
51
|
react_1.default.createElement(react_ui_1.Avatar.Frame, null,
|
|
51
|
-
react_1.default.createElement(react_ui_1.Avatar.Fallback, {
|
|
52
|
-
react_1.default.createElement(react_ui_1.Avatar.Label, { classNames: (0, react_ui_theme_1.mx)('text-lg truncate', !((
|
|
52
|
+
react_1.default.createElement(react_ui_1.Avatar.Fallback, { text: ((_g = (_f = addedIdentity === null || addedIdentity === void 0 ? void 0 : addedIdentity.profile) === null || _f === void 0 ? void 0 : _f.data) === null || _g === void 0 ? void 0 : _g.emoji) || fallbackValue.emoji })),
|
|
53
|
+
react_1.default.createElement(react_ui_1.Avatar.Label, { classNames: (0, react_ui_theme_1.mx)('text-lg truncate', !((_h = addedIdentity === null || addedIdentity === void 0 ? void 0 : addedIdentity.profile) === null || _h === void 0 ? void 0 : _h.displayName) && 'font-mono') }, displayName))),
|
|
53
54
|
react_1.default.createElement(components_1.Actions, null, mode === 'halo-only' ? (doneActionParent ? ((0, react_1.cloneElement)(doneActionParent, {}, doneAction)) : (doneAction)) : (react_1.default.createElement(components_1.Action, { variant: 'primary', disabled: disabled || !addedIdentity, onClick: () => addedIdentity && send({ type: 'selectIdentity', identity: addedIdentity }), "data-autofocus": 'confirmingAddedIdentity' }, t('continue label'))))));
|
|
54
55
|
};
|
|
55
56
|
exports.IdentityAdded = IdentityAdded;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityAdded.js","sourceRoot":"","sources":["../../../../../../src/panels/JoinPanel/steps/IdentityAdded.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,+CAA4C;AAE5C,qDAAkD;AAElD,
|
|
1
|
+
{"version":3,"file":"IdentityAdded.js","sourceRoot":"","sources":["../../../../../../src/panels/JoinPanel/steps/IdentityAdded.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,+CAA4C;AAE5C,qDAAkD;AAElD,6CAA+D;AAC/D,yDAA0C;AAC1C,qCAA2C;AAE3C,oDAAmE;AAQ5D,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;;IACzD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IAC9E,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IAEnC,MAAM,gBAAgB,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC,KAAK,EAAE,mCAAI,GAAG,CAAC;IACnE,MAAM,aAAa,GAAG,IAAA,oBAAa,EAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAA,gBAAK,EAAC,yBAAyB,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,0CAAE,WAAW,mCAAI,CAAC,aAAa,IAAI,IAAA,2BAAY,EAAC,gBAAgB,CAAC,CAAC,CAAC;IAE7G,MAAM,UAAU,GAAG,CACjB,8BAAC,mBAAM,OACD,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAC/C,QAAQ,EAAE,QAAQ,oBACH,yBAAyB,iBAC5B,qBAAqB;QAEjC,4CAAO,CAAC,CAAC,YAAY,CAAC,CAAQ,CACvB,CACV,CAAC;IAEF,OAAO,CACL;QACE,8BAAC,wBAAW,QAAE,CAAC,CAAC,sBAAsB,CAAC,CAAe;QACtD,uCAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,kEAAkE;YAC3F,8BAAC,iBAAM,CAAC,IAAI,IAAC,MAAM,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAA,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,0CAAE,IAAI,0CAAE,GAAG,KAAI,aAAa,CAAC,GAAG;gBACxG,8BAAC,iBAAM,CAAC,KAAK;oBACX,8BAAC,iBAAM,CAAC,QAAQ,IAAC,IAAI,EAAE,CAAA,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,0CAAE,IAAI,0CAAE,KAAK,KAAI,aAAa,CAAC,KAAK,GAAI,CACxE;gBACf,8BAAC,iBAAM,CAAC,KAAK,IAAC,UAAU,EAAE,IAAA,mBAAE,EAAC,kBAAkB,EAAE,CAAC,CAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,0CAAE,WAAW,CAAA,IAAI,WAAW,CAAC,IAClG,WAAW,CACC,CACH,CACV;QACN,8BAAC,oBAAO,QACL,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CACtB,gBAAgB,CAAC,CAAC,CAAC,CACjB,IAAA,oBAAY,EAAC,gBAAgB,EAAE,EAAE,EAAE,UAAU,CAAC,CAC/C,CAAC,CAAC,CAAC,CACF,UAAU,CACX,CACF,CAAC,CAAC,CAAC,CACF,8BAAC,mBAAM,IACL,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,QAAQ,IAAI,CAAC,aAAa,EACpC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,oBAC1E,yBAAyB,IAEvC,CAAC,CAAC,gBAAgB,CAAC,CACb,CACV,CACO,CACT,CACJ,CAAC;AACJ,CAAC,CAAC;AAtDW,QAAA,aAAa,iBAsDxB"}
|
|
@@ -29,8 +29,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.InvitationAuthenticator = void 0;
|
|
30
30
|
const react_1 = __importStar(require("react"));
|
|
31
31
|
const react_ui_1 = require("@dxos/react-ui");
|
|
32
|
+
const util_1 = require("@dxos/util");
|
|
32
33
|
const components_1 = require("../../../components");
|
|
33
|
-
const util_1 = require("../../../util");
|
|
34
34
|
const pinLength = 6;
|
|
35
35
|
const InvitationAuthenticator = ({ failed, Kind, active, pending, invitationId, onInvitationAuthenticate, onInvitationCancel, }) => {
|
|
36
36
|
const disabled = !active || pending;
|
|
@@ -46,7 +46,7 @@ const InvitationAuthenticator = ({ failed, Kind, active, pending, invitationId,
|
|
|
46
46
|
};
|
|
47
47
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
48
48
|
react_1.default.createElement("div", { role: 'none', className: 'grow flex flex-col justify-center' },
|
|
49
|
-
invitationId && react_1.default.createElement(components_1.Emoji, { text: (0, util_1.
|
|
49
|
+
invitationId && react_1.default.createElement(components_1.Emoji, { text: (0, util_1.hexToEmoji)(invitationId) }),
|
|
50
50
|
react_1.default.createElement(react_ui_1.Input.Root, { ...(failed && {
|
|
51
51
|
validationValence: 'error',
|
|
52
52
|
}) },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvitationAuthenticator.js","sourceRoot":"","sources":["../../../../../../src/panels/JoinPanel/steps/InvitationAuthenticator.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,+CAA0D;AAE1D,6CAAuD;
|
|
1
|
+
{"version":3,"file":"InvitationAuthenticator.js","sourceRoot":"","sources":["../../../../../../src/panels/JoinPanel/steps/InvitationAuthenticator.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,+CAA0D;AAE1D,6CAAuD;AACvD,qCAAwC;AAExC,oDAA0E;AAG1E,MAAM,SAAS,GAAG,CAAC,CAAC;AAWb,MAAM,uBAAuB,GAAG,CAAC,EACtC,MAAM,EACN,IAAI,EACJ,MAAM,EACN,OAAO,EACP,YAAY,EACZ,wBAAwB,EACxB,kBAAkB,GACW,EAAE,EAAE;IACjC,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;IACpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAsB,CAAC;IAC9D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAiC,EAAE,EAAE;;QACxE,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9B,MAAC,QAAQ,CAAC,aAAa,CAAC,8BAA8B,cAAc,IAAI,CAAwB,0CAAE,KAAK,EAAE,CAAC;SAC3G;IACH,CAAC,CAAC;IAEF,OAAO,CACL;QACE,uCAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,mCAAmC;YAC3D,YAAY,IAAI,8BAAC,kBAAK,IAAC,IAAI,EAAE,IAAA,iBAAU,EAAC,YAAY,CAAC,GAAI;YAC1D,8BAAC,gBAAK,CAAC,IAAI,OACL,CAAC,MAAM,IAAI;oBACb,iBAAiB,EAAE,OAAO;iBAC3B,CAAC;gBAEF,8BAAC,gBAAK,CAAC,KAAK,IAAC,OAAO;oBAClB,8BAAC,wBAAW,QAAE,CAAC,CAAC,uBAAuB,CAAC,CAAe,CAC3C;gBACd,8BAAC,gBAAK,CAAC,QAAQ,IAEX,QAAQ;oBACR,MAAM,EAAE,SAAS;oBACjB,QAAQ;oBACR,SAAS,EAAE,SAAS;oBACpB,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,MAAM;oBACf,gBAAgB,EAAE,aAAa,IAAI,uBAAuB,IAAI,yCAAyC,IAAI,kCAAkC,IAAI,kBAAkB;oBACnK,4BAA4B,EAAE,IAAI;oBAClC,aAAa,EAAE,GAAG,cAAc,kBAAkB;oBAClD,gBAAgB,EAAE,IAAI,GAExB;gBACD,MAAM,IAAI,CACT,8BAAC,gBAAK,CAAC,wBAAwB,IAAC,UAAU,EAAC,aAAa;oBACtD,8BAAC,gBAAK,CAAC,UAAU,QAAE,CAAC,CAAC,gCAAgC,CAAC,CAAoB,CAC3C,CAClC,CACU,CACT;QACN,8BAAC,oBAAO;YACN,8BAAC,mBAAM,IACL,OAAO,EAAC,OAAO,EACf,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,EAAI,iBACxB,GAAG,cAAc,kCAAkC,IAE/D,CAAC,CAAC,cAAc,CAAC,CACX;YACT,8BAAC,mBAAM,IACL,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAG,QAAQ,CAAC,8BACzB,cAAc,iBAC3B,GAAG,cAAc,gCAAgC,IAE7D,CAAC,CAAC,YAAY,CAAC,CACT,CACD,CACT,CACJ,CAAC;AACJ,CAAC,CAAC;AA3EW,QAAA,uBAAuB,2BA2ElC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvitationManager.d.ts","sourceRoot":"","sources":["../../../../src/steps/InvitationManager.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,gBAAgB,EAAc,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"InvitationManager.d.ts","sourceRoot":"","sources":["../../../../src/steps/InvitationManager.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,gBAAgB,EAAc,MAAM,gCAAgC,CAAC;AAKnF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAc7C,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAC5C,OAAO,CAAC,gBAAgB,CAAC,GAAG;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAUJ,eAAO,MAAM,iBAAiB,iEAQ3B,sBAAsB,gBAoExB,CAAC"}
|
|
@@ -33,18 +33,19 @@ const react_qr_rounded_1 = require("react-qr-rounded");
|
|
|
33
33
|
const invitations_1 = require("@dxos/react-client/invitations");
|
|
34
34
|
const react_ui_1 = require("@dxos/react-ui");
|
|
35
35
|
const react_ui_theme_1 = require("@dxos/react-ui-theme");
|
|
36
|
+
const util_1 = require("@dxos/util");
|
|
36
37
|
const components_1 = require("../components");
|
|
37
|
-
const
|
|
38
|
+
const util_2 = require("../util");
|
|
38
39
|
const InvitationManagerView = ({ children, ...props }) => {
|
|
39
40
|
return (react_2.default.createElement(components_1.Viewport.View, { ...props, classNames: 'grow flex flex-col justify-around items-center' }, children));
|
|
40
41
|
};
|
|
41
|
-
const InvitationManager = ({ invitationUrl, active, send, status, type, authCode, id, }) => {
|
|
42
|
+
const InvitationManager = ({ invitationUrl, active, send, status, type, authCode, id = '0', }) => {
|
|
42
43
|
var _a;
|
|
43
44
|
const { t } = (0, react_ui_1.useTranslation)('os');
|
|
44
45
|
const qrLabel = (0, react_ui_1.useId)('invitation-manager__qr-code');
|
|
45
|
-
const statusValue = type === invitations_1.Invitation.Type.MULTIUSE ? 0 : (_a =
|
|
46
|
+
const statusValue = type === invitations_1.Invitation.Type.MULTIUSE ? 0 : (_a = util_2.invitationStatusValue.get(status)) !== null && _a !== void 0 ? _a : 0;
|
|
46
47
|
const showAuthCode = statusValue === 3;
|
|
47
|
-
const emoji = (0, util_1.
|
|
48
|
+
const emoji = (0, util_1.hexToEmoji)(id);
|
|
48
49
|
const activeView = (0, react_2.useMemo)(() => {
|
|
49
50
|
switch (true) {
|
|
50
51
|
case statusValue === 5:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvitationManager.js","sourceRoot":"","sources":["../../../../src/steps/InvitationManager.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,iDAAiD;AACjD,+CAAuC;AACvC,uDAAsC;AAEtC,gEAAmF;AACnF,6CAAuD;AACvD,yDAAoE;
|
|
1
|
+
{"version":3,"file":"InvitationManager.js","sourceRoot":"","sources":["../../../../src/steps/InvitationManager.tsx"],"names":[],"mappings":"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"}
|
|
@@ -101,5 +101,26 @@ export declare const os: {
|
|
|
101
101
|
'join new identity label': string;
|
|
102
102
|
'reset device label': string;
|
|
103
103
|
'reset device confirm message': string;
|
|
104
|
+
'emoji and color label': string;
|
|
105
|
+
'clear label': string;
|
|
106
|
+
'select emoji label': string;
|
|
107
|
+
'select hue label': string;
|
|
108
|
+
'red label': string;
|
|
109
|
+
'orange label': string;
|
|
110
|
+
'amber label': string;
|
|
111
|
+
'yellow label': string;
|
|
112
|
+
'lime label': string;
|
|
113
|
+
'green label': string;
|
|
114
|
+
'emerald label': string;
|
|
115
|
+
'teal label': string;
|
|
116
|
+
'cyan label': string;
|
|
117
|
+
'sky label': string;
|
|
118
|
+
'blue label': string;
|
|
119
|
+
'indigo label': string;
|
|
120
|
+
'violet label': string;
|
|
121
|
+
'purple label': string;
|
|
122
|
+
'fuchsia label': string;
|
|
123
|
+
'pink label': string;
|
|
124
|
+
'rose label': string;
|
|
104
125
|
};
|
|
105
126
|
//# sourceMappingURL=en-US.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.d.ts","sourceRoot":"","sources":["../../../../../src/translations/locales/en-US.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"en-US.d.ts","sourceRoot":"","sources":["../../../../../src/translations/locales/en-US.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Hd,CAAC"}
|
|
@@ -107,5 +107,26 @@ exports.os = {
|
|
|
107
107
|
'join new identity label': 'Join a new identity',
|
|
108
108
|
'reset device label': 'Reset device',
|
|
109
109
|
'reset device confirm message': 'Are you sure you want to reset your device? All data will be lost.',
|
|
110
|
+
'emoji and color label': 'Emoji and color',
|
|
111
|
+
'clear label': 'Use default',
|
|
112
|
+
'select emoji label': 'Choose an emoji to use in your avatar',
|
|
113
|
+
'select hue label': 'Choose a hue to use in your avatar',
|
|
114
|
+
'red label': 'Red',
|
|
115
|
+
'orange label': 'Orange',
|
|
116
|
+
'amber label': 'Amber',
|
|
117
|
+
'yellow label': 'Yellow',
|
|
118
|
+
'lime label': 'Lime',
|
|
119
|
+
'green label': 'Green',
|
|
120
|
+
'emerald label': 'Emerald',
|
|
121
|
+
'teal label': 'Teal',
|
|
122
|
+
'cyan label': 'Cyan',
|
|
123
|
+
'sky label': 'Sky',
|
|
124
|
+
'blue label': 'Blue',
|
|
125
|
+
'indigo label': 'Indigo',
|
|
126
|
+
'violet label': 'Violet',
|
|
127
|
+
'purple label': 'Purple',
|
|
128
|
+
'fuchsia label': 'Fuchsia',
|
|
129
|
+
'pink label': 'Pink',
|
|
130
|
+
'rose label': 'Rose',
|
|
110
131
|
};
|
|
111
132
|
//# sourceMappingURL=en-US.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.js","sourceRoot":"","sources":["../../../../../src/translations/locales/en-US.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"en-US.js","sourceRoot":"","sources":["../../../../../src/translations/locales/en-US.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/util/index.ts"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/util/index.ts"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC"}
|
|
@@ -18,5 +18,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
__exportStar(require("./invitationStatusValue"), exports);
|
|
21
|
-
__exportStar(require("./toEmoji"), exports);
|
|
22
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/util/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,0DAAwC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/util/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,0DAAwC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/shell",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.7-main.0a4f1cd",
|
|
4
4
|
"description": "DXOS’s OS experiences",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
"src"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
+
"@emoji-mart/data": "^1.1.2",
|
|
32
|
+
"@emoji-mart/react": "^1.1.1",
|
|
31
33
|
"@fluentui/react-tabster": "^9.19.0",
|
|
32
34
|
"@radix-ui/react-accordion": "^1.1.1",
|
|
33
35
|
"@radix-ui/react-context": "^1.0.0",
|
|
@@ -35,27 +37,26 @@
|
|
|
35
37
|
"@radix-ui/react-use-controllable-state": "^1.0.0",
|
|
36
38
|
"@react-hook/async": "^3.1.1",
|
|
37
39
|
"@xstate/react": "^3.2.1",
|
|
38
|
-
"
|
|
40
|
+
"emoji-mart": "^5.5.2",
|
|
39
41
|
"react-qr-rounded": "^1.0.0",
|
|
40
42
|
"url-join": "^5.0.0",
|
|
41
43
|
"xstate": "^4.37.0",
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/client-services": "0.4.
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/invariant": "0.4.
|
|
48
|
-
"@dxos/log": "0.4.
|
|
49
|
-
"@dxos/react-client": "0.4.
|
|
50
|
-
"@dxos/react-ui": "0.4.
|
|
51
|
-
"@dxos/react-ui-
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/
|
|
44
|
+
"@dxos/async": "0.4.7-main.0a4f1cd",
|
|
45
|
+
"@dxos/client-protocol": "0.4.7-main.0a4f1cd",
|
|
46
|
+
"@dxos/client-services": "0.4.7-main.0a4f1cd",
|
|
47
|
+
"@dxos/debug": "0.4.7-main.0a4f1cd",
|
|
48
|
+
"@dxos/display-name": "0.4.7-main.0a4f1cd",
|
|
49
|
+
"@dxos/invariant": "0.4.7-main.0a4f1cd",
|
|
50
|
+
"@dxos/log": "0.4.7-main.0a4f1cd",
|
|
51
|
+
"@dxos/react-client": "0.4.7-main.0a4f1cd",
|
|
52
|
+
"@dxos/react-ui": "0.4.7-main.0a4f1cd",
|
|
53
|
+
"@dxos/react-ui-theme": "0.4.7-main.0a4f1cd",
|
|
54
|
+
"@dxos/react-ui-types": "0.4.7-main.0a4f1cd",
|
|
55
|
+
"@dxos/rpc-tunnel": "0.4.7-main.0a4f1cd",
|
|
56
|
+
"@dxos/util": "0.4.7-main.0a4f1cd"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
57
59
|
"@phosphor-icons/react": "^2.0.5",
|
|
58
|
-
"@types/lodash.toarray": "^4.4.7",
|
|
59
60
|
"@types/react": "^18.0.21",
|
|
60
61
|
"@types/react-dom": "^18.0.6",
|
|
61
62
|
"@vitejs/plugin-react": "^4.2.1",
|
|
@@ -63,11 +64,11 @@
|
|
|
63
64
|
"react-dom": "^18.2.0",
|
|
64
65
|
"vite": "^5.1.3",
|
|
65
66
|
"vite-plugin-turbosnap": "^1.0.2",
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/
|
|
69
|
-
"@dxos/
|
|
70
|
-
"@dxos/
|
|
67
|
+
"@dxos/random": "0.4.7-main.0a4f1cd",
|
|
68
|
+
"@dxos/react-async": "0.4.7-main.0a4f1cd",
|
|
69
|
+
"@dxos/react-ui-theme": "0.4.7-main.0a4f1cd",
|
|
70
|
+
"@dxos/storybook-utils": "0.4.7-main.0a4f1cd",
|
|
71
|
+
"@dxos/config": "0.4.7-main.0a4f1cd"
|
|
71
72
|
},
|
|
72
73
|
"peerDependencies": {
|
|
73
74
|
"@phosphor-icons/react": "^2.0.5",
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
import emojiData from '@emoji-mart/data';
|
|
5
|
+
import EmojiMart from '@emoji-mart/react';
|
|
6
|
+
import { ArrowCounterClockwise, CaretDown } from '@phosphor-icons/react';
|
|
7
|
+
import { useControllableState } from '@radix-ui/react-use-controllable-state';
|
|
8
|
+
import React, { type Dispatch, type SetStateAction, useState } from 'react';
|
|
9
|
+
|
|
10
|
+
import { Button, Popover, useTranslation, Tooltip, type ButtonProps } from '@dxos/react-ui';
|
|
11
|
+
import { getSize } from '@dxos/react-ui-theme';
|
|
12
|
+
|
|
13
|
+
export type EmojiPickerProps = {
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
defaultEmoji?: string;
|
|
16
|
+
emoji?: string;
|
|
17
|
+
onChangeEmoji?: Dispatch<SetStateAction<string>>;
|
|
18
|
+
onClickClear?: ButtonProps['onClick'];
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const EmojiPicker = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }: EmojiPickerProps) => {
|
|
22
|
+
const { t } = useTranslation('os');
|
|
23
|
+
|
|
24
|
+
const [emojiValue, setEmojiValue] = useControllableState<string>({
|
|
25
|
+
prop: emoji,
|
|
26
|
+
onChange: onChangeEmoji,
|
|
27
|
+
defaultProp: defaultEmoji,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const [emojiPickerOpen, setEmojiPickerOpen] = useState<boolean>(false);
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<>
|
|
34
|
+
<Popover.Root open={emojiPickerOpen} onOpenChange={setEmojiPickerOpen}>
|
|
35
|
+
<Popover.Trigger asChild>
|
|
36
|
+
<Button variant='ghost' classNames='gap-2 text-2xl plb-1' disabled={disabled}>
|
|
37
|
+
<span className='sr-only'>{t('select emoji label')}</span>
|
|
38
|
+
<span className='grow pis-14'>{emojiValue}</span>
|
|
39
|
+
<CaretDown className={getSize(4)} />
|
|
40
|
+
</Button>
|
|
41
|
+
</Popover.Trigger>
|
|
42
|
+
<Popover.Content
|
|
43
|
+
side='right'
|
|
44
|
+
onKeyDownCapture={(event) => {
|
|
45
|
+
if (event.key === 'Escape') {
|
|
46
|
+
event.stopPropagation();
|
|
47
|
+
setEmojiPickerOpen(false);
|
|
48
|
+
}
|
|
49
|
+
}}
|
|
50
|
+
>
|
|
51
|
+
<EmojiMart
|
|
52
|
+
data={emojiData}
|
|
53
|
+
onEmojiSelect={({ native }: { native?: string }) => {
|
|
54
|
+
if (native) {
|
|
55
|
+
setEmojiValue(native);
|
|
56
|
+
setEmojiPickerOpen(false);
|
|
57
|
+
}
|
|
58
|
+
}}
|
|
59
|
+
autoFocus={true}
|
|
60
|
+
maxFrequentRows={0}
|
|
61
|
+
noCountryFlags={true}
|
|
62
|
+
/>
|
|
63
|
+
<Popover.Arrow />
|
|
64
|
+
</Popover.Content>
|
|
65
|
+
</Popover.Root>
|
|
66
|
+
<Tooltip.Root>
|
|
67
|
+
<Tooltip.Trigger asChild>
|
|
68
|
+
<Button variant='ghost' onClick={onClickClear} disabled={disabled}>
|
|
69
|
+
<span className='sr-only'>{t('clear label')}</span>
|
|
70
|
+
<ArrowCounterClockwise />
|
|
71
|
+
</Button>
|
|
72
|
+
</Tooltip.Trigger>
|
|
73
|
+
<Tooltip.Portal>
|
|
74
|
+
<Tooltip.Content style={{ zIndex: 70 }} side='right'>
|
|
75
|
+
{t('clear label')}
|
|
76
|
+
<Tooltip.Arrow />
|
|
77
|
+
</Tooltip.Content>
|
|
78
|
+
</Tooltip.Portal>
|
|
79
|
+
</Tooltip.Root>
|
|
80
|
+
</>
|
|
81
|
+
);
|
|
82
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
import { ArrowCounterClockwise, CaretDown, Check } from '@phosphor-icons/react';
|
|
5
|
+
import { useControllableState } from '@radix-ui/react-use-controllable-state';
|
|
6
|
+
import React, { type Dispatch, type SetStateAction } from 'react';
|
|
7
|
+
|
|
8
|
+
import { Button, useTranslation, Tooltip, DropdownMenu, useThemeContext, type ButtonProps } from '@dxos/react-ui';
|
|
9
|
+
import { getSize, hueTokenThemes } from '@dxos/react-ui-theme';
|
|
10
|
+
|
|
11
|
+
const HuePreview = ({ hue }: { hue: string }) => {
|
|
12
|
+
const { tx } = useThemeContext();
|
|
13
|
+
return (
|
|
14
|
+
<svg width={12} height={12} viewBox='0 0 12 12'>
|
|
15
|
+
<rect x={0} y={0} width={12} height={12} className={tx('hue.fill', 'select--hue__preview', { hue })} />
|
|
16
|
+
</svg>
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type HuePickerProps = {
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
defaultHue?: string;
|
|
23
|
+
hue?: string;
|
|
24
|
+
onChangeHue?: Dispatch<SetStateAction<string>>;
|
|
25
|
+
onClickClear?: ButtonProps['onClick'];
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const HuePicker = ({ disabled, hue, onChangeHue, defaultHue, onClickClear }: HuePickerProps) => {
|
|
29
|
+
const { t } = useTranslation('os');
|
|
30
|
+
|
|
31
|
+
const [hueValue, setHueValue] = useControllableState<string>({
|
|
32
|
+
prop: hue,
|
|
33
|
+
onChange: onChangeHue,
|
|
34
|
+
defaultProp: defaultHue,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<>
|
|
39
|
+
<DropdownMenu.Root modal={false}>
|
|
40
|
+
<DropdownMenu.Trigger asChild>
|
|
41
|
+
<Button variant='ghost' classNames='gap-2 plb-1' disabled={disabled}>
|
|
42
|
+
<span className='sr-only'>{t('select hue label')}</span>
|
|
43
|
+
<div role='none' className='pis-14 grow flex items-center justify-center gap-2'>
|
|
44
|
+
<HuePreview hue={hueValue!} />
|
|
45
|
+
<span>{t(`${hueValue} label`)}</span>
|
|
46
|
+
</div>
|
|
47
|
+
<CaretDown className={getSize(4)} />
|
|
48
|
+
</Button>
|
|
49
|
+
</DropdownMenu.Trigger>
|
|
50
|
+
<DropdownMenu.Content side='right'>
|
|
51
|
+
<DropdownMenu.Viewport>
|
|
52
|
+
{Object.keys(hueTokenThemes).map((hue) => {
|
|
53
|
+
return (
|
|
54
|
+
<DropdownMenu.CheckboxItem
|
|
55
|
+
key={hue}
|
|
56
|
+
checked={hue === hueValue}
|
|
57
|
+
onCheckedChange={() => setHueValue(hue)}
|
|
58
|
+
>
|
|
59
|
+
<HuePreview hue={hue} />
|
|
60
|
+
<span className='grow'>{t(`${hue} label`)}</span>
|
|
61
|
+
<DropdownMenu.ItemIndicator>
|
|
62
|
+
<Check />
|
|
63
|
+
</DropdownMenu.ItemIndicator>
|
|
64
|
+
</DropdownMenu.CheckboxItem>
|
|
65
|
+
);
|
|
66
|
+
})}
|
|
67
|
+
</DropdownMenu.Viewport>
|
|
68
|
+
<DropdownMenu.Arrow />
|
|
69
|
+
</DropdownMenu.Content>
|
|
70
|
+
</DropdownMenu.Root>
|
|
71
|
+
<Tooltip.Root>
|
|
72
|
+
<Tooltip.Trigger asChild>
|
|
73
|
+
<Button variant='ghost' onClick={onClickClear} disabled={disabled}>
|
|
74
|
+
<span className='sr-only'>{t('clear label')}</span>
|
|
75
|
+
<ArrowCounterClockwise />
|
|
76
|
+
</Button>
|
|
77
|
+
</Tooltip.Trigger>
|
|
78
|
+
<Tooltip.Portal>
|
|
79
|
+
<Tooltip.Content style={{ zIndex: 70 }} side='right'>
|
|
80
|
+
{t('clear label')}
|
|
81
|
+
<Tooltip.Arrow />
|
|
82
|
+
</Tooltip.Content>
|
|
83
|
+
</Tooltip.Portal>
|
|
84
|
+
</Tooltip.Root>
|
|
85
|
+
</>
|
|
86
|
+
);
|
|
87
|
+
};
|
|
@@ -7,8 +7,9 @@ import React, { type ComponentPropsWithoutRef, forwardRef } from 'react';
|
|
|
7
7
|
import { generateName } from '@dxos/display-name';
|
|
8
8
|
import { SpaceMember } from '@dxos/react-client/echo';
|
|
9
9
|
import { type Identity } from '@dxos/react-client/halo';
|
|
10
|
-
import { ListItem, Avatar,
|
|
10
|
+
import { ListItem, Avatar, useId, type ThemedClassName } from '@dxos/react-ui';
|
|
11
11
|
import { mx } from '@dxos/react-ui-theme';
|
|
12
|
+
import { keyToFallback } from '@dxos/util';
|
|
12
13
|
|
|
13
14
|
type IdentityListItemProps = {
|
|
14
15
|
identity: Identity;
|
|
@@ -20,9 +21,8 @@ export const IdentityListItem = forwardRef<
|
|
|
20
21
|
HTMLLIElement,
|
|
21
22
|
ThemedClassName<ComponentPropsWithoutRef<'li'>> & IdentityListItemProps
|
|
22
23
|
>(({ identity, presence, onClick, classNames, ...props }, forwardedRef) => {
|
|
23
|
-
const fallbackValue = identity.identityKey
|
|
24
|
+
const fallbackValue = keyToFallback(identity.identityKey);
|
|
24
25
|
const labelId = useId('identityListItem__label');
|
|
25
|
-
const jdenticon = useJdenticonHref(fallbackValue ?? '', 12);
|
|
26
26
|
const displayName = identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
|
|
27
27
|
return (
|
|
28
28
|
<ListItem.Root
|
|
@@ -33,9 +33,13 @@ export const IdentityListItem = forwardRef<
|
|
|
33
33
|
labelId={labelId}
|
|
34
34
|
ref={forwardedRef}
|
|
35
35
|
>
|
|
36
|
-
<Avatar.Root
|
|
36
|
+
<Avatar.Root
|
|
37
|
+
status={presence === SpaceMember.PresenceState.ONLINE ? 'active' : 'inactive'}
|
|
38
|
+
labelId={labelId}
|
|
39
|
+
hue={identity.profile?.data?.hue || fallbackValue.hue}
|
|
40
|
+
>
|
|
37
41
|
<Avatar.Frame classNames='place-self-center'>
|
|
38
|
-
<Avatar.Fallback
|
|
42
|
+
<Avatar.Fallback text={identity.profile?.data?.emoji || fallbackValue.emoji} />
|
|
39
43
|
</Avatar.Frame>
|
|
40
44
|
<Avatar.Label classNames='text-sm truncate pli-2'>{displayName}</Avatar.Label>
|
|
41
45
|
</Avatar.Root>
|
|
@@ -21,9 +21,9 @@ import {
|
|
|
21
21
|
type ThemedClassName,
|
|
22
22
|
} from '@dxos/react-ui';
|
|
23
23
|
import { focusRing, getSize, mx } from '@dxos/react-ui-theme';
|
|
24
|
+
import { hexToEmoji } from '@dxos/util';
|
|
24
25
|
|
|
25
26
|
import { type SharedInvitationListProps } from './InvitationListProps';
|
|
26
|
-
import { toEmoji } from '../../util';
|
|
27
27
|
import { AuthCode } from '../AuthCode';
|
|
28
28
|
import { CopyButtonIconOnly } from '../Clipboard';
|
|
29
29
|
|
|
@@ -151,7 +151,7 @@ export const InvitationListItemImpl = ({
|
|
|
151
151
|
<Avatar.Root {...avatarProps} animation={avatarAnimation} status={avatarStatus}>
|
|
152
152
|
<Tooltip.Trigger asChild>
|
|
153
153
|
<Avatar.Frame tabIndex={0} classNames={[focusRing, 'relative rounded-full place-self-center']}>
|
|
154
|
-
<Avatar.Fallback text={
|
|
154
|
+
<Avatar.Fallback text={hexToEmoji(invitationId)} />
|
|
155
155
|
</Avatar.Frame>
|
|
156
156
|
</Tooltip.Trigger>
|
|
157
157
|
</Avatar.Root>
|
|
@@ -5,15 +5,14 @@
|
|
|
5
5
|
import React, { type ForwardedRef, forwardRef } from 'react';
|
|
6
6
|
|
|
7
7
|
import type { Space } from '@dxos/react-client/echo';
|
|
8
|
-
import { Avatar, useId
|
|
8
|
+
import { Avatar, useId } from '@dxos/react-ui';
|
|
9
9
|
import { mx } from '@dxos/react-ui-theme';
|
|
10
|
-
import { humanize } from '@dxos/util';
|
|
10
|
+
import { humanize, keyToEmoji } from '@dxos/util';
|
|
11
11
|
|
|
12
12
|
export const SpaceListItem = forwardRef(
|
|
13
13
|
({ space, onClick }: { space: Space; onClick?: () => void }, ref: ForwardedRef<HTMLLIElement>) => {
|
|
14
|
-
const fallbackValue = space.key
|
|
14
|
+
const fallbackValue = keyToEmoji(space.key);
|
|
15
15
|
const labelId = useId('identityListItem__label');
|
|
16
|
-
const jdenticon = useJdenticonHref(fallbackValue ?? '', 12);
|
|
17
16
|
const displayName = space.properties.name ?? humanize(space.key.toHex());
|
|
18
17
|
|
|
19
18
|
return (
|
|
@@ -25,7 +24,7 @@ export const SpaceListItem = forwardRef(
|
|
|
25
24
|
>
|
|
26
25
|
<Avatar.Root labelId={labelId}>
|
|
27
26
|
<Avatar.Frame>
|
|
28
|
-
<Avatar.Fallback
|
|
27
|
+
<Avatar.Fallback text={fallbackValue} />
|
|
29
28
|
</Avatar.Frame>
|
|
30
29
|
<Avatar.Label classNames='text-sm truncate'>{displayName}</Avatar.Label>
|
|
31
30
|
</Avatar.Root>
|
package/src/components/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ import React from 'react';
|
|
|
8
8
|
|
|
9
9
|
import { faker } from '@dxos/random';
|
|
10
10
|
import { PublicKey } from '@dxos/react-client';
|
|
11
|
-
import { DeviceKind } from '@dxos/react-client/halo';
|
|
11
|
+
import { Device, DeviceKind } from '@dxos/react-client/halo';
|
|
12
12
|
import { Invitation } from '@dxos/react-client/invitations';
|
|
13
13
|
import { withTheme } from '@dxos/storybook-utils';
|
|
14
14
|
|
|
@@ -71,10 +71,23 @@ export const DeviceManager = () => {
|
|
|
71
71
|
<IdentityPanelImpl
|
|
72
72
|
{...{
|
|
73
73
|
...noOpProps,
|
|
74
|
+
// TODO(nf): update
|
|
74
75
|
devices: [
|
|
75
|
-
{
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
{
|
|
77
|
+
deviceKey: PublicKey.random(),
|
|
78
|
+
kind: DeviceKind.CURRENT,
|
|
79
|
+
presence: Device.PresenceState.ONLINE,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
deviceKey: PublicKey.random(),
|
|
83
|
+
kind: DeviceKind.TRUSTED,
|
|
84
|
+
presence: Device.PresenceState.ONLINE,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
deviceKey: PublicKey.random(),
|
|
88
|
+
kind: DeviceKind.TRUSTED,
|
|
89
|
+
presence: Device.PresenceState.OFFLINE,
|
|
90
|
+
},
|
|
78
91
|
],
|
|
79
92
|
}}
|
|
80
93
|
activeView='device manager'
|