@dxos/shell 0.4.10-main.f68a1ca → 0.4.10-main.f937af6
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/index-Cms4wG79.mjs +110 -0
- package/dist/bundle/index-Cms4wG79.mjs.map +1 -0
- package/dist/bundle/index-DACjPI-n.mjs +96625 -0
- package/dist/bundle/index-DACjPI-n.mjs.map +1 -0
- package/dist/bundle/shell.mjs +9 -81099
- package/dist/bundle/shell.mjs.map +1 -1
- package/dist/bundle/shell.umd.js +156 -88
- 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 +866 -824
- package/dist/lib/browser/react.mjs.map +4 -4
- package/dist/lib/browser/testing/index.mjs +10 -9
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/types/src/components/AgentConfig.d.ts +3 -0
- package/dist/types/src/components/AgentConfig.d.ts.map +1 -0
- package/dist/types/src/components/AgentConfig.js +37 -0
- package/dist/types/src/components/AgentConfig.js.map +1 -0
- package/dist/types/src/components/DeviceList/DeviceList.d.ts +3 -0
- package/dist/types/src/components/DeviceList/DeviceList.d.ts.map +1 -0
- package/dist/types/src/components/DeviceList/DeviceList.js +29 -0
- package/dist/types/src/components/DeviceList/DeviceList.js.map +1 -0
- package/dist/types/src/components/DeviceList/DeviceListItem.d.ts +6 -0
- package/dist/types/src/components/DeviceList/DeviceListItem.d.ts.map +1 -0
- package/dist/types/src/components/DeviceList/DeviceListItem.js +72 -0
- package/dist/types/src/components/DeviceList/DeviceListItem.js.map +1 -0
- package/dist/types/src/components/DeviceList/DeviceListProps.d.ts +27 -0
- package/dist/types/src/components/DeviceList/DeviceListProps.d.ts.map +1 -0
- package/dist/types/src/components/DeviceList/DeviceListProps.js +6 -0
- package/dist/types/src/components/DeviceList/DeviceListProps.js.map +1 -0
- package/dist/types/src/components/DeviceList/index.d.ts +3 -0
- package/dist/types/src/components/DeviceList/index.d.ts.map +1 -0
- package/dist/types/src/components/DeviceList/index.js +22 -0
- package/dist/types/src/components/DeviceList/index.js.map +1 -0
- package/dist/types/src/components/EmojiPicker.d.ts +9 -2
- package/dist/types/src/components/EmojiPicker.d.ts.map +1 -1
- package/dist/types/src/components/EmojiPicker.js +57 -3
- package/dist/types/src/components/EmojiPicker.js.map +1 -1
- package/dist/types/src/components/HuePicker.d.ts +9 -2
- package/dist/types/src/components/HuePicker.d.ts.map +1 -1
- package/dist/types/src/components/HuePicker.js +75 -6
- package/dist/types/src/components/HuePicker.js.map +1 -1
- package/dist/types/src/components/IdentityList/index.d.ts +0 -1
- package/dist/types/src/components/IdentityList/index.d.ts.map +1 -1
- package/dist/types/src/components/IdentityList/index.js +0 -1
- package/dist/types/src/components/IdentityList/index.js.map +1 -1
- package/dist/types/src/components/InvitationList/InvitationListItem.js +5 -5
- package/dist/types/src/components/InvitationList/InvitationListItem.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 +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/composites/Shell/Shell.d.ts.map +1 -1
- package/dist/types/src/composites/Shell/Shell.js +1 -5
- 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 +80 -40
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts +0 -3
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +1 -43
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +8 -11
- 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 +0 -24
- package/dist/types/src/panels/IdentityPanel/identityMachine.js.map +1 -1
- 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 +9 -43
- 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 +0 -2
- package/dist/types/src/panels/IdentityPanel/steps/index.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/index.js +0 -2
- package/dist/types/src/panels/IdentityPanel/steps/index.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/useAgentHandlers.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js +5 -1
- package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js.map +1 -1
- package/dist/types/src/panels/SpacePanel/steps/SpaceManager.d.ts.map +1 -1
- package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js +3 -1
- package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js.map +1 -1
- package/dist/types/src/playwright/invitations.spec.js +3 -1
- package/dist/types/src/playwright/invitations.spec.js.map +1 -1
- package/dist/types/src/steps/ConfirmReset.d.ts.map +1 -1
- package/dist/types/src/steps/ConfirmReset.js +4 -3
- package/dist/types/src/steps/ConfirmReset.js.map +1 -1
- package/dist/types/src/steps/InvitationManager.d.ts +1 -1
- package/dist/types/src/steps/InvitationManager.d.ts.map +1 -1
- package/dist/types/src/steps/InvitationManager.js +3 -4
- package/dist/types/src/steps/InvitationManager.js.map +1 -1
- package/dist/types/src/stories/Invitations.e2e-stories.d.ts.map +1 -1
- package/dist/types/src/stories/Invitations.e2e-stories.js +5 -2
- package/dist/types/src/stories/Invitations.e2e-stories.js.map +1 -1
- package/dist/types/src/testing/shell-manager.d.ts.map +1 -1
- package/dist/types/src/testing/shell-manager.js +10 -9
- package/dist/types/src/testing/shell-manager.js.map +1 -1
- package/dist/types/src/translations/locales/en-US.d.ts +12 -2
- package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
- package/dist/types/src/translations/locales/en-US.js +12 -2
- package/dist/types/src/translations/locales/en-US.js.map +1 -1
- package/dist/types/src/types/index.js +1 -0
- package/dist/types/src/types/index.js.map +1 -1
- package/package.json +22 -21
- package/src/components/AgentConfig.tsx +66 -0
- package/src/components/DeviceList/DeviceList.tsx +54 -0
- package/src/components/DeviceList/DeviceListItem.tsx +120 -0
- package/src/components/DeviceList/DeviceListProps.ts +33 -0
- package/src/components/DeviceList/index.ts +6 -0
- package/src/components/EmojiPicker.tsx +101 -4
- package/src/components/HuePicker.tsx +99 -5
- package/src/components/IdentityList/index.ts +0 -1
- package/src/components/InvitationList/InvitationListItem.tsx +5 -5
- package/src/components/index.ts +2 -0
- package/src/composites/Shell/Shell.tsx +1 -7
- package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +0 -63
- package/src/panels/IdentityPanel/IdentityPanel.tsx +123 -34
- package/src/panels/IdentityPanel/IdentityPanelProps.ts +10 -14
- package/src/panels/IdentityPanel/identityMachine.ts +1 -31
- package/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx +23 -76
- package/src/panels/IdentityPanel/steps/ProfileForm.tsx +12 -4
- package/src/panels/IdentityPanel/steps/index.ts +0 -2
- package/src/panels/IdentityPanel/useAgentHandlers.ts +5 -1
- package/src/panels/SpacePanel/steps/SpaceManager.tsx +3 -1
- package/src/playwright/invitations.spec.ts +3 -1
- package/src/steps/ConfirmReset.tsx +4 -3
- package/src/steps/InvitationManager.tsx +4 -4
- package/src/stories/Invitations.e2e-stories.tsx +6 -3
- package/src/testing/shell-manager.ts +10 -9
- package/src/translations/locales/en-US.ts +13 -2
- package/src/types/index.ts +2 -0
- package/dist/types/src/components/IdentityList/DeviceList.d.ts +0 -7
- package/dist/types/src/components/IdentityList/DeviceList.d.ts.map +0 -1
- package/dist/types/src/components/IdentityList/DeviceList.js +0 -34
- package/dist/types/src/components/IdentityList/DeviceList.js.map +0 -1
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts +0 -3
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts.map +0 -1
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js +0 -26
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js.map +0 -1
- package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.d.ts +0 -10
- package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.d.ts.map +0 -1
- package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.js +0 -23
- package/dist/types/src/panels/IdentityPanel/steps/DeviceManager.js.map +0 -1
- package/src/components/IdentityList/DeviceList.tsx +0 -49
- package/src/panels/IdentityPanel/steps/AgentForm.tsx +0 -61
- package/src/panels/IdentityPanel/steps/DeviceManager.tsx +0 -41
|
@@ -2,14 +2,73 @@ import {
|
|
|
2
2
|
__export
|
|
3
3
|
} from "./chunk-ZSTKOCBT.mjs";
|
|
4
4
|
|
|
5
|
+
// packages/sdk/shell/src/components/AgentConfig.tsx
|
|
6
|
+
import { Database, Plus, Power } from "@phosphor-icons/react";
|
|
7
|
+
import React from "react";
|
|
8
|
+
import { Avatar, Button, Tooltip, useTranslation } from "@dxos/react-ui";
|
|
9
|
+
import { descriptionText, getSize, mx } from "@dxos/react-ui-theme";
|
|
10
|
+
var AgentConfig = ({ agentActive, agentStatus, onAgentDestroy, onAgentCreate }) => {
|
|
11
|
+
const { t } = useTranslation("os");
|
|
12
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("h2", {
|
|
13
|
+
className: mx(descriptionText, "text-center mbs-4")
|
|
14
|
+
}, t("agent heading")), agentActive ? /* @__PURE__ */ React.createElement("div", {
|
|
15
|
+
role: "group",
|
|
16
|
+
className: "flex gap-2 items-center"
|
|
17
|
+
}, /* @__PURE__ */ React.createElement(Avatar.Root, {
|
|
18
|
+
status: agentStatus ? "active" : "inactive",
|
|
19
|
+
variant: "square"
|
|
20
|
+
}, /* @__PURE__ */ React.createElement(Avatar.Frame, {
|
|
21
|
+
classNames: "place-self-center"
|
|
22
|
+
}, /* @__PURE__ */ React.createElement(Database, {
|
|
23
|
+
weight: "duotone",
|
|
24
|
+
width: 24,
|
|
25
|
+
height: 24,
|
|
26
|
+
x: 8,
|
|
27
|
+
y: 8
|
|
28
|
+
})), /* @__PURE__ */ React.createElement(Avatar.Label, {
|
|
29
|
+
classNames: "flex-1 text-sm truncate"
|
|
30
|
+
}, t("agent device label"))), /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
|
|
31
|
+
asChild: true
|
|
32
|
+
}, /* @__PURE__ */ React.createElement(Button, {
|
|
33
|
+
variant: "ghost",
|
|
34
|
+
classNames: "pli-0 is-[--rail-action] bs-[--rail-action]",
|
|
35
|
+
"data-testid": "agent.destroy",
|
|
36
|
+
onClick: onAgentDestroy
|
|
37
|
+
}, /* @__PURE__ */ React.createElement("span", {
|
|
38
|
+
className: "sr-only"
|
|
39
|
+
}, t("destroy agent label")), /* @__PURE__ */ React.createElement(Power, {
|
|
40
|
+
className: getSize(5)
|
|
41
|
+
}))), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
|
|
42
|
+
side: "bottom",
|
|
43
|
+
classNames: "z-50"
|
|
44
|
+
}, t("destroy agent label"))))) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Button, {
|
|
45
|
+
variant: "ghost",
|
|
46
|
+
classNames: "mlb-2 is-full justify-start gap-2 !pis-0 !pie-3",
|
|
47
|
+
"data-testid": "devices-panel.create-agent",
|
|
48
|
+
onClick: onAgentCreate,
|
|
49
|
+
"aria-describedby": "devices-panel.create-agent.description"
|
|
50
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
51
|
+
role: "img",
|
|
52
|
+
className: mx(getSize(8), "m-1 rounded-sm surface-input grid place-items-center")
|
|
53
|
+
}, /* @__PURE__ */ React.createElement(Plus, {
|
|
54
|
+
weight: "light",
|
|
55
|
+
className: getSize(6)
|
|
56
|
+
})), /* @__PURE__ */ React.createElement("span", {
|
|
57
|
+
className: "grow font-medium text-start"
|
|
58
|
+
}, t("create agent label"))), /* @__PURE__ */ React.createElement("p", {
|
|
59
|
+
id: "devices-panel.create-agent.description",
|
|
60
|
+
className: descriptionText
|
|
61
|
+
}, t("agent message body"))));
|
|
62
|
+
};
|
|
63
|
+
|
|
5
64
|
// packages/sdk/shell/src/components/Clipboard/CopyButton.tsx
|
|
6
65
|
import { Check, Copy } from "@phosphor-icons/react";
|
|
7
|
-
import
|
|
8
|
-
import { Button, Tooltip, useTranslation } from "@dxos/react-ui";
|
|
9
|
-
import { getSize, mx } from "@dxos/react-ui-theme";
|
|
66
|
+
import React3, { useState as useState2 } from "react";
|
|
67
|
+
import { Button as Button2, Tooltip as Tooltip2, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
68
|
+
import { getSize as getSize2, mx as mx2 } from "@dxos/react-ui-theme";
|
|
10
69
|
|
|
11
70
|
// packages/sdk/shell/src/components/Clipboard/ClipboardProvider.tsx
|
|
12
|
-
import
|
|
71
|
+
import React2, { createContext, useCallback, useContext, useState } from "react";
|
|
13
72
|
var ClipboardContext = /* @__PURE__ */ createContext({
|
|
14
73
|
textValue: "",
|
|
15
74
|
setTextValue: async (_) => {
|
|
@@ -22,7 +81,7 @@ var ClipboardProvider = ({ children }) => {
|
|
|
22
81
|
await navigator.clipboard.writeText(nextValue);
|
|
23
82
|
return setInternalTextValue(nextValue);
|
|
24
83
|
}, []);
|
|
25
|
-
return /* @__PURE__ */
|
|
84
|
+
return /* @__PURE__ */ React2.createElement(ClipboardContext.Provider, {
|
|
26
85
|
value: {
|
|
27
86
|
textValue,
|
|
28
87
|
setTextValue
|
|
@@ -32,11 +91,11 @@ var ClipboardProvider = ({ children }) => {
|
|
|
32
91
|
|
|
33
92
|
// packages/sdk/shell/src/components/Clipboard/CopyButton.tsx
|
|
34
93
|
var inactiveLabelStyles = "invisible bs-px -mbe-px overflow-hidden";
|
|
35
|
-
var CopyButton = ({ value, classNames, iconProps, ...props }) => {
|
|
36
|
-
const { t } =
|
|
94
|
+
var CopyButton = ({ value, classNames, iconProps: iconProps2, ...props }) => {
|
|
95
|
+
const { t } = useTranslation2("os");
|
|
37
96
|
const { textValue, setTextValue } = useClipboardContext();
|
|
38
97
|
const isCopied = textValue === value;
|
|
39
|
-
return /* @__PURE__ */
|
|
98
|
+
return /* @__PURE__ */ React3.createElement(Button2, {
|
|
40
99
|
...props,
|
|
41
100
|
classNames: [
|
|
42
101
|
"inline-flex flex-col justify-center",
|
|
@@ -44,60 +103,60 @@ var CopyButton = ({ value, classNames, iconProps, ...props }) => {
|
|
|
44
103
|
],
|
|
45
104
|
onClick: () => setTextValue(value),
|
|
46
105
|
"data-testid": "copy-invitation"
|
|
47
|
-
}, /* @__PURE__ */
|
|
106
|
+
}, /* @__PURE__ */ React3.createElement("div", {
|
|
48
107
|
role: "none",
|
|
49
|
-
className:
|
|
50
|
-
}, /* @__PURE__ */
|
|
108
|
+
className: mx2("flex gap-1 items-center", isCopied && inactiveLabelStyles)
|
|
109
|
+
}, /* @__PURE__ */ React3.createElement("span", {
|
|
51
110
|
className: "pli-1"
|
|
52
|
-
}, t("copy invitation code label")), /* @__PURE__ */
|
|
53
|
-
className:
|
|
54
|
-
...
|
|
55
|
-
})), /* @__PURE__ */
|
|
111
|
+
}, t("copy invitation code label")), /* @__PURE__ */ React3.createElement(Copy, {
|
|
112
|
+
className: getSize2(5),
|
|
113
|
+
...iconProps2
|
|
114
|
+
})), /* @__PURE__ */ React3.createElement("div", {
|
|
56
115
|
role: "none",
|
|
57
|
-
className:
|
|
58
|
-
}, /* @__PURE__ */
|
|
116
|
+
className: mx2("flex gap-1 items-center", !isCopied && inactiveLabelStyles)
|
|
117
|
+
}, /* @__PURE__ */ React3.createElement("span", {
|
|
59
118
|
className: "pli-1"
|
|
60
|
-
}, t("copy success label")), /* @__PURE__ */
|
|
61
|
-
className:
|
|
62
|
-
...
|
|
119
|
+
}, t("copy success label")), /* @__PURE__ */ React3.createElement(Check, {
|
|
120
|
+
className: getSize2(5),
|
|
121
|
+
...iconProps2
|
|
63
122
|
})));
|
|
64
123
|
};
|
|
65
|
-
var CopyButtonIconOnly = ({ value, classNames, iconProps, variant, ...props }) => {
|
|
66
|
-
const { t } =
|
|
124
|
+
var CopyButtonIconOnly = ({ value, classNames, iconProps: iconProps2, variant, ...props }) => {
|
|
125
|
+
const { t } = useTranslation2("os");
|
|
67
126
|
const { textValue, setTextValue } = useClipboardContext();
|
|
68
127
|
const isCopied = textValue === value;
|
|
69
128
|
const label = isCopied ? t("copy success label") : t("copy invitation code label");
|
|
70
129
|
const [open, setOpen] = useState2(false);
|
|
71
|
-
return /* @__PURE__ */
|
|
130
|
+
return /* @__PURE__ */ React3.createElement(Tooltip2.Root, {
|
|
72
131
|
delayDuration: 1500,
|
|
73
132
|
open,
|
|
74
133
|
onOpenChange: setOpen
|
|
75
|
-
}, /* @__PURE__ */
|
|
134
|
+
}, /* @__PURE__ */ React3.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React3.createElement(Tooltip2.Content, {
|
|
76
135
|
side: "bottom",
|
|
77
136
|
sideOffset: 12,
|
|
78
137
|
classNames: "z-30"
|
|
79
|
-
}, /* @__PURE__ */
|
|
138
|
+
}, /* @__PURE__ */ React3.createElement("span", null, label), /* @__PURE__ */ React3.createElement(Tooltip2.Arrow, null))), /* @__PURE__ */ React3.createElement(Tooltip2.Trigger, {
|
|
80
139
|
"aria-label": label,
|
|
81
140
|
...props,
|
|
82
141
|
onClick: () => setTextValue(value).then(() => setOpen(true)),
|
|
83
142
|
"data-testid": "copy-invitation",
|
|
84
143
|
asChild: true
|
|
85
|
-
}, /* @__PURE__ */
|
|
144
|
+
}, /* @__PURE__ */ React3.createElement(Button2, {
|
|
86
145
|
variant,
|
|
87
146
|
classNames: [
|
|
88
147
|
"inline-flex flex-col justify-center",
|
|
89
148
|
classNames
|
|
90
149
|
]
|
|
91
|
-
}, /* @__PURE__ */
|
|
92
|
-
className:
|
|
93
|
-
...
|
|
150
|
+
}, /* @__PURE__ */ React3.createElement(Copy, {
|
|
151
|
+
className: getSize2(5),
|
|
152
|
+
...iconProps2
|
|
94
153
|
}))));
|
|
95
154
|
};
|
|
96
155
|
|
|
97
156
|
// packages/sdk/shell/src/components/CompoundButton/CompoundButton.tsx
|
|
98
|
-
import
|
|
157
|
+
import React4 from "react";
|
|
99
158
|
import { useId, useThemeContext, useElevationContext } from "@dxos/react-ui";
|
|
100
|
-
import { descriptionText, descriptionTextPrimary, mx as
|
|
159
|
+
import { descriptionText as descriptionText2, descriptionTextPrimary, mx as mx3 } from "@dxos/react-ui-theme";
|
|
101
160
|
var CompoundButton = ({ children, description, before, after, variant = "default", elevation: propsElevation, slots = {}, ...buttonProps }) => {
|
|
102
161
|
const labelId = useId("compoundButton-label");
|
|
103
162
|
const descriptionId = useId("compoundButton-description");
|
|
@@ -110,7 +169,7 @@ var CompoundButton = ({ children, description, before, after, variant = "default
|
|
|
110
169
|
textWrap: true
|
|
111
170
|
};
|
|
112
171
|
const buttonClassName = tx("button.root", "button button--compound", styleProps, "flex items-center gap-4 plb-2.5", slots.root?.className);
|
|
113
|
-
return /* @__PURE__ */
|
|
172
|
+
return /* @__PURE__ */ React4.createElement("button", {
|
|
114
173
|
...buttonProps,
|
|
115
174
|
...slots.root,
|
|
116
175
|
className: buttonClassName,
|
|
@@ -118,22 +177,22 @@ var CompoundButton = ({ children, description, before, after, variant = "default
|
|
|
118
177
|
...description && {
|
|
119
178
|
"aria-describedby": descriptionId
|
|
120
179
|
}
|
|
121
|
-
}, before && /* @__PURE__ */
|
|
180
|
+
}, before && /* @__PURE__ */ React4.createElement("div", {
|
|
122
181
|
role: "none",
|
|
123
182
|
className: "grow-0"
|
|
124
|
-
}, before), /* @__PURE__ */
|
|
183
|
+
}, before), /* @__PURE__ */ React4.createElement("div", {
|
|
125
184
|
role: "none",
|
|
126
185
|
...slots.middle,
|
|
127
|
-
className:
|
|
128
|
-
}, /* @__PURE__ */
|
|
186
|
+
className: mx3("grow whitespace-normal flex flex-col gap-1 text-left", slots.middle?.className)
|
|
187
|
+
}, /* @__PURE__ */ React4.createElement("p", {
|
|
129
188
|
...slots.label,
|
|
130
189
|
id: labelId,
|
|
131
|
-
className:
|
|
132
|
-
}, children), description && /* @__PURE__ */
|
|
190
|
+
className: mx3(slots.label?.className)
|
|
191
|
+
}, children), description && /* @__PURE__ */ React4.createElement("p", {
|
|
133
192
|
id: descriptionId,
|
|
134
193
|
...slots.description,
|
|
135
|
-
className:
|
|
136
|
-
}, description)), after && /* @__PURE__ */
|
|
194
|
+
className: mx3("text-xs mbe-1 font-normal", variant === "primary" ? descriptionTextPrimary : descriptionText2, slots.description?.className)
|
|
195
|
+
}, description)), after && /* @__PURE__ */ React4.createElement("div", {
|
|
137
196
|
role: "none",
|
|
138
197
|
className: "grow-0"
|
|
139
198
|
}, after));
|
|
@@ -142,13 +201,78 @@ var CompoundButton = ({ children, description, before, after, variant = "default
|
|
|
142
201
|
// packages/sdk/shell/src/components/EmojiPicker.tsx
|
|
143
202
|
import emojiData from "@emoji-mart/data";
|
|
144
203
|
import EmojiMart from "@emoji-mart/react";
|
|
145
|
-
import { ArrowCounterClockwise, CaretDown } from "@phosphor-icons/react";
|
|
204
|
+
import { ArrowCounterClockwise, CaretDown, ImageSquare } from "@phosphor-icons/react";
|
|
146
205
|
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
147
|
-
import
|
|
148
|
-
import { Button as
|
|
149
|
-
import { getSize as
|
|
150
|
-
var
|
|
151
|
-
const { t } =
|
|
206
|
+
import React5, { useRef, useState as useState3 } from "react";
|
|
207
|
+
import { Button as Button3, Popover, useTranslation as useTranslation3, Tooltip as Tooltip3, Toolbar, useMediaQuery } from "@dxos/react-ui";
|
|
208
|
+
import { getSize as getSize3 } from "@dxos/react-ui-theme";
|
|
209
|
+
var EmojiPickerToolbarButton = ({ disabled, defaultEmoji, emoji, onChangeEmoji, classNames }) => {
|
|
210
|
+
const { t } = useTranslation3("os");
|
|
211
|
+
const [_emojiValue, setEmojiValue] = useControllableState({
|
|
212
|
+
prop: emoji,
|
|
213
|
+
onChange: onChangeEmoji,
|
|
214
|
+
defaultProp: defaultEmoji
|
|
215
|
+
});
|
|
216
|
+
const [emojiPickerOpen, setEmojiPickerOpen] = useState3(false);
|
|
217
|
+
const suppressNextTooltip = useRef(false);
|
|
218
|
+
const [triggerTooltipOpen, setTriggerTooltipOpen] = useState3(false);
|
|
219
|
+
return /* @__PURE__ */ React5.createElement(Tooltip3.Root, {
|
|
220
|
+
open: triggerTooltipOpen,
|
|
221
|
+
onOpenChange: (nextOpen) => {
|
|
222
|
+
if (suppressNextTooltip.current) {
|
|
223
|
+
setTriggerTooltipOpen(false);
|
|
224
|
+
suppressNextTooltip.current = false;
|
|
225
|
+
} else {
|
|
226
|
+
setTriggerTooltipOpen(nextOpen);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}, /* @__PURE__ */ React5.createElement(Popover.Root, {
|
|
230
|
+
open: emojiPickerOpen,
|
|
231
|
+
onOpenChange: (nextOpen) => {
|
|
232
|
+
setEmojiPickerOpen(nextOpen);
|
|
233
|
+
suppressNextTooltip.current = true;
|
|
234
|
+
}
|
|
235
|
+
}, /* @__PURE__ */ React5.createElement(Tooltip3.Trigger, {
|
|
236
|
+
asChild: true
|
|
237
|
+
}, /* @__PURE__ */ React5.createElement(Popover.Trigger, {
|
|
238
|
+
asChild: true
|
|
239
|
+
}, /* @__PURE__ */ React5.createElement(Toolbar.Button, {
|
|
240
|
+
classNames: [
|
|
241
|
+
"gap-2 text-2xl plb-1",
|
|
242
|
+
classNames
|
|
243
|
+
],
|
|
244
|
+
disabled
|
|
245
|
+
}, /* @__PURE__ */ React5.createElement("span", {
|
|
246
|
+
className: "sr-only"
|
|
247
|
+
}, t("select emoji label")), /* @__PURE__ */ React5.createElement(ImageSquare, {
|
|
248
|
+
className: getSize3(5)
|
|
249
|
+
})))), /* @__PURE__ */ React5.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React5.createElement(Tooltip3.Content, {
|
|
250
|
+
side: "bottom",
|
|
251
|
+
classNames: "z-50"
|
|
252
|
+
}, t("select emoji label"), /* @__PURE__ */ React5.createElement(Tooltip3.Arrow, null))), /* @__PURE__ */ React5.createElement(Popover.Content, {
|
|
253
|
+
side: "bottom",
|
|
254
|
+
onKeyDownCapture: (event) => {
|
|
255
|
+
if (event.key === "Escape") {
|
|
256
|
+
event.stopPropagation();
|
|
257
|
+
setEmojiPickerOpen(false);
|
|
258
|
+
suppressNextTooltip.current = true;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}, /* @__PURE__ */ React5.createElement(EmojiMart, {
|
|
262
|
+
data: emojiData,
|
|
263
|
+
onEmojiSelect: ({ native }) => {
|
|
264
|
+
if (native) {
|
|
265
|
+
setEmojiValue(native);
|
|
266
|
+
setEmojiPickerOpen(false);
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
autoFocus: true,
|
|
270
|
+
maxFrequentRows: 0,
|
|
271
|
+
noCountryFlags: true
|
|
272
|
+
}), /* @__PURE__ */ React5.createElement(Popover.Arrow, null))));
|
|
273
|
+
};
|
|
274
|
+
var EmojiPickerBlock = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear }) => {
|
|
275
|
+
const { t } = useTranslation3("os");
|
|
152
276
|
const [isMd] = useMediaQuery("md", {
|
|
153
277
|
ssr: false
|
|
154
278
|
});
|
|
@@ -158,22 +282,22 @@ var EmojiPicker = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear
|
|
|
158
282
|
defaultProp: defaultEmoji
|
|
159
283
|
});
|
|
160
284
|
const [emojiPickerOpen, setEmojiPickerOpen] = useState3(false);
|
|
161
|
-
return /* @__PURE__ */
|
|
285
|
+
return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(Popover.Root, {
|
|
162
286
|
open: emojiPickerOpen,
|
|
163
287
|
onOpenChange: setEmojiPickerOpen
|
|
164
|
-
}, /* @__PURE__ */
|
|
288
|
+
}, /* @__PURE__ */ React5.createElement(Popover.Trigger, {
|
|
165
289
|
asChild: true
|
|
166
|
-
}, /* @__PURE__ */
|
|
290
|
+
}, /* @__PURE__ */ React5.createElement(Button3, {
|
|
167
291
|
variant: "ghost",
|
|
168
292
|
classNames: "gap-2 text-2xl plb-1",
|
|
169
293
|
disabled
|
|
170
|
-
}, /* @__PURE__ */
|
|
294
|
+
}, /* @__PURE__ */ React5.createElement("span", {
|
|
171
295
|
className: "sr-only"
|
|
172
|
-
}, t("select emoji label")), /* @__PURE__ */
|
|
296
|
+
}, t("select emoji label")), /* @__PURE__ */ React5.createElement("span", {
|
|
173
297
|
className: "grow pis-14"
|
|
174
|
-
}, emojiValue), /* @__PURE__ */
|
|
175
|
-
className:
|
|
176
|
-
}))), /* @__PURE__ */
|
|
298
|
+
}, emojiValue), /* @__PURE__ */ React5.createElement(CaretDown, {
|
|
299
|
+
className: getSize3(4)
|
|
300
|
+
}))), /* @__PURE__ */ React5.createElement(Popover.Content, {
|
|
177
301
|
side: "right",
|
|
178
302
|
sideOffset: isMd ? 0 : -310,
|
|
179
303
|
onKeyDownCapture: (event) => {
|
|
@@ -182,7 +306,7 @@ var EmojiPicker = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear
|
|
|
182
306
|
setEmojiPickerOpen(false);
|
|
183
307
|
}
|
|
184
308
|
}
|
|
185
|
-
}, /* @__PURE__ */
|
|
309
|
+
}, /* @__PURE__ */ React5.createElement(EmojiMart, {
|
|
186
310
|
data: emojiData,
|
|
187
311
|
onEmojiSelect: ({ native }) => {
|
|
188
312
|
if (native) {
|
|
@@ -193,35 +317,35 @@ var EmojiPicker = ({ disabled, defaultEmoji, emoji, onChangeEmoji, onClickClear
|
|
|
193
317
|
autoFocus: true,
|
|
194
318
|
maxFrequentRows: 0,
|
|
195
319
|
noCountryFlags: true
|
|
196
|
-
}), /* @__PURE__ */
|
|
320
|
+
}), /* @__PURE__ */ React5.createElement(Popover.Arrow, null))), /* @__PURE__ */ React5.createElement(Tooltip3.Root, null, /* @__PURE__ */ React5.createElement(Tooltip3.Trigger, {
|
|
197
321
|
asChild: true
|
|
198
|
-
}, /* @__PURE__ */
|
|
322
|
+
}, /* @__PURE__ */ React5.createElement(Button3, {
|
|
199
323
|
variant: "ghost",
|
|
200
324
|
onClick: onClickClear,
|
|
201
325
|
disabled
|
|
202
|
-
}, /* @__PURE__ */
|
|
326
|
+
}, /* @__PURE__ */ React5.createElement("span", {
|
|
203
327
|
className: "sr-only"
|
|
204
|
-
}, t("clear label")), /* @__PURE__ */
|
|
328
|
+
}, t("clear label")), /* @__PURE__ */ React5.createElement(ArrowCounterClockwise, null))), /* @__PURE__ */ React5.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React5.createElement(Tooltip3.Content, {
|
|
205
329
|
style: {
|
|
206
330
|
zIndex: 70
|
|
207
331
|
},
|
|
208
332
|
side: "right"
|
|
209
|
-
}, t("clear label"), /* @__PURE__ */
|
|
333
|
+
}, t("clear label"), /* @__PURE__ */ React5.createElement(Tooltip3.Arrow, null)))));
|
|
210
334
|
};
|
|
211
335
|
|
|
212
336
|
// packages/sdk/shell/src/components/HuePicker.tsx
|
|
213
|
-
import { ArrowCounterClockwise as ArrowCounterClockwise2, CaretDown as CaretDown2, Check as Check2 } from "@phosphor-icons/react";
|
|
337
|
+
import { ArrowCounterClockwise as ArrowCounterClockwise2, CaretDown as CaretDown2, Check as Check2, Palette } from "@phosphor-icons/react";
|
|
214
338
|
import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
|
|
215
|
-
import
|
|
216
|
-
import { Button as
|
|
217
|
-
import { getSize as
|
|
339
|
+
import React6, { useRef as useRef2, useState as useState4 } from "react";
|
|
340
|
+
import { Button as Button4, useTranslation as useTranslation4, Tooltip as Tooltip4, DropdownMenu, useThemeContext as useThemeContext2, Toolbar as Toolbar2 } from "@dxos/react-ui";
|
|
341
|
+
import { getSize as getSize4, hueTokenThemes, mx as mx4 } from "@dxos/react-ui-theme";
|
|
218
342
|
var HuePreview = ({ hue }) => {
|
|
219
343
|
const { tx } = useThemeContext2();
|
|
220
|
-
return /* @__PURE__ */
|
|
344
|
+
return /* @__PURE__ */ React6.createElement("svg", {
|
|
221
345
|
width: 12,
|
|
222
346
|
height: 12,
|
|
223
347
|
viewBox: "0 0 12 12"
|
|
224
|
-
}, /* @__PURE__ */
|
|
348
|
+
}, /* @__PURE__ */ React6.createElement("rect", {
|
|
225
349
|
x: 0,
|
|
226
350
|
y: 0,
|
|
227
351
|
width: 12,
|
|
@@ -231,130 +355,150 @@ var HuePreview = ({ hue }) => {
|
|
|
231
355
|
})
|
|
232
356
|
}));
|
|
233
357
|
};
|
|
234
|
-
var
|
|
235
|
-
const { t } =
|
|
358
|
+
var HuePickerToolbarButton = ({ disabled, hue, onChangeHue, classNames, defaultHue }) => {
|
|
359
|
+
const { t } = useTranslation4("os");
|
|
360
|
+
const [hueValue, setHueValue] = useControllableState2({
|
|
361
|
+
prop: hue,
|
|
362
|
+
onChange: onChangeHue,
|
|
363
|
+
defaultProp: defaultHue
|
|
364
|
+
});
|
|
365
|
+
const [huePickerOpen, setHuePickerOpen] = useState4(false);
|
|
366
|
+
const suppressNextTooltip = useRef2(false);
|
|
367
|
+
const [triggerTooltipOpen, setTriggerTooltipOpen] = useState4(false);
|
|
368
|
+
return /* @__PURE__ */ React6.createElement(Tooltip4.Root, {
|
|
369
|
+
open: triggerTooltipOpen,
|
|
370
|
+
onOpenChange: (nextOpen) => {
|
|
371
|
+
if (suppressNextTooltip.current) {
|
|
372
|
+
setTriggerTooltipOpen(false);
|
|
373
|
+
suppressNextTooltip.current = false;
|
|
374
|
+
} else {
|
|
375
|
+
setTriggerTooltipOpen(nextOpen);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}, /* @__PURE__ */ React6.createElement(DropdownMenu.Root, {
|
|
379
|
+
modal: false,
|
|
380
|
+
open: huePickerOpen,
|
|
381
|
+
onOpenChange: (nextOpen) => {
|
|
382
|
+
setHuePickerOpen(nextOpen);
|
|
383
|
+
suppressNextTooltip.current = true;
|
|
384
|
+
}
|
|
385
|
+
}, /* @__PURE__ */ React6.createElement(Tooltip4.Trigger, {
|
|
386
|
+
asChild: true
|
|
387
|
+
}, /* @__PURE__ */ React6.createElement(DropdownMenu.Trigger, {
|
|
388
|
+
asChild: true
|
|
389
|
+
}, /* @__PURE__ */ React6.createElement(Toolbar2.Button, {
|
|
390
|
+
classNames: mx4("gap-2 plb-1", classNames),
|
|
391
|
+
disabled
|
|
392
|
+
}, /* @__PURE__ */ React6.createElement("span", {
|
|
393
|
+
className: "sr-only"
|
|
394
|
+
}, t("select hue label")), /* @__PURE__ */ React6.createElement(Palette, {
|
|
395
|
+
className: getSize4(5)
|
|
396
|
+
})))), /* @__PURE__ */ React6.createElement(Tooltip4.Portal, null, /* @__PURE__ */ React6.createElement(Tooltip4.Content, {
|
|
397
|
+
side: "bottom",
|
|
398
|
+
classNames: "z-50"
|
|
399
|
+
}, t("select hue label"), /* @__PURE__ */ React6.createElement(Tooltip4.Arrow, null))), /* @__PURE__ */ React6.createElement(DropdownMenu.Content, {
|
|
400
|
+
side: "bottom"
|
|
401
|
+
}, /* @__PURE__ */ React6.createElement(DropdownMenu.Viewport, null, Object.keys(hueTokenThemes).map((hue2) => {
|
|
402
|
+
return /* @__PURE__ */ React6.createElement(DropdownMenu.CheckboxItem, {
|
|
403
|
+
key: hue2,
|
|
404
|
+
checked: hue2 === hueValue,
|
|
405
|
+
onCheckedChange: () => setHueValue(hue2)
|
|
406
|
+
}, /* @__PURE__ */ React6.createElement(HuePreview, {
|
|
407
|
+
hue: hue2
|
|
408
|
+
}), /* @__PURE__ */ React6.createElement("span", {
|
|
409
|
+
className: "grow"
|
|
410
|
+
}, t(`${hue2} label`)), /* @__PURE__ */ React6.createElement(DropdownMenu.ItemIndicator, null, /* @__PURE__ */ React6.createElement(Check2, null)));
|
|
411
|
+
})), /* @__PURE__ */ React6.createElement(DropdownMenu.Arrow, null))));
|
|
412
|
+
};
|
|
413
|
+
var HuePickerBlock = ({ disabled, hue, onChangeHue, defaultHue, onClickClear }) => {
|
|
414
|
+
const { t } = useTranslation4("os");
|
|
236
415
|
const [hueValue, setHueValue] = useControllableState2({
|
|
237
416
|
prop: hue,
|
|
238
417
|
onChange: onChangeHue,
|
|
239
418
|
defaultProp: defaultHue
|
|
240
419
|
});
|
|
241
|
-
return /* @__PURE__ */
|
|
420
|
+
return /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(DropdownMenu.Root, {
|
|
242
421
|
modal: false
|
|
243
|
-
}, /* @__PURE__ */
|
|
422
|
+
}, /* @__PURE__ */ React6.createElement(DropdownMenu.Trigger, {
|
|
244
423
|
asChild: true
|
|
245
|
-
}, /* @__PURE__ */
|
|
424
|
+
}, /* @__PURE__ */ React6.createElement(Button4, {
|
|
246
425
|
variant: "ghost",
|
|
247
426
|
classNames: "gap-2 plb-1",
|
|
248
427
|
disabled
|
|
249
|
-
}, /* @__PURE__ */
|
|
428
|
+
}, /* @__PURE__ */ React6.createElement("span", {
|
|
250
429
|
className: "sr-only"
|
|
251
|
-
}, t("select hue label")), /* @__PURE__ */
|
|
430
|
+
}, t("select hue label")), /* @__PURE__ */ React6.createElement("div", {
|
|
252
431
|
role: "none",
|
|
253
432
|
className: "pis-14 grow flex items-center justify-center gap-2"
|
|
254
|
-
}, /* @__PURE__ */
|
|
433
|
+
}, /* @__PURE__ */ React6.createElement(HuePreview, {
|
|
255
434
|
hue: hueValue
|
|
256
|
-
}), /* @__PURE__ */
|
|
257
|
-
className:
|
|
258
|
-
}))), /* @__PURE__ */
|
|
435
|
+
}), /* @__PURE__ */ React6.createElement("span", null, t(`${hueValue} label`))), /* @__PURE__ */ React6.createElement(CaretDown2, {
|
|
436
|
+
className: getSize4(4)
|
|
437
|
+
}))), /* @__PURE__ */ React6.createElement(DropdownMenu.Content, {
|
|
259
438
|
side: "right"
|
|
260
|
-
}, /* @__PURE__ */
|
|
261
|
-
return /* @__PURE__ */
|
|
439
|
+
}, /* @__PURE__ */ React6.createElement(DropdownMenu.Viewport, null, Object.keys(hueTokenThemes).map((hue2) => {
|
|
440
|
+
return /* @__PURE__ */ React6.createElement(DropdownMenu.CheckboxItem, {
|
|
262
441
|
key: hue2,
|
|
263
442
|
checked: hue2 === hueValue,
|
|
264
443
|
onCheckedChange: () => setHueValue(hue2)
|
|
265
|
-
}, /* @__PURE__ */
|
|
444
|
+
}, /* @__PURE__ */ React6.createElement(HuePreview, {
|
|
266
445
|
hue: hue2
|
|
267
|
-
}), /* @__PURE__ */
|
|
446
|
+
}), /* @__PURE__ */ React6.createElement("span", {
|
|
268
447
|
className: "grow"
|
|
269
|
-
}, t(`${hue2} label`)), /* @__PURE__ */
|
|
270
|
-
})), /* @__PURE__ */
|
|
448
|
+
}, t(`${hue2} label`)), /* @__PURE__ */ React6.createElement(DropdownMenu.ItemIndicator, null, /* @__PURE__ */ React6.createElement(Check2, null)));
|
|
449
|
+
})), /* @__PURE__ */ React6.createElement(DropdownMenu.Arrow, null))), /* @__PURE__ */ React6.createElement(Tooltip4.Root, null, /* @__PURE__ */ React6.createElement(Tooltip4.Trigger, {
|
|
271
450
|
asChild: true
|
|
272
|
-
}, /* @__PURE__ */
|
|
451
|
+
}, /* @__PURE__ */ React6.createElement(Button4, {
|
|
273
452
|
variant: "ghost",
|
|
274
453
|
onClick: onClickClear,
|
|
275
454
|
disabled
|
|
276
|
-
}, /* @__PURE__ */
|
|
455
|
+
}, /* @__PURE__ */ React6.createElement("span", {
|
|
277
456
|
className: "sr-only"
|
|
278
|
-
}, t("clear label")), /* @__PURE__ */
|
|
457
|
+
}, t("clear label")), /* @__PURE__ */ React6.createElement(ArrowCounterClockwise2, null))), /* @__PURE__ */ React6.createElement(Tooltip4.Portal, null, /* @__PURE__ */ React6.createElement(Tooltip4.Content, {
|
|
279
458
|
style: {
|
|
280
459
|
zIndex: 70
|
|
281
460
|
},
|
|
282
461
|
side: "right"
|
|
283
|
-
}, t("clear label"), /* @__PURE__ */
|
|
462
|
+
}, t("clear label"), /* @__PURE__ */ React6.createElement(Tooltip4.Arrow, null)))));
|
|
284
463
|
};
|
|
285
464
|
|
|
286
|
-
// packages/sdk/shell/src/components/IdentityList/DeviceList.tsx
|
|
287
|
-
import React7 from "react";
|
|
288
|
-
import { generateName as generateName2 } from "@dxos/display-name";
|
|
289
|
-
import { DeviceType } from "@dxos/react-client/halo";
|
|
290
|
-
import { List, useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
291
|
-
import { descriptionText as descriptionText2, mx as mx4 } from "@dxos/react-ui-theme";
|
|
292
|
-
|
|
293
465
|
// packages/sdk/shell/src/components/IdentityList/IdentityListItem.tsx
|
|
294
|
-
import
|
|
466
|
+
import React7, { forwardRef } from "react";
|
|
295
467
|
import { generateName } from "@dxos/display-name";
|
|
296
468
|
import { SpaceMember } from "@dxos/react-client/echo";
|
|
297
|
-
import { ListItem, Avatar, useId as useId2 } from "@dxos/react-ui";
|
|
298
|
-
import { mx as
|
|
469
|
+
import { ListItem, Avatar as Avatar2, useId as useId2 } from "@dxos/react-ui";
|
|
470
|
+
import { mx as mx5 } from "@dxos/react-ui-theme";
|
|
299
471
|
import { keyToFallback } from "@dxos/util";
|
|
300
472
|
var IdentityListItem = /* @__PURE__ */ forwardRef(({ identity, presence, onClick, classNames, ...props }, forwardedRef) => {
|
|
301
473
|
const fallbackValue = keyToFallback(identity.identityKey);
|
|
302
474
|
const labelId = useId2("identityListItem__label");
|
|
303
475
|
const displayName = identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
|
|
304
|
-
return /* @__PURE__ */
|
|
476
|
+
return /* @__PURE__ */ React7.createElement(ListItem.Root, {
|
|
305
477
|
...props,
|
|
306
|
-
classNames:
|
|
478
|
+
classNames: mx5("flex gap-2 pis-3 pie-1 items-center", onClick && "cursor-pointer", classNames),
|
|
307
479
|
onClick: () => onClick?.(),
|
|
308
480
|
"data-testid": "identity-list-item",
|
|
309
481
|
labelId,
|
|
310
482
|
ref: forwardedRef
|
|
311
|
-
}, /* @__PURE__ */
|
|
483
|
+
}, /* @__PURE__ */ React7.createElement(Avatar2.Root, {
|
|
312
484
|
status: presence === SpaceMember.PresenceState.ONLINE ? "active" : "inactive",
|
|
313
485
|
labelId,
|
|
314
486
|
hue: identity.profile?.data?.hue || fallbackValue.hue
|
|
315
|
-
}, /* @__PURE__ */
|
|
487
|
+
}, /* @__PURE__ */ React7.createElement(Avatar2.Frame, {
|
|
316
488
|
classNames: "place-self-center"
|
|
317
|
-
}, /* @__PURE__ */
|
|
489
|
+
}, /* @__PURE__ */ React7.createElement(Avatar2.Fallback, {
|
|
318
490
|
text: identity.profile?.data?.emoji || fallbackValue.emoji
|
|
319
|
-
})), /* @__PURE__ */
|
|
491
|
+
})), /* @__PURE__ */ React7.createElement(Avatar2.Label, {
|
|
320
492
|
classNames: "text-sm truncate pli-2"
|
|
321
493
|
}, displayName)));
|
|
322
494
|
});
|
|
323
495
|
|
|
324
|
-
// packages/sdk/shell/src/components/IdentityList/DeviceList.tsx
|
|
325
|
-
var DeviceList = ({ devices, onSelect }) => {
|
|
326
|
-
const { t } = useTranslation4("os");
|
|
327
|
-
return devices.length > 0 ? /* @__PURE__ */ React7.createElement(List, {
|
|
328
|
-
classNames: "flex flex-col gap-2"
|
|
329
|
-
}, devices.map((device) => {
|
|
330
|
-
const deviceType = device.profile?.type || DeviceType.UNKNOWN;
|
|
331
|
-
const displayName = device.profile?.label ? `${device.profile.label} (${DeviceType[deviceType]})` : generateName2(device.deviceKey.toHex());
|
|
332
|
-
const identity = {
|
|
333
|
-
identityKey: device.deviceKey,
|
|
334
|
-
profile: {
|
|
335
|
-
displayName
|
|
336
|
-
}
|
|
337
|
-
};
|
|
338
|
-
return /* @__PURE__ */ React7.createElement(IdentityListItem, {
|
|
339
|
-
key: device.deviceKey.toHex(),
|
|
340
|
-
identity,
|
|
341
|
-
presence: device.presence,
|
|
342
|
-
onClick: onSelect && (() => onSelect(device))
|
|
343
|
-
});
|
|
344
|
-
})) : /* @__PURE__ */ React7.createElement("div", {
|
|
345
|
-
role: "none",
|
|
346
|
-
className: "grow flex items-center p-2"
|
|
347
|
-
}, /* @__PURE__ */ React7.createElement("p", {
|
|
348
|
-
className: mx4(descriptionText2, "text-center is-full")
|
|
349
|
-
}, t("empty device list message")));
|
|
350
|
-
};
|
|
351
|
-
|
|
352
496
|
// packages/sdk/shell/src/components/IdentityList/SpaceMemberList.tsx
|
|
353
497
|
import React8, { useMemo } from "react";
|
|
354
498
|
import { useClient } from "@dxos/react-client";
|
|
355
499
|
import { useMembers } from "@dxos/react-client/echo";
|
|
356
|
-
import { useTranslation as useTranslation5, List
|
|
357
|
-
import { descriptionText as descriptionText3, mx as
|
|
500
|
+
import { useTranslation as useTranslation5, List } from "@dxos/react-ui";
|
|
501
|
+
import { descriptionText as descriptionText3, mx as mx6 } from "@dxos/react-ui-theme";
|
|
358
502
|
var SpaceMemberList = ({ spaceKey, includeSelf, onSelect }) => {
|
|
359
503
|
const client = useClient();
|
|
360
504
|
const allUnsortedMembers = useMembers(spaceKey);
|
|
@@ -369,7 +513,7 @@ var SpaceMemberList = ({ spaceKey, includeSelf, onSelect }) => {
|
|
|
369
513
|
var SpaceMemberListImpl = ({ members, onSelect }) => {
|
|
370
514
|
const { t } = useTranslation5("os");
|
|
371
515
|
const visibleMembers = members.filter((member) => member.identity);
|
|
372
|
-
return visibleMembers.length > 0 ? /* @__PURE__ */ React8.createElement(
|
|
516
|
+
return visibleMembers.length > 0 ? /* @__PURE__ */ React8.createElement(List, {
|
|
373
517
|
classNames: "flex flex-col gap-2",
|
|
374
518
|
"data-testid": "space-members-list"
|
|
375
519
|
}, visibleMembers.map((member) => {
|
|
@@ -383,22 +527,132 @@ var SpaceMemberListImpl = ({ members, onSelect }) => {
|
|
|
383
527
|
role: "none",
|
|
384
528
|
className: "grow flex items-center p-2"
|
|
385
529
|
}, /* @__PURE__ */ React8.createElement("p", {
|
|
386
|
-
className:
|
|
530
|
+
className: mx6(descriptionText3, "text-center is-full mlb-2")
|
|
387
531
|
}, t("empty space members message")));
|
|
388
532
|
};
|
|
389
533
|
|
|
534
|
+
// packages/sdk/shell/src/components/DeviceList/DeviceList.tsx
|
|
535
|
+
import { CaretRight, Plus as Plus2 } from "@phosphor-icons/react";
|
|
536
|
+
import React10 from "react";
|
|
537
|
+
import { Button as Button6, List as List2, useTranslation as useTranslation7 } from "@dxos/react-ui";
|
|
538
|
+
import { descriptionText as descriptionText4, getSize as getSize6, mx as mx7 } from "@dxos/react-ui-theme";
|
|
539
|
+
|
|
540
|
+
// packages/sdk/shell/src/components/DeviceList/DeviceListItem.tsx
|
|
541
|
+
import { Compass, Desktop, DeviceMobile, Devices, DotsThree, Intersect, Power as Power2, Robot } from "@phosphor-icons/react";
|
|
542
|
+
import React9, { forwardRef as forwardRef2 } from "react";
|
|
543
|
+
import { generateName as generateName2 } from "@dxos/display-name";
|
|
544
|
+
import { Device, DeviceType, DeviceKind } from "@dxos/react-client/halo";
|
|
545
|
+
import { ListItem as ListItem2, Avatar as Avatar3, useId as useId3, Tag, useTranslation as useTranslation6, DropdownMenu as DropdownMenu2, Button as Button5 } from "@dxos/react-ui";
|
|
546
|
+
import { getSize as getSize5 } from "@dxos/react-ui-theme";
|
|
547
|
+
import { keyToFallback as keyToFallback2 } from "@dxos/util";
|
|
548
|
+
var iconProps = {
|
|
549
|
+
weight: "duotone",
|
|
550
|
+
width: 24,
|
|
551
|
+
height: 24,
|
|
552
|
+
x: 8,
|
|
553
|
+
y: 8
|
|
554
|
+
};
|
|
555
|
+
var DeviceListItem = /* @__PURE__ */ forwardRef2(({ device, onClickAdd, onClickEdit, onClickReset, onClickJoinExisting, classNames, ...props }, forwardedRef) => {
|
|
556
|
+
const { t } = useTranslation6("os");
|
|
557
|
+
const fallbackValue = keyToFallback2(device.deviceKey);
|
|
558
|
+
const labelId = useId3("identityListItem__label");
|
|
559
|
+
const displayName = device.profile ? t("device name placeholder", {
|
|
560
|
+
os: device.profile.os,
|
|
561
|
+
platform: device.profile.platform
|
|
562
|
+
}) : generateName2(device.deviceKey.toHex());
|
|
563
|
+
const isCurrent = device.kind === DeviceKind.CURRENT;
|
|
564
|
+
return /* @__PURE__ */ React9.createElement(ListItem2.Root, {
|
|
565
|
+
...props,
|
|
566
|
+
classNames: [
|
|
567
|
+
"flex gap-2 items-center mlb-2",
|
|
568
|
+
classNames
|
|
569
|
+
],
|
|
570
|
+
"data-testid": `device-list-item${isCurrent ? "-current" : ""}`,
|
|
571
|
+
labelId,
|
|
572
|
+
ref: forwardedRef
|
|
573
|
+
}, /* @__PURE__ */ React9.createElement(Avatar3.Root, {
|
|
574
|
+
status: device.presence === Device.PresenceState.ONLINE ? "active" : "inactive",
|
|
575
|
+
labelId,
|
|
576
|
+
hue: fallbackValue.hue,
|
|
577
|
+
variant: "square"
|
|
578
|
+
}, /* @__PURE__ */ React9.createElement(Avatar3.Frame, {
|
|
579
|
+
classNames: "place-self-center"
|
|
580
|
+
}, device.profile?.type ? device.profile.type === DeviceType.BROWSER ? /* @__PURE__ */ React9.createElement(Compass, iconProps) : device.profile.type === DeviceType.NATIVE ? /* @__PURE__ */ React9.createElement(Desktop, iconProps) : [
|
|
581
|
+
DeviceType.AGENT,
|
|
582
|
+
DeviceType.AGENT_MANAGED
|
|
583
|
+
].includes(device.profile.type) ? /* @__PURE__ */ React9.createElement(Robot, iconProps) : device.profile.type === DeviceType.MOBILE ? /* @__PURE__ */ React9.createElement(DeviceMobile, iconProps) : /* @__PURE__ */ React9.createElement(Devices, iconProps) : /* @__PURE__ */ React9.createElement(Avatar3.Fallback, {
|
|
584
|
+
text: fallbackValue.emoji
|
|
585
|
+
})), isCurrent && /* @__PURE__ */ React9.createElement(Tag, {
|
|
586
|
+
color: "primary"
|
|
587
|
+
}, t("current device tag label")), /* @__PURE__ */ React9.createElement(Avatar3.Label, {
|
|
588
|
+
classNames: "flex-1 text-sm truncate"
|
|
589
|
+
}, displayName), device.kind === DeviceKind.CURRENT && /* @__PURE__ */ React9.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React9.createElement(DropdownMenu2.Trigger, {
|
|
590
|
+
asChild: true
|
|
591
|
+
}, /* @__PURE__ */ React9.createElement(Button5, {
|
|
592
|
+
variant: "ghost",
|
|
593
|
+
classNames: "pli-0 is-[--rail-action] bs-[--rail-action]",
|
|
594
|
+
"data-testid": `device-list-item${isCurrent ? "-current" : ""}.options`
|
|
595
|
+
}, /* @__PURE__ */ React9.createElement("span", {
|
|
596
|
+
className: "sr-only"
|
|
597
|
+
}, t("more options label")), /* @__PURE__ */ React9.createElement(DotsThree, {
|
|
598
|
+
className: getSize5(5)
|
|
599
|
+
}))), /* @__PURE__ */ React9.createElement(DropdownMenu2.Content, null, /* @__PURE__ */ React9.createElement(DropdownMenu2.Viewport, null, /* @__PURE__ */ React9.createElement(DropdownMenu2.Item, {
|
|
600
|
+
"data-testid": "device-list-item-current.join-existing",
|
|
601
|
+
onClick: onClickJoinExisting
|
|
602
|
+
}, /* @__PURE__ */ React9.createElement(Intersect, {
|
|
603
|
+
className: getSize5(5)
|
|
604
|
+
}), t("choose join new identity label")), /* @__PURE__ */ React9.createElement(DropdownMenu2.Item, {
|
|
605
|
+
"data-testid": "device-list-item-current.reset",
|
|
606
|
+
onClick: onClickReset
|
|
607
|
+
}, /* @__PURE__ */ React9.createElement(Power2, {
|
|
608
|
+
className: getSize5(5)
|
|
609
|
+
}), t("reset device label")))))));
|
|
610
|
+
});
|
|
611
|
+
|
|
612
|
+
// packages/sdk/shell/src/components/DeviceList/DeviceList.tsx
|
|
613
|
+
var DeviceList = ({ devices, onClickAdd, onClickEdit, onClickReset, onClickJoinExisting }) => {
|
|
614
|
+
const { t } = useTranslation7("os");
|
|
615
|
+
return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement("h2", {
|
|
616
|
+
className: mx7(descriptionText4, "text-center mbs-4")
|
|
617
|
+
}, t("devices heading")), devices.length > 0 && /* @__PURE__ */ React10.createElement(List2, null, devices.map((device) => {
|
|
618
|
+
return /* @__PURE__ */ React10.createElement(DeviceListItem, {
|
|
619
|
+
key: device.deviceKey.toHex(),
|
|
620
|
+
device,
|
|
621
|
+
onClickEdit: () => onClickEdit?.(device),
|
|
622
|
+
onClickReset,
|
|
623
|
+
onClickJoinExisting
|
|
624
|
+
});
|
|
625
|
+
})), /* @__PURE__ */ React10.createElement(Button6, {
|
|
626
|
+
variant: "ghost",
|
|
627
|
+
classNames: "justify-start gap-2 !pis-0 !pie-3",
|
|
628
|
+
"data-testid": "devices-panel.create-invitation",
|
|
629
|
+
onClick: onClickAdd
|
|
630
|
+
}, /* @__PURE__ */ React10.createElement("div", {
|
|
631
|
+
role: "img",
|
|
632
|
+
className: mx7(getSize6(8), "m-1 rounded-sm surface-input grid place-items-center")
|
|
633
|
+
}, /* @__PURE__ */ React10.createElement(Plus2, {
|
|
634
|
+
weight: "light",
|
|
635
|
+
className: getSize6(6)
|
|
636
|
+
})), /* @__PURE__ */ React10.createElement("span", {
|
|
637
|
+
className: "grow font-medium text-start"
|
|
638
|
+
}, t("choose add device label")), /* @__PURE__ */ React10.createElement(CaretRight, {
|
|
639
|
+
weight: "bold",
|
|
640
|
+
className: getSize6(4)
|
|
641
|
+
})));
|
|
642
|
+
};
|
|
643
|
+
|
|
390
644
|
// packages/sdk/shell/src/components/InvitationList/InvitationListItem.tsx
|
|
391
645
|
import { X } from "@phosphor-icons/react";
|
|
392
646
|
import { formatDistanceToNow } from "date-fns";
|
|
393
|
-
import
|
|
647
|
+
import React12, { useCallback as useCallback2 } from "react";
|
|
394
648
|
import { Invitation, useInvitationStatus } from "@dxos/react-client/invitations";
|
|
395
|
-
import { Button as
|
|
396
|
-
import { focusRing, getSize as
|
|
649
|
+
import { Button as Button7, ListItem as ListItem3, useTranslation as useTranslation8, Avatar as Avatar4, useThemeContext as useThemeContext3, Tooltip as Tooltip5 } from "@dxos/react-ui";
|
|
650
|
+
import { focusRing, getSize as getSize7, mx as mx9 } from "@dxos/react-ui-theme";
|
|
397
651
|
import { hexToEmoji } from "@dxos/util";
|
|
398
652
|
|
|
399
653
|
// packages/sdk/shell/src/components/AuthCode.tsx
|
|
400
|
-
import
|
|
401
|
-
import { mx as
|
|
654
|
+
import React11 from "react";
|
|
655
|
+
import { mx as mx8 } from "@dxos/react-ui-theme";
|
|
402
656
|
var AuthCode = (props) => {
|
|
403
657
|
const { code, large, classNames } = props;
|
|
404
658
|
const l = code?.length ?? 0;
|
|
@@ -407,17 +661,17 @@ var AuthCode = (props) => {
|
|
|
407
661
|
const handleCopy = () => {
|
|
408
662
|
void navigator.clipboard.writeText(code ?? "");
|
|
409
663
|
};
|
|
410
|
-
return /* @__PURE__ */
|
|
411
|
-
className:
|
|
664
|
+
return /* @__PURE__ */ React11.createElement("span", {
|
|
665
|
+
className: mx8(large ? "text-6xl" : "text-2xl", "font-mono pli-2.5 flex gap-1.5 rounded cursor-pointer", classNames),
|
|
412
666
|
onClick: handleCopy
|
|
413
|
-
}, /* @__PURE__ */
|
|
667
|
+
}, /* @__PURE__ */ React11.createElement("span", null, left), /* @__PURE__ */ React11.createElement("span", null, right));
|
|
414
668
|
};
|
|
415
669
|
|
|
416
670
|
// packages/sdk/shell/src/components/InvitationList/InvitationListItem.tsx
|
|
417
671
|
var InvitationListItem = (props) => {
|
|
418
672
|
const { invitation } = props;
|
|
419
673
|
const invitationStatus = useInvitationStatus(invitation);
|
|
420
|
-
return /* @__PURE__ */
|
|
674
|
+
return /* @__PURE__ */ React12.createElement(InvitationListItemImpl, {
|
|
421
675
|
...props,
|
|
422
676
|
invitationStatus
|
|
423
677
|
});
|
|
@@ -428,10 +682,10 @@ var avatarProps = {
|
|
|
428
682
|
};
|
|
429
683
|
var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
|
|
430
684
|
const { tx } = useThemeContext3();
|
|
431
|
-
return /* @__PURE__ */
|
|
685
|
+
return /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement("span", {
|
|
432
686
|
role: "none",
|
|
433
|
-
className:
|
|
434
|
-
}, /* @__PURE__ */
|
|
687
|
+
className: mx9("absolute inline-end-auto opacity-20", reverseEffects ? "inline-start-3" : "inline-start-1", getSize7(avatarProps.size))
|
|
688
|
+
}, /* @__PURE__ */ React12.createElement("span", {
|
|
435
689
|
role: "none",
|
|
436
690
|
className: tx("avatar.ring", "avatar__ring", {
|
|
437
691
|
...avatarProps,
|
|
@@ -441,10 +695,10 @@ var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
|
|
|
441
695
|
style: {
|
|
442
696
|
animationDelay: "400ms"
|
|
443
697
|
}
|
|
444
|
-
})), /* @__PURE__ */
|
|
698
|
+
})), /* @__PURE__ */ React12.createElement("span", {
|
|
445
699
|
role: "none",
|
|
446
|
-
className:
|
|
447
|
-
}, /* @__PURE__ */
|
|
700
|
+
className: mx9("absolute inline-end-auto opacity-50", reverseEffects ? "inline-start-2" : "inline-start-2", getSize7(avatarProps.size))
|
|
701
|
+
}, /* @__PURE__ */ React12.createElement("span", {
|
|
448
702
|
role: "none",
|
|
449
703
|
className: tx("avatar.ring", "avatar__ring", {
|
|
450
704
|
...avatarProps,
|
|
@@ -457,14 +711,14 @@ var AvatarStackEffect = ({ animation, status, reverseEffects }) => {
|
|
|
457
711
|
})));
|
|
458
712
|
};
|
|
459
713
|
var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationStatus, send, onClickRemove, createInvitationUrl, reverseEffects, ...props }) => {
|
|
460
|
-
const { t } =
|
|
461
|
-
const { cancel, status: invitationStatus, invitationCode, authCode,
|
|
714
|
+
const { t } = useTranslation8("os");
|
|
715
|
+
const { cancel, status: invitationStatus, invitationCode, authCode, multiUse } = propsInvitationStatus;
|
|
462
716
|
const isCancellable = !([
|
|
463
717
|
Invitation.State.ERROR,
|
|
464
718
|
Invitation.State.TIMEOUT,
|
|
465
719
|
Invitation.State.CANCELLED
|
|
466
720
|
].indexOf(invitationStatus) >= 0);
|
|
467
|
-
const showShare =
|
|
721
|
+
const showShare = multiUse || [
|
|
468
722
|
Invitation.State.INIT,
|
|
469
723
|
Invitation.State.CONNECTING,
|
|
470
724
|
Invitation.State.CONNECTED
|
|
@@ -499,39 +753,39 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
|
|
|
499
753
|
Invitation.State.SUCCESS
|
|
500
754
|
].includes(invitationStatus);
|
|
501
755
|
const avatarStatus = avatarError ? "error" : avatarGreen ? "active" : "inactive";
|
|
502
|
-
return /* @__PURE__ */
|
|
756
|
+
return /* @__PURE__ */ React12.createElement(ListItem3.Root, {
|
|
503
757
|
id: invitationCode,
|
|
504
758
|
...props,
|
|
505
759
|
classNames: [
|
|
506
760
|
"flex gap-2 pis-3 pie-1 items-center relative",
|
|
507
761
|
props.classNames
|
|
508
762
|
]
|
|
509
|
-
}, /* @__PURE__ */
|
|
763
|
+
}, /* @__PURE__ */ React12.createElement(ListItem3.Heading, {
|
|
510
764
|
classNames: "sr-only"
|
|
511
|
-
}, t(
|
|
765
|
+
}, t(multiUse ? "invite many list item label" : "invite one list item label")), multiUse && /* @__PURE__ */ React12.createElement(AvatarStackEffect, {
|
|
512
766
|
status: avatarStatus,
|
|
513
767
|
animation: avatarAnimation,
|
|
514
768
|
reverseEffects
|
|
515
|
-
}), /* @__PURE__ */
|
|
769
|
+
}), /* @__PURE__ */ React12.createElement(Tooltip5.Root, null, /* @__PURE__ */ React12.createElement(Avatar4.Root, {
|
|
516
770
|
...avatarProps,
|
|
517
771
|
animation: avatarAnimation,
|
|
518
772
|
status: avatarStatus
|
|
519
|
-
}, /* @__PURE__ */
|
|
773
|
+
}, /* @__PURE__ */ React12.createElement(Tooltip5.Trigger, {
|
|
520
774
|
asChild: true
|
|
521
|
-
}, /* @__PURE__ */
|
|
775
|
+
}, /* @__PURE__ */ React12.createElement(Avatar4.Frame, {
|
|
522
776
|
tabIndex: 0,
|
|
523
777
|
classNames: [
|
|
524
778
|
focusRing,
|
|
525
779
|
"relative rounded-full place-self-center"
|
|
526
780
|
]
|
|
527
|
-
}, /* @__PURE__ */
|
|
781
|
+
}, /* @__PURE__ */ React12.createElement(Avatar4.Fallback, {
|
|
528
782
|
text: hexToEmoji(invitationId)
|
|
529
|
-
})))), /* @__PURE__ */
|
|
783
|
+
})))), /* @__PURE__ */ React12.createElement(Tooltip5.Portal, null, /* @__PURE__ */ React12.createElement(Tooltip5.Content, {
|
|
530
784
|
side: "left",
|
|
531
785
|
classNames: "z-[70]"
|
|
532
|
-
}, t(
|
|
786
|
+
}, t(multiUse ? "invite many qr label" : "invite one qr label"), /* @__PURE__ */ React12.createElement(Tooltip5.Arrow, null)))), showShare && invitationUrl ? /* @__PURE__ */ React12.createElement(Tooltip5.Root, null, /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(Tooltip5.Trigger, {
|
|
533
787
|
asChild: true
|
|
534
|
-
}, /* @__PURE__ */
|
|
788
|
+
}, /* @__PURE__ */ React12.createElement(Button7, {
|
|
535
789
|
variant: "ghost",
|
|
536
790
|
classNames: "grow justify-start font-medium",
|
|
537
791
|
onClick: () => send({
|
|
@@ -539,63 +793,63 @@ var InvitationListItemImpl = ({ invitation, invitationStatus: propsInvitationSta
|
|
|
539
793
|
invitation
|
|
540
794
|
}),
|
|
541
795
|
"data-testid": "show-qrcode"
|
|
542
|
-
}, /* @__PURE__ */
|
|
796
|
+
}, /* @__PURE__ */ React12.createElement("span", null, t("open share panel label")))), /* @__PURE__ */ React12.createElement(CopyButtonIconOnly, {
|
|
543
797
|
variant: "ghost",
|
|
544
798
|
value: invitationUrl
|
|
545
|
-
})), /* @__PURE__ */
|
|
799
|
+
})), /* @__PURE__ */ React12.createElement(Tooltip5.Portal, null, /* @__PURE__ */ React12.createElement(Tooltip5.Content, {
|
|
546
800
|
side: "left",
|
|
547
801
|
classNames: "z-[70]"
|
|
548
|
-
}, invitationHasLifetime && /* @__PURE__ */
|
|
802
|
+
}, invitationHasLifetime && /* @__PURE__ */ React12.createElement("span", null, "Expires ", invitationTimeLeft)))) : showAuthCode ? /* @__PURE__ */ React12.createElement(AuthCode, {
|
|
549
803
|
code: authCode,
|
|
550
804
|
classNames: "grow"
|
|
551
|
-
}) : invitationStatus === Invitation.State.CONNECTING ? /* @__PURE__ */
|
|
805
|
+
}) : invitationStatus === Invitation.State.CONNECTING ? /* @__PURE__ */ React12.createElement("span", {
|
|
552
806
|
className: "pli-2 grow text-neutral-500"
|
|
553
|
-
}, "Connecting...") : invitationStatus === Invitation.State.AUTHENTICATING ? /* @__PURE__ */
|
|
807
|
+
}, "Connecting...") : invitationStatus === Invitation.State.AUTHENTICATING ? /* @__PURE__ */ React12.createElement("span", {
|
|
554
808
|
className: "pli-2 grow text-neutral-500"
|
|
555
|
-
}, "Authenticating...") : invitationStatus === Invitation.State.ERROR || invitationStatus === Invitation.State.TIMEOUT ? /* @__PURE__ */
|
|
809
|
+
}, "Authenticating...") : invitationStatus === Invitation.State.ERROR || invitationStatus === Invitation.State.TIMEOUT ? /* @__PURE__ */ React12.createElement("span", {
|
|
556
810
|
className: "pli-2 grow text-neutral-500"
|
|
557
|
-
}, "Failed") : invitationStatus === Invitation.State.CANCELLED ? /* @__PURE__ */
|
|
811
|
+
}, "Failed") : invitationStatus === Invitation.State.CANCELLED ? /* @__PURE__ */ React12.createElement("span", {
|
|
558
812
|
className: "pli-2 grow text-neutral-500"
|
|
559
|
-
}, "Cancelled") : invitationStatus === Invitation.State.SUCCESS ? /* @__PURE__ */
|
|
813
|
+
}, "Cancelled") : invitationStatus === Invitation.State.SUCCESS ? /* @__PURE__ */ React12.createElement("span", {
|
|
560
814
|
className: "pli-2 grow truncate"
|
|
561
|
-
}, "User joined") : /* @__PURE__ */
|
|
815
|
+
}, "User joined") : /* @__PURE__ */ React12.createElement("span", {
|
|
562
816
|
className: "grow"
|
|
563
|
-
}, " "), isCancellable ? /* @__PURE__ */
|
|
817
|
+
}, " "), isCancellable ? /* @__PURE__ */ React12.createElement(Button7, {
|
|
564
818
|
variant: "ghost",
|
|
565
819
|
classNames: "flex gap-1 pli-0",
|
|
566
820
|
onClick: cancel,
|
|
567
821
|
"data-testid": "cancel-invitation"
|
|
568
|
-
}, /* @__PURE__ */
|
|
822
|
+
}, /* @__PURE__ */ React12.createElement("span", {
|
|
569
823
|
className: "sr-only"
|
|
570
|
-
}, t("cancel invitation label")), /* @__PURE__ */
|
|
571
|
-
className:
|
|
572
|
-
})) : /* @__PURE__ */
|
|
824
|
+
}, t("cancel invitation label")), /* @__PURE__ */ React12.createElement(X, {
|
|
825
|
+
className: getSize7(4)
|
|
826
|
+
})) : /* @__PURE__ */ React12.createElement(Button7, {
|
|
573
827
|
variant: "ghost",
|
|
574
828
|
classNames: "flex gap-1 pli-0",
|
|
575
829
|
onClick: handleClickRemove,
|
|
576
830
|
"data-testid": "remove-invitation"
|
|
577
|
-
}, /* @__PURE__ */
|
|
831
|
+
}, /* @__PURE__ */ React12.createElement("span", {
|
|
578
832
|
className: "sr-only"
|
|
579
|
-
}, t("remove invitation label")), /* @__PURE__ */
|
|
580
|
-
className:
|
|
833
|
+
}, t("remove invitation label")), /* @__PURE__ */ React12.createElement(X, {
|
|
834
|
+
className: getSize7(4)
|
|
581
835
|
})));
|
|
582
836
|
};
|
|
583
837
|
|
|
584
838
|
// packages/sdk/shell/src/components/InvitationList/InvitationListContainer.tsx
|
|
585
|
-
import
|
|
839
|
+
import React14, { useCallback as useCallback3 } from "react";
|
|
586
840
|
import { useSpace, useSpaceInvitations } from "@dxos/react-client/echo";
|
|
587
841
|
|
|
588
842
|
// packages/sdk/shell/src/components/InvitationList/InvitationList.tsx
|
|
589
|
-
import
|
|
843
|
+
import React13 from "react";
|
|
590
844
|
import { List as List3 } from "@dxos/react-ui";
|
|
591
|
-
import { mx as
|
|
845
|
+
import { mx as mx10 } from "@dxos/react-ui-theme";
|
|
592
846
|
var InvitationList = ({ invitations, send, ...invitationProps }) => {
|
|
593
847
|
const { className, InvitationListItem: Item = InvitationListItem } = invitationProps;
|
|
594
|
-
return /* @__PURE__ */
|
|
595
|
-
classNames:
|
|
848
|
+
return /* @__PURE__ */ React13.createElement(List3, {
|
|
849
|
+
classNames: mx10("flex flex-col gap-2", className)
|
|
596
850
|
}, invitations.map((invitation) => {
|
|
597
851
|
const value = invitation.get().invitationId;
|
|
598
|
-
return /* @__PURE__ */
|
|
852
|
+
return /* @__PURE__ */ React13.createElement(Item, {
|
|
599
853
|
key: value,
|
|
600
854
|
send,
|
|
601
855
|
invitation,
|
|
@@ -613,7 +867,7 @@ var InvitationListContainer = ({ spaceKey, createInvitationUrl, send }) => {
|
|
|
613
867
|
}, [
|
|
614
868
|
space
|
|
615
869
|
]);
|
|
616
|
-
return /* @__PURE__ */
|
|
870
|
+
return /* @__PURE__ */ React14.createElement(InvitationList, {
|
|
617
871
|
invitations,
|
|
618
872
|
onClickRemove,
|
|
619
873
|
createInvitationUrl,
|
|
@@ -624,9 +878,9 @@ var InvitationListContainer = ({ spaceKey, createInvitationUrl, send }) => {
|
|
|
624
878
|
// packages/sdk/shell/src/components/Panel/Action.tsx
|
|
625
879
|
import { CaretDown as CaretDown3, Check as Check3, Placeholder } from "@phosphor-icons/react";
|
|
626
880
|
import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
|
|
627
|
-
import
|
|
628
|
-
import { Button as
|
|
629
|
-
import { descriptionText as
|
|
881
|
+
import React15, { forwardRef as forwardRef3 } from "react";
|
|
882
|
+
import { Button as Button8, DropdownMenu as DropdownMenu3, useTranslation as useTranslation9 } from "@dxos/react-ui";
|
|
883
|
+
import { descriptionText as descriptionText5, getSize as getSize8, mx as mx11 } from "@dxos/react-ui-theme";
|
|
630
884
|
var defaultActions = {
|
|
631
885
|
noopAction: {
|
|
632
886
|
label: "No-op",
|
|
@@ -636,7 +890,7 @@ var defaultActions = {
|
|
|
636
890
|
}
|
|
637
891
|
}
|
|
638
892
|
};
|
|
639
|
-
var BifurcatedAction = /* @__PURE__ */
|
|
893
|
+
var BifurcatedAction = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
|
|
640
894
|
const { classNames, variant, isFull = true, actions = defaultActions, activeAction: propsActiveAction, onChangeActiveAction, defaultActiveAction, ...rest } = props;
|
|
641
895
|
const [activeActionKey2 = Object.keys(actions)[0], setActiveAction] = useControllableState3({
|
|
642
896
|
prop: propsActiveAction,
|
|
@@ -644,11 +898,11 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef2((props, forwardedRef) => {
|
|
|
644
898
|
defaultProp: defaultActiveAction
|
|
645
899
|
});
|
|
646
900
|
const activeAction = actions[activeActionKey2] ?? {};
|
|
647
|
-
const { t } =
|
|
648
|
-
return /* @__PURE__ */
|
|
901
|
+
const { t } = useTranslation9("os");
|
|
902
|
+
return /* @__PURE__ */ React15.createElement("div", {
|
|
649
903
|
role: "none",
|
|
650
|
-
className:
|
|
651
|
-
}, /* @__PURE__ */
|
|
904
|
+
className: mx11("mbs-2 flex gap-px items-center", isFull && "is-full")
|
|
905
|
+
}, /* @__PURE__ */ React15.createElement(Button8, {
|
|
652
906
|
...rest,
|
|
653
907
|
classNames: [
|
|
654
908
|
"bs-11 flex-1 min-is-0 flex gap-2 rounded-ie-none",
|
|
@@ -657,48 +911,48 @@ var BifurcatedAction = /* @__PURE__ */ forwardRef2((props, forwardedRef) => {
|
|
|
657
911
|
ref: forwardedRef,
|
|
658
912
|
variant,
|
|
659
913
|
onClick: activeAction.onClick
|
|
660
|
-
}, activeAction.icon && /* @__PURE__ */
|
|
661
|
-
className:
|
|
662
|
-
}), /* @__PURE__ */
|
|
914
|
+
}, activeAction.icon && /* @__PURE__ */ React15.createElement(activeAction.icon, {
|
|
915
|
+
className: getSize8(5)
|
|
916
|
+
}), /* @__PURE__ */ React15.createElement("span", null, activeAction.label)), /* @__PURE__ */ React15.createElement(DropdownMenu3.Root, null, /* @__PURE__ */ React15.createElement(DropdownMenu3.Trigger, {
|
|
663
917
|
asChild: true
|
|
664
|
-
}, /* @__PURE__ */
|
|
918
|
+
}, /* @__PURE__ */ React15.createElement(Button8, {
|
|
665
919
|
classNames: [
|
|
666
920
|
"bs-11 flex-none rounded-is-none",
|
|
667
921
|
classNames
|
|
668
922
|
]
|
|
669
|
-
}, /* @__PURE__ */
|
|
923
|
+
}, /* @__PURE__ */ React15.createElement("span", {
|
|
670
924
|
className: "sr-only"
|
|
671
|
-
}, t("invite options label")), /* @__PURE__ */
|
|
672
|
-
className:
|
|
673
|
-
}))), /* @__PURE__ */
|
|
674
|
-
return /* @__PURE__ */
|
|
925
|
+
}, t("invite options label")), /* @__PURE__ */ React15.createElement(CaretDown3, {
|
|
926
|
+
className: getSize8(4)
|
|
927
|
+
}))), /* @__PURE__ */ React15.createElement(DropdownMenu3.Content, null, /* @__PURE__ */ React15.createElement(DropdownMenu3.Viewport, null, Object.entries(actions).map(([id, action]) => {
|
|
928
|
+
return /* @__PURE__ */ React15.createElement(DropdownMenu3.CheckboxItem, {
|
|
675
929
|
key: id,
|
|
676
930
|
"aria-labelledby": `${id}__label`,
|
|
677
931
|
"aria-describedby": `${id}__description`,
|
|
678
932
|
checked: activeActionKey2 === id,
|
|
679
933
|
onCheckedChange: (checked) => checked && setActiveAction(id),
|
|
680
934
|
classNames: "gap-2"
|
|
681
|
-
}, action.icon && /* @__PURE__ */
|
|
682
|
-
className:
|
|
683
|
-
}), /* @__PURE__ */
|
|
935
|
+
}, action.icon && /* @__PURE__ */ React15.createElement(action.icon, {
|
|
936
|
+
className: getSize8(5)
|
|
937
|
+
}), /* @__PURE__ */ React15.createElement("div", {
|
|
684
938
|
role: "none",
|
|
685
939
|
className: "flex-1 min-is-0 space-b-1"
|
|
686
|
-
}, /* @__PURE__ */
|
|
940
|
+
}, /* @__PURE__ */ React15.createElement("p", {
|
|
687
941
|
id: `${id}__label`
|
|
688
|
-
}, action.label), action.description && /* @__PURE__ */
|
|
942
|
+
}, action.label), action.description && /* @__PURE__ */ React15.createElement("p", {
|
|
689
943
|
id: `${id}__description`,
|
|
690
|
-
className:
|
|
691
|
-
}, action.description)), /* @__PURE__ */
|
|
944
|
+
className: descriptionText5
|
|
945
|
+
}, action.description)), /* @__PURE__ */ React15.createElement(DropdownMenu3.ItemIndicator, {
|
|
692
946
|
asChild: true
|
|
693
|
-
}, /* @__PURE__ */
|
|
947
|
+
}, /* @__PURE__ */ React15.createElement(Check3, {
|
|
694
948
|
weight: "bold",
|
|
695
|
-
className:
|
|
949
|
+
className: getSize8(4)
|
|
696
950
|
})));
|
|
697
|
-
})), /* @__PURE__ */
|
|
951
|
+
})), /* @__PURE__ */ React15.createElement(DropdownMenu3.Arrow, null))));
|
|
698
952
|
});
|
|
699
|
-
var Action = /* @__PURE__ */
|
|
953
|
+
var Action = /* @__PURE__ */ forwardRef3((props, forwardedRef) => {
|
|
700
954
|
const { children, classNames, variant, isFull = true, ...rest } = props;
|
|
701
|
-
return /* @__PURE__ */
|
|
955
|
+
return /* @__PURE__ */ React15.createElement(Button8, {
|
|
702
956
|
...rest,
|
|
703
957
|
classNames: [
|
|
704
958
|
isFull && "is-full",
|
|
@@ -711,49 +965,49 @@ var Action = /* @__PURE__ */ forwardRef2((props, forwardedRef) => {
|
|
|
711
965
|
});
|
|
712
966
|
|
|
713
967
|
// packages/sdk/shell/src/components/Panel/Actions.tsx
|
|
714
|
-
import
|
|
715
|
-
import { mx as
|
|
716
|
-
var Actions = /* @__PURE__ */
|
|
717
|
-
return /* @__PURE__ */
|
|
968
|
+
import React16, { forwardRef as forwardRef4 } from "react";
|
|
969
|
+
import { mx as mx12 } from "@dxos/react-ui-theme";
|
|
970
|
+
var Actions = /* @__PURE__ */ forwardRef4(({ classNames, children, ...props }, forwardedRef) => {
|
|
971
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
718
972
|
...props,
|
|
719
|
-
className:
|
|
973
|
+
className: mx12("flex flex-col gap-2 mbs-2", Array.isArray(children) && children.length > 1 ? "justify-between" : "justify-center", classNames),
|
|
720
974
|
ref: forwardedRef
|
|
721
975
|
}, children);
|
|
722
976
|
});
|
|
723
977
|
|
|
724
978
|
// packages/sdk/shell/src/components/Panel/CloseButton.tsx
|
|
725
979
|
import { X as X2 } from "@phosphor-icons/react";
|
|
726
|
-
import
|
|
727
|
-
import { Button as
|
|
728
|
-
import { getSize as
|
|
980
|
+
import React17 from "react";
|
|
981
|
+
import { Button as Button9, useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
982
|
+
import { getSize as getSize9, mx as mx13 } from "@dxos/react-ui-theme";
|
|
729
983
|
var CloseButton = ({ onDone, ...props }) => {
|
|
730
|
-
const { t } =
|
|
731
|
-
return /* @__PURE__ */
|
|
984
|
+
const { t } = useTranslation10("os");
|
|
985
|
+
return /* @__PURE__ */ React17.createElement(Button9, {
|
|
732
986
|
variant: "ghost",
|
|
733
|
-
classNames:
|
|
987
|
+
classNames: mx13("plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
|
|
734
988
|
onClick: () => onDone?.(),
|
|
735
989
|
...props
|
|
736
|
-
}, /* @__PURE__ */
|
|
990
|
+
}, /* @__PURE__ */ React17.createElement(X2, {
|
|
737
991
|
weight: "bold",
|
|
738
|
-
className:
|
|
739
|
-
}), /* @__PURE__ */
|
|
992
|
+
className: getSize9(4)
|
|
993
|
+
}), /* @__PURE__ */ React17.createElement("span", {
|
|
740
994
|
className: "sr-only"
|
|
741
995
|
}, t("exit label")));
|
|
742
996
|
};
|
|
743
997
|
|
|
744
998
|
// packages/sdk/shell/src/components/Panel/Emoji.tsx
|
|
745
|
-
import
|
|
746
|
-
import { mx as
|
|
999
|
+
import React18 from "react";
|
|
1000
|
+
import { mx as mx14, getSize as getSize10 } from "@dxos/react-ui-theme";
|
|
747
1001
|
var Emoji = ({ text, className }) => {
|
|
748
1002
|
const size = 14;
|
|
749
|
-
return /* @__PURE__ */
|
|
1003
|
+
return /* @__PURE__ */ React18.createElement("div", {
|
|
750
1004
|
role: "none",
|
|
751
|
-
className:
|
|
752
|
-
}, /* @__PURE__ */
|
|
1005
|
+
className: mx14(getSize10(size), "rounded relative pointer-events-none", className)
|
|
1006
|
+
}, /* @__PURE__ */ React18.createElement("svg", {
|
|
753
1007
|
viewBox: `0 0 ${size * 4} ${size * 4}`,
|
|
754
1008
|
width: size * 4,
|
|
755
1009
|
height: size * 4
|
|
756
|
-
}, /* @__PURE__ */
|
|
1010
|
+
}, /* @__PURE__ */ React18.createElement("text", {
|
|
757
1011
|
x: "50%",
|
|
758
1012
|
y: "50%",
|
|
759
1013
|
textAnchor: "middle",
|
|
@@ -764,57 +1018,57 @@ var Emoji = ({ text, className }) => {
|
|
|
764
1018
|
};
|
|
765
1019
|
var Centered = (props) => {
|
|
766
1020
|
const { children } = props;
|
|
767
|
-
return /* @__PURE__ */
|
|
1021
|
+
return /* @__PURE__ */ React18.createElement("div", {
|
|
768
1022
|
role: "none",
|
|
769
1023
|
className: "absolute inset-0 flex items-center justify-center"
|
|
770
1024
|
}, children);
|
|
771
1025
|
};
|
|
772
1026
|
|
|
773
1027
|
// packages/sdk/shell/src/components/Panel/Heading.tsx
|
|
774
|
-
import
|
|
775
|
-
import { descriptionText as
|
|
776
|
-
var Heading = /* @__PURE__ */
|
|
777
|
-
return /* @__PURE__ */
|
|
1028
|
+
import React19, { forwardRef as forwardRef5 } from "react";
|
|
1029
|
+
import { descriptionText as descriptionText6, mx as mx15 } from "@dxos/react-ui-theme";
|
|
1030
|
+
var Heading = /* @__PURE__ */ forwardRef5(({ titleId, title, titleSrOnly, children, corner }, forwardedRef) => {
|
|
1031
|
+
return /* @__PURE__ */ React19.createElement("div", {
|
|
778
1032
|
role: "none",
|
|
779
1033
|
className: "pbe-2 relative",
|
|
780
1034
|
ref: forwardedRef
|
|
781
|
-
}, corner, /* @__PURE__ */
|
|
1035
|
+
}, corner, /* @__PURE__ */ React19.createElement("h1", {
|
|
782
1036
|
...!titleSrOnly && {
|
|
783
1037
|
id: titleId
|
|
784
1038
|
},
|
|
785
|
-
className:
|
|
786
|
-
}, title), titleSrOnly && /* @__PURE__ */
|
|
1039
|
+
className: mx15(descriptionText6, "text-center mlb-2", titleSrOnly && "invisible")
|
|
1040
|
+
}, title), titleSrOnly && /* @__PURE__ */ React19.createElement("span", {
|
|
787
1041
|
id: titleId
|
|
788
1042
|
}, title), children);
|
|
789
1043
|
});
|
|
790
1044
|
|
|
791
1045
|
// packages/sdk/shell/src/components/Panel/Label.tsx
|
|
792
|
-
import
|
|
793
|
-
import { descriptionText as
|
|
1046
|
+
import React20 from "react";
|
|
1047
|
+
import { descriptionText as descriptionText7, mx as mx16 } from "@dxos/react-ui-theme";
|
|
794
1048
|
var Label = (props) => {
|
|
795
1049
|
const { children } = props;
|
|
796
|
-
return /* @__PURE__ */
|
|
797
|
-
className:
|
|
1050
|
+
return /* @__PURE__ */ React20.createElement("span", {
|
|
1051
|
+
className: mx16(descriptionText7, "text-center mli-6 whitespace-normal")
|
|
798
1052
|
}, children);
|
|
799
1053
|
};
|
|
800
1054
|
|
|
801
1055
|
// packages/sdk/shell/src/components/Panel/Input.tsx
|
|
802
|
-
import
|
|
1056
|
+
import React21 from "react";
|
|
803
1057
|
import { Input as UiInput } from "@dxos/react-ui";
|
|
804
1058
|
var Input = ({ validationMessage, label, ...props }) => {
|
|
805
|
-
return /* @__PURE__ */
|
|
1059
|
+
return /* @__PURE__ */ React21.createElement(UiInput.Root, null, /* @__PURE__ */ React21.createElement(UiInput.Label, null, label), /* @__PURE__ */ React21.createElement(UiInput.TextInput, {
|
|
806
1060
|
...props,
|
|
807
1061
|
classNames: "plb-3 mbs-2 text-center"
|
|
808
|
-
}), /* @__PURE__ */
|
|
1062
|
+
}), /* @__PURE__ */ React21.createElement(UiInput.DescriptionAndValidation, null, validationMessage && /* @__PURE__ */ React21.createElement(UiInput.Validation, null, validationMessage)));
|
|
809
1063
|
};
|
|
810
1064
|
|
|
811
1065
|
// packages/sdk/shell/src/components/Panel/StepHeading.tsx
|
|
812
|
-
import
|
|
813
|
-
import { mx as
|
|
814
|
-
var StepHeading = /* @__PURE__ */
|
|
815
|
-
return /* @__PURE__ */
|
|
1066
|
+
import React22, { forwardRef as forwardRef6 } from "react";
|
|
1067
|
+
import { mx as mx17 } from "@dxos/react-ui-theme";
|
|
1068
|
+
var StepHeading = /* @__PURE__ */ forwardRef6(({ children, className, ...props }, forwardedRef) => {
|
|
1069
|
+
return /* @__PURE__ */ React22.createElement("h2", {
|
|
816
1070
|
...props,
|
|
817
|
-
className:
|
|
1071
|
+
className: mx17("font-normal text-sm mbe-4 mli-1 text-center", className),
|
|
818
1072
|
ref: forwardedRef
|
|
819
1073
|
}, children);
|
|
820
1074
|
});
|
|
@@ -823,9 +1077,9 @@ var StepHeading = /* @__PURE__ */ forwardRef5(({ children, className, ...props }
|
|
|
823
1077
|
import { useFocusFinders } from "@fluentui/react-tabster";
|
|
824
1078
|
import { createContextScope } from "@radix-ui/react-context";
|
|
825
1079
|
import { useControllableState as useControllableState4 } from "@radix-ui/react-use-controllable-state";
|
|
826
|
-
import
|
|
1080
|
+
import React23, { forwardRef as forwardRef7, useEffect } from "react";
|
|
827
1081
|
import { useForwardedRef } from "@dxos/react-ui";
|
|
828
|
-
import { mx as
|
|
1082
|
+
import { mx as mx18 } from "@dxos/react-ui-theme";
|
|
829
1083
|
var VIEWPORT_NAME = "Viewport";
|
|
830
1084
|
var VIEWS_NAME = "ViewportViews";
|
|
831
1085
|
var VIEW_NAME = "ViewportView";
|
|
@@ -837,16 +1091,16 @@ var ViewportRoot = ({ __viewportScope, classNames, children, defaultActiveView,
|
|
|
837
1091
|
defaultProp: defaultActiveView,
|
|
838
1092
|
onChange: onActiveViewChange
|
|
839
1093
|
});
|
|
840
|
-
return /* @__PURE__ */
|
|
1094
|
+
return /* @__PURE__ */ React23.createElement(ViewportProvider, {
|
|
841
1095
|
focusManaged,
|
|
842
1096
|
activeView,
|
|
843
1097
|
setActiveView,
|
|
844
1098
|
scope: __viewportScope
|
|
845
|
-
}, /* @__PURE__ */
|
|
1099
|
+
}, /* @__PURE__ */ React23.createElement("div", {
|
|
846
1100
|
role: "region",
|
|
847
1101
|
"aria-live": "polite",
|
|
848
1102
|
...props,
|
|
849
|
-
className:
|
|
1103
|
+
className: mx18("is-full overflow-hidden", classNames)
|
|
850
1104
|
}, children));
|
|
851
1105
|
};
|
|
852
1106
|
ViewportRoot.displayName = VIEWPORT_NAME;
|
|
@@ -854,15 +1108,15 @@ var ViewportViews = ({ classNames, children, ...props }) => {
|
|
|
854
1108
|
const size = {
|
|
855
1109
|
inlineSize: `${Math.ceil(children.length) * 100}%`
|
|
856
1110
|
};
|
|
857
|
-
return /* @__PURE__ */
|
|
1111
|
+
return /* @__PURE__ */ React23.createElement("div", {
|
|
858
1112
|
role: "none",
|
|
859
1113
|
style: size,
|
|
860
1114
|
...props,
|
|
861
|
-
className:
|
|
1115
|
+
className: mx18("flex", classNames)
|
|
862
1116
|
}, children);
|
|
863
1117
|
};
|
|
864
1118
|
ViewportViews.displayName = VIEWS_NAME;
|
|
865
|
-
var ViewportView = /* @__PURE__ */
|
|
1119
|
+
var ViewportView = /* @__PURE__ */ forwardRef7(({ __viewportScope, classNames, children, id, ...props }, forwardedRef) => {
|
|
866
1120
|
const { activeView, focusManaged } = useViewportContext(VIEW_NAME, __viewportScope);
|
|
867
1121
|
const isActive = id === activeView;
|
|
868
1122
|
const ref = useForwardedRef(forwardedRef);
|
|
@@ -876,12 +1130,12 @@ var ViewportView = /* @__PURE__ */ forwardRef6(({ __viewportScope, classNames, c
|
|
|
876
1130
|
ref.current,
|
|
877
1131
|
isActive
|
|
878
1132
|
]);
|
|
879
|
-
return /* @__PURE__ */
|
|
1133
|
+
return /* @__PURE__ */ React23.createElement("section", {
|
|
880
1134
|
...props,
|
|
881
1135
|
...!isActive && {
|
|
882
1136
|
"aria-hidden": true
|
|
883
1137
|
},
|
|
884
|
-
className:
|
|
1138
|
+
className: mx18("min-is-0 flex-1 flex flex-col", isActive ? "order-2" : "order-4 invisible", classNames),
|
|
885
1139
|
ref
|
|
886
1140
|
}, children);
|
|
887
1141
|
});
|
|
@@ -893,41 +1147,44 @@ var Viewport = {
|
|
|
893
1147
|
};
|
|
894
1148
|
|
|
895
1149
|
// packages/sdk/shell/src/components/SpaceListItem.tsx
|
|
896
|
-
import
|
|
897
|
-
import { Avatar as
|
|
898
|
-
import { mx as
|
|
1150
|
+
import React24, { forwardRef as forwardRef8 } from "react";
|
|
1151
|
+
import { Avatar as Avatar5, useId as useId4 } from "@dxos/react-ui";
|
|
1152
|
+
import { mx as mx19 } from "@dxos/react-ui-theme";
|
|
899
1153
|
import { humanize, keyToEmoji } from "@dxos/util";
|
|
900
|
-
var SpaceListItem = /* @__PURE__ */
|
|
1154
|
+
var SpaceListItem = /* @__PURE__ */ forwardRef8(({ space, onClick }, ref) => {
|
|
901
1155
|
const fallbackValue = keyToEmoji(space.key);
|
|
902
|
-
const labelId =
|
|
1156
|
+
const labelId = useId4("identityListItem__label");
|
|
903
1157
|
const displayName = space.properties.name ?? humanize(space.key.toHex());
|
|
904
|
-
return /* @__PURE__ */
|
|
905
|
-
className:
|
|
1158
|
+
return /* @__PURE__ */ React24.createElement("li", {
|
|
1159
|
+
className: mx19("flex gap-2 items-center mbe-2", onClick && "cursor-pointer"),
|
|
906
1160
|
onClick: () => onClick?.(),
|
|
907
1161
|
ref,
|
|
908
1162
|
"data-testid": "space-list-item"
|
|
909
|
-
}, /* @__PURE__ */
|
|
1163
|
+
}, /* @__PURE__ */ React24.createElement(Avatar5.Root, {
|
|
910
1164
|
labelId
|
|
911
|
-
}, /* @__PURE__ */
|
|
1165
|
+
}, /* @__PURE__ */ React24.createElement(Avatar5.Frame, null, /* @__PURE__ */ React24.createElement(Avatar5.Fallback, {
|
|
912
1166
|
text: fallbackValue
|
|
913
|
-
})), /* @__PURE__ */
|
|
1167
|
+
})), /* @__PURE__ */ React24.createElement(Avatar5.Label, {
|
|
914
1168
|
classNames: "text-sm truncate"
|
|
915
1169
|
}, displayName)));
|
|
916
1170
|
});
|
|
917
1171
|
|
|
918
1172
|
// packages/sdk/shell/src/composites/IdentityDialog/IdentityDialog.tsx
|
|
919
1173
|
import React42 from "react";
|
|
920
|
-
import { Dialog, useId as
|
|
1174
|
+
import { Dialog, useId as useId10 } from "@dxos/react-ui";
|
|
921
1175
|
|
|
922
1176
|
// packages/sdk/shell/src/panels/IdentityPanel/IdentityPanel.tsx
|
|
923
|
-
import
|
|
1177
|
+
import { CopySimple, Plugs, PlugsConnected } from "@phosphor-icons/react";
|
|
1178
|
+
import React29, { useEffect as useEffect3, useMemo as useMemo3, useState as useState8 } from "react";
|
|
924
1179
|
import { generateName as generateName3 } from "@dxos/display-name";
|
|
925
1180
|
import { log as log6 } from "@dxos/log";
|
|
926
1181
|
import { useClient as useClient3 } from "@dxos/react-client";
|
|
927
1182
|
import { useIdentity, useDevices, useHaloInvitations as useHaloInvitations2 } from "@dxos/react-client/halo";
|
|
928
1183
|
import { useInvitationStatus as useInvitationStatus2 } from "@dxos/react-client/invitations";
|
|
929
|
-
import {
|
|
930
|
-
import {
|
|
1184
|
+
import { useNetworkStatus, ConnectionState } from "@dxos/react-client/mesh";
|
|
1185
|
+
import { Avatar as Avatar6, DensityProvider, Input as Input2, Toolbar as Toolbar3, Tooltip as Tooltip6, useId as useId6, useTranslation as useTranslation14 } from "@dxos/react-ui";
|
|
1186
|
+
import { getSize as getSize13 } from "@dxos/react-ui-theme";
|
|
1187
|
+
import { hexToEmoji as hexToEmoji4, hexToHue as hexToHue2, keyToFallback as keyToFallback3 } from "@dxos/util";
|
|
931
1188
|
|
|
932
1189
|
// packages/sdk/shell/src/panels/IdentityPanel/identityMachine.ts
|
|
933
1190
|
import { useMachine } from "@xstate/react";
|
|
@@ -953,11 +1210,6 @@ var identityMachine = createMachine({
|
|
|
953
1210
|
target: "managingDeviceInvitation",
|
|
954
1211
|
actions: "log"
|
|
955
1212
|
},
|
|
956
|
-
{
|
|
957
|
-
cond: "initiallyManagingProfile",
|
|
958
|
-
target: "managingProfile",
|
|
959
|
-
actions: "log"
|
|
960
|
-
},
|
|
961
1213
|
{
|
|
962
1214
|
target: "choosingAction",
|
|
963
1215
|
actions: "log"
|
|
@@ -966,34 +1218,6 @@ var identityMachine = createMachine({
|
|
|
966
1218
|
},
|
|
967
1219
|
choosingAction: {},
|
|
968
1220
|
managingDeviceInvitation: {},
|
|
969
|
-
managingAgent: {
|
|
970
|
-
initial: "idle",
|
|
971
|
-
states: {
|
|
972
|
-
idle: {},
|
|
973
|
-
pending: {}
|
|
974
|
-
}
|
|
975
|
-
},
|
|
976
|
-
managingDevices: {},
|
|
977
|
-
managingProfile: {
|
|
978
|
-
initial: "idle",
|
|
979
|
-
states: {
|
|
980
|
-
idle: {},
|
|
981
|
-
pending: {}
|
|
982
|
-
},
|
|
983
|
-
on: {
|
|
984
|
-
setIdentity: {
|
|
985
|
-
target: "choosingAction",
|
|
986
|
-
actions: [
|
|
987
|
-
"setIdentity",
|
|
988
|
-
"log"
|
|
989
|
-
]
|
|
990
|
-
},
|
|
991
|
-
updateProfile: {
|
|
992
|
-
target: ".pending",
|
|
993
|
-
actions: "log"
|
|
994
|
-
}
|
|
995
|
-
}
|
|
996
|
-
},
|
|
997
1221
|
confirmingResetStorage: {},
|
|
998
1222
|
confirmingJoinNewIdentity: {}
|
|
999
1223
|
},
|
|
@@ -1019,14 +1243,6 @@ var identityMachine = createMachine({
|
|
|
1019
1243
|
"log"
|
|
1020
1244
|
]
|
|
1021
1245
|
},
|
|
1022
|
-
chooseDevices: {
|
|
1023
|
-
target: ".managingDevices",
|
|
1024
|
-
actions: "log"
|
|
1025
|
-
},
|
|
1026
|
-
chooseProfile: {
|
|
1027
|
-
target: ".managingProfile",
|
|
1028
|
-
actions: "log"
|
|
1029
|
-
},
|
|
1030
1246
|
chooseJoinNewIdentity: {
|
|
1031
1247
|
target: ".confirmingJoinNewIdentity",
|
|
1032
1248
|
actions: "log"
|
|
@@ -1034,16 +1250,11 @@ var identityMachine = createMachine({
|
|
|
1034
1250
|
chooseResetStorage: {
|
|
1035
1251
|
target: ".confirmingResetStorage",
|
|
1036
1252
|
actions: "log"
|
|
1037
|
-
},
|
|
1038
|
-
chooseAgent: {
|
|
1039
|
-
target: ".managingAgent",
|
|
1040
|
-
actions: "log"
|
|
1041
1253
|
}
|
|
1042
1254
|
}
|
|
1043
1255
|
}, {
|
|
1044
1256
|
guards: {
|
|
1045
|
-
initiallyManagingDeviceInvitation: ({ initialDisposition }, _event) => initialDisposition === "manage-device-invitation"
|
|
1046
|
-
initiallyManagingProfile: ({ initialDisposition }, _event) => initialDisposition === "manage-profile"
|
|
1257
|
+
initiallyManagingDeviceInvitation: ({ initialDisposition }, _event) => initialDisposition === "manage-device-invitation"
|
|
1047
1258
|
},
|
|
1048
1259
|
actions: {
|
|
1049
1260
|
setIdentity: assign({
|
|
@@ -1061,7 +1272,7 @@ var identityMachine = createMachine({
|
|
|
1061
1272
|
context
|
|
1062
1273
|
}, {
|
|
1063
1274
|
F: __dxlog_file,
|
|
1064
|
-
L:
|
|
1275
|
+
L: 96,
|
|
1065
1276
|
S: void 0,
|
|
1066
1277
|
C: (f, a) => f(...a)
|
|
1067
1278
|
});
|
|
@@ -1082,69 +1293,12 @@ var useIdentityMachine = (client, options) => {
|
|
|
1082
1293
|
});
|
|
1083
1294
|
};
|
|
1084
1295
|
|
|
1085
|
-
// packages/sdk/shell/src/panels/IdentityPanel/steps/AgentForm.tsx
|
|
1086
|
-
import React23 from "react";
|
|
1087
|
-
import { useTranslation as useTranslation9 } from "@dxos/react-ui";
|
|
1088
|
-
var AgentForm = (props) => {
|
|
1089
|
-
const { active, onAgentCreate, onAgentDestroy, send, validationMessage, agentStatus, agentActive, agentProviderDisabled } = props;
|
|
1090
|
-
const disabled = !active;
|
|
1091
|
-
const { t } = useTranslation9("os");
|
|
1092
|
-
return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", {
|
|
1093
|
-
role: "none",
|
|
1094
|
-
className: "grow flex flex-col justify-center"
|
|
1095
|
-
}, /* @__PURE__ */ React23.createElement(Input, {
|
|
1096
|
-
validationMessage,
|
|
1097
|
-
label: /* @__PURE__ */ React23.createElement(StepHeading, null, "Agent Status"),
|
|
1098
|
-
disabled,
|
|
1099
|
-
"data-testid": "agent-status",
|
|
1100
|
-
value: agentStatus
|
|
1101
|
-
})), /* @__PURE__ */ React23.createElement(Actions, null, /* @__PURE__ */ React23.createElement(Action, {
|
|
1102
|
-
disabled: agentActive || agentProviderDisabled,
|
|
1103
|
-
onClick: () => onAgentCreate?.(),
|
|
1104
|
-
"data-testid": "create-agent"
|
|
1105
|
-
}, "Create Agent"), /* @__PURE__ */ React23.createElement(Action, {
|
|
1106
|
-
disabled: !agentActive || agentProviderDisabled,
|
|
1107
|
-
onClick: () => onAgentDestroy?.(),
|
|
1108
|
-
"data-testid": "destroy-agent"
|
|
1109
|
-
}, "Destroy Agent"), /* @__PURE__ */ React23.createElement(Action, {
|
|
1110
|
-
disabled,
|
|
1111
|
-
onClick: () => send?.({
|
|
1112
|
-
type: "unchooseAction"
|
|
1113
|
-
}),
|
|
1114
|
-
"data-testid": "update-profile-form-back"
|
|
1115
|
-
}, t("back label"))));
|
|
1116
|
-
};
|
|
1117
|
-
|
|
1118
|
-
// packages/sdk/shell/src/panels/IdentityPanel/steps/DeviceManager.tsx
|
|
1119
|
-
import React24 from "react";
|
|
1120
|
-
import { useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
1121
|
-
var DeviceManager = ({ devices, active, send }) => {
|
|
1122
|
-
const { t } = useTranslation10("os");
|
|
1123
|
-
const disabled = !active;
|
|
1124
|
-
return /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("div", {
|
|
1125
|
-
role: "none",
|
|
1126
|
-
className: "grow"
|
|
1127
|
-
}, /* @__PURE__ */ React24.createElement(DeviceList, {
|
|
1128
|
-
devices
|
|
1129
|
-
})), /* @__PURE__ */ React24.createElement(Actions, null, /* @__PURE__ */ React24.createElement(Action, {
|
|
1130
|
-
variant: "ghost",
|
|
1131
|
-
disabled,
|
|
1132
|
-
onClick: () => send?.({
|
|
1133
|
-
type: "unchooseAction"
|
|
1134
|
-
}),
|
|
1135
|
-
"data-testid": "manage-devices-back"
|
|
1136
|
-
}, t("back label"))));
|
|
1137
|
-
};
|
|
1138
|
-
|
|
1139
1296
|
// packages/sdk/shell/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx
|
|
1140
|
-
import { CaretRight, Devices, Plus, Power, UserGear, HardDrive, Intersect } from "@phosphor-icons/react";
|
|
1141
1297
|
import React25, { useCallback as useCallback4 } from "react";
|
|
1142
1298
|
import { log as log2 } from "@dxos/log";
|
|
1143
1299
|
import { useAgentHostingProviderClient, useClient as useClient2 } from "@dxos/react-client";
|
|
1144
1300
|
import { useHaloInvitations } from "@dxos/react-client/halo";
|
|
1145
1301
|
import { Invitation as Invitation2, InvitationEncoder } from "@dxos/react-client/invitations";
|
|
1146
|
-
import { DensityProvider, useTranslation as useTranslation11 } from "@dxos/react-ui";
|
|
1147
|
-
import { getSize as getSize8 } from "@dxos/react-ui-theme";
|
|
1148
1302
|
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx";
|
|
1149
1303
|
var IdentityActionChooser = (props) => {
|
|
1150
1304
|
const { send } = props;
|
|
@@ -1159,19 +1313,15 @@ var IdentityActionChooser = (props) => {
|
|
|
1159
1313
|
authCode: invitation.authCode
|
|
1160
1314
|
}), void 0, {
|
|
1161
1315
|
F: __dxlog_file2,
|
|
1162
|
-
L:
|
|
1316
|
+
L: 25,
|
|
1163
1317
|
S: void 0,
|
|
1164
1318
|
C: (f, a) => f(...a)
|
|
1165
1319
|
});
|
|
1166
1320
|
}
|
|
1167
1321
|
}, []);
|
|
1168
|
-
const createInvitation = (
|
|
1169
|
-
const testing = e.altKey && e.shiftKey;
|
|
1322
|
+
const createInvitation = () => {
|
|
1170
1323
|
invitations.forEach((invitation2) => invitation2.cancel());
|
|
1171
|
-
const invitation = client.halo.share(
|
|
1172
|
-
type: Invitation2.Type.MULTIUSE,
|
|
1173
|
-
authMethod: Invitation2.AuthMethod.NONE
|
|
1174
|
-
} : void 0);
|
|
1324
|
+
const invitation = client.halo.share();
|
|
1175
1325
|
if (true) {
|
|
1176
1326
|
invitation.subscribe(onInvitationEvent);
|
|
1177
1327
|
}
|
|
@@ -1182,216 +1332,45 @@ var IdentityActionChooser = (props) => {
|
|
|
1182
1332
|
};
|
|
1183
1333
|
return /* @__PURE__ */ React25.createElement(IdentityActionChooserImpl, {
|
|
1184
1334
|
...props,
|
|
1185
|
-
onCreateInvitationClick:
|
|
1335
|
+
onCreateInvitationClick: createInvitation,
|
|
1186
1336
|
agentHostingEnabled: !!agentHostingProviderClient
|
|
1187
1337
|
});
|
|
1188
1338
|
};
|
|
1189
|
-
var IdentityActionChooserImpl = ({ onCreateInvitationClick,
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
}, /* @__PURE__ */ React25.createElement(DensityProvider, {
|
|
1195
|
-
density: "coarse"
|
|
1196
|
-
}, /* @__PURE__ */ React25.createElement("div", {
|
|
1197
|
-
className: "grow justify-center flex flex-col gap-1"
|
|
1198
|
-
}, /* @__PURE__ */ React25.createElement(Action, {
|
|
1199
|
-
"data-testid": "manage-profile",
|
|
1200
|
-
onClick: () => send?.({
|
|
1201
|
-
type: "chooseProfile"
|
|
1202
|
-
}),
|
|
1203
|
-
classNames: "plb-4"
|
|
1204
|
-
}, /* @__PURE__ */ React25.createElement(UserGear, {
|
|
1205
|
-
className: getSize8(6)
|
|
1206
|
-
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1207
|
-
className: "grow mli-3"
|
|
1208
|
-
}, t("choose profile label")), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1209
|
-
weight: "bold",
|
|
1210
|
-
className: getSize8(4)
|
|
1211
|
-
})), agentHostingEnabled && /* @__PURE__ */ React25.createElement(Action, {
|
|
1212
|
-
"data-testid": "manage-agent",
|
|
1213
|
-
onClick: () => send?.({
|
|
1214
|
-
type: "chooseAgent"
|
|
1215
|
-
}),
|
|
1216
|
-
classNames: "plb-4"
|
|
1217
|
-
}, /* @__PURE__ */ React25.createElement(HardDrive, {
|
|
1218
|
-
className: getSize8(6)
|
|
1219
|
-
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1220
|
-
className: "grow mli-3"
|
|
1221
|
-
}, "Manage Agent"), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1222
|
-
weight: "bold",
|
|
1223
|
-
className: getSize8(4)
|
|
1224
|
-
})), /* @__PURE__ */ React25.createElement(Action, {
|
|
1225
|
-
disabled: !active,
|
|
1226
|
-
"data-testid": "devices-panel.create-invitation",
|
|
1227
|
-
onClick: onCreateInvitationClick,
|
|
1228
|
-
classNames: "plb-4"
|
|
1229
|
-
}, /* @__PURE__ */ React25.createElement(Plus, {
|
|
1230
|
-
className: getSize8(6)
|
|
1231
|
-
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1232
|
-
className: "grow mli-3"
|
|
1233
|
-
}, t("choose add device label")), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1234
|
-
weight: "bold",
|
|
1235
|
-
className: getSize8(4)
|
|
1236
|
-
})), /* @__PURE__ */ React25.createElement(Action, {
|
|
1237
|
-
"data-testid": "devices-panel.join-new-identity",
|
|
1238
|
-
onClick: () => send?.({
|
|
1339
|
+
var IdentityActionChooserImpl = ({ send, onCreateInvitationClick, devices, onAgentDestroy, onAgentCreate, agentStatus, agentActive, agentHostingEnabled }) => {
|
|
1340
|
+
return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement(DeviceList, {
|
|
1341
|
+
devices,
|
|
1342
|
+
onClickAdd: onCreateInvitationClick,
|
|
1343
|
+
onClickJoinExisting: () => send?.({
|
|
1239
1344
|
type: "chooseJoinNewIdentity"
|
|
1240
1345
|
}),
|
|
1241
|
-
|
|
1242
|
-
}, /* @__PURE__ */ React25.createElement(Intersect, {
|
|
1243
|
-
className: getSize8(6)
|
|
1244
|
-
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1245
|
-
className: "grow mli-3"
|
|
1246
|
-
}, t("choose join new identity label")), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1247
|
-
weight: "bold",
|
|
1248
|
-
className: getSize8(4)
|
|
1249
|
-
})), /* @__PURE__ */ React25.createElement(Action, {
|
|
1250
|
-
"data-testid": "manage-devices",
|
|
1251
|
-
onClick: () => send?.({
|
|
1252
|
-
type: "chooseDevices"
|
|
1253
|
-
}),
|
|
1254
|
-
classNames: "plb-4"
|
|
1255
|
-
}, /* @__PURE__ */ React25.createElement(Devices, {
|
|
1256
|
-
className: getSize8(6)
|
|
1257
|
-
}), /* @__PURE__ */ React25.createElement("span", {
|
|
1258
|
-
className: "grow mli-3"
|
|
1259
|
-
}, t("choose devices label")), /* @__PURE__ */ React25.createElement(CaretRight, {
|
|
1260
|
-
weight: "bold",
|
|
1261
|
-
className: getSize8(4)
|
|
1262
|
-
})), /* @__PURE__ */ React25.createElement(Action, {
|
|
1263
|
-
"data-testid": "devices-panel.sign-out",
|
|
1264
|
-
onClick: () => send?.({
|
|
1346
|
+
onClickReset: () => send?.({
|
|
1265
1347
|
type: "chooseResetStorage"
|
|
1266
|
-
})
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
}
|
|
1273
|
-
weight: "bold",
|
|
1274
|
-
className: getSize8(4)
|
|
1275
|
-
})))));
|
|
1348
|
+
})
|
|
1349
|
+
}), agentHostingEnabled && /* @__PURE__ */ React25.createElement(AgentConfig, {
|
|
1350
|
+
agentActive,
|
|
1351
|
+
agentStatus,
|
|
1352
|
+
onAgentDestroy,
|
|
1353
|
+
onAgentCreate
|
|
1354
|
+
}));
|
|
1276
1355
|
};
|
|
1277
1356
|
|
|
1278
1357
|
// packages/sdk/shell/src/panels/IdentityPanel/steps/ProfileForm.tsx
|
|
1279
|
-
import React26, { useState as
|
|
1358
|
+
import React26, { useState as useState5 } from "react";
|
|
1280
1359
|
import { log as log3 } from "@dxos/log";
|
|
1281
|
-
import { useTranslation as
|
|
1360
|
+
import { useTranslation as useTranslation11 } from "@dxos/react-ui";
|
|
1282
1361
|
import { hexToEmoji as hexToEmoji2, hexToHue } from "@dxos/util";
|
|
1283
|
-
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/steps/ProfileForm.tsx";
|
|
1284
|
-
var ProfileForm = (props) => {
|
|
1285
|
-
const { onUpdateProfile } = props;
|
|
1286
|
-
const { t } = useTranslation12("os");
|
|
1287
|
-
const [validationMessage, setValidationMessage] = useState4("");
|
|
1288
|
-
const handleUpdateProfile = async (profile) => {
|
|
1289
|
-
await onUpdateProfile?.(profile).catch((error) => {
|
|
1290
|
-
log3.catch(error, void 0, {
|
|
1291
|
-
F: __dxlog_file3,
|
|
1292
|
-
L: 33,
|
|
1293
|
-
S: void 0,
|
|
1294
|
-
C: (f, a) => f(...a)
|
|
1295
|
-
});
|
|
1296
|
-
setValidationMessage(t("failed to update profile message"));
|
|
1297
|
-
});
|
|
1298
|
-
};
|
|
1299
|
-
return /* @__PURE__ */ React26.createElement(ProfileFormImpl, {
|
|
1300
|
-
...props,
|
|
1301
|
-
onUpdateProfile: handleUpdateProfile,
|
|
1302
|
-
validationMessage
|
|
1303
|
-
});
|
|
1304
|
-
};
|
|
1305
|
-
var getHueValue = (identity) => identity?.profile?.data?.hue || hexToHue(identity?.identityKey.toHex() ?? "0");
|
|
1306
|
-
var getEmojiValue = (identity) => identity?.profile?.data?.emoji || hexToEmoji2(identity?.identityKey.toHex() ?? "0");
|
|
1307
|
-
var ProfileFormImpl = (props) => {
|
|
1308
|
-
const { active, identity, send, onUpdateProfile, validationMessage } = props;
|
|
1309
|
-
const profile = identity?.profile;
|
|
1310
|
-
const disabled = !active;
|
|
1311
|
-
const { t } = useTranslation12("os");
|
|
1312
|
-
const [displayName, setDisplayName] = useState4(profile?.displayName ?? "");
|
|
1313
|
-
const [hue, setHue] = useState4(getHueValue(identity));
|
|
1314
|
-
const [emoji, setEmoji] = useState4(getEmojiValue(identity));
|
|
1315
|
-
const { textValue, setTextValue } = useClipboardContext();
|
|
1316
|
-
const identityHex = identity?.identityKey.toHex();
|
|
1317
|
-
const copied = textValue === identityHex;
|
|
1318
|
-
return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement("div", {
|
|
1319
|
-
role: "none",
|
|
1320
|
-
className: "grow flex flex-col justify-center"
|
|
1321
|
-
}, /* @__PURE__ */ React26.createElement(Input, {
|
|
1322
|
-
validationMessage,
|
|
1323
|
-
label: /* @__PURE__ */ React26.createElement(StepHeading, {
|
|
1324
|
-
className: "m-0"
|
|
1325
|
-
}, t("display name input label")),
|
|
1326
|
-
disabled,
|
|
1327
|
-
"data-testid": "display-name-input",
|
|
1328
|
-
placeholder: t("display name input placeholder"),
|
|
1329
|
-
value: displayName,
|
|
1330
|
-
onChange: ({ target: { value } }) => setDisplayName(value)
|
|
1331
|
-
}), /* @__PURE__ */ React26.createElement(StepHeading, {
|
|
1332
|
-
className: "mbe-2"
|
|
1333
|
-
}, t("emoji and color label")), /* @__PURE__ */ React26.createElement("div", {
|
|
1334
|
-
role: "none",
|
|
1335
|
-
className: "grid grid-cols-[1fr_min-content] gap-y-2"
|
|
1336
|
-
}, /* @__PURE__ */ React26.createElement(EmojiPicker, {
|
|
1337
|
-
emoji,
|
|
1338
|
-
onChangeEmoji: setEmoji,
|
|
1339
|
-
disabled,
|
|
1340
|
-
onClickClear: () => setEmoji(getEmojiValue(identity))
|
|
1341
|
-
}), /* @__PURE__ */ React26.createElement(HuePicker, {
|
|
1342
|
-
hue,
|
|
1343
|
-
onChangeHue: setHue,
|
|
1344
|
-
disabled,
|
|
1345
|
-
onClickClear: () => setHue(getHueValue(identity))
|
|
1346
|
-
}))), /* @__PURE__ */ React26.createElement(Actions, null, /* @__PURE__ */ React26.createElement(Action, {
|
|
1347
|
-
variant: "ghost",
|
|
1348
|
-
disabled,
|
|
1349
|
-
onClick: () => {
|
|
1350
|
-
if (identityHex) {
|
|
1351
|
-
void setTextValue(identityHex);
|
|
1352
|
-
}
|
|
1353
|
-
},
|
|
1354
|
-
"data-testid": "update-profile-form-copy-key"
|
|
1355
|
-
}, t(copied ? "copy success label" : "copy self public key label")), /* @__PURE__ */ React26.createElement(Action, {
|
|
1356
|
-
variant: "ghost",
|
|
1357
|
-
disabled,
|
|
1358
|
-
onClick: () => send?.({
|
|
1359
|
-
type: "unchooseAction"
|
|
1360
|
-
}),
|
|
1361
|
-
"data-testid": "update-profile-form-back"
|
|
1362
|
-
}, t("back label")), /* @__PURE__ */ React26.createElement(Action, {
|
|
1363
|
-
variant: "primary",
|
|
1364
|
-
disabled,
|
|
1365
|
-
onClick: () => onUpdateProfile?.({
|
|
1366
|
-
...displayName && {
|
|
1367
|
-
displayName
|
|
1368
|
-
},
|
|
1369
|
-
...(emoji || hue) && {
|
|
1370
|
-
data: {
|
|
1371
|
-
...emoji && {
|
|
1372
|
-
emoji
|
|
1373
|
-
},
|
|
1374
|
-
...hue && {
|
|
1375
|
-
hue
|
|
1376
|
-
}
|
|
1377
|
-
}
|
|
1378
|
-
}
|
|
1379
|
-
}),
|
|
1380
|
-
"data-testid": "update-profile-form-continue"
|
|
1381
|
-
}, t("done label"))));
|
|
1382
|
-
};
|
|
1383
1362
|
|
|
1384
1363
|
// packages/sdk/shell/src/panels/IdentityPanel/useAgentHandlers.ts
|
|
1385
|
-
import { useCallback as useCallback5, useEffect as useEffect2, useState as
|
|
1364
|
+
import { useCallback as useCallback5, useEffect as useEffect2, useState as useState6 } from "react";
|
|
1386
1365
|
import { invariant } from "@dxos/invariant";
|
|
1387
1366
|
import { log as log4 } from "@dxos/log";
|
|
1388
1367
|
import { useAgentHostingProviderClient as useAgentHostingProviderClient2 } from "@dxos/react-client";
|
|
1389
1368
|
import { Invitation as Invitation3, InvitationEncoder as InvitationEncoder2 } from "@dxos/react-client/invitations";
|
|
1390
|
-
var
|
|
1369
|
+
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/useAgentHandlers.ts";
|
|
1391
1370
|
var useAgentHandlers = ({ client, invitations, identity }) => {
|
|
1392
|
-
const [validationMessage, setValidationMessage] =
|
|
1393
|
-
const [agentStatus, setAgentStatus] =
|
|
1394
|
-
const [agentActive, setAgentActive] =
|
|
1371
|
+
const [validationMessage, setValidationMessage] = useState6("");
|
|
1372
|
+
const [agentStatus, setAgentStatus] = useState6("");
|
|
1373
|
+
const [agentActive, setAgentActive] = useState6(false);
|
|
1395
1374
|
const agentHostingProviderClient = useAgentHostingProviderClient2(client.config);
|
|
1396
1375
|
useEffect2(() => {
|
|
1397
1376
|
const fetchAgentStatus = async () => {
|
|
@@ -1417,13 +1396,13 @@ var useAgentHandlers = ({ client, invitations, identity }) => {
|
|
|
1417
1396
|
invitationCode,
|
|
1418
1397
|
authCode: invitation.authCode
|
|
1419
1398
|
}), void 0, {
|
|
1420
|
-
F:
|
|
1399
|
+
F: __dxlog_file3,
|
|
1421
1400
|
L: 50,
|
|
1422
1401
|
S: void 0,
|
|
1423
1402
|
C: (f, a) => f(...a)
|
|
1424
1403
|
});
|
|
1425
1404
|
invariant(identity, "Identity not found", {
|
|
1426
|
-
F:
|
|
1405
|
+
F: __dxlog_file3,
|
|
1427
1406
|
L: 51,
|
|
1428
1407
|
S: void 0,
|
|
1429
1408
|
A: [
|
|
@@ -1446,16 +1425,17 @@ var useAgentHandlers = ({ client, invitations, identity }) => {
|
|
|
1446
1425
|
const onAgentCreate = async () => {
|
|
1447
1426
|
invitations.forEach((invitation2) => invitation2.cancel());
|
|
1448
1427
|
const invitation = client.halo.share({
|
|
1449
|
-
type: Invitation3.Type.
|
|
1450
|
-
authMethod: Invitation3.AuthMethod.NONE
|
|
1428
|
+
type: Invitation3.Type.INTERACTIVE,
|
|
1429
|
+
authMethod: Invitation3.AuthMethod.NONE,
|
|
1430
|
+
multiUse: true
|
|
1451
1431
|
});
|
|
1452
1432
|
invitation.subscribe(handleAgentCreate);
|
|
1453
1433
|
};
|
|
1454
1434
|
const onAgentDestroy = async () => {
|
|
1455
1435
|
const identity2 = client.halo.identity.get();
|
|
1456
1436
|
invariant(identity2, "Identity not found", {
|
|
1457
|
-
F:
|
|
1458
|
-
L:
|
|
1437
|
+
F: __dxlog_file3,
|
|
1438
|
+
L: 81,
|
|
1459
1439
|
S: void 0,
|
|
1460
1440
|
A: [
|
|
1461
1441
|
"identity",
|
|
@@ -1484,9 +1464,8 @@ var useAgentHandlers = ({ client, invitations, identity }) => {
|
|
|
1484
1464
|
import { Check as Check4, X as X3 } from "@phosphor-icons/react";
|
|
1485
1465
|
import React27, { useMemo as useMemo2 } from "react";
|
|
1486
1466
|
import { QR } from "react-qr-rounded";
|
|
1487
|
-
import {
|
|
1488
|
-
import {
|
|
1489
|
-
import { descriptionText as descriptionText7, getSize as getSize9, mx as mx18 } from "@dxos/react-ui-theme";
|
|
1467
|
+
import { useId as useId5, useTranslation as useTranslation12 } from "@dxos/react-ui";
|
|
1468
|
+
import { descriptionText as descriptionText8, getSize as getSize11, mx as mx20 } from "@dxos/react-ui-theme";
|
|
1490
1469
|
import { hexToEmoji as hexToEmoji3 } from "@dxos/util";
|
|
1491
1470
|
|
|
1492
1471
|
// packages/sdk/shell/src/util/invitationStatusValue.ts
|
|
@@ -1537,10 +1516,10 @@ var InvitationManagerView = ({ children, ...props }) => {
|
|
|
1537
1516
|
classNames: "grow flex flex-col justify-around items-center"
|
|
1538
1517
|
}, children);
|
|
1539
1518
|
};
|
|
1540
|
-
var InvitationManager = ({ invitationUrl, active, send, status,
|
|
1541
|
-
const { t } =
|
|
1542
|
-
const qrLabel =
|
|
1543
|
-
const statusValue =
|
|
1519
|
+
var InvitationManager = ({ invitationUrl, active, send, status, multiUse, authCode, id = "0" }) => {
|
|
1520
|
+
const { t } = useTranslation12("os");
|
|
1521
|
+
const qrLabel = useId5("invitation-manager__qr-code");
|
|
1522
|
+
const statusValue = multiUse ? 0 : invitationStatusValue.get(status) ?? 0;
|
|
1544
1523
|
const showAuthCode = statusValue === 3;
|
|
1545
1524
|
const emoji = hexToEmoji3(id);
|
|
1546
1525
|
const activeView = useMemo2(() => {
|
|
@@ -1564,14 +1543,14 @@ var InvitationManager = ({ invitationUrl, active, send, status, type, authCode,
|
|
|
1564
1543
|
emoji
|
|
1565
1544
|
}, /* @__PURE__ */ React27.createElement("p", {
|
|
1566
1545
|
className: "text-sm mlb-1 font-normal text-center"
|
|
1567
|
-
}, t(
|
|
1546
|
+
}, t(multiUse ? "invite many qr label" : "invite one qr label")), /* @__PURE__ */ React27.createElement("div", {
|
|
1568
1547
|
role: "none",
|
|
1569
|
-
className:
|
|
1548
|
+
className: mx20(descriptionText8, "is-full max-is-[14rem] relative")
|
|
1570
1549
|
}, /* @__PURE__ */ React27.createElement(QR, {
|
|
1571
1550
|
rounding: 100,
|
|
1572
1551
|
backgroundColor: "transparent",
|
|
1573
1552
|
color: "currentColor",
|
|
1574
|
-
className:
|
|
1553
|
+
className: mx20("is-full bs-full p-2", showAuthCode && "invisible"),
|
|
1575
1554
|
"aria-labelledby": qrLabel,
|
|
1576
1555
|
errorCorrectionLevel: "Q",
|
|
1577
1556
|
cutout: true
|
|
@@ -1594,9 +1573,9 @@ var InvitationManager = ({ invitationUrl, active, send, status, type, authCode,
|
|
|
1594
1573
|
})), /* @__PURE__ */ React27.createElement(InvitationManagerView, {
|
|
1595
1574
|
id: "showing final"
|
|
1596
1575
|
}, statusValue > 0 ? /* @__PURE__ */ React27.createElement(Check4, {
|
|
1597
|
-
className:
|
|
1576
|
+
className: mx20("m-1.5", getSize11(6))
|
|
1598
1577
|
}) : /* @__PURE__ */ React27.createElement(X3, {
|
|
1599
|
-
className:
|
|
1578
|
+
className: mx20("m-1.5", getSize11(6))
|
|
1600
1579
|
})))), /* @__PURE__ */ React27.createElement(Actions, {
|
|
1601
1580
|
classNames: "mbs-4"
|
|
1602
1581
|
}, /* @__PURE__ */ React27.createElement(Action, {
|
|
@@ -1609,20 +1588,20 @@ var InvitationManager = ({ invitationUrl, active, send, status, type, authCode,
|
|
|
1609
1588
|
|
|
1610
1589
|
// packages/sdk/shell/src/steps/ConfirmReset.tsx
|
|
1611
1590
|
import { Warning } from "@phosphor-icons/react";
|
|
1612
|
-
import React28, { useState as
|
|
1591
|
+
import React28, { useState as useState7 } from "react";
|
|
1613
1592
|
import { log as log5 } from "@dxos/log";
|
|
1614
|
-
import { Message, useTranslation as
|
|
1615
|
-
import { getSize as
|
|
1616
|
-
var
|
|
1593
|
+
import { Message, useTranslation as useTranslation13 } from "@dxos/react-ui";
|
|
1594
|
+
import { getSize as getSize12, mx as mx21 } from "@dxos/react-ui-theme";
|
|
1595
|
+
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/steps/ConfirmReset.tsx";
|
|
1617
1596
|
var ConfirmReset = ({ active, onCancel, onConfirm, mode }) => {
|
|
1618
|
-
const { t } =
|
|
1619
|
-
const [validationMessage, setValidationMessage] =
|
|
1620
|
-
const [pending, setPending] =
|
|
1597
|
+
const { t } = useTranslation13("os");
|
|
1598
|
+
const [validationMessage, setValidationMessage] = useState7("");
|
|
1599
|
+
const [pending, setPending] = useState7(false);
|
|
1621
1600
|
const processReset = async () => {
|
|
1622
1601
|
setPending(true);
|
|
1623
1602
|
return onConfirm?.().then(() => setPending(false), (error) => {
|
|
1624
1603
|
log5.catch(error, void 0, {
|
|
1625
|
-
F:
|
|
1604
|
+
F: __dxlog_file4,
|
|
1626
1605
|
L: 38,
|
|
1627
1606
|
S: void 0,
|
|
1628
1607
|
C: (f, a) => f(...a)
|
|
@@ -1641,16 +1620,17 @@ var ConfirmReset = ({ active, onCancel, onConfirm, mode }) => {
|
|
|
1641
1620
|
});
|
|
1642
1621
|
};
|
|
1643
1622
|
var ConfirmResetImpl = ({ disabled, pending, validationMessage, onConfirm, onCancel, mode }) => {
|
|
1644
|
-
const { t } =
|
|
1623
|
+
const { t } = useTranslation13("os");
|
|
1645
1624
|
const confirmationValue = t("confirmation value");
|
|
1646
|
-
const [inputValue, setInputValue] =
|
|
1625
|
+
const [inputValue, setInputValue] = useState7("");
|
|
1626
|
+
const testIdAffix = mode === "join new identity" ? "join-new-identity" : "reset-storage";
|
|
1647
1627
|
return /* @__PURE__ */ React28.createElement(React28.Fragment, null, /* @__PURE__ */ React28.createElement("div", {
|
|
1648
1628
|
role: "none",
|
|
1649
1629
|
className: "grow flex flex-col gap-2 justify-center"
|
|
1650
1630
|
}, /* @__PURE__ */ React28.createElement(Message.Root, {
|
|
1651
1631
|
valence: "error"
|
|
1652
1632
|
}, /* @__PURE__ */ React28.createElement(Message.Title, null, /* @__PURE__ */ React28.createElement(Warning, {
|
|
1653
|
-
className:
|
|
1633
|
+
className: mx21(getSize12(6), "inline mie-2")
|
|
1654
1634
|
}), t("sign out chooser title")), /* @__PURE__ */ React28.createElement(Message.Body, null, t("sign out chooser message"))), /* @__PURE__ */ React28.createElement(Input, {
|
|
1655
1635
|
validationMessage,
|
|
1656
1636
|
label: /* @__PURE__ */ React28.createElement(StepHeading, {
|
|
@@ -1659,53 +1639,134 @@ var ConfirmResetImpl = ({ disabled, pending, validationMessage, onConfirm, onCan
|
|
|
1659
1639
|
confirmationValue
|
|
1660
1640
|
})),
|
|
1661
1641
|
disabled,
|
|
1662
|
-
"data-testid":
|
|
1642
|
+
"data-testid": `${testIdAffix}.reset-identity-input`,
|
|
1663
1643
|
placeholder: confirmationValue,
|
|
1664
1644
|
onChange: ({ target: { value } }) => setInputValue(value)
|
|
1665
1645
|
})), /* @__PURE__ */ React28.createElement(Actions, null, onCancel && /* @__PURE__ */ React28.createElement(Action, {
|
|
1666
1646
|
disabled,
|
|
1667
1647
|
onClick: onCancel,
|
|
1668
|
-
"data-testid":
|
|
1648
|
+
"data-testid": `${testIdAffix}.reset-identity-cancel`
|
|
1669
1649
|
}, t("cancel label")), onConfirm && /* @__PURE__ */ React28.createElement(Action, {
|
|
1670
1650
|
variant: "destructive",
|
|
1671
1651
|
disabled: disabled || pending || inputValue !== confirmationValue,
|
|
1672
1652
|
onClick: onConfirm,
|
|
1673
|
-
"data-testid":
|
|
1653
|
+
"data-testid": `${testIdAffix}.reset-identity-confirm`
|
|
1674
1654
|
}, pending ? t("reset in progress label") : t("reset device label"))));
|
|
1675
1655
|
};
|
|
1676
1656
|
|
|
1677
1657
|
// packages/sdk/shell/src/panels/IdentityPanel/IdentityPanel.tsx
|
|
1678
|
-
var
|
|
1658
|
+
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/IdentityPanel/IdentityPanel.tsx";
|
|
1679
1659
|
var viewStyles = "pbs-1 pbe-3 pli-3";
|
|
1680
|
-
var
|
|
1681
|
-
|
|
1660
|
+
var getHueValue = (identity) => identity?.profile?.data?.hue || hexToHue2(identity?.identityKey.toHex() ?? "0");
|
|
1661
|
+
var getEmojiValue = (identity) => identity?.profile?.data?.emoji || hexToEmoji4(identity?.identityKey.toHex() ?? "0");
|
|
1662
|
+
var IdentityHeading = ({ titleId, title, identity, onDone, onUpdateProfile, connectionState, onChangeConnectionState }) => {
|
|
1663
|
+
const fallbackValue = keyToFallback3(identity.identityKey);
|
|
1664
|
+
const { t } = useTranslation14("os");
|
|
1665
|
+
const [displayName, setDisplayName] = useState8(identity.profile?.displayName ?? "");
|
|
1666
|
+
const [emoji, setEmoji] = useState8(getEmojiValue(identity));
|
|
1667
|
+
const [hue, setHue] = useState8(getHueValue(identity));
|
|
1668
|
+
const { textValue, setTextValue } = useClipboardContext();
|
|
1669
|
+
const identityHex = identity.identityKey.toHex();
|
|
1670
|
+
const copied = textValue === identityHex;
|
|
1671
|
+
const handleUpdateProfile = async () => {
|
|
1672
|
+
const nextProfile = {
|
|
1673
|
+
...displayName && {
|
|
1674
|
+
displayName
|
|
1675
|
+
},
|
|
1676
|
+
...(emoji || hue) && {
|
|
1677
|
+
data: {
|
|
1678
|
+
...emoji && {
|
|
1679
|
+
emoji
|
|
1680
|
+
},
|
|
1681
|
+
...hue && {
|
|
1682
|
+
hue
|
|
1683
|
+
}
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
};
|
|
1687
|
+
return onUpdateProfile?.(nextProfile);
|
|
1688
|
+
};
|
|
1689
|
+
useEffect3(() => {
|
|
1690
|
+
void handleUpdateProfile();
|
|
1691
|
+
}, [
|
|
1692
|
+
emoji,
|
|
1693
|
+
hue
|
|
1694
|
+
]);
|
|
1695
|
+
const isConnected = connectionState === ConnectionState.ONLINE;
|
|
1682
1696
|
return /* @__PURE__ */ React29.createElement(Heading, {
|
|
1683
1697
|
titleId,
|
|
1684
1698
|
title,
|
|
1685
1699
|
corner: /* @__PURE__ */ React29.createElement(CloseButton, {
|
|
1686
1700
|
onDone
|
|
1687
1701
|
})
|
|
1688
|
-
}, /* @__PURE__ */ React29.createElement(
|
|
1689
|
-
size:
|
|
1702
|
+
}, /* @__PURE__ */ React29.createElement(Avatar6.Root, {
|
|
1703
|
+
size: 16,
|
|
1690
1704
|
variant: "circle",
|
|
1691
|
-
status: "active",
|
|
1692
|
-
hue:
|
|
1693
|
-
}, /* @__PURE__ */ React29.createElement(
|
|
1694
|
-
classNames: "
|
|
1695
|
-
}, /* @__PURE__ */ React29.createElement(
|
|
1696
|
-
|
|
1697
|
-
}
|
|
1698
|
-
classNames: "
|
|
1705
|
+
status: isConnected ? "active" : "error",
|
|
1706
|
+
hue: hue || fallbackValue.hue
|
|
1707
|
+
}, /* @__PURE__ */ React29.createElement(Toolbar3.Root, {
|
|
1708
|
+
classNames: "grid grid-cols-[1fr_var(--rail-action)_min-content_var(--rail-action)_1fr] items-center gap-2"
|
|
1709
|
+
}, /* @__PURE__ */ React29.createElement(Tooltip6.Root, null, /* @__PURE__ */ React29.createElement(Tooltip6.Trigger, {
|
|
1710
|
+
asChild: true
|
|
1711
|
+
}, /* @__PURE__ */ React29.createElement(Toolbar3.Button, {
|
|
1712
|
+
classNames: "bs-[--rail-action] is-[--rail-action] justify-self-end",
|
|
1713
|
+
onClick: () => onChangeConnectionState?.(isConnected ? ConnectionState.OFFLINE : ConnectionState.ONLINE)
|
|
1714
|
+
}, /* @__PURE__ */ React29.createElement("span", {
|
|
1715
|
+
className: "sr-only"
|
|
1716
|
+
}, t(isConnected ? "disconnect label" : "connect label")), isConnected ? /* @__PURE__ */ React29.createElement(PlugsConnected, {
|
|
1717
|
+
className: getSize13(5)
|
|
1718
|
+
}) : /* @__PURE__ */ React29.createElement(Plugs, {
|
|
1719
|
+
className: getSize13(5)
|
|
1720
|
+
}))), /* @__PURE__ */ React29.createElement(Tooltip6.Portal, null, /* @__PURE__ */ React29.createElement(Tooltip6.Content, {
|
|
1721
|
+
side: "bottom",
|
|
1722
|
+
classNames: "z-50"
|
|
1723
|
+
}, t(isConnected ? "disconnect label" : "connect label"), /* @__PURE__ */ React29.createElement(Tooltip6.Arrow, null)))), /* @__PURE__ */ React29.createElement(EmojiPickerToolbarButton, {
|
|
1724
|
+
emoji,
|
|
1725
|
+
onChangeEmoji: setEmoji,
|
|
1726
|
+
classNames: "bs-[--rail-action]"
|
|
1727
|
+
}), /* @__PURE__ */ React29.createElement(Avatar6.Frame, {
|
|
1728
|
+
classNames: "relative z-[2] -mli-4 chromatic-ignore"
|
|
1729
|
+
}, /* @__PURE__ */ React29.createElement(Avatar6.Fallback, {
|
|
1730
|
+
text: emoji || fallbackValue.emoji
|
|
1731
|
+
})), /* @__PURE__ */ React29.createElement(HuePickerToolbarButton, {
|
|
1732
|
+
hue,
|
|
1733
|
+
onChangeHue: setHue,
|
|
1734
|
+
classNames: "bs-[--rail-action]"
|
|
1735
|
+
}), /* @__PURE__ */ React29.createElement(Tooltip6.Root, null, /* @__PURE__ */ React29.createElement(Tooltip6.Trigger, {
|
|
1736
|
+
asChild: true
|
|
1737
|
+
}, /* @__PURE__ */ React29.createElement(Toolbar3.Button, {
|
|
1738
|
+
classNames: "bs-[--rail-action] justify-self-start",
|
|
1739
|
+
"data-testid": "update-profile-form-copy-key",
|
|
1740
|
+
onClick: () => setTextValue(identityHex)
|
|
1741
|
+
}, /* @__PURE__ */ React29.createElement("span", {
|
|
1742
|
+
className: "sr-only"
|
|
1743
|
+
}, t(copied ? "copy success label" : "copy self public key label")), /* @__PURE__ */ React29.createElement(CopySimple, {
|
|
1744
|
+
className: getSize13(5)
|
|
1745
|
+
}))), /* @__PURE__ */ React29.createElement(Tooltip6.Portal, null, /* @__PURE__ */ React29.createElement(Tooltip6.Content, {
|
|
1746
|
+
side: "bottom",
|
|
1747
|
+
classNames: "z-50"
|
|
1748
|
+
}, t(copied ? "copy success label" : "copy self public key label"), /* @__PURE__ */ React29.createElement(Tooltip6.Arrow, null))))), /* @__PURE__ */ React29.createElement(Avatar6.Label, {
|
|
1749
|
+
classNames: "sr-only",
|
|
1699
1750
|
"data-testid": "identityHeading.displayName"
|
|
1700
|
-
}, identity.profile?.displayName ?? generateName3(identity.identityKey.toHex()))
|
|
1751
|
+
}, identity.profile?.displayName ?? generateName3(identity.identityKey.toHex())), /* @__PURE__ */ React29.createElement(Input2.Root, null, /* @__PURE__ */ React29.createElement(Input2.Label, {
|
|
1752
|
+
srOnly: true
|
|
1753
|
+
}, t("display name input label")), /* @__PURE__ */ React29.createElement(Input2.TextInput, {
|
|
1754
|
+
variant: "subdued",
|
|
1755
|
+
"data-testid": "display-name-input",
|
|
1756
|
+
placeholder: t("display name input placeholder"),
|
|
1757
|
+
classNames: "mbs-2 text-center font-light text-xl",
|
|
1758
|
+
value: displayName,
|
|
1759
|
+
onChange: ({ target: { value } }) => {
|
|
1760
|
+
setDisplayName(value);
|
|
1761
|
+
},
|
|
1762
|
+
onBlur: handleUpdateProfile
|
|
1763
|
+
}))));
|
|
1701
1764
|
};
|
|
1702
1765
|
var IdentityPanelImpl = (props) => {
|
|
1703
|
-
const { identity, titleId, activeView, onUpdateProfile, onResetStorage, onJoinNewIdentity, IdentityActionChooser: IdentityActionChooserComponent = IdentityActionChooser, InvitationManager: InvitationManagerComponent = InvitationManager, onDone, ...rest } = props;
|
|
1704
|
-
const { t } =
|
|
1766
|
+
const { identity, titleId, activeView, onUpdateProfile, onResetStorage, onJoinNewIdentity, IdentityActionChooser: IdentityActionChooserComponent = IdentityActionChooser, InvitationManager: InvitationManagerComponent = InvitationManager, connectionState, onChangeConnectionState, onDone, ...rest } = props;
|
|
1767
|
+
const { t } = useTranslation14("os");
|
|
1705
1768
|
const title = useMemo3(() => {
|
|
1706
1769
|
switch (activeView) {
|
|
1707
|
-
case "agent manager":
|
|
1708
|
-
return "Manage Agent";
|
|
1709
1770
|
case "device invitation manager":
|
|
1710
1771
|
return t("choose add device label");
|
|
1711
1772
|
default:
|
|
@@ -1716,13 +1777,16 @@ var IdentityPanelImpl = (props) => {
|
|
|
1716
1777
|
t
|
|
1717
1778
|
]);
|
|
1718
1779
|
const onCancelReset = () => rest.send?.("unchooseAction");
|
|
1719
|
-
return /* @__PURE__ */ React29.createElement(
|
|
1780
|
+
return /* @__PURE__ */ React29.createElement(DensityProvider, {
|
|
1720
1781
|
density: "fine"
|
|
1721
1782
|
}, /* @__PURE__ */ React29.createElement(IdentityHeading, {
|
|
1722
1783
|
identity,
|
|
1723
1784
|
titleId,
|
|
1724
1785
|
title,
|
|
1725
|
-
onDone
|
|
1786
|
+
onDone,
|
|
1787
|
+
onUpdateProfile,
|
|
1788
|
+
connectionState,
|
|
1789
|
+
onChangeConnectionState
|
|
1726
1790
|
}), /* @__PURE__ */ React29.createElement(Viewport.Root, {
|
|
1727
1791
|
activeView
|
|
1728
1792
|
}, /* @__PURE__ */ React29.createElement(Viewport.Views, null, /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
@@ -1738,27 +1802,6 @@ var IdentityPanelImpl = (props) => {
|
|
|
1738
1802
|
active: activeView === "device invitation manager",
|
|
1739
1803
|
...rest,
|
|
1740
1804
|
invitationUrl: rest.createInvitationUrl(rest.invitationCode)
|
|
1741
|
-
})), /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1742
|
-
id: "device manager",
|
|
1743
|
-
classNames: viewStyles
|
|
1744
|
-
}, /* @__PURE__ */ React29.createElement(DeviceManager, {
|
|
1745
|
-
active: activeView === "device manager",
|
|
1746
|
-
...rest
|
|
1747
|
-
})), /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1748
|
-
classNames: viewStyles,
|
|
1749
|
-
id: "update profile form"
|
|
1750
|
-
}, /* @__PURE__ */ React29.createElement(ProfileForm, {
|
|
1751
|
-
send: rest.send,
|
|
1752
|
-
active: activeView === "update profile form",
|
|
1753
|
-
identity,
|
|
1754
|
-
onUpdateProfile
|
|
1755
|
-
})), /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1756
|
-
classNames: viewStyles,
|
|
1757
|
-
id: "agent manager"
|
|
1758
|
-
}, /* @__PURE__ */ React29.createElement(AgentForm, {
|
|
1759
|
-
send: rest.send,
|
|
1760
|
-
active: activeView === "agent manager",
|
|
1761
|
-
...rest
|
|
1762
1805
|
})), /* @__PURE__ */ React29.createElement(Viewport.View, {
|
|
1763
1806
|
classNames: viewStyles,
|
|
1764
1807
|
id: "confirm join new identity"
|
|
@@ -1787,7 +1830,7 @@ var IdentityPanelWithInvitationImpl = ({ invitation, ...props }) => {
|
|
|
1787
1830
|
});
|
|
1788
1831
|
};
|
|
1789
1832
|
var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => code, initialDisposition = "default", ...props }) => {
|
|
1790
|
-
const titleId =
|
|
1833
|
+
const titleId = useId6("identityPanel__heading", propsTitleId);
|
|
1791
1834
|
const client = useClient3();
|
|
1792
1835
|
const devices = useDevices();
|
|
1793
1836
|
const identity = useIdentity();
|
|
@@ -1799,8 +1842,8 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
|
|
|
1799
1842
|
});
|
|
1800
1843
|
if (!identity) {
|
|
1801
1844
|
log6.error("IdentityPanel rendered with no active identity.", void 0, {
|
|
1802
|
-
F:
|
|
1803
|
-
L:
|
|
1845
|
+
F: __dxlog_file5,
|
|
1846
|
+
L: 234,
|
|
1804
1847
|
S: void 0,
|
|
1805
1848
|
C: (f, a) => f(...a)
|
|
1806
1849
|
});
|
|
@@ -1811,11 +1854,13 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
|
|
|
1811
1854
|
initialDisposition
|
|
1812
1855
|
}
|
|
1813
1856
|
});
|
|
1857
|
+
const { swarm: connectionState } = useNetworkStatus();
|
|
1858
|
+
const handleChangeConnectionState = async (nextState) => client?.mesh.updateConfig(nextState);
|
|
1814
1859
|
useEffect3(() => {
|
|
1815
1860
|
const subscription = identityService.subscribe((state) => {
|
|
1816
1861
|
log6("[state]", state, {
|
|
1817
|
-
F:
|
|
1818
|
-
L:
|
|
1862
|
+
F: __dxlog_file5,
|
|
1863
|
+
L: 247,
|
|
1819
1864
|
S: void 0,
|
|
1820
1865
|
C: (f, a) => f(...a)
|
|
1821
1866
|
});
|
|
@@ -1830,30 +1875,10 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
|
|
|
1830
1875
|
return "identity action chooser";
|
|
1831
1876
|
case identityState.matches("managingDeviceInvitation"):
|
|
1832
1877
|
return "device invitation manager";
|
|
1833
|
-
case identityState.matches("managingDevices"):
|
|
1834
|
-
return "device manager";
|
|
1835
|
-
case [
|
|
1836
|
-
{
|
|
1837
|
-
managingProfile: "idle"
|
|
1838
|
-
},
|
|
1839
|
-
{
|
|
1840
|
-
managingProfile: "pending"
|
|
1841
|
-
}
|
|
1842
|
-
].some(identityState.matches):
|
|
1843
|
-
return "update profile form";
|
|
1844
1878
|
case identityState.matches("confirmingResetStorage"):
|
|
1845
1879
|
return "confirm reset storage";
|
|
1846
1880
|
case identityState.matches("confirmingJoinNewIdentity"):
|
|
1847
1881
|
return "confirm join new identity";
|
|
1848
|
-
case [
|
|
1849
|
-
{
|
|
1850
|
-
managingAgent: "idle"
|
|
1851
|
-
},
|
|
1852
|
-
{
|
|
1853
|
-
managingAgent: "pending"
|
|
1854
|
-
}
|
|
1855
|
-
].some(identityState.matches):
|
|
1856
|
-
return "agent manager";
|
|
1857
1882
|
default:
|
|
1858
1883
|
return "identity action chooser";
|
|
1859
1884
|
}
|
|
@@ -1875,6 +1900,8 @@ var IdentityPanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => co
|
|
|
1875
1900
|
titleId,
|
|
1876
1901
|
createInvitationUrl,
|
|
1877
1902
|
onUpdateProfile,
|
|
1903
|
+
connectionState,
|
|
1904
|
+
onChangeConnectionState: handleChangeConnectionState,
|
|
1878
1905
|
...agentProps
|
|
1879
1906
|
};
|
|
1880
1907
|
return identityState.context.invitation ? /* @__PURE__ */ React29.createElement(IdentityPanelWithInvitationImpl, {
|
|
@@ -1888,25 +1915,25 @@ import React38, { useCallback as useCallback7, useEffect as useEffect5, useMemo
|
|
|
1888
1915
|
import { log as log10 } from "@dxos/log";
|
|
1889
1916
|
import { useClient as useClient5, useMulticastObservable } from "@dxos/react-client";
|
|
1890
1917
|
import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
|
|
1891
|
-
import { DensityProvider as
|
|
1918
|
+
import { DensityProvider as DensityProvider2, useId as useId8, useThemeContext as useThemeContext4 } from "@dxos/react-ui";
|
|
1892
1919
|
|
|
1893
1920
|
// packages/sdk/shell/src/panels/JoinPanel/JoinHeading.tsx
|
|
1894
1921
|
import { X as X4 } from "@phosphor-icons/react";
|
|
1895
|
-
import React30, { cloneElement, forwardRef as
|
|
1896
|
-
import { Button as
|
|
1897
|
-
import { descriptionText as
|
|
1898
|
-
var JoinHeading = /* @__PURE__ */
|
|
1899
|
-
const { t } =
|
|
1900
|
-
const exitButton = /* @__PURE__ */ React30.createElement(
|
|
1922
|
+
import React30, { cloneElement, forwardRef as forwardRef9 } from "react";
|
|
1923
|
+
import { Button as Button10, useTranslation as useTranslation15 } from "@dxos/react-ui";
|
|
1924
|
+
import { descriptionText as descriptionText9, getSize as getSize14, mx as mx22 } from "@dxos/react-ui-theme";
|
|
1925
|
+
var JoinHeading = /* @__PURE__ */ forwardRef9(({ mode, titleId, onExit, exitActionParent }, forwardedRef) => {
|
|
1926
|
+
const { t } = useTranslation15("os");
|
|
1927
|
+
const exitButton = /* @__PURE__ */ React30.createElement(Button10, {
|
|
1901
1928
|
variant: "ghost",
|
|
1902
1929
|
...onExit && {
|
|
1903
1930
|
onClick: onExit
|
|
1904
1931
|
},
|
|
1905
|
-
classNames:
|
|
1932
|
+
classNames: mx22(descriptionText9, "plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),
|
|
1906
1933
|
"data-testid": "join-exit"
|
|
1907
1934
|
}, /* @__PURE__ */ React30.createElement(X4, {
|
|
1908
1935
|
weight: "bold",
|
|
1909
|
-
className:
|
|
1936
|
+
className: getSize14(4)
|
|
1910
1937
|
}), /* @__PURE__ */ React30.createElement("span", {
|
|
1911
1938
|
className: "sr-only"
|
|
1912
1939
|
}, t("exit label")));
|
|
@@ -1929,11 +1956,11 @@ import { useCallback as useCallback6 } from "react";
|
|
|
1929
1956
|
import { assign as assign2, createMachine as createMachine2 } from "xstate";
|
|
1930
1957
|
import { log as log7 } from "@dxos/log";
|
|
1931
1958
|
import { AlreadyJoinedError } from "@dxos/react-client";
|
|
1932
|
-
import { Invitation as
|
|
1933
|
-
var
|
|
1959
|
+
import { Invitation as Invitation5, InvitationEncoder as InvitationEncoder3 } from "@dxos/react-client/invitations";
|
|
1960
|
+
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/joinMachine.ts";
|
|
1934
1961
|
var getInvitationSubscribable = (Kind, invitation) => {
|
|
1935
1962
|
log7("[subscribing to invitation]", invitation, {
|
|
1936
|
-
F:
|
|
1963
|
+
F: __dxlog_file6,
|
|
1937
1964
|
L: 90,
|
|
1938
1965
|
S: void 0,
|
|
1939
1966
|
C: (f, a) => f(...a)
|
|
@@ -1941,12 +1968,12 @@ var getInvitationSubscribable = (Kind, invitation) => {
|
|
|
1941
1968
|
return {
|
|
1942
1969
|
subscribe: (next, onError, complete) => invitation.subscribe((invitation2) => {
|
|
1943
1970
|
switch (invitation2.state) {
|
|
1944
|
-
case
|
|
1971
|
+
case Invitation5.State.CONNECTING: {
|
|
1945
1972
|
log7("[invitation connecting]", {
|
|
1946
1973
|
Kind,
|
|
1947
1974
|
invitation: invitation2
|
|
1948
1975
|
}, {
|
|
1949
|
-
F:
|
|
1976
|
+
F: __dxlog_file6,
|
|
1950
1977
|
L: 101,
|
|
1951
1978
|
S: void 0,
|
|
1952
1979
|
C: (f, a) => f(...a)
|
|
@@ -1956,12 +1983,12 @@ var getInvitationSubscribable = (Kind, invitation) => {
|
|
|
1956
1983
|
invitation: invitation2
|
|
1957
1984
|
});
|
|
1958
1985
|
}
|
|
1959
|
-
case
|
|
1986
|
+
case Invitation5.State.CONNECTED: {
|
|
1960
1987
|
log7("[invitation connected]", {
|
|
1961
1988
|
Kind,
|
|
1962
1989
|
invitation: invitation2
|
|
1963
1990
|
}, {
|
|
1964
|
-
F:
|
|
1991
|
+
F: __dxlog_file6,
|
|
1965
1992
|
L: 106,
|
|
1966
1993
|
S: void 0,
|
|
1967
1994
|
C: (f, a) => f(...a)
|
|
@@ -1971,12 +1998,12 @@ var getInvitationSubscribable = (Kind, invitation) => {
|
|
|
1971
1998
|
invitation: invitation2
|
|
1972
1999
|
});
|
|
1973
2000
|
}
|
|
1974
|
-
case
|
|
2001
|
+
case Invitation5.State.READY_FOR_AUTHENTICATION: {
|
|
1975
2002
|
log7("[invitation ready for authentication]", {
|
|
1976
2003
|
Kind,
|
|
1977
2004
|
invitation: invitation2
|
|
1978
2005
|
}, {
|
|
1979
|
-
F:
|
|
2006
|
+
F: __dxlog_file6,
|
|
1980
2007
|
L: 111,
|
|
1981
2008
|
S: void 0,
|
|
1982
2009
|
C: (f, a) => f(...a)
|
|
@@ -1986,12 +2013,12 @@ var getInvitationSubscribable = (Kind, invitation) => {
|
|
|
1986
2013
|
invitation: invitation2
|
|
1987
2014
|
});
|
|
1988
2015
|
}
|
|
1989
|
-
case
|
|
2016
|
+
case Invitation5.State.AUTHENTICATING: {
|
|
1990
2017
|
log7("[invitation authenticating]", {
|
|
1991
2018
|
Kind,
|
|
1992
2019
|
invitation: invitation2
|
|
1993
2020
|
}, {
|
|
1994
|
-
F:
|
|
2021
|
+
F: __dxlog_file6,
|
|
1995
2022
|
L: 116,
|
|
1996
2023
|
S: void 0,
|
|
1997
2024
|
C: (f, a) => f(...a)
|
|
@@ -2001,12 +2028,12 @@ var getInvitationSubscribable = (Kind, invitation) => {
|
|
|
2001
2028
|
invitation: invitation2
|
|
2002
2029
|
});
|
|
2003
2030
|
}
|
|
2004
|
-
case
|
|
2031
|
+
case Invitation5.State.SUCCESS: {
|
|
2005
2032
|
log7("[invitation success]", {
|
|
2006
2033
|
Kind,
|
|
2007
2034
|
invitation: invitation2
|
|
2008
2035
|
}, {
|
|
2009
|
-
F:
|
|
2036
|
+
F: __dxlog_file6,
|
|
2010
2037
|
L: 121,
|
|
2011
2038
|
S: void 0,
|
|
2012
2039
|
C: (f, a) => f(...a)
|
|
@@ -2017,11 +2044,11 @@ var getInvitationSubscribable = (Kind, invitation) => {
|
|
|
2017
2044
|
});
|
|
2018
2045
|
return complete?.();
|
|
2019
2046
|
}
|
|
2020
|
-
case
|
|
2047
|
+
case Invitation5.State.CANCELLED: {
|
|
2021
2048
|
log7.warn("[invitation cancelled]", {
|
|
2022
2049
|
Kind
|
|
2023
2050
|
}, {
|
|
2024
|
-
F:
|
|
2051
|
+
F: __dxlog_file6,
|
|
2025
2052
|
L: 127,
|
|
2026
2053
|
S: void 0,
|
|
2027
2054
|
C: (f, a) => f(...a)
|
|
@@ -2031,11 +2058,11 @@ var getInvitationSubscribable = (Kind, invitation) => {
|
|
|
2031
2058
|
reason: "cancelled"
|
|
2032
2059
|
});
|
|
2033
2060
|
}
|
|
2034
|
-
case
|
|
2061
|
+
case Invitation5.State.TIMEOUT: {
|
|
2035
2062
|
log7.error("[invitation timeout]", {
|
|
2036
2063
|
Kind
|
|
2037
2064
|
}, {
|
|
2038
|
-
F:
|
|
2065
|
+
F: __dxlog_file6,
|
|
2039
2066
|
L: 132,
|
|
2040
2067
|
S: void 0,
|
|
2041
2068
|
C: (f, a) => f(...a)
|
|
@@ -2052,7 +2079,7 @@ var getInvitationSubscribable = (Kind, invitation) => {
|
|
|
2052
2079
|
Kind,
|
|
2053
2080
|
error
|
|
2054
2081
|
}, {
|
|
2055
|
-
F:
|
|
2082
|
+
F: __dxlog_file6,
|
|
2056
2083
|
L: 139,
|
|
2057
2084
|
S: void 0,
|
|
2058
2085
|
C: (f, a) => f(...a)
|
|
@@ -2067,7 +2094,7 @@ var getInvitationSubscribable = (Kind, invitation) => {
|
|
|
2067
2094
|
Kind,
|
|
2068
2095
|
error
|
|
2069
2096
|
}, {
|
|
2070
|
-
F:
|
|
2097
|
+
F: __dxlog_file6,
|
|
2071
2098
|
L: 144,
|
|
2072
2099
|
S: void 0,
|
|
2073
2100
|
C: (f, a) => f(...a)
|
|
@@ -2130,7 +2157,7 @@ var acceptingInvitationTemplate = (Kind, successTarget) => {
|
|
|
2130
2157
|
{
|
|
2131
2158
|
cond: (context) => {
|
|
2132
2159
|
const invitation = context[Kind.toLowerCase()].invitation;
|
|
2133
|
-
return !invitation || invitation?.state ===
|
|
2160
|
+
return !invitation || invitation?.state === Invitation5.State.CONNECTING;
|
|
2134
2161
|
},
|
|
2135
2162
|
target: `connecting${Kind}Invitation`,
|
|
2136
2163
|
actions: "log"
|
|
@@ -2399,7 +2426,7 @@ var joinMachine = createMachine2({
|
|
|
2399
2426
|
haloInvitation: context.halo.invitation,
|
|
2400
2427
|
spaceInvitation: context.space.invitation
|
|
2401
2428
|
}, {
|
|
2402
|
-
F:
|
|
2429
|
+
F: __dxlog_file6,
|
|
2403
2430
|
L: 416,
|
|
2404
2431
|
S: void 0,
|
|
2405
2432
|
C: (f, a) => f(...a)
|
|
@@ -2413,7 +2440,7 @@ var defaultCodeFromUrl = (invitationType, text) => {
|
|
|
2413
2440
|
return searchParams.get(`${invitationType}InvitationCode`) ?? searchParams.get(`${invitationType}Invitation`) ?? searchParams.get("invitationCode") ?? searchParams.get("invitation") ?? text;
|
|
2414
2441
|
} catch (err) {
|
|
2415
2442
|
log7.catch(err, void 0, {
|
|
2416
|
-
F:
|
|
2443
|
+
F: __dxlog_file6,
|
|
2417
2444
|
L: 443,
|
|
2418
2445
|
S: void 0,
|
|
2419
2446
|
C: (f, a) => f(...a)
|
|
@@ -2434,7 +2461,7 @@ var useJoinMachine = (client, options) => {
|
|
|
2434
2461
|
};
|
|
2435
2462
|
} catch (err) {
|
|
2436
2463
|
log7.error("Could not redeem device invitation code", err, {
|
|
2437
|
-
F:
|
|
2464
|
+
F: __dxlog_file6,
|
|
2438
2465
|
L: 464,
|
|
2439
2466
|
S: void 0,
|
|
2440
2467
|
C: (f, a) => f(...a)
|
|
@@ -2459,7 +2486,7 @@ var useJoinMachine = (client, options) => {
|
|
|
2459
2486
|
};
|
|
2460
2487
|
} catch (err) {
|
|
2461
2488
|
log7.error("Could not redeem space invitation code", err, {
|
|
2462
|
-
F:
|
|
2489
|
+
F: __dxlog_file6,
|
|
2463
2490
|
L: 486,
|
|
2464
2491
|
S: void 0,
|
|
2465
2492
|
C: (f, a) => f(...a)
|
|
@@ -2519,18 +2546,18 @@ var useJoinMachine = (client, options) => {
|
|
|
2519
2546
|
};
|
|
2520
2547
|
|
|
2521
2548
|
// packages/sdk/shell/src/panels/JoinPanel/steps/AdditionMethodChooser.tsx
|
|
2522
|
-
import { CaretRight as CaretRight2, Plus as
|
|
2549
|
+
import { CaretRight as CaretRight2, Plus as Plus3, QrCode, Textbox } from "@phosphor-icons/react";
|
|
2523
2550
|
import React31 from "react";
|
|
2524
|
-
import { useTranslation as
|
|
2525
|
-
import { getSize as
|
|
2551
|
+
import { useTranslation as useTranslation16 } from "@dxos/react-ui";
|
|
2552
|
+
import { getSize as getSize15 } from "@dxos/react-ui-theme";
|
|
2526
2553
|
var AdditionMethodChooser = (viewStateProps) => {
|
|
2527
2554
|
const disabled = !viewStateProps.active;
|
|
2528
2555
|
const { send } = viewStateProps;
|
|
2529
|
-
const { t } =
|
|
2556
|
+
const { t } = useTranslation16("os");
|
|
2530
2557
|
const sharedButtonProps = {
|
|
2531
2558
|
disabled,
|
|
2532
2559
|
after: /* @__PURE__ */ React31.createElement(CaretRight2, {
|
|
2533
|
-
className:
|
|
2560
|
+
className: getSize15(4),
|
|
2534
2561
|
weight: "bold"
|
|
2535
2562
|
}),
|
|
2536
2563
|
slots: {
|
|
@@ -2545,8 +2572,8 @@ var AdditionMethodChooser = (viewStateProps) => {
|
|
|
2545
2572
|
}, /* @__PURE__ */ React31.createElement(CompoundButton, {
|
|
2546
2573
|
...sharedButtonProps,
|
|
2547
2574
|
description: t("create identity description"),
|
|
2548
|
-
before: /* @__PURE__ */ React31.createElement(
|
|
2549
|
-
className:
|
|
2575
|
+
before: /* @__PURE__ */ React31.createElement(Plus3, {
|
|
2576
|
+
className: getSize15(6)
|
|
2550
2577
|
}),
|
|
2551
2578
|
onClick: () => send({
|
|
2552
2579
|
type: "createIdentity"
|
|
@@ -2557,7 +2584,7 @@ var AdditionMethodChooser = (viewStateProps) => {
|
|
|
2557
2584
|
...sharedButtonProps,
|
|
2558
2585
|
description: t("join identity description"),
|
|
2559
2586
|
before: /* @__PURE__ */ React31.createElement(QrCode, {
|
|
2560
|
-
className:
|
|
2587
|
+
className: getSize15(6)
|
|
2561
2588
|
}),
|
|
2562
2589
|
onClick: () => send({
|
|
2563
2590
|
type: "acceptHaloInvitation"
|
|
@@ -2569,7 +2596,7 @@ var AdditionMethodChooser = (viewStateProps) => {
|
|
|
2569
2596
|
disabled: true,
|
|
2570
2597
|
description: t("recover identity description"),
|
|
2571
2598
|
before: /* @__PURE__ */ React31.createElement(Textbox, {
|
|
2572
|
-
className:
|
|
2599
|
+
className: getSize15(6)
|
|
2573
2600
|
}),
|
|
2574
2601
|
onClick: () => send({
|
|
2575
2602
|
type: "recoverIdentity"
|
|
@@ -2581,16 +2608,16 @@ var AdditionMethodChooser = (viewStateProps) => {
|
|
|
2581
2608
|
// packages/sdk/shell/src/panels/JoinPanel/steps/IdentityAdded.tsx
|
|
2582
2609
|
import React32, { cloneElement as cloneElement2 } from "react";
|
|
2583
2610
|
import { generateName as generateName4 } from "@dxos/display-name";
|
|
2584
|
-
import { Avatar as
|
|
2585
|
-
import { mx as
|
|
2611
|
+
import { Avatar as Avatar7, useId as useId7, useTranslation as useTranslation17 } from "@dxos/react-ui";
|
|
2612
|
+
import { mx as mx23 } from "@dxos/react-ui-theme";
|
|
2586
2613
|
import { hexToFallback } from "@dxos/util";
|
|
2587
2614
|
var IdentityAdded = (props) => {
|
|
2588
2615
|
const { mode, addedIdentity, active, send, onDone, doneActionParent } = props;
|
|
2589
2616
|
const disabled = !active;
|
|
2590
|
-
const { t } =
|
|
2617
|
+
const { t } = useTranslation17("os");
|
|
2591
2618
|
const addedIdentityHex = addedIdentity?.identityKey.toHex() ?? "0";
|
|
2592
2619
|
const fallbackValue = hexToFallback(addedIdentityHex);
|
|
2593
|
-
const labelId =
|
|
2620
|
+
const labelId = useId7("identityListItem__label");
|
|
2594
2621
|
const displayName = addedIdentity?.profile?.displayName ?? (addedIdentity && generateName4(addedIdentityHex));
|
|
2595
2622
|
const doneAction = /* @__PURE__ */ React32.createElement(Action, {
|
|
2596
2623
|
...onDone && {
|
|
@@ -2603,14 +2630,14 @@ var IdentityAdded = (props) => {
|
|
|
2603
2630
|
return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(StepHeading, null, t("identity added label")), /* @__PURE__ */ React32.createElement("div", {
|
|
2604
2631
|
role: "none",
|
|
2605
2632
|
className: "grow flex flex-col items-center justify-center text-center gap-2"
|
|
2606
|
-
}, /* @__PURE__ */ React32.createElement(
|
|
2633
|
+
}, /* @__PURE__ */ React32.createElement(Avatar7.Root, {
|
|
2607
2634
|
status: "active",
|
|
2608
2635
|
labelId,
|
|
2609
2636
|
hue: addedIdentity?.profile?.data?.hue || fallbackValue.hue
|
|
2610
|
-
}, /* @__PURE__ */ React32.createElement(
|
|
2637
|
+
}, /* @__PURE__ */ React32.createElement(Avatar7.Frame, null, /* @__PURE__ */ React32.createElement(Avatar7.Fallback, {
|
|
2611
2638
|
text: addedIdentity?.profile?.data?.emoji || fallbackValue.emoji
|
|
2612
|
-
})), /* @__PURE__ */ React32.createElement(
|
|
2613
|
-
classNames:
|
|
2639
|
+
})), /* @__PURE__ */ React32.createElement(Avatar7.Label, {
|
|
2640
|
+
classNames: mx23("text-lg truncate", !addedIdentity?.profile?.displayName && "font-mono")
|
|
2614
2641
|
}, displayName))), /* @__PURE__ */ React32.createElement(Actions, null, mode === "halo-only" ? doneActionParent ? /* @__PURE__ */ cloneElement2(doneActionParent, {}, doneAction) : doneAction : /* @__PURE__ */ React32.createElement(Action, {
|
|
2615
2642
|
variant: "primary",
|
|
2616
2643
|
disabled: disabled || !addedIdentity,
|
|
@@ -2623,17 +2650,17 @@ var IdentityAdded = (props) => {
|
|
|
2623
2650
|
};
|
|
2624
2651
|
|
|
2625
2652
|
// packages/sdk/shell/src/panels/JoinPanel/steps/IdentityInput.tsx
|
|
2626
|
-
import React33, { useState as
|
|
2653
|
+
import React33, { useState as useState9 } from "react";
|
|
2627
2654
|
import { log as log8 } from "@dxos/log";
|
|
2628
2655
|
import { useClient as useClient4 } from "@dxos/react-client";
|
|
2629
|
-
import { useTranslation as
|
|
2630
|
-
var
|
|
2656
|
+
import { useTranslation as useTranslation18 } from "@dxos/react-ui";
|
|
2657
|
+
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/steps/IdentityInput.tsx";
|
|
2631
2658
|
var IdentityInput = (props) => {
|
|
2632
2659
|
const { send, method } = props;
|
|
2633
2660
|
const isRecover = method === "recover identity";
|
|
2634
2661
|
const client = useClient4();
|
|
2635
|
-
const { t } =
|
|
2636
|
-
const [validationMessage, setValidationMessage] =
|
|
2662
|
+
const { t } = useTranslation18("os");
|
|
2663
|
+
const [validationMessage, setValidationMessage] = useState9("");
|
|
2637
2664
|
const createIdentity = (displayName) => {
|
|
2638
2665
|
void client.halo.createIdentity({
|
|
2639
2666
|
[isRecover ? "seedphrase" : "displayName"]: displayName
|
|
@@ -2644,7 +2671,7 @@ var IdentityInput = (props) => {
|
|
|
2644
2671
|
});
|
|
2645
2672
|
}, (error) => {
|
|
2646
2673
|
log8.catch(error, void 0, {
|
|
2647
|
-
F:
|
|
2674
|
+
F: __dxlog_file7,
|
|
2648
2675
|
L: 37,
|
|
2649
2676
|
S: void 0,
|
|
2650
2677
|
C: (f, a) => f(...a)
|
|
@@ -2661,8 +2688,8 @@ var IdentityInput = (props) => {
|
|
|
2661
2688
|
var IdentityInputImpl = (props) => {
|
|
2662
2689
|
const { method, send, active, onDisplayNameConfirm, validationMessage } = props;
|
|
2663
2690
|
const disabled = !active;
|
|
2664
|
-
const { t } =
|
|
2665
|
-
const [inputValue, setInputValue] =
|
|
2691
|
+
const { t } = useTranslation18("os");
|
|
2692
|
+
const [inputValue, setInputValue] = useState9("");
|
|
2666
2693
|
const isRecover = method === "recover identity";
|
|
2667
2694
|
return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement("div", {
|
|
2668
2695
|
role: "none",
|
|
@@ -2691,11 +2718,11 @@ var IdentityInputImpl = (props) => {
|
|
|
2691
2718
|
|
|
2692
2719
|
// packages/sdk/shell/src/panels/JoinPanel/steps/InvitationAccepted.tsx
|
|
2693
2720
|
import React34, { cloneElement as cloneElement3 } from "react";
|
|
2694
|
-
import { useTranslation as
|
|
2721
|
+
import { useTranslation as useTranslation19 } from "@dxos/react-ui";
|
|
2695
2722
|
var InvitationAccepted = (props) => {
|
|
2696
2723
|
const { active, Kind, doneActionParent, onDone } = props;
|
|
2697
2724
|
const disabled = !active;
|
|
2698
|
-
const { t } =
|
|
2725
|
+
const { t } = useTranslation19("os");
|
|
2699
2726
|
const doneAction = /* @__PURE__ */ React34.createElement(Action, {
|
|
2700
2727
|
variant: "primary",
|
|
2701
2728
|
onClick: onDone,
|
|
@@ -2712,10 +2739,10 @@ var InvitationAccepted = (props) => {
|
|
|
2712
2739
|
};
|
|
2713
2740
|
|
|
2714
2741
|
// packages/sdk/shell/src/panels/JoinPanel/steps/InvitationInput.tsx
|
|
2715
|
-
import React35, { useState as
|
|
2742
|
+
import React35, { useState as useState10, useEffect as useEffect4, cloneElement as cloneElement4 } from "react";
|
|
2716
2743
|
import { log as log9 } from "@dxos/log";
|
|
2717
|
-
import { useTranslation as
|
|
2718
|
-
var
|
|
2744
|
+
import { useTranslation as useTranslation20 } from "@dxos/react-ui";
|
|
2745
|
+
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/steps/InvitationInput.tsx";
|
|
2719
2746
|
var invitationCodeFromUrl = (text) => {
|
|
2720
2747
|
try {
|
|
2721
2748
|
const searchParams = new URLSearchParams(text.substring(text.lastIndexOf("?")));
|
|
@@ -2723,7 +2750,7 @@ var invitationCodeFromUrl = (text) => {
|
|
|
2723
2750
|
return invitation ?? text;
|
|
2724
2751
|
} catch (err) {
|
|
2725
2752
|
log9.catch(err, void 0, {
|
|
2726
|
-
F:
|
|
2753
|
+
F: __dxlog_file8,
|
|
2727
2754
|
L: 25,
|
|
2728
2755
|
S: void 0,
|
|
2729
2756
|
C: (f, a) => f(...a)
|
|
@@ -2734,8 +2761,8 @@ var invitationCodeFromUrl = (text) => {
|
|
|
2734
2761
|
var InvitationInput = (props) => {
|
|
2735
2762
|
const { Kind, active, send, unredeemedCode, onExit, exitActionParent, onDone, doneActionParent, succeededKeys } = props;
|
|
2736
2763
|
const disabled = !active;
|
|
2737
|
-
const { t } =
|
|
2738
|
-
const [inputValue, setInputValue] =
|
|
2764
|
+
const { t } = useTranslation20("os");
|
|
2765
|
+
const [inputValue, setInputValue] = useState10(unredeemedCode ?? "");
|
|
2739
2766
|
useEffect4(() => {
|
|
2740
2767
|
unredeemedCode && setInputValue(unredeemedCode ?? "");
|
|
2741
2768
|
}, [
|
|
@@ -2793,8 +2820,8 @@ var InvitationInput = (props) => {
|
|
|
2793
2820
|
|
|
2794
2821
|
// packages/sdk/shell/src/panels/JoinPanel/steps/InvitationRescuer.tsx
|
|
2795
2822
|
import React36 from "react";
|
|
2796
|
-
import { useTranslation as
|
|
2797
|
-
import { descriptionText as
|
|
2823
|
+
import { useTranslation as useTranslation21 } from "@dxos/react-ui";
|
|
2824
|
+
import { descriptionText as descriptionText10 } from "@dxos/react-ui-theme";
|
|
2798
2825
|
var InvitationActions = ({
|
|
2799
2826
|
// `invitationState` does report correct state, but here we evaluate whether `failReason` is a better source of truth
|
|
2800
2827
|
// for the UI in particular.
|
|
@@ -2805,10 +2832,10 @@ var InvitationActions = ({
|
|
|
2805
2832
|
Kind,
|
|
2806
2833
|
failReason
|
|
2807
2834
|
}) => {
|
|
2808
|
-
const { t } =
|
|
2835
|
+
const { t } = useTranslation21("os");
|
|
2809
2836
|
if (failReason) {
|
|
2810
2837
|
return /* @__PURE__ */ React36.createElement(React36.Fragment, null, /* @__PURE__ */ React36.createElement(StepHeading, {
|
|
2811
|
-
className:
|
|
2838
|
+
className: descriptionText10
|
|
2812
2839
|
}, t(failReason === "timeout" ? "timeout status label" : failReason === "cancelled" ? "cancelled status label" : "error status label")), /* @__PURE__ */ React36.createElement("div", {
|
|
2813
2840
|
role: "none",
|
|
2814
2841
|
className: "grow"
|
|
@@ -2821,7 +2848,7 @@ var InvitationActions = ({
|
|
|
2821
2848
|
}, t("reset label"))));
|
|
2822
2849
|
} else {
|
|
2823
2850
|
return /* @__PURE__ */ React36.createElement(React36.Fragment, null, /* @__PURE__ */ React36.createElement(StepHeading, {
|
|
2824
|
-
className:
|
|
2851
|
+
className: descriptionText10
|
|
2825
2852
|
}, t("connecting status label")), /* @__PURE__ */ React36.createElement("div", {
|
|
2826
2853
|
role: "none",
|
|
2827
2854
|
className: "grow"
|
|
@@ -2838,12 +2865,12 @@ var InvitationActions = ({
|
|
|
2838
2865
|
};
|
|
2839
2866
|
var InvitationRescuer = (props) => {
|
|
2840
2867
|
const { Kind, invitationState, active, send } = props;
|
|
2841
|
-
const { t } =
|
|
2868
|
+
const { t } = useTranslation21("os");
|
|
2842
2869
|
return /* @__PURE__ */ React36.createElement(React36.Fragment, null, typeof invitationState === "undefined" ? /* @__PURE__ */ React36.createElement(React36.Fragment, null, /* @__PURE__ */ React36.createElement("div", {
|
|
2843
2870
|
role: "none",
|
|
2844
2871
|
className: "grow flex flex-col justify-center"
|
|
2845
2872
|
}, /* @__PURE__ */ React36.createElement(StepHeading, {
|
|
2846
|
-
className:
|
|
2873
|
+
className: descriptionText10
|
|
2847
2874
|
}, "There was a problem joining the space")), /* @__PURE__ */ React36.createElement(Actions, null, /* @__PURE__ */ React36.createElement(Action, {
|
|
2848
2875
|
disabled: !active,
|
|
2849
2876
|
"data-testid": "invitation-rescuer-blank-reset",
|
|
@@ -2854,15 +2881,15 @@ var InvitationRescuer = (props) => {
|
|
|
2854
2881
|
};
|
|
2855
2882
|
|
|
2856
2883
|
// packages/sdk/shell/src/panels/JoinPanel/steps/InvitationAuthenticator.tsx
|
|
2857
|
-
import React37, { useState as
|
|
2858
|
-
import { Input as
|
|
2859
|
-
import { hexToEmoji as
|
|
2884
|
+
import React37, { useState as useState11 } from "react";
|
|
2885
|
+
import { Input as Input3, useTranslation as useTranslation22 } from "@dxos/react-ui";
|
|
2886
|
+
import { hexToEmoji as hexToEmoji5 } from "@dxos/util";
|
|
2860
2887
|
var pinLength = 6;
|
|
2861
2888
|
var InvitationAuthenticator = ({ failed, Kind, active, pending, invitationId, onInvitationAuthenticate, onInvitationCancel }) => {
|
|
2862
2889
|
const disabled = !active || pending;
|
|
2863
|
-
const { t } =
|
|
2890
|
+
const { t } = useTranslation22("os");
|
|
2864
2891
|
const invitationType = Kind.toLowerCase();
|
|
2865
|
-
const [authCode, setAuthCode] =
|
|
2892
|
+
const [authCode, setAuthCode] = useState11("");
|
|
2866
2893
|
const onChange = ({ target: { value } }) => {
|
|
2867
2894
|
setAuthCode(value);
|
|
2868
2895
|
if (value.length === pinLength) {
|
|
@@ -2873,12 +2900,12 @@ var InvitationAuthenticator = ({ failed, Kind, active, pending, invitationId, on
|
|
|
2873
2900
|
role: "none",
|
|
2874
2901
|
className: "grow flex flex-col justify-center"
|
|
2875
2902
|
}, invitationId && /* @__PURE__ */ React37.createElement(Emoji, {
|
|
2876
|
-
text:
|
|
2877
|
-
}), /* @__PURE__ */ React37.createElement(
|
|
2903
|
+
text: hexToEmoji5(invitationId)
|
|
2904
|
+
}), /* @__PURE__ */ React37.createElement(Input3.Root, failed && {
|
|
2878
2905
|
validationValence: "error"
|
|
2879
|
-
}, /* @__PURE__ */ React37.createElement(
|
|
2906
|
+
}, /* @__PURE__ */ React37.createElement(Input3.Label, {
|
|
2880
2907
|
asChild: true
|
|
2881
|
-
}, /* @__PURE__ */ React37.createElement(StepHeading, null, t("auth code input label"))), /* @__PURE__ */ React37.createElement(
|
|
2908
|
+
}, /* @__PURE__ */ React37.createElement(StepHeading, null, t("auth code input label"))), /* @__PURE__ */ React37.createElement(Input3.PinInput, {
|
|
2882
2909
|
disabled,
|
|
2883
2910
|
length: pinLength,
|
|
2884
2911
|
onChange,
|
|
@@ -2889,9 +2916,9 @@ var InvitationAuthenticator = ({ failed, Kind, active, pending, invitationId, on
|
|
|
2889
2916
|
"data-prevent-ios-autofocus": true,
|
|
2890
2917
|
"data-testid": `${invitationType}-auth-code-input`,
|
|
2891
2918
|
"data-1p-ignore": true
|
|
2892
|
-
}), failed && /* @__PURE__ */ React37.createElement(
|
|
2919
|
+
}), failed && /* @__PURE__ */ React37.createElement(Input3.DescriptionAndValidation, {
|
|
2893
2920
|
classNames: "text-center"
|
|
2894
|
-
}, /* @__PURE__ */ React37.createElement(
|
|
2921
|
+
}, /* @__PURE__ */ React37.createElement(Input3.Validation, null, t("failed to authenticate message"))))), /* @__PURE__ */ React37.createElement(Actions, null, /* @__PURE__ */ React37.createElement(Action, {
|
|
2895
2922
|
variant: "ghost",
|
|
2896
2923
|
disabled,
|
|
2897
2924
|
onClick: () => onInvitationCancel?.(),
|
|
@@ -2909,7 +2936,7 @@ var InvitationAuthenticator = ({ failed, Kind, active, pending, invitationId, on
|
|
|
2909
2936
|
var stepStyles = "pbs-1 pbe-3 pli-3";
|
|
2910
2937
|
|
|
2911
2938
|
// packages/sdk/shell/src/styles/invitationStatusStyles.ts
|
|
2912
|
-
import { Invitation as
|
|
2939
|
+
import { Invitation as Invitation6 } from "@dxos/react-client/invitations";
|
|
2913
2940
|
var inactiveBgColor = "bg-neutral-100 dark:bg-neutral-600";
|
|
2914
2941
|
var activeBgColor = "bg-primary-500 dark:bg-primary-400";
|
|
2915
2942
|
var successBgColor = "bg-success-500 dark:bg-success-400";
|
|
@@ -2925,15 +2952,15 @@ var activeStrokeColor = "stroke-primary-400 dark:stroke-primary-150";
|
|
|
2925
2952
|
var successStrokeColor = "stroke-success-300 dark:stroke-primary-400";
|
|
2926
2953
|
var errorStrokeColor = "stroke-error-300 dark:stroke-error-500";
|
|
2927
2954
|
var cancelledStrokeColor = "stroke-warning-300 dark:stroke-warning-500";
|
|
2928
|
-
var resolvedStrokeColor = (status) => status ===
|
|
2929
|
-
var resolvedBgColor = (status) => status ===
|
|
2930
|
-
var resolvedTextColor = (status) => status ===
|
|
2955
|
+
var resolvedStrokeColor = (status) => status === Invitation6.State.ERROR ? errorStrokeColor : status === Invitation6.State.CANCELLED || status === Invitation6.State.TIMEOUT ? cancelledStrokeColor : successStrokeColor;
|
|
2956
|
+
var resolvedBgColor = (status) => status === Invitation6.State.ERROR ? errorBgColor : status === Invitation6.State.CANCELLED || status === Invitation6.State.TIMEOUT ? cancelledBgColor : successBgColor;
|
|
2957
|
+
var resolvedTextColor = (status) => status === Invitation6.State.ERROR ? errorTextColor : status === Invitation6.State.CANCELLED || status === Invitation6.State.TIMEOUT ? cancelledTextColor : successTextColor;
|
|
2931
2958
|
|
|
2932
2959
|
// packages/sdk/shell/src/panels/JoinPanel/JoinPanel.tsx
|
|
2933
|
-
var
|
|
2960
|
+
var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/JoinPanel/JoinPanel.tsx";
|
|
2934
2961
|
var JoinPanelImpl = (props) => {
|
|
2935
2962
|
const { titleId, send, activeView, failed, mode, unredeemedCodes, invitationStates, succeededKeys, failReasons, onExit, onHaloDone, onSpaceDone, exitActionParent, doneActionParent, onHaloInvitationCancel, onSpaceInvitationCancel, onHaloInvitationAuthenticate, onSpaceInvitationAuthenticate, onCancelResetStorage, onConfirmResetStorage, IdentityInput: IdentityInputComponent = IdentityInput, ConfirmReset: ConfirmResetComponent = ConfirmReset } = props;
|
|
2936
|
-
return /* @__PURE__ */ React38.createElement(
|
|
2963
|
+
return /* @__PURE__ */ React38.createElement(DensityProvider2, {
|
|
2937
2964
|
density: "fine"
|
|
2938
2965
|
}, mode !== "halo-only" && /* @__PURE__ */ React38.createElement(JoinHeading, {
|
|
2939
2966
|
titleId,
|
|
@@ -3076,7 +3103,7 @@ var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialDisposition =
|
|
|
3076
3103
|
const client = useClient5();
|
|
3077
3104
|
const identity = useIdentity2();
|
|
3078
3105
|
const { hasIosKeyboard } = useThemeContext4();
|
|
3079
|
-
const titleId =
|
|
3106
|
+
const titleId = useId8("joinPanel__heading", propsTitleId);
|
|
3080
3107
|
const [joinState, joinSend, joinService] = useJoinMachine(client, {
|
|
3081
3108
|
context: {
|
|
3082
3109
|
mode,
|
|
@@ -3092,7 +3119,7 @@ var JoinPanel = ({ titleId: propsTitleId, mode = "default", initialDisposition =
|
|
|
3092
3119
|
useEffect5(() => {
|
|
3093
3120
|
const subscription = joinService.subscribe((state) => {
|
|
3094
3121
|
log10("[state]", state, {
|
|
3095
|
-
F:
|
|
3122
|
+
F: __dxlog_file9,
|
|
3096
3123
|
L: 204,
|
|
3097
3124
|
S: void 0,
|
|
3098
3125
|
C: (f, a) => f(...a)
|
|
@@ -3357,13 +3384,13 @@ import { Planet } from "@phosphor-icons/react";
|
|
|
3357
3384
|
import React40, { useEffect as useEffect6, useMemo as useMemo5 } from "react";
|
|
3358
3385
|
import { log as log13 } from "@dxos/log";
|
|
3359
3386
|
import { useInvitationStatus as useInvitationStatus3 } from "@dxos/react-client/invitations";
|
|
3360
|
-
import { DensityProvider as
|
|
3387
|
+
import { DensityProvider as DensityProvider3, useId as useId9, useTranslation as useTranslation24 } from "@dxos/react-ui";
|
|
3361
3388
|
|
|
3362
3389
|
// packages/sdk/shell/src/panels/SpacePanel/spaceMachine.ts
|
|
3363
3390
|
import { useMachine as useMachine3 } from "@xstate/react";
|
|
3364
3391
|
import { assign as assign3, createMachine as createMachine3 } from "xstate";
|
|
3365
3392
|
import { log as log11 } from "@dxos/log";
|
|
3366
|
-
var
|
|
3393
|
+
var __dxlog_file10 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/SpacePanel/spaceMachine.ts";
|
|
3367
3394
|
var spaceMachine = createMachine3({
|
|
3368
3395
|
id: "space",
|
|
3369
3396
|
predictableActionArguments: true,
|
|
@@ -3404,7 +3431,7 @@ var spaceMachine = createMachine3({
|
|
|
3404
3431
|
event,
|
|
3405
3432
|
context
|
|
3406
3433
|
}, {
|
|
3407
|
-
F:
|
|
3434
|
+
F: __dxlog_file10,
|
|
3408
3435
|
L: 53,
|
|
3409
3436
|
S: void 0,
|
|
3410
3437
|
C: (f, a) => f(...a)
|
|
@@ -3423,28 +3450,28 @@ var useSpaceMachine = (options) => {
|
|
|
3423
3450
|
|
|
3424
3451
|
// packages/sdk/shell/src/panels/SpacePanel/steps/SpaceManager.tsx
|
|
3425
3452
|
import { Placeholder as Placeholder2, UserPlus, UsersThree } from "@phosphor-icons/react";
|
|
3426
|
-
import React39, { useCallback as useCallback8, useState as
|
|
3453
|
+
import React39, { useCallback as useCallback8, useState as useState12 } from "react";
|
|
3427
3454
|
import { log as log12 } from "@dxos/log";
|
|
3428
3455
|
import { useConfig } from "@dxos/react-client";
|
|
3429
3456
|
import { useSpaceInvitations as useSpaceInvitations2 } from "@dxos/react-client/echo";
|
|
3430
|
-
import { Invitation as
|
|
3431
|
-
import { ScrollArea, useTranslation as
|
|
3432
|
-
import { descriptionText as
|
|
3433
|
-
var
|
|
3457
|
+
import { Invitation as Invitation7, InvitationEncoder as InvitationEncoder4 } from "@dxos/react-client/invitations";
|
|
3458
|
+
import { ScrollArea, useTranslation as useTranslation23 } from "@dxos/react-ui";
|
|
3459
|
+
import { descriptionText as descriptionText11, mx as mx24 } from "@dxos/react-ui-theme";
|
|
3460
|
+
var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/SpacePanel/steps/SpaceManager.tsx";
|
|
3434
3461
|
var activeActionKey = "dxos:react-shell/space-manager/active-action";
|
|
3435
3462
|
var SpaceManager = (props) => {
|
|
3436
3463
|
const { space, target } = props;
|
|
3437
|
-
const { t } =
|
|
3464
|
+
const { t } = useTranslation23("os");
|
|
3438
3465
|
const config = useConfig();
|
|
3439
3466
|
const invitations = useSpaceInvitations2(space?.key);
|
|
3440
3467
|
const onInvitationEvent = useCallback8((invitation) => {
|
|
3441
3468
|
const invitationCode = InvitationEncoder4.encode(invitation);
|
|
3442
|
-
if (invitation.state ===
|
|
3469
|
+
if (invitation.state === Invitation7.State.CONNECTING) {
|
|
3443
3470
|
log12.info(JSON.stringify({
|
|
3444
3471
|
invitationCode,
|
|
3445
3472
|
authCode: invitation.authCode
|
|
3446
3473
|
}), void 0, {
|
|
3447
|
-
F:
|
|
3474
|
+
F: __dxlog_file11,
|
|
3448
3475
|
L: 49,
|
|
3449
3476
|
S: void 0,
|
|
3450
3477
|
C: (f, a) => f(...a)
|
|
@@ -3458,8 +3485,9 @@ var SpaceManager = (props) => {
|
|
|
3458
3485
|
icon: UserPlus,
|
|
3459
3486
|
onClick: useCallback8(() => {
|
|
3460
3487
|
const invitation = space.share?.({
|
|
3461
|
-
type:
|
|
3462
|
-
authMethod:
|
|
3488
|
+
type: Invitation7.Type.INTERACTIVE,
|
|
3489
|
+
authMethod: Invitation7.AuthMethod.SHARED_SECRET,
|
|
3490
|
+
multiUse: false,
|
|
3463
3491
|
target
|
|
3464
3492
|
});
|
|
3465
3493
|
if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
|
|
@@ -3475,8 +3503,9 @@ var SpaceManager = (props) => {
|
|
|
3475
3503
|
icon: UsersThree,
|
|
3476
3504
|
onClick: useCallback8(() => {
|
|
3477
3505
|
const invitation = space.share?.({
|
|
3478
|
-
type:
|
|
3479
|
-
authMethod:
|
|
3506
|
+
type: Invitation7.Type.INTERACTIVE,
|
|
3507
|
+
authMethod: Invitation7.AuthMethod.NONE,
|
|
3508
|
+
multiUse: true,
|
|
3480
3509
|
target
|
|
3481
3510
|
});
|
|
3482
3511
|
if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
|
|
@@ -3496,7 +3525,7 @@ var SpaceManager = (props) => {
|
|
|
3496
3525
|
var headingFragment = "pis-3 pie-1 plb-1 mbe-1 font-medium";
|
|
3497
3526
|
var SpaceManagerImpl = (props) => {
|
|
3498
3527
|
const { active, space, createInvitationUrl, send, inviteActions: propsInviteActions, invitations, showInactiveInvitations, SpaceMemberList: SpaceMemberListComponent = SpaceMemberList, InvitationList: InvitationListComponent = InvitationList } = props;
|
|
3499
|
-
const { t } =
|
|
3528
|
+
const { t } = useTranslation23("os");
|
|
3500
3529
|
const inviteActions = propsInviteActions ?? {
|
|
3501
3530
|
noopInvite: {
|
|
3502
3531
|
label: t("create space invitation label"),
|
|
@@ -3506,20 +3535,20 @@ var SpaceManagerImpl = (props) => {
|
|
|
3506
3535
|
}
|
|
3507
3536
|
}
|
|
3508
3537
|
};
|
|
3509
|
-
const [activeAction, setInternalActiveAction] =
|
|
3538
|
+
const [activeAction, setInternalActiveAction] = useState12(localStorage.getItem(activeActionKey) ?? "inviteOne");
|
|
3510
3539
|
const setActiveAction = (nextAction) => {
|
|
3511
3540
|
setInternalActiveAction(nextAction);
|
|
3512
3541
|
localStorage.setItem(activeActionKey, nextAction);
|
|
3513
3542
|
};
|
|
3514
3543
|
const visibleInvitations = showInactiveInvitations ? invitations : invitations?.filter((invitation) => ![
|
|
3515
|
-
|
|
3544
|
+
Invitation7.State.CANCELLED
|
|
3516
3545
|
].includes(invitation.get().state));
|
|
3517
3546
|
return /* @__PURE__ */ React39.createElement(React39.Fragment, null, /* @__PURE__ */ React39.createElement(ScrollArea.Root, {
|
|
3518
3547
|
classNames: "grow shrink basis-28 -mli-2"
|
|
3519
3548
|
}, /* @__PURE__ */ React39.createElement(ScrollArea.Viewport, {
|
|
3520
3549
|
classNames: "is-full pie-2"
|
|
3521
3550
|
}, !!visibleInvitations?.length && /* @__PURE__ */ React39.createElement(React39.Fragment, null, /* @__PURE__ */ React39.createElement("h3", {
|
|
3522
|
-
className:
|
|
3551
|
+
className: mx24(headingFragment, descriptionText11)
|
|
3523
3552
|
}, t("invitation list heading")), /* @__PURE__ */ React39.createElement(InvitationListComponent, {
|
|
3524
3553
|
className: "mb-2",
|
|
3525
3554
|
send,
|
|
@@ -3527,7 +3556,7 @@ var SpaceManagerImpl = (props) => {
|
|
|
3527
3556
|
onClickRemove: (invitation) => invitation.cancel(),
|
|
3528
3557
|
createInvitationUrl
|
|
3529
3558
|
}), /* @__PURE__ */ React39.createElement("h3", {
|
|
3530
|
-
className:
|
|
3559
|
+
className: mx24(headingFragment, descriptionText11, "mbs-2")
|
|
3531
3560
|
}, t("space member list heading"))), /* @__PURE__ */ React39.createElement(SpaceMemberListComponent, {
|
|
3532
3561
|
spaceKey: space.key,
|
|
3533
3562
|
includeSelf: true
|
|
@@ -3543,9 +3572,9 @@ var SpaceManagerImpl = (props) => {
|
|
|
3543
3572
|
};
|
|
3544
3573
|
|
|
3545
3574
|
// packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx
|
|
3546
|
-
var
|
|
3575
|
+
var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/panels/SpacePanel/SpacePanel.tsx";
|
|
3547
3576
|
var SpacePanelHeading = ({ titleId, space, onDone }) => {
|
|
3548
|
-
const { t } =
|
|
3577
|
+
const { t } = useTranslation24("os");
|
|
3549
3578
|
const name = space.properties.name;
|
|
3550
3579
|
return /* @__PURE__ */ React40.createElement(Heading, {
|
|
3551
3580
|
titleId,
|
|
@@ -3566,7 +3595,7 @@ var SpacePanelHeading = ({ titleId, space, onDone }) => {
|
|
|
3566
3595
|
};
|
|
3567
3596
|
var SpacePanelImpl = (props) => {
|
|
3568
3597
|
const { titleId, activeView, space, target, SpaceManager: SpaceManagerComponent = SpaceManager, InvitationManager: InvitationManagerComponent = InvitationManager, ...rest } = props;
|
|
3569
|
-
return /* @__PURE__ */ React40.createElement(
|
|
3598
|
+
return /* @__PURE__ */ React40.createElement(DensityProvider3, {
|
|
3570
3599
|
density: "fine"
|
|
3571
3600
|
}, /* @__PURE__ */ React40.createElement(SpacePanelHeading, {
|
|
3572
3601
|
...rest,
|
|
@@ -3600,7 +3629,7 @@ var SpacePanelWithInvitationImpl = ({ invitation, ...props }) => {
|
|
|
3600
3629
|
});
|
|
3601
3630
|
};
|
|
3602
3631
|
var SpacePanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => code, ...props }) => {
|
|
3603
|
-
const titleId =
|
|
3632
|
+
const titleId = useId9("spacePanel__heading", propsTitleId);
|
|
3604
3633
|
const [spaceState, spaceSend, spaceService] = useSpaceMachine({
|
|
3605
3634
|
context: {
|
|
3606
3635
|
space: props.space
|
|
@@ -3609,7 +3638,7 @@ var SpacePanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => code,
|
|
|
3609
3638
|
useEffect6(() => {
|
|
3610
3639
|
const subscription = spaceService.subscribe((state) => {
|
|
3611
3640
|
log13("[state]", state, {
|
|
3612
|
-
F:
|
|
3641
|
+
F: __dxlog_file12,
|
|
3613
3642
|
L: 94,
|
|
3614
3643
|
S: void 0,
|
|
3615
3644
|
C: (f, a) => f(...a)
|
|
@@ -3649,9 +3678,9 @@ var SpacePanel = ({ titleId: propsTitleId, createInvitationUrl = (code) => code,
|
|
|
3649
3678
|
|
|
3650
3679
|
// packages/sdk/shell/src/panels/StatusPanel/StatusPanel.tsx
|
|
3651
3680
|
import React41 from "react";
|
|
3652
|
-
import { Status, useTranslation as
|
|
3681
|
+
import { Status, useTranslation as useTranslation25 } from "@dxos/react-ui";
|
|
3653
3682
|
var StatusPanel = ({ titleId }) => {
|
|
3654
|
-
const { t } =
|
|
3683
|
+
const { t } = useTranslation25("os");
|
|
3655
3684
|
return /* @__PURE__ */ React41.createElement("div", {
|
|
3656
3685
|
className: "grid place-items-center p-2 gap-2"
|
|
3657
3686
|
}, /* @__PURE__ */ React41.createElement("p", {
|
|
@@ -3664,7 +3693,7 @@ var StatusPanel = ({ titleId }) => {
|
|
|
3664
3693
|
|
|
3665
3694
|
// packages/sdk/shell/src/composites/IdentityDialog/IdentityDialog.tsx
|
|
3666
3695
|
var IdentityDialog = (props) => {
|
|
3667
|
-
const titleId =
|
|
3696
|
+
const titleId = useId10("identityDialog__title", props.title);
|
|
3668
3697
|
return /* @__PURE__ */ React42.createElement(Dialog.Root, {
|
|
3669
3698
|
defaultOpen: true,
|
|
3670
3699
|
onOpenChange: (open) => open || props.onDone?.()
|
|
@@ -3682,9 +3711,9 @@ var IdentityDialog = (props) => {
|
|
|
3682
3711
|
|
|
3683
3712
|
// packages/sdk/shell/src/composites/JoinDialog/JoinDialog.tsx
|
|
3684
3713
|
import React43 from "react";
|
|
3685
|
-
import { AlertDialog, useId as
|
|
3714
|
+
import { AlertDialog, useId as useId11, useVisualViewport } from "@dxos/react-ui";
|
|
3686
3715
|
var JoinDialog = (joinPanelProps) => {
|
|
3687
|
-
const titleId =
|
|
3716
|
+
const titleId = useId11("joinDialog__title");
|
|
3688
3717
|
const { height } = useVisualViewport();
|
|
3689
3718
|
return /* @__PURE__ */ React43.createElement(AlertDialog.Root, {
|
|
3690
3719
|
defaultOpen: true,
|
|
@@ -3716,21 +3745,21 @@ import { createRoot } from "react-dom/client";
|
|
|
3716
3745
|
import { DEFAULT_CLIENT_CHANNEL, DEFAULT_SHELL_CHANNEL } from "@dxos/client-protocol";
|
|
3717
3746
|
import { ShellRuntimeImpl } from "@dxos/client-services";
|
|
3718
3747
|
import { Client, ClientContext, ClientServicesProxy, Config, SystemStatus } from "@dxos/react-client";
|
|
3719
|
-
import { ThemeProvider, Tooltip as
|
|
3748
|
+
import { ThemeProvider, Tooltip as Tooltip7 } from "@dxos/react-ui";
|
|
3720
3749
|
import { defaultTx } from "@dxos/react-ui-theme";
|
|
3721
3750
|
import { createIFramePort } from "@dxos/rpc-tunnel";
|
|
3722
3751
|
|
|
3723
3752
|
// packages/sdk/shell/src/composites/Shell/Shell.tsx
|
|
3724
|
-
import React46, { useEffect as useEffect7, useState as
|
|
3753
|
+
import React46, { useEffect as useEffect7, useState as useState13 } from "react";
|
|
3725
3754
|
import { log as log14 } from "@dxos/log";
|
|
3726
3755
|
import { ShellDisplay, ShellLayout, useClient as useClient6 } from "@dxos/react-client";
|
|
3727
3756
|
import { useSpace as useSpace2 } from "@dxos/react-client/echo";
|
|
3728
3757
|
|
|
3729
3758
|
// packages/sdk/shell/src/composites/SpaceDialog/SpaceDialog.tsx
|
|
3730
3759
|
import React44 from "react";
|
|
3731
|
-
import { Dialog as Dialog2, useId as
|
|
3760
|
+
import { Dialog as Dialog2, useId as useId12 } from "@dxos/react-ui";
|
|
3732
3761
|
var SpaceDialog = (spacePanelProps) => {
|
|
3733
|
-
const titleId =
|
|
3762
|
+
const titleId = useId12("spaceDialog__title");
|
|
3734
3763
|
return /* @__PURE__ */ React44.createElement(Dialog2.Root, {
|
|
3735
3764
|
defaultOpen: true,
|
|
3736
3765
|
onOpenChange: (open) => open || spacePanelProps.onDone?.()
|
|
@@ -3747,9 +3776,9 @@ var SpaceDialog = (spacePanelProps) => {
|
|
|
3747
3776
|
|
|
3748
3777
|
// packages/sdk/shell/src/composites/StatusDialog/StatusDialog.tsx
|
|
3749
3778
|
import React45 from "react";
|
|
3750
|
-
import { AlertDialog as AlertDialog2, useId as
|
|
3779
|
+
import { AlertDialog as AlertDialog2, useId as useId13 } from "@dxos/react-ui";
|
|
3751
3780
|
var StatusDialog = () => {
|
|
3752
|
-
const titleId =
|
|
3781
|
+
const titleId = useId13("statusDialog__title");
|
|
3753
3782
|
return /* @__PURE__ */ React45.createElement(AlertDialog2.Root, {
|
|
3754
3783
|
open: true
|
|
3755
3784
|
}, /* @__PURE__ */ React45.createElement(AlertDialog2.Portal, null, /* @__PURE__ */ React45.createElement(AlertDialog2.Overlay, null, /* @__PURE__ */ React45.createElement(AlertDialog2.Content, {
|
|
@@ -3760,9 +3789,9 @@ var StatusDialog = () => {
|
|
|
3760
3789
|
};
|
|
3761
3790
|
|
|
3762
3791
|
// packages/sdk/shell/src/composites/Shell/Shell.tsx
|
|
3763
|
-
var
|
|
3792
|
+
var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/sdk/shell/src/composites/Shell/Shell.tsx";
|
|
3764
3793
|
var Shell = ({ runtime, origin }) => {
|
|
3765
|
-
const [{ layout, invitationCode, spaceKey, target }, setLayout] =
|
|
3794
|
+
const [{ layout, invitationCode, spaceKey, target }, setLayout] = useState13({
|
|
3766
3795
|
layout: runtime.layout,
|
|
3767
3796
|
invitationCode: runtime.invitationCode,
|
|
3768
3797
|
spaceKey: runtime.spaceKey,
|
|
@@ -3778,7 +3807,7 @@ var Shell = ({ runtime, origin }) => {
|
|
|
3778
3807
|
useEffect7(() => {
|
|
3779
3808
|
if (layout === ShellLayout.SPACE && !space) {
|
|
3780
3809
|
log14.warn("No space found for shell space invitations.", void 0, {
|
|
3781
|
-
F:
|
|
3810
|
+
F: __dxlog_file13,
|
|
3782
3811
|
L: 33,
|
|
3783
3812
|
S: void 0,
|
|
3784
3813
|
C: (f, a) => f(...a)
|
|
@@ -3851,7 +3880,7 @@ var Shell = ({ runtime, origin }) => {
|
|
|
3851
3880
|
layout: ShellLayout.DEFAULT
|
|
3852
3881
|
});
|
|
3853
3882
|
},
|
|
3854
|
-
initialDisposition: layout === ShellLayout.SHARE_IDENTITY ? "manage-device-invitation" :
|
|
3883
|
+
initialDisposition: layout === ShellLayout.SHARE_IDENTITY ? "manage-device-invitation" : "default"
|
|
3855
3884
|
});
|
|
3856
3885
|
case ShellLayout.SPACE:
|
|
3857
3886
|
return space ? /* @__PURE__ */ React46.createElement(SpaceDialog, {
|
|
@@ -3943,8 +3972,6 @@ var os = {
|
|
|
3943
3972
|
"connected status label": "Enter confirmation PIN",
|
|
3944
3973
|
"authenticating status label": "Enter confirmation PIN",
|
|
3945
3974
|
"success status label": "Success",
|
|
3946
|
-
"connect label": "Connect",
|
|
3947
|
-
"reconnect label": "Reconnect",
|
|
3948
3975
|
"cancel label": "Cancel",
|
|
3949
3976
|
"done label": "Done",
|
|
3950
3977
|
"reset label": "Start over",
|
|
@@ -4026,7 +4053,19 @@ var os = {
|
|
|
4026
4053
|
"purple label": "Purple",
|
|
4027
4054
|
"fuchsia label": "Fuchsia",
|
|
4028
4055
|
"pink label": "Pink",
|
|
4029
|
-
"rose label": "Rose"
|
|
4056
|
+
"rose label": "Rose",
|
|
4057
|
+
"current device tag label": "This device",
|
|
4058
|
+
"device name placeholder": "{{platform}} on {{os}}",
|
|
4059
|
+
"more options label": "More options",
|
|
4060
|
+
"disconnect label": "Currently online. Click to go offline.",
|
|
4061
|
+
"connect label": "Currently offline. Click to go online.",
|
|
4062
|
+
"edit device label": "Edit device name & avatar",
|
|
4063
|
+
"agent heading": "Agent",
|
|
4064
|
+
"agent message title": "About creating an agent",
|
|
4065
|
+
"agent message body": "Creating an agent helps keep your devices and peers in-sync. An agent is like any other device, but since it\u2019s always online your changes will sync even when all your physical devices are\xA0asleep.",
|
|
4066
|
+
"create agent label": "Start an agent",
|
|
4067
|
+
"destroy agent label": "Shut down agent",
|
|
4068
|
+
"agent device label": "Your agent"
|
|
4030
4069
|
};
|
|
4031
4070
|
|
|
4032
4071
|
// packages/sdk/shell/src/translations/index.ts
|
|
@@ -4060,17 +4099,17 @@ var runShell = async (config = new Config()) => {
|
|
|
4060
4099
|
client,
|
|
4061
4100
|
status: SystemStatus.ACTIVE
|
|
4062
4101
|
}
|
|
4063
|
-
}, /* @__PURE__ */ React47.createElement(ClipboardProvider, null, /* @__PURE__ */ React47.createElement(
|
|
4102
|
+
}, /* @__PURE__ */ React47.createElement(ClipboardProvider, null, /* @__PURE__ */ React47.createElement(Tooltip7.Provider, null, /* @__PURE__ */ React47.createElement(Shell, {
|
|
4064
4103
|
runtime,
|
|
4065
4104
|
origin: location.origin
|
|
4066
4105
|
})))))));
|
|
4067
4106
|
};
|
|
4068
4107
|
|
|
4069
4108
|
// packages/sdk/shell/src/composites/Shell/ShellContext.tsx
|
|
4070
|
-
import React48, { createContext as createContext2, useCallback as useCallback9, useContext as useContext2, useEffect as useEffect8, useMemo as useMemo6, useState as
|
|
4109
|
+
import React48, { createContext as createContext2, useCallback as useCallback9, useContext as useContext2, useEffect as useEffect8, useMemo as useMemo6, useState as useState14 } from "react";
|
|
4071
4110
|
import { ShellDisplay as ShellDisplay2, ShellLayout as ShellLayout3, useClient as useClient7 } from "@dxos/react-client";
|
|
4072
4111
|
import { useIdentity as useIdentity3 } from "@dxos/react-client/halo";
|
|
4073
|
-
import { mx as
|
|
4112
|
+
import { mx as mx25 } from "@dxos/react-ui-theme";
|
|
4074
4113
|
|
|
4075
4114
|
// packages/sdk/shell/src/composites/Shell/memory-shell-runtime.ts
|
|
4076
4115
|
import { Event } from "@dxos/async";
|
|
@@ -4129,7 +4168,7 @@ var useShell = () => {
|
|
|
4129
4168
|
var ShellProvider = ({ space, deviceInvitationCode, spaceInvitationCode, onJoinedSpace, children }) => {
|
|
4130
4169
|
const client = useClient7();
|
|
4131
4170
|
const identity = useIdentity3();
|
|
4132
|
-
const [display, setDisplay] =
|
|
4171
|
+
const [display, setDisplay] = useState14(!identity || spaceInvitationCode || deviceInvitationCode ? ShellDisplay2.FULLSCREEN : ShellDisplay2.NONE);
|
|
4133
4172
|
const shellRuntime = useMemo6(() => {
|
|
4134
4173
|
if (client.config.get("runtime.app.env.DX_VAULT") !== "false") {
|
|
4135
4174
|
return;
|
|
@@ -4200,7 +4239,7 @@ var ShellProvider = ({ space, deviceInvitationCode, spaceInvitationCode, onJoine
|
|
|
4200
4239
|
shellRuntime
|
|
4201
4240
|
]);
|
|
4202
4241
|
return /* @__PURE__ */ React48.createElement(React48.Fragment, null, shellRuntime && /* @__PURE__ */ React48.createElement("div", {
|
|
4203
|
-
className:
|
|
4242
|
+
className: mx25(display === ShellDisplay2.NONE ? "hidden" : "")
|
|
4204
4243
|
}, /* @__PURE__ */ React48.createElement(Shell, {
|
|
4205
4244
|
runtime: shellRuntime,
|
|
4206
4245
|
origin: window.location.origin
|
|
@@ -4214,6 +4253,7 @@ var ShellProvider = ({ space, deviceInvitationCode, spaceInvitationCode, onJoine
|
|
|
4214
4253
|
export {
|
|
4215
4254
|
Action,
|
|
4216
4255
|
Actions,
|
|
4256
|
+
AgentConfig,
|
|
4217
4257
|
AuthCode,
|
|
4218
4258
|
BifurcatedAction,
|
|
4219
4259
|
Centered,
|
|
@@ -4227,9 +4267,11 @@ export {
|
|
|
4227
4267
|
CopyButtonIconOnly,
|
|
4228
4268
|
DeviceList,
|
|
4229
4269
|
Emoji,
|
|
4230
|
-
|
|
4270
|
+
EmojiPickerBlock,
|
|
4271
|
+
EmojiPickerToolbarButton,
|
|
4231
4272
|
Heading,
|
|
4232
|
-
|
|
4273
|
+
HuePickerBlock,
|
|
4274
|
+
HuePickerToolbarButton,
|
|
4233
4275
|
IdentityDialog,
|
|
4234
4276
|
IdentityListItem,
|
|
4235
4277
|
IdentityPanel,
|