@dxos/shell 0.7.5-labs.a279d8c → 0.7.5-labs.ea4b4c2
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 +16927 -17875
- package/dist/bundle/shell.mjs.map +1 -1
- package/dist/bundle/shell.umd.js +149 -147
- 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 +532 -794
- package/dist/lib/browser/react.mjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/react.cjs +625 -887
- package/dist/lib/node/react.cjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react.mjs +532 -794
- package/dist/lib/node-esm/react.mjs.map +4 -4
- package/dist/types/src/components/AgentConfig.js +1 -1
- package/dist/types/src/components/AgentConfig.js.map +1 -1
- package/dist/types/src/components/DeviceList/DeviceList.js +1 -1
- package/dist/types/src/components/DeviceList/DeviceList.js.map +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/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +14 -14
- 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 +3 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +2 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts.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 +3 -2
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js +1 -1
- package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js.map +1 -1
- package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts.map +1 -1
- package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js +5 -0
- package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js.map +1 -1
- package/dist/types/src/testing/fixtures/identities.d.ts.map +1 -1
- package/dist/types/src/testing/fixtures/identities.js +2 -0
- package/dist/types/src/testing/fixtures/identities.js.map +1 -1
- package/dist/types/src/translations/locales/en-US.d.ts +1 -1
- package/dist/types/src/translations/locales/en-US.js +1 -1
- package/dist/types/src/translations/locales/en-US.js.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +31 -30
- package/src/components/AgentConfig.tsx +1 -1
- package/src/components/DeviceList/DeviceList.tsx +1 -1
- package/src/components/index.ts +0 -2
- package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +3 -0
- package/src/panels/IdentityPanel/IdentityPanel.tsx +29 -26
- package/src/panels/IdentityPanel/IdentityPanelProps.ts +8 -1
- package/src/panels/IdentityPanel/steps/ProfileForm.tsx +2 -1
- package/src/panels/JoinPanel/steps/IdentityInput.tsx +1 -1
- package/src/panels/SpacePanel/SpacePanel.stories.tsx +6 -1
- package/src/testing/fixtures/identities.ts +2 -0
- package/src/translations/locales/en-US.ts +1 -1
- package/dist/lib/browser/react.css +0 -7
- package/dist/lib/browser/react.css.map +0 -7
- package/dist/lib/node/react.css +0 -7
- package/dist/lib/node/react.css.map +0 -7
- package/dist/lib/node-esm/react.css +0 -7
- package/dist/lib/node-esm/react.css.map +0 -7
- package/dist/types/src/components/EmojiPicker.d.ts +0 -19
- package/dist/types/src/components/EmojiPicker.d.ts.map +0 -1
- package/dist/types/src/components/EmojiPicker.js +0 -146
- package/dist/types/src/components/EmojiPicker.js.map +0 -1
- package/dist/types/src/components/HuePicker.d.ts +0 -18
- package/dist/types/src/components/HuePicker.d.ts.map +0 -1
- package/dist/types/src/components/HuePicker.js +0 -133
- package/dist/types/src/components/HuePicker.js.map +0 -1
- package/src/components/EmojiPicker.tsx +0 -187
- package/src/components/HuePicker.tsx +0 -182
- package/src/components/emoji.css +0 -25
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/shell",
|
|
3
|
-
"version": "0.7.5-labs.
|
|
3
|
+
"version": "0.7.5-labs.ea4b4c2",
|
|
4
4
|
"description": "DXOS’s OS experiences",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -42,29 +42,30 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@emoji-mart/data": "^1.1.2",
|
|
44
44
|
"@emoji-mart/react": "^1.1.1",
|
|
45
|
-
"@fluentui/react-tabster": "
|
|
46
|
-
"@radix-ui/react-accordion": "
|
|
47
|
-
"@radix-ui/react-context": "
|
|
48
|
-
"@radix-ui/react-radio-group": "
|
|
49
|
-
"@radix-ui/react-use-controllable-state": "
|
|
45
|
+
"@fluentui/react-tabster": "9.23.3",
|
|
46
|
+
"@radix-ui/react-accordion": "1.2.3",
|
|
47
|
+
"@radix-ui/react-context": "1.1.1",
|
|
48
|
+
"@radix-ui/react-radio-group": "1.2.3",
|
|
49
|
+
"@radix-ui/react-use-controllable-state": "1.1.0",
|
|
50
50
|
"@xstate/react": "^3.2.1",
|
|
51
51
|
"date-fns": "^3.3.1",
|
|
52
52
|
"emoji-mart": "^5.5.2",
|
|
53
53
|
"react-qr-rounded": "^1.0.0",
|
|
54
54
|
"url-join": "^5.0.0",
|
|
55
55
|
"xstate": "^4.37.0",
|
|
56
|
-
"@dxos/async": "0.7.5-labs.
|
|
57
|
-
"@dxos/client-protocol": "0.7.5-labs.
|
|
58
|
-
"@dxos/client-services": "0.7.5-labs.
|
|
59
|
-
"@dxos/debug": "0.7.5-labs.
|
|
60
|
-
"@dxos/display-name": "0.7.5-labs.
|
|
61
|
-
"@dxos/invariant": "0.7.5-labs.
|
|
62
|
-
"@dxos/log": "0.7.5-labs.
|
|
63
|
-
"@dxos/
|
|
64
|
-
"@dxos/
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/rpc-tunnel": "0.7.5-labs.
|
|
67
|
-
"@dxos/
|
|
56
|
+
"@dxos/async": "0.7.5-labs.ea4b4c2",
|
|
57
|
+
"@dxos/client-protocol": "0.7.5-labs.ea4b4c2",
|
|
58
|
+
"@dxos/client-services": "0.7.5-labs.ea4b4c2",
|
|
59
|
+
"@dxos/debug": "0.7.5-labs.ea4b4c2",
|
|
60
|
+
"@dxos/display-name": "0.7.5-labs.ea4b4c2",
|
|
61
|
+
"@dxos/invariant": "0.7.5-labs.ea4b4c2",
|
|
62
|
+
"@dxos/log": "0.7.5-labs.ea4b4c2",
|
|
63
|
+
"@dxos/react-ui-pickers": "0.7.5-labs.ea4b4c2",
|
|
64
|
+
"@dxos/protocols": "0.7.5-labs.ea4b4c2",
|
|
65
|
+
"@dxos/react-ui-types": "0.7.5-labs.ea4b4c2",
|
|
66
|
+
"@dxos/rpc-tunnel": "0.7.5-labs.ea4b4c2",
|
|
67
|
+
"@dxos/rpc": "0.7.5-labs.ea4b4c2",
|
|
68
|
+
"@dxos/util": "0.7.5-labs.ea4b4c2"
|
|
68
69
|
},
|
|
69
70
|
"devDependencies": {
|
|
70
71
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -74,25 +75,25 @@
|
|
|
74
75
|
"react": "~18.2.0",
|
|
75
76
|
"react-dom": "~18.2.0",
|
|
76
77
|
"vite": "5.4.7",
|
|
77
|
-
"@dxos/
|
|
78
|
-
"@dxos/
|
|
79
|
-
"@dxos/
|
|
80
|
-
"@dxos/react-
|
|
81
|
-
"@dxos/react-
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/
|
|
85
|
-
"@dxos/
|
|
78
|
+
"@dxos/config": "0.7.5-labs.ea4b4c2",
|
|
79
|
+
"@dxos/random": "0.7.5-labs.ea4b4c2",
|
|
80
|
+
"@dxos/protocols": "0.7.5-labs.ea4b4c2",
|
|
81
|
+
"@dxos/react-client": "0.7.5-labs.ea4b4c2",
|
|
82
|
+
"@dxos/react-hooks": "0.7.5-labs.ea4b4c2",
|
|
83
|
+
"@dxos/react-ui": "0.7.5-labs.ea4b4c2",
|
|
84
|
+
"@dxos/react-ui-theme": "0.7.5-labs.ea4b4c2",
|
|
85
|
+
"@dxos/test-utils": "0.7.5-labs.ea4b4c2",
|
|
86
|
+
"@dxos/storybook-utils": "0.7.5-labs.ea4b4c2"
|
|
86
87
|
},
|
|
87
88
|
"peerDependencies": {
|
|
88
89
|
"react": "~18.2.0",
|
|
89
90
|
"react-dom": "~18.2.0",
|
|
90
|
-
"@dxos/react-client": "0.7.5-labs.
|
|
91
|
+
"@dxos/react-client": "0.7.5-labs.ea4b4c2"
|
|
91
92
|
},
|
|
92
93
|
"optionalDependencies": {
|
|
93
94
|
"@phosphor-icons/react": "^2.1.5",
|
|
94
|
-
"@dxos/react-ui": "0.7.5-labs.
|
|
95
|
-
"@dxos/react-ui-theme": "0.7.5-labs.
|
|
95
|
+
"@dxos/react-ui": "0.7.5-labs.ea4b4c2",
|
|
96
|
+
"@dxos/react-ui-theme": "0.7.5-labs.ea4b4c2"
|
|
96
97
|
},
|
|
97
98
|
"publishConfig": {
|
|
98
99
|
"access": "public"
|
|
@@ -88,7 +88,7 @@ export const AgentConfig = ({
|
|
|
88
88
|
<>
|
|
89
89
|
<Button
|
|
90
90
|
variant='ghost'
|
|
91
|
-
classNames='mlb-2 is-full justify-start gap-2
|
|
91
|
+
classNames='mlb-2 is-full justify-start gap-2 pis-0 pie-3'
|
|
92
92
|
data-testid={agentStatus === 'creatable' ? 'devices-panel.create-agent' : 'devices-panel.agent-error'}
|
|
93
93
|
onClick={agentStatus === 'creatable' ? onAgentCreate : onAgentRefresh}
|
|
94
94
|
aria-describedby='devices-panel.create-agent.description'
|
package/src/components/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import '@dxos-theme';
|
|
|
6
6
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
|
|
9
|
+
import { IdentityDid } from '@dxos/keys';
|
|
9
10
|
import { ConnectionState } from '@dxos/protocols/proto/dxos/client/services';
|
|
10
11
|
import { faker } from '@dxos/random';
|
|
11
12
|
import { PublicKey } from '@dxos/react-client';
|
|
@@ -27,6 +28,7 @@ const noOpProps: IdentityPanelImplProps = {
|
|
|
27
28
|
activeView: 'identity action chooser',
|
|
28
29
|
createInvitationUrl: (code) => code,
|
|
29
30
|
identity: {
|
|
31
|
+
did: IdentityDid.random(),
|
|
30
32
|
identityKey: PublicKey.random(),
|
|
31
33
|
profile: {
|
|
32
34
|
displayName: faker.person.firstName(),
|
|
@@ -34,6 +36,7 @@ const noOpProps: IdentityPanelImplProps = {
|
|
|
34
36
|
},
|
|
35
37
|
devices: [],
|
|
36
38
|
connectionState: ConnectionState.ONLINE,
|
|
39
|
+
onManageCredentials: async () => console.log('manage credentials'),
|
|
37
40
|
};
|
|
38
41
|
|
|
39
42
|
export default {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { IdentificationCard, Plugs, PlugsConnected } from '@phosphor-icons/react';
|
|
6
6
|
import React, { useEffect, useMemo, useState } from 'react';
|
|
7
7
|
|
|
8
8
|
import { generateName } from '@dxos/display-name';
|
|
@@ -12,7 +12,8 @@ import { type Identity, useIdentity, useDevices, useHaloInvitations } from '@dxo
|
|
|
12
12
|
import { useInvitationStatus } from '@dxos/react-client/invitations';
|
|
13
13
|
import { type CancellableInvitationObservable } from '@dxos/react-client/invitations';
|
|
14
14
|
import { useNetworkStatus, ConnectionState } from '@dxos/react-client/mesh';
|
|
15
|
-
import { Avatar, Input, Toolbar, Tooltip,
|
|
15
|
+
import { Avatar, Clipboard, Input, Toolbar, Tooltip, useId, useTranslation } from '@dxos/react-ui';
|
|
16
|
+
import { EmojiPickerToolbarButton, HuePickerToolbarButton } from '@dxos/react-ui-pickers';
|
|
16
17
|
import { getSize } from '@dxos/react-ui-theme';
|
|
17
18
|
import { hexToEmoji, hexToHue, keyToFallback } from '@dxos/util';
|
|
18
19
|
|
|
@@ -24,7 +25,7 @@ import {
|
|
|
24
25
|
import { useIdentityMachine } from './identityMachine';
|
|
25
26
|
import { IdentityActionChooser } from './steps';
|
|
26
27
|
import { useAgentHandlers } from './useAgentHandlers';
|
|
27
|
-
import { Viewport, CloseButton,
|
|
28
|
+
import { Viewport, CloseButton, Heading } from '../../components';
|
|
28
29
|
import { ConfirmReset, InvitationManager } from '../../steps';
|
|
29
30
|
|
|
30
31
|
const viewStyles = 'pbs-1 pbe-3 pli-3';
|
|
@@ -43,15 +44,13 @@ const IdentityHeading = ({
|
|
|
43
44
|
onUpdateProfile,
|
|
44
45
|
connectionState,
|
|
45
46
|
onChangeConnectionState,
|
|
47
|
+
onManageCredentials,
|
|
46
48
|
}: IdentityPanelHeadingProps) => {
|
|
47
49
|
const fallbackValue = keyToFallback(identity.identityKey);
|
|
48
50
|
const { t } = useTranslation('os');
|
|
49
51
|
const [displayName, setDisplayName] = useState(identity.profile?.displayName ?? '');
|
|
50
52
|
const [emoji, setEmojiDirectly] = useState<string>(getEmojiValue(identity));
|
|
51
53
|
const [hue, setHueDirectly] = useState<string>(getHueValue(identity));
|
|
52
|
-
const { textValue, setTextValue } = useClipboard();
|
|
53
|
-
const identityHex = identity.identityKey.toHex();
|
|
54
|
-
const publicKeyCopied = textValue === identityHex;
|
|
55
54
|
|
|
56
55
|
const setEmoji = (nextEmoji: string) => {
|
|
57
56
|
setEmojiDirectly(nextEmoji);
|
|
@@ -94,26 +93,28 @@ const IdentityHeading = ({
|
|
|
94
93
|
<Toolbar.Root classNames='flex justify-center items-center gap-1 pt-3'>
|
|
95
94
|
<EmojiPickerToolbarButton emoji={emoji} onChangeEmoji={setEmoji} classNames='bs-[--rail-action]' />
|
|
96
95
|
<HuePickerToolbarButton hue={hue} onChangeHue={setHue} classNames='bs-[--rail-action]' />
|
|
97
|
-
<
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
<Tooltip.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
96
|
+
<Clipboard.IconButton
|
|
97
|
+
classNames='bs-[--rail-action]'
|
|
98
|
+
data-testid='update-profile-form-copy-key'
|
|
99
|
+
label={t('copy self did label')}
|
|
100
|
+
value={identity.did}
|
|
101
|
+
/>
|
|
102
|
+
{onManageCredentials && (
|
|
103
|
+
<Tooltip.Root>
|
|
104
|
+
<Tooltip.Trigger asChild>
|
|
105
|
+
<Toolbar.Button classNames='bs-[--rail-action]' onClick={onManageCredentials}>
|
|
106
|
+
<span className='sr-only'>{t('manage credentials label')}</span>
|
|
107
|
+
<IdentificationCard className={getSize(5)} />
|
|
108
|
+
</Toolbar.Button>
|
|
109
|
+
</Tooltip.Trigger>
|
|
110
|
+
<Tooltip.Portal>
|
|
111
|
+
<Tooltip.Content side='bottom'>
|
|
112
|
+
{t('manage credentials label')}
|
|
113
|
+
<Tooltip.Arrow />
|
|
114
|
+
</Tooltip.Content>
|
|
115
|
+
</Tooltip.Portal>
|
|
116
|
+
</Tooltip.Root>
|
|
117
|
+
)}
|
|
117
118
|
<Tooltip.Root>
|
|
118
119
|
<Tooltip.Trigger asChild>
|
|
119
120
|
<Toolbar.Button
|
|
@@ -153,6 +154,7 @@ export const IdentityPanelImpl = (props: IdentityPanelImplProps) => {
|
|
|
153
154
|
connectionState,
|
|
154
155
|
onChangeConnectionState,
|
|
155
156
|
onDone,
|
|
157
|
+
onManageCredentials,
|
|
156
158
|
...rest
|
|
157
159
|
} = props;
|
|
158
160
|
const { t } = useTranslation('os');
|
|
@@ -180,6 +182,7 @@ export const IdentityPanelImpl = (props: IdentityPanelImplProps) => {
|
|
|
180
182
|
onUpdateProfile,
|
|
181
183
|
connectionState,
|
|
182
184
|
onChangeConnectionState,
|
|
185
|
+
onManageCredentials,
|
|
183
186
|
}}
|
|
184
187
|
/>
|
|
185
188
|
<Viewport.Root activeView={activeView}>
|
|
@@ -29,6 +29,7 @@ export type IdentityPanelImplProps = {
|
|
|
29
29
|
connectionState?: ConnectionState;
|
|
30
30
|
onChangeConnectionState?: (nextState: ConnectionState) => Promise<void>;
|
|
31
31
|
onUpdateProfile?: (profile: NonNullable<Identity['profile']>) => Promise<void>;
|
|
32
|
+
onManageCredentials?: () => Promise<void>;
|
|
32
33
|
onResetStorage?: () => Promise<void>;
|
|
33
34
|
onRecover?: () => Promise<void>;
|
|
34
35
|
onJoinNewIdentity?: () => Promise<void>;
|
|
@@ -46,7 +47,13 @@ export type IdentityPanelProps = Partial<Omit<IdentityPanelImplProps, 'send' | '
|
|
|
46
47
|
|
|
47
48
|
export type IdentityPanelHeadingProps = Pick<
|
|
48
49
|
IdentityPanelImplProps,
|
|
49
|
-
|
|
50
|
+
| 'titleId'
|
|
51
|
+
| 'identity'
|
|
52
|
+
| 'onDone'
|
|
53
|
+
| 'onUpdateProfile'
|
|
54
|
+
| 'connectionState'
|
|
55
|
+
| 'onChangeConnectionState'
|
|
56
|
+
| 'onManageCredentials'
|
|
50
57
|
> & {
|
|
51
58
|
title: string;
|
|
52
59
|
};
|
|
@@ -8,9 +8,10 @@ import { type Event, type SingleOrArray } from 'xstate';
|
|
|
8
8
|
import { log } from '@dxos/log';
|
|
9
9
|
import { type Identity } from '@dxos/react-client/halo';
|
|
10
10
|
import { useClipboard, useTranslation } from '@dxos/react-ui';
|
|
11
|
+
import { EmojiPickerBlock, HuePickerBlock } from '@dxos/react-ui-pickers';
|
|
11
12
|
import { hexToEmoji, hexToHue } from '@dxos/util';
|
|
12
13
|
|
|
13
|
-
import { Action, Actions, StepHeading, Input
|
|
14
|
+
import { Action, Actions, StepHeading, Input } from '../../../components';
|
|
14
15
|
import { type IdentityPanelStepProps } from '../IdentityPanelProps';
|
|
15
16
|
import { type IdentityEvent } from '../identityMachine';
|
|
16
17
|
|
|
@@ -31,7 +31,7 @@ export const IdentityInput = (props: IdentityInputProps) => {
|
|
|
31
31
|
const [validationMessage, setValidationMessage] = useState('');
|
|
32
32
|
const handleConfirm = async (value: string) => {
|
|
33
33
|
if (isRecover) {
|
|
34
|
-
await client.halo.recoverIdentity({
|
|
34
|
+
await client.halo.recoverIdentity({ recoveryCode: value }).then(
|
|
35
35
|
(identity) => {
|
|
36
36
|
send?.({ type: 'selectIdentity' as const, identity });
|
|
37
37
|
},
|
|
@@ -6,7 +6,7 @@ import '@dxos-theme';
|
|
|
6
6
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
|
|
9
|
-
import { PublicKey } from '@dxos/keys';
|
|
9
|
+
import { IdentityDid, PublicKey } from '@dxos/keys';
|
|
10
10
|
import { HaloSpaceMember, SpaceMember } from '@dxos/react-client/echo';
|
|
11
11
|
import { Invitation } from '@dxos/react-client/invitations';
|
|
12
12
|
import { withTheme } from '@dxos/storybook-utils';
|
|
@@ -179,6 +179,7 @@ export const SpaceManagerWithMember = () => {
|
|
|
179
179
|
presence: SpaceMember.PresenceState.ONLINE,
|
|
180
180
|
role: HaloSpaceMember.Role.ADMIN,
|
|
181
181
|
identity: {
|
|
182
|
+
did: IdentityDid.random(),
|
|
182
183
|
identityKey: PublicKey.random(),
|
|
183
184
|
},
|
|
184
185
|
},
|
|
@@ -212,6 +213,7 @@ export const SpaceManagerWithMembers = () => {
|
|
|
212
213
|
presence: SpaceMember.PresenceState.ONLINE,
|
|
213
214
|
role: HaloSpaceMember.Role.ADMIN,
|
|
214
215
|
identity: {
|
|
216
|
+
did: IdentityDid.random(),
|
|
215
217
|
identityKey: PublicKey.random(),
|
|
216
218
|
profile: {
|
|
217
219
|
displayName: 'John Doe',
|
|
@@ -252,6 +254,7 @@ export const SpaceManagerWithMoreMembers = () => {
|
|
|
252
254
|
presence: SpaceMember.PresenceState.ONLINE,
|
|
253
255
|
role: HaloSpaceMember.Role.ADMIN,
|
|
254
256
|
identity: {
|
|
257
|
+
did: IdentityDid.random(),
|
|
255
258
|
identityKey: PublicKey.random(),
|
|
256
259
|
profile: {
|
|
257
260
|
displayName: 'John Doe',
|
|
@@ -262,6 +265,7 @@ export const SpaceManagerWithMoreMembers = () => {
|
|
|
262
265
|
presence: SpaceMember.PresenceState.OFFLINE,
|
|
263
266
|
role: HaloSpaceMember.Role.ADMIN,
|
|
264
267
|
identity: {
|
|
268
|
+
did: IdentityDid.random(),
|
|
265
269
|
identityKey: PublicKey.random(),
|
|
266
270
|
profile: {
|
|
267
271
|
displayName: 'Alice Wong',
|
|
@@ -272,6 +276,7 @@ export const SpaceManagerWithMoreMembers = () => {
|
|
|
272
276
|
presence: SpaceMember.PresenceState.OFFLINE,
|
|
273
277
|
role: HaloSpaceMember.Role.ADMIN,
|
|
274
278
|
identity: {
|
|
279
|
+
did: IdentityDid.random(),
|
|
275
280
|
identityKey: PublicKey.random(),
|
|
276
281
|
profile: {
|
|
277
282
|
displayName: 'Steel Nickels',
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { IdentityDid } from '@dxos/keys';
|
|
5
6
|
import { PublicKey } from '@dxos/react-client';
|
|
6
7
|
import { HaloSpaceMember, SpaceMember } from '@dxos/react-client/echo';
|
|
7
8
|
|
|
8
9
|
export const alice: SpaceMember = {
|
|
9
10
|
role: HaloSpaceMember.Role.ADMIN,
|
|
10
11
|
identity: {
|
|
12
|
+
did: IdentityDid.random(),
|
|
11
13
|
identityKey: PublicKey.random(),
|
|
12
14
|
profile: {
|
|
13
15
|
displayName: 'Alice',
|
|
@@ -8,7 +8,7 @@ export const os = {
|
|
|
8
8
|
'sidebar label': 'DXOS sidebar',
|
|
9
9
|
'copy invitation code label': 'Copy URL',
|
|
10
10
|
'copy success label': 'Copied',
|
|
11
|
-
'copy self
|
|
11
|
+
'copy self did label': 'Copy DID',
|
|
12
12
|
'open share panel label': 'View QR code',
|
|
13
13
|
'joining space heading': 'Joining space',
|
|
14
14
|
'join space heading': 'Enter space invitation',
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/emoji.css"],
|
|
4
|
-
"sourcesContent": ["/**\n * https://github.com/missive/emoji-mart/blob/main/packages/emoji-mart-website/example-custom-styles.html\n */\n[data-theme=\"dark\"] em-emoji-picker {\n /* TODO(burdon): Get from TW defs: modal-surface? */\n --background-rgb: #3B3B3F;\n --rgb-background: #3B3B3F;\n\n --font-family: \"Inter Variable\", ui-sans-serif;\n\n /*--font-size: 16px;*/\n /*--color-border-over: rgba(0, 0, 0, 0.1);*/\n /*--color-border: rgba(0, 0, 0, 0.05);*/\n /*--category-icon-size: 24px;*/\n /*--border-radius: 24px;*/\n /*--font-family: 'Comic Sans MS', 'Chalkboard SE', cursive;*/\n /*--rgb-accent: 255, 105, 180;*/\n /*--rgb-color: 102, 51, 153;*/\n /*--rgb-input: 255, 235, 235;*/\n /*--shadow: 5px 5px 15px -8px rebeccapurple;*/\n\n /*height: 50vh;*/\n /*min-height: 400px;*/\n /*max-height: 800px;*/\n}\n"],
|
|
5
|
-
"mappings": ";AAGA,CAAC,iBAAmB;AAElB,oBAAkB;AAClB,oBAAkB;AAElB,iBAAe,gBAAgB,EAAE;AAgBnC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/lib/node/react.css
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/emoji.css"],
|
|
4
|
-
"sourcesContent": ["/**\n * https://github.com/missive/emoji-mart/blob/main/packages/emoji-mart-website/example-custom-styles.html\n */\n[data-theme=\"dark\"] em-emoji-picker {\n /* TODO(burdon): Get from TW defs: modal-surface? */\n --background-rgb: #3B3B3F;\n --rgb-background: #3B3B3F;\n\n --font-family: \"Inter Variable\", ui-sans-serif;\n\n /*--font-size: 16px;*/\n /*--color-border-over: rgba(0, 0, 0, 0.1);*/\n /*--color-border: rgba(0, 0, 0, 0.05);*/\n /*--category-icon-size: 24px;*/\n /*--border-radius: 24px;*/\n /*--font-family: 'Comic Sans MS', 'Chalkboard SE', cursive;*/\n /*--rgb-accent: 255, 105, 180;*/\n /*--rgb-color: 102, 51, 153;*/\n /*--rgb-input: 255, 235, 235;*/\n /*--shadow: 5px 5px 15px -8px rebeccapurple;*/\n\n /*height: 50vh;*/\n /*min-height: 400px;*/\n /*max-height: 800px;*/\n}\n"],
|
|
5
|
-
"mappings": ";AAGA,CAAC,iBAAmB;AAElB,oBAAkB;AAClB,oBAAkB;AAElB,iBAAe,gBAAgB,EAAE;AAgBnC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/emoji.css"],
|
|
4
|
-
"sourcesContent": ["/**\n * https://github.com/missive/emoji-mart/blob/main/packages/emoji-mart-website/example-custom-styles.html\n */\n[data-theme=\"dark\"] em-emoji-picker {\n /* TODO(burdon): Get from TW defs: modal-surface? */\n --background-rgb: #3B3B3F;\n --rgb-background: #3B3B3F;\n\n --font-family: \"Inter Variable\", ui-sans-serif;\n\n /*--font-size: 16px;*/\n /*--color-border-over: rgba(0, 0, 0, 0.1);*/\n /*--color-border: rgba(0, 0, 0, 0.05);*/\n /*--category-icon-size: 24px;*/\n /*--border-radius: 24px;*/\n /*--font-family: 'Comic Sans MS', 'Chalkboard SE', cursive;*/\n /*--rgb-accent: 255, 105, 180;*/\n /*--rgb-color: 102, 51, 153;*/\n /*--rgb-input: 255, 235, 235;*/\n /*--shadow: 5px 5px 15px -8px rebeccapurple;*/\n\n /*height: 50vh;*/\n /*min-height: 400px;*/\n /*max-height: 800px;*/\n}\n"],
|
|
5
|
-
"mappings": ";AAGA,CAAC,iBAAmB;AAElB,oBAAkB;AAClB,oBAAkB;AAElB,iBAAe,gBAAgB,EAAE;AAgBnC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { type ButtonProps, type ThemedClassName } from '@dxos/react-ui';
|
|
3
|
-
import './emoji.css';
|
|
4
|
-
export type EmojiPickerProps = {
|
|
5
|
-
disabled?: boolean;
|
|
6
|
-
defaultEmoji?: string;
|
|
7
|
-
emoji?: string;
|
|
8
|
-
onChangeEmoji?: (nextEmoji: string) => void;
|
|
9
|
-
onClickClear?: ButtonProps['onClick'];
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* A toolbar button for picking an emoji. Use only in `role=toolbar` elements. Unable to unset the value.
|
|
13
|
-
*/
|
|
14
|
-
export declare const EmojiPickerToolbarButton: ({ disabled, defaultEmoji, emoji, onChangeEmoji, classNames, }: ThemedClassName<Omit<EmojiPickerProps, "onClickClear">>) => React.JSX.Element;
|
|
15
|
-
/**
|
|
16
|
-
* A button for picking an emoji alongside a button for unsetting it.
|
|
17
|
-
*/
|
|
18
|
-
export declare const EmojiPickerBlock: ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }: EmojiPickerProps) => React.JSX.Element;
|
|
19
|
-
//# sourceMappingURL=EmojiPicker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiPicker.d.ts","sourceRoot":"","sources":["../../../../src/components/EmojiPicker.tsx"],"names":[],"mappings":"AAQA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,eAAe,EAMrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,kEAMlC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,sBA4EzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,mEAAoE,gBAAgB,sBA+DhH,CAAC"}
|
|
@@ -1,146 +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 __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 () {
|
|
22
|
-
var ownKeys = function(o) {
|
|
23
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
-
var ar = [];
|
|
25
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
-
return ar;
|
|
27
|
-
};
|
|
28
|
-
return ownKeys(o);
|
|
29
|
-
};
|
|
30
|
-
return function (mod) {
|
|
31
|
-
if (mod && mod.__esModule) return mod;
|
|
32
|
-
var result = {};
|
|
33
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
-
__setModuleDefault(result, mod);
|
|
35
|
-
return result;
|
|
36
|
-
};
|
|
37
|
-
})();
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
-
};
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.EmojiPickerBlock = exports.EmojiPickerToolbarButton = void 0;
|
|
43
|
-
const data_1 = __importDefault(require("@emoji-mart/data"));
|
|
44
|
-
const react_1 = __importDefault(require("@emoji-mart/react"));
|
|
45
|
-
const react_2 = require("@phosphor-icons/react");
|
|
46
|
-
const react_use_controllable_state_1 = require("@radix-ui/react-use-controllable-state");
|
|
47
|
-
const react_3 = __importStar(require("react"));
|
|
48
|
-
const react_ui_1 = require("@dxos/react-ui");
|
|
49
|
-
const react_ui_theme_1 = require("@dxos/react-ui-theme");
|
|
50
|
-
require("./emoji.css");
|
|
51
|
-
/**
|
|
52
|
-
* A toolbar button for picking an emoji. Use only in `role=toolbar` elements. Unable to unset the value.
|
|
53
|
-
*/
|
|
54
|
-
const EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji, classNames, }) => {
|
|
55
|
-
const { t } = (0, react_ui_1.useTranslation)('os');
|
|
56
|
-
const { themeMode } = (0, react_ui_1.useThemeContext)();
|
|
57
|
-
const [_emojiValue, setEmojiValue] = (0, react_use_controllable_state_1.useControllableState)({
|
|
58
|
-
prop: emoji,
|
|
59
|
-
onChange: onChangeEmoji,
|
|
60
|
-
defaultProp: defaultEmoji,
|
|
61
|
-
});
|
|
62
|
-
const [emojiPickerOpen, setEmojiPickerOpen] = (0, react_3.useState)(false);
|
|
63
|
-
const suppressNextTooltip = (0, react_3.useRef)(false);
|
|
64
|
-
const [triggerTooltipOpen, setTriggerTooltipOpen] = (0, react_3.useState)(false);
|
|
65
|
-
return (react_3.default.createElement(react_ui_1.Tooltip.Root, { open: triggerTooltipOpen, onOpenChange: (nextOpen) => {
|
|
66
|
-
if (suppressNextTooltip.current) {
|
|
67
|
-
setTriggerTooltipOpen(false);
|
|
68
|
-
suppressNextTooltip.current = false;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
setTriggerTooltipOpen(nextOpen);
|
|
72
|
-
}
|
|
73
|
-
} },
|
|
74
|
-
react_3.default.createElement(react_ui_1.Popover.Root, { open: emojiPickerOpen, onOpenChange: (nextOpen) => {
|
|
75
|
-
setEmojiPickerOpen(nextOpen);
|
|
76
|
-
suppressNextTooltip.current = true;
|
|
77
|
-
} },
|
|
78
|
-
react_3.default.createElement(react_ui_1.Tooltip.Trigger, { asChild: true },
|
|
79
|
-
react_3.default.createElement(react_ui_1.Popover.Trigger, { asChild: true },
|
|
80
|
-
react_3.default.createElement(react_ui_1.Toolbar.Button, { classNames: ['gap-2 text-2xl plb-1', classNames], disabled: disabled },
|
|
81
|
-
react_3.default.createElement("span", { className: 'sr-only' }, t('select emoji label')),
|
|
82
|
-
react_3.default.createElement(react_2.UserCircle, { className: (0, react_ui_theme_1.getSize)(5) })))),
|
|
83
|
-
react_3.default.createElement(react_ui_1.Tooltip.Portal, null,
|
|
84
|
-
react_3.default.createElement(react_ui_1.Tooltip.Content, { side: 'bottom' },
|
|
85
|
-
t('select emoji label'),
|
|
86
|
-
react_3.default.createElement(react_ui_1.Tooltip.Arrow, null))),
|
|
87
|
-
react_3.default.createElement(react_ui_1.Popover.Content, { side: 'bottom', onKeyDownCapture: (event) => {
|
|
88
|
-
if (event.key === 'Escape') {
|
|
89
|
-
event.stopPropagation();
|
|
90
|
-
setEmojiPickerOpen(false);
|
|
91
|
-
suppressNextTooltip.current = true;
|
|
92
|
-
}
|
|
93
|
-
} },
|
|
94
|
-
react_3.default.createElement(react_1.default, { data: data_1.default, onEmojiSelect: ({ native }) => {
|
|
95
|
-
if (native) {
|
|
96
|
-
setEmojiValue(native);
|
|
97
|
-
setEmojiPickerOpen(false);
|
|
98
|
-
}
|
|
99
|
-
}, autoFocus: true, maxFrequentRows: 0, noCountryFlags: true, theme: themeMode }),
|
|
100
|
-
react_3.default.createElement(react_ui_1.Popover.Arrow, null)))));
|
|
101
|
-
};
|
|
102
|
-
exports.EmojiPickerToolbarButton = EmojiPickerToolbarButton;
|
|
103
|
-
/**
|
|
104
|
-
* A button for picking an emoji alongside a button for unsetting it.
|
|
105
|
-
*/
|
|
106
|
-
const EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }) => {
|
|
107
|
-
const { t } = (0, react_ui_1.useTranslation)('os');
|
|
108
|
-
const [isMd] = (0, react_ui_1.useMediaQuery)('md', { ssr: false });
|
|
109
|
-
const [emojiValue, setEmojiValue] = (0, react_use_controllable_state_1.useControllableState)({
|
|
110
|
-
prop: emoji,
|
|
111
|
-
onChange: onChangeEmoji,
|
|
112
|
-
defaultProp: defaultEmoji,
|
|
113
|
-
});
|
|
114
|
-
const [emojiPickerOpen, setEmojiPickerOpen] = (0, react_3.useState)(false);
|
|
115
|
-
return (react_3.default.createElement(react_3.default.Fragment, null,
|
|
116
|
-
react_3.default.createElement(react_ui_1.Popover.Root, { open: emojiPickerOpen, onOpenChange: setEmojiPickerOpen },
|
|
117
|
-
react_3.default.createElement(react_ui_1.Popover.Trigger, { asChild: true },
|
|
118
|
-
react_3.default.createElement(react_ui_1.Button, { variant: 'ghost', classNames: 'gap-2 text-2xl plb-1', disabled: disabled },
|
|
119
|
-
react_3.default.createElement("span", { className: 'sr-only' }, t('select emoji label')),
|
|
120
|
-
react_3.default.createElement("span", { className: 'grow pis-14' }, emojiValue),
|
|
121
|
-
react_3.default.createElement(react_2.CaretDown, { className: (0, react_ui_theme_1.getSize)(4) }))),
|
|
122
|
-
react_3.default.createElement(react_ui_1.Popover.Content, { side: 'right', sideOffset: isMd ? 0 : -310, onKeyDownCapture: (event) => {
|
|
123
|
-
if (event.key === 'Escape') {
|
|
124
|
-
event.stopPropagation();
|
|
125
|
-
setEmojiPickerOpen(false);
|
|
126
|
-
}
|
|
127
|
-
} },
|
|
128
|
-
react_3.default.createElement(react_1.default, { data: data_1.default, onEmojiSelect: ({ native }) => {
|
|
129
|
-
if (native) {
|
|
130
|
-
setEmojiValue(native);
|
|
131
|
-
setEmojiPickerOpen(false);
|
|
132
|
-
}
|
|
133
|
-
}, autoFocus: true, maxFrequentRows: 0, noCountryFlags: true }),
|
|
134
|
-
react_3.default.createElement(react_ui_1.Popover.Arrow, null))),
|
|
135
|
-
react_3.default.createElement(react_ui_1.Tooltip.Root, null,
|
|
136
|
-
react_3.default.createElement(react_ui_1.Tooltip.Trigger, { asChild: true },
|
|
137
|
-
react_3.default.createElement(react_ui_1.Button, { variant: 'ghost', onClick: onClickClear, disabled: disabled },
|
|
138
|
-
react_3.default.createElement("span", { className: 'sr-only' }, t('clear label')),
|
|
139
|
-
react_3.default.createElement(react_2.ArrowCounterClockwise, null))),
|
|
140
|
-
react_3.default.createElement(react_ui_1.Tooltip.Portal, null,
|
|
141
|
-
react_3.default.createElement(react_ui_1.Tooltip.Content, { side: 'right' },
|
|
142
|
-
t('clear label'),
|
|
143
|
-
react_3.default.createElement(react_ui_1.Tooltip.Arrow, null))))));
|
|
144
|
-
};
|
|
145
|
-
exports.EmojiPickerBlock = EmojiPickerBlock;
|
|
146
|
-
//# sourceMappingURL=EmojiPicker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiPicker.js","sourceRoot":"","sources":["../../../../src/components/EmojiPicker.tsx"],"names":[],"mappings":"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"}
|