@dxos/plugin-status-bar 0.8.1-main.ba2dec9 → 0.8.1-staging.5be625a
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/lib/browser/index.mjs +121 -96
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +149 -123
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +121 -96
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/FeedbackForm.d.ts +3 -2
- package/dist/types/src/components/FeedbackForm.d.ts.map +1 -1
- package/dist/types/src/components/StatusBarPanel.d.ts.map +1 -1
- package/dist/types/src/components/VersionNumber.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -6
- package/dist/types/src/meta.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/components/FeedbackForm.tsx +39 -29
- package/src/components/StatusBarPanel.tsx +14 -3
- package/src/components/VersionNumber.tsx +2 -1
- package/src/components/index.ts +1 -0
- package/src/meta.ts +2 -2
- package/src/translations.ts +1 -1
|
@@ -1,60 +1,10 @@
|
|
|
1
|
-
// packages/plugins/plugin-status-bar/src/components/StatusBar.tsx
|
|
2
|
-
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
-
import React, { forwardRef } from "react";
|
|
4
|
-
import { mx } from "@dxos/react-ui-theme";
|
|
5
|
-
var StatusBarText = /* @__PURE__ */ forwardRef(({ classNames, children }, forwardedRef) => /* @__PURE__ */ React.createElement("span", {
|
|
6
|
-
className: mx(classNames),
|
|
7
|
-
ref: forwardedRef
|
|
8
|
-
}, children));
|
|
9
|
-
var StatusBarButton = /* @__PURE__ */ forwardRef(({ classNames, children, asChild, ...props }, forwardedRef) => {
|
|
10
|
-
const classes = mx("flex items-center justify-center gap-2 p-1 px-2 rounded-sm", "select-none cursor-pointer dx-focus-ring text-description text-xs", "hover:bg-neutral-75 active:bg-neutral-150 dark:hover:bg-neutral-750 dark:active:bg-neutral-700", classNames);
|
|
11
|
-
return asChild ? /* @__PURE__ */ React.createElement(Slot, {
|
|
12
|
-
role: "button",
|
|
13
|
-
ref: forwardedRef,
|
|
14
|
-
className: classes,
|
|
15
|
-
...props
|
|
16
|
-
}, children) : /* @__PURE__ */ React.createElement("button", {
|
|
17
|
-
className: classes,
|
|
18
|
-
ref: forwardedRef,
|
|
19
|
-
...props
|
|
20
|
-
}, children);
|
|
21
|
-
});
|
|
22
|
-
var StatusBarItem = /* @__PURE__ */ forwardRef(({ classNames, children, ...props }, forwardedRef) => /* @__PURE__ */ React.createElement("div", {
|
|
23
|
-
role: "menuitem",
|
|
24
|
-
className: mx("flex items-center justify-center gap-2 p-1 px-2 rounded-sm select-none", classNames),
|
|
25
|
-
ref: forwardedRef,
|
|
26
|
-
...props
|
|
27
|
-
}, children));
|
|
28
|
-
var StartContent = /* @__PURE__ */ forwardRef(({ classNames, children }, forwardedRef) => /* @__PURE__ */ React.createElement("div", {
|
|
29
|
-
role: "none",
|
|
30
|
-
className: mx("flex-grow flex items-center space-x-2", classNames),
|
|
31
|
-
ref: forwardedRef
|
|
32
|
-
}, children));
|
|
33
|
-
var EndContent = /* @__PURE__ */ forwardRef(({ classNames, children }, forwardedRef) => /* @__PURE__ */ React.createElement("div", {
|
|
34
|
-
role: "none",
|
|
35
|
-
className: mx("flex-grow flex items-center justify-end", classNames),
|
|
36
|
-
ref: forwardedRef
|
|
37
|
-
}, children));
|
|
38
|
-
var StatusBar = {
|
|
39
|
-
Text: StatusBarText,
|
|
40
|
-
Item: StatusBarItem,
|
|
41
|
-
Button: StatusBarButton,
|
|
42
|
-
StartContent,
|
|
43
|
-
EndContent
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
// packages/plugins/plugin-status-bar/src/components/StatusBarPanel.tsx
|
|
47
|
-
import React4, { useState } from "react";
|
|
48
|
-
import { Surface } from "@dxos/app-framework";
|
|
49
|
-
import { Icon as Icon2, Popover as Popover3, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
50
|
-
|
|
51
1
|
// packages/plugins/plugin-status-bar/src/components/FeedbackForm.tsx
|
|
52
2
|
import { PaperPlaneTilt, X } from "@phosphor-icons/react";
|
|
53
|
-
import
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
3
|
+
import React, { useRef } from "react";
|
|
4
|
+
import { getSnapshot } from "@dxos/echo-schema";
|
|
5
|
+
import { UserFeedback } from "@dxos/plugin-observability/types";
|
|
56
6
|
import { Button, Input, Popover, useTranslation } from "@dxos/react-ui";
|
|
57
|
-
import {
|
|
7
|
+
import { FormProvider, useFormContext, useInputProps } from "@dxos/react-ui-form";
|
|
58
8
|
import { getSize } from "@dxos/react-ui-theme";
|
|
59
9
|
|
|
60
10
|
// packages/plugins/plugin-status-bar/src/meta.ts
|
|
@@ -82,7 +32,7 @@ var translations = {
|
|
|
82
32
|
"feedback text area placeholder": "Please describe your issue or suggestion.",
|
|
83
33
|
"send feedback label": "Send Feedback",
|
|
84
34
|
"warning title": "WARNING",
|
|
85
|
-
"technology preview message": "Composer is
|
|
35
|
+
"technology preview message": "Composer is currently in beta.",
|
|
86
36
|
"learn more label": "Learn more",
|
|
87
37
|
"released message": "This version released {{released}}.",
|
|
88
38
|
"see release label": "See release on GitHub",
|
|
@@ -96,85 +46,151 @@ var translations_default = [
|
|
|
96
46
|
];
|
|
97
47
|
|
|
98
48
|
// packages/plugins/plugin-status-bar/src/components/FeedbackForm.tsx
|
|
99
|
-
var
|
|
49
|
+
var defaultValues = {
|
|
100
50
|
name: "",
|
|
101
51
|
email: "",
|
|
102
52
|
message: ""
|
|
103
53
|
};
|
|
104
|
-
var
|
|
54
|
+
var FormContent = () => {
|
|
105
55
|
const { t } = useTranslation(STATUS_BAR_PLUGIN);
|
|
106
56
|
const translation = mkTranslation(t);
|
|
107
|
-
const {
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
onClose();
|
|
111
|
-
}, [
|
|
112
|
-
dispatch,
|
|
113
|
-
onClose
|
|
57
|
+
const { handleSave, canSave } = useFormContext();
|
|
58
|
+
const nameProps = useInputProps([
|
|
59
|
+
"name"
|
|
114
60
|
]);
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
61
|
+
const emailProps = useInputProps([
|
|
62
|
+
"email"
|
|
63
|
+
]);
|
|
64
|
+
const messageProps = useInputProps([
|
|
65
|
+
"message"
|
|
66
|
+
]);
|
|
67
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
121
68
|
role: "form",
|
|
122
69
|
className: "p-3 flex flex-col gap-2"
|
|
123
|
-
}, /* @__PURE__ */
|
|
70
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
124
71
|
role: "none",
|
|
125
72
|
className: "space-b-1"
|
|
126
|
-
}, /* @__PURE__ */
|
|
127
|
-
validationValence: getStatus(
|
|
128
|
-
}, /* @__PURE__ */
|
|
73
|
+
}, /* @__PURE__ */ React.createElement(Input.Root, {
|
|
74
|
+
validationValence: nameProps.getStatus().status
|
|
75
|
+
}, /* @__PURE__ */ React.createElement(Input.Label, null, translation("name label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
129
76
|
classNames: "text-sm",
|
|
130
77
|
placeholder: translation("name placeholder"),
|
|
131
78
|
autoFocus: true,
|
|
132
|
-
|
|
133
|
-
|
|
79
|
+
value: nameProps.getValue() ?? "",
|
|
80
|
+
onChange: (e) => nameProps.onValueChange("string", e.target.value),
|
|
81
|
+
onBlur: nameProps.onBlur
|
|
82
|
+
}), /* @__PURE__ */ React.createElement(Input.DescriptionAndValidation, null, /* @__PURE__ */ React.createElement(Input.Validation, null, nameProps.getStatus().error)))), /* @__PURE__ */ React.createElement("div", {
|
|
134
83
|
role: "none",
|
|
135
84
|
className: "space-b-1"
|
|
136
|
-
}, /* @__PURE__ */
|
|
137
|
-
validationValence: getStatus(
|
|
138
|
-
}, /* @__PURE__ */
|
|
85
|
+
}, /* @__PURE__ */ React.createElement(Input.Root, {
|
|
86
|
+
validationValence: emailProps.getStatus().status
|
|
87
|
+
}, /* @__PURE__ */ React.createElement(Input.Label, null, translation("email input label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
139
88
|
classNames: "text-sm",
|
|
140
89
|
placeholder: translation("email input placeholder"),
|
|
141
|
-
|
|
142
|
-
|
|
90
|
+
value: emailProps.getValue() ?? "",
|
|
91
|
+
onChange: (e) => emailProps.onValueChange("string", e.target.value),
|
|
92
|
+
onBlur: emailProps.onBlur
|
|
93
|
+
}), /* @__PURE__ */ React.createElement(Input.DescriptionAndValidation, null, /* @__PURE__ */ React.createElement(Input.Validation, null, emailProps.getStatus().error)))), /* @__PURE__ */ React.createElement("div", {
|
|
143
94
|
role: "none",
|
|
144
95
|
className: "space-b-1"
|
|
145
|
-
}, /* @__PURE__ */
|
|
146
|
-
validationValence: getStatus(
|
|
147
|
-
}, /* @__PURE__ */
|
|
96
|
+
}, /* @__PURE__ */ React.createElement(Input.Root, {
|
|
97
|
+
validationValence: messageProps.getStatus().status
|
|
98
|
+
}, /* @__PURE__ */ React.createElement(Input.Label, null, translation("feedback text area label")), /* @__PURE__ */ React.createElement(Input.TextArea, {
|
|
148
99
|
classNames: "text-sm",
|
|
149
100
|
rows: 5,
|
|
150
101
|
cols: 30,
|
|
151
102
|
placeholder: translation("feedback text area placeholder"),
|
|
152
|
-
|
|
153
|
-
|
|
103
|
+
value: messageProps.getValue() ?? "",
|
|
104
|
+
onChange: (e) => messageProps.onValueChange("string", e.target.value),
|
|
105
|
+
onBlur: messageProps.onBlur
|
|
106
|
+
}), /* @__PURE__ */ React.createElement(Input.DescriptionAndValidation, null, /* @__PURE__ */ React.createElement(Input.Validation, null, messageProps.getStatus().error)))), /* @__PURE__ */ React.createElement("div", {
|
|
154
107
|
role: "none",
|
|
155
108
|
className: "space-b-2"
|
|
156
|
-
}, /* @__PURE__ */
|
|
109
|
+
}, /* @__PURE__ */ React.createElement(Button, {
|
|
157
110
|
type: "submit",
|
|
158
111
|
variant: "primary",
|
|
159
112
|
classNames: "is-full flex gap-2",
|
|
160
113
|
disabled: !canSave,
|
|
161
114
|
onClick: handleSave
|
|
162
|
-
}, /* @__PURE__ */
|
|
115
|
+
}, /* @__PURE__ */ React.createElement("span", null, translation("send feedback label")), /* @__PURE__ */ React.createElement("div", {
|
|
163
116
|
className: "grow"
|
|
164
|
-
}), /* @__PURE__ */
|
|
117
|
+
}), /* @__PURE__ */ React.createElement(PaperPlaneTilt, {
|
|
165
118
|
className: getSize(5)
|
|
166
|
-
})), /* @__PURE__ */
|
|
119
|
+
})), /* @__PURE__ */ React.createElement(Popover.Close, {
|
|
167
120
|
asChild: true
|
|
168
|
-
}, /* @__PURE__ */
|
|
121
|
+
}, /* @__PURE__ */ React.createElement(Button, {
|
|
169
122
|
classNames: "is-full flex gap-2"
|
|
170
|
-
}, /* @__PURE__ */
|
|
123
|
+
}, /* @__PURE__ */ React.createElement("span", null, t("cancel label", {
|
|
171
124
|
ns: "os"
|
|
172
|
-
})), /* @__PURE__ */
|
|
125
|
+
})), /* @__PURE__ */ React.createElement("div", {
|
|
173
126
|
className: "grow"
|
|
174
|
-
}), /* @__PURE__ */
|
|
127
|
+
}), /* @__PURE__ */ React.createElement(X, {
|
|
175
128
|
className: getSize(5)
|
|
176
129
|
})))));
|
|
177
130
|
};
|
|
131
|
+
var FeedbackForm = ({ onSave }) => {
|
|
132
|
+
const formRef = useRef(null);
|
|
133
|
+
const initialValues = getSnapshot(defaultValues);
|
|
134
|
+
return /* @__PURE__ */ React.createElement(FormProvider, {
|
|
135
|
+
formRef,
|
|
136
|
+
schema: UserFeedback,
|
|
137
|
+
initialValues,
|
|
138
|
+
onSave
|
|
139
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
140
|
+
ref: formRef
|
|
141
|
+
}, /* @__PURE__ */ React.createElement(FormContent, null)));
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// packages/plugins/plugin-status-bar/src/components/StatusBar.tsx
|
|
145
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
146
|
+
import React2, { forwardRef } from "react";
|
|
147
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
148
|
+
var StatusBarText = /* @__PURE__ */ forwardRef(({ classNames, children }, forwardedRef) => /* @__PURE__ */ React2.createElement("span", {
|
|
149
|
+
className: mx(classNames),
|
|
150
|
+
ref: forwardedRef
|
|
151
|
+
}, children));
|
|
152
|
+
var StatusBarButton = /* @__PURE__ */ forwardRef(({ classNames, children, asChild, ...props }, forwardedRef) => {
|
|
153
|
+
const classes = mx("flex items-center justify-center gap-2 p-1 px-2 rounded-sm", "select-none cursor-pointer dx-focus-ring text-description text-xs", "hover:bg-neutral-75 active:bg-neutral-150 dark:hover:bg-neutral-750 dark:active:bg-neutral-700", classNames);
|
|
154
|
+
return asChild ? /* @__PURE__ */ React2.createElement(Slot, {
|
|
155
|
+
role: "button",
|
|
156
|
+
ref: forwardedRef,
|
|
157
|
+
className: classes,
|
|
158
|
+
...props
|
|
159
|
+
}, children) : /* @__PURE__ */ React2.createElement("button", {
|
|
160
|
+
className: classes,
|
|
161
|
+
ref: forwardedRef,
|
|
162
|
+
...props
|
|
163
|
+
}, children);
|
|
164
|
+
});
|
|
165
|
+
var StatusBarItem = /* @__PURE__ */ forwardRef(({ classNames, children, ...props }, forwardedRef) => /* @__PURE__ */ React2.createElement("div", {
|
|
166
|
+
role: "menuitem",
|
|
167
|
+
className: mx("flex items-center justify-center gap-2 p-1 px-2 rounded-sm select-none", classNames),
|
|
168
|
+
ref: forwardedRef,
|
|
169
|
+
...props
|
|
170
|
+
}, children));
|
|
171
|
+
var StartContent = /* @__PURE__ */ forwardRef(({ classNames, children }, forwardedRef) => /* @__PURE__ */ React2.createElement("div", {
|
|
172
|
+
role: "none",
|
|
173
|
+
className: mx("flex-grow flex items-center space-x-2", classNames),
|
|
174
|
+
ref: forwardedRef
|
|
175
|
+
}, children));
|
|
176
|
+
var EndContent = /* @__PURE__ */ forwardRef(({ classNames, children }, forwardedRef) => /* @__PURE__ */ React2.createElement("div", {
|
|
177
|
+
role: "none",
|
|
178
|
+
className: mx("flex-grow flex items-center justify-end", classNames),
|
|
179
|
+
ref: forwardedRef
|
|
180
|
+
}, children));
|
|
181
|
+
var StatusBar = {
|
|
182
|
+
Text: StatusBarText,
|
|
183
|
+
Item: StatusBarItem,
|
|
184
|
+
Button: StatusBarButton,
|
|
185
|
+
StartContent,
|
|
186
|
+
EndContent
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
// packages/plugins/plugin-status-bar/src/components/StatusBarPanel.tsx
|
|
190
|
+
import React4, { useCallback, useState } from "react";
|
|
191
|
+
import { createIntent, Surface, useIntentDispatcher } from "@dxos/app-framework";
|
|
192
|
+
import { ObservabilityAction } from "@dxos/plugin-observability/types";
|
|
193
|
+
import { Icon as Icon2, Popover as Popover3, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
178
194
|
|
|
179
195
|
// packages/plugins/plugin-status-bar/src/components/VersionNumber.tsx
|
|
180
196
|
import { formatDistance } from "date-fns/formatDistance";
|
|
@@ -188,13 +204,14 @@ var VersionNumber = () => {
|
|
|
188
204
|
const { t } = useTranslation2(STATUS_BAR_PLUGIN);
|
|
189
205
|
const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};
|
|
190
206
|
const [_, v] = version?.match(VERSION_REGEX) ?? [];
|
|
207
|
+
const isLabs = config.values.runtime?.app?.env?.DX_LABS;
|
|
191
208
|
const releaseUrl = config.values.runtime?.app?.env?.DX_ENVIRONMENT === "production" ? `${repo}/releases/tag/v${version}` : `${repo}/commit/${commitHash}`;
|
|
192
209
|
const previewUrl = "https://docs.dxos.org/composer#technology-preview";
|
|
193
210
|
return /* @__PURE__ */ React3.createElement(Popover2.Root, null, /* @__PURE__ */ React3.createElement(Popover2.Trigger, {
|
|
194
211
|
asChild: true
|
|
195
212
|
}, /* @__PURE__ */ React3.createElement(StatusBar.Button, {
|
|
196
213
|
classNames: "text-xs"
|
|
197
|
-
},
|
|
214
|
+
}, isLabs ? version : v)), /* @__PURE__ */ React3.createElement(Popover2.Portal, null, /* @__PURE__ */ React3.createElement(Popover2.Content, {
|
|
198
215
|
side: "top",
|
|
199
216
|
role: "message",
|
|
200
217
|
classNames: "z-[12] bg-warning-500 max-is-[min(calc(100vw-16px),40ch)]"
|
|
@@ -246,6 +263,13 @@ var VersionNumber = () => {
|
|
|
246
263
|
var StatusBarActions = () => {
|
|
247
264
|
const { t } = useTranslation3(STATUS_BAR_PLUGIN);
|
|
248
265
|
const [open, setOpen] = useState(false);
|
|
266
|
+
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
267
|
+
const handleSave = useCallback((values) => {
|
|
268
|
+
void dispatch(createIntent(ObservabilityAction.CaptureUserFeedback, values));
|
|
269
|
+
setOpen(false);
|
|
270
|
+
}, [
|
|
271
|
+
dispatch
|
|
272
|
+
]);
|
|
249
273
|
return /* @__PURE__ */ React4.createElement(Popover3.Root, {
|
|
250
274
|
open,
|
|
251
275
|
onOpenChange: setOpen
|
|
@@ -272,7 +296,7 @@ var StatusBarActions = () => {
|
|
|
272
296
|
}, t("discord label")))), /* @__PURE__ */ React4.createElement(VersionNumber, null), /* @__PURE__ */ React4.createElement(Popover3.Portal, null, /* @__PURE__ */ React4.createElement(Popover3.Content, {
|
|
273
297
|
classNames: "shadow-lg"
|
|
274
298
|
}, /* @__PURE__ */ React4.createElement(FeedbackForm, {
|
|
275
|
-
|
|
299
|
+
onSave: handleSave
|
|
276
300
|
}), /* @__PURE__ */ React4.createElement(Popover3.Arrow, null))));
|
|
277
301
|
};
|
|
278
302
|
var StatusBarPanel = () => {
|
|
@@ -323,6 +347,7 @@ var StatusBarPlugin = () => definePlugin(meta, [
|
|
|
323
347
|
})
|
|
324
348
|
]);
|
|
325
349
|
export {
|
|
350
|
+
FeedbackForm,
|
|
326
351
|
STATUS_BAR_PLUGIN,
|
|
327
352
|
StatusBar,
|
|
328
353
|
StatusBarActions,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Slot } from '@radix-ui/react-slot';\nimport React, { type ComponentPropsWithRef, forwardRef, type PropsWithChildren, type ReactNode } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\ntype StatusBarTextProps = ThemedClassName<{ children: ReactNode }>;\n\nconst StatusBarText = forwardRef<HTMLSpanElement, StatusBarTextProps>(({ classNames, children }, forwardedRef) => (\n <span className={mx(classNames)} ref={forwardedRef}>\n {children}\n </span>\n));\n\ntype StatusBarButtonProps = ThemedClassName<ComponentPropsWithRef<'button'> & { asChild?: boolean }>;\n\nconst StatusBarButton = forwardRef<HTMLButtonElement, StatusBarButtonProps>(\n ({ classNames, children, asChild, ...props }, forwardedRef) => {\n const classes = mx(\n 'flex items-center justify-center gap-2 p-1 px-2 rounded-sm',\n 'select-none cursor-pointer dx-focus-ring text-description text-xs',\n 'hover:bg-neutral-75 active:bg-neutral-150 dark:hover:bg-neutral-750 dark:active:bg-neutral-700',\n classNames,\n );\n\n return asChild ? (\n <Slot role='button' ref={forwardedRef} className={classes} {...props}>\n {children}\n </Slot>\n ) : (\n <button className={classes} ref={forwardedRef} {...props}>\n {children}\n </button>\n );\n },\n);\n\nexport default StatusBarButton;\n\ntype StatusBarItemProps = ThemedClassName<ComponentPropsWithRef<'div'>>;\n\nconst StatusBarItem = forwardRef<HTMLDivElement, StatusBarItemProps>(\n ({ classNames, children, ...props }, forwardedRef) => (\n <div\n role='menuitem'\n className={mx('flex items-center justify-center gap-2 p-1 px-2 rounded-sm select-none', classNames)}\n ref={forwardedRef}\n {...props}\n >\n {children}\n </div>\n ),\n);\n\ntype StartContentProps = ThemedClassName<PropsWithChildren<{}>>;\n\nconst StartContent = forwardRef<HTMLDivElement, StartContentProps>(({ classNames, children }, forwardedRef) => (\n <div role='none' className={mx('flex-grow flex items-center space-x-2', classNames)} ref={forwardedRef}>\n {children}\n </div>\n));\n\ntype EndContentProps = ThemedClassName<PropsWithChildren<{}>>;\n\nconst EndContent = forwardRef<HTMLDivElement, EndContentProps>(({ classNames, children }, forwardedRef) => (\n <div role='none' className={mx('flex-grow flex items-center justify-end', classNames)} ref={forwardedRef}>\n {children}\n </div>\n));\n\nexport const StatusBar = {\n Text: StatusBarText,\n Item: StatusBarItem,\n Button: StatusBarButton,\n StartContent,\n EndContent,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { Icon, Popover, useTranslation } from '@dxos/react-ui';\n\nimport { FeedbackForm } from './FeedbackForm';\nimport { StatusBar } from './StatusBar';\nimport { VersionNumber } from './VersionNumber';\nimport { STATUS_BAR_PLUGIN } from '../meta';\n\nexport const StatusBarActions = () => {\n const { t } = useTranslation(STATUS_BAR_PLUGIN);\n const [open, setOpen] = useState(false);\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <StatusBar.Button data-joyride='welcome/feedback'>\n <Icon icon='ph--paper-plane-tilt--regular' size={4} />\n <StatusBar.Text classNames='hidden sm:block'>{t('feedback label')}</StatusBar.Text>\n </StatusBar.Button>\n </Popover.Trigger>\n {/* TODO(zan): Configure this label? */}\n <StatusBar.Button asChild>\n <a href='https://dxos.org/discord' target='_blank' rel='noopener noreferrer'>\n <Icon icon='ph--discord-logo--regular' size={4} />\n <StatusBar.Text classNames='hidden sm:block'>{t('discord label')}</StatusBar.Text>\n </a>\n </StatusBar.Button>\n <VersionNumber />\n <Popover.Portal>\n <Popover.Content classNames='shadow-lg'>\n <FeedbackForm onClose={() => setOpen(false)} />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n\nexport const StatusBarPanel = () => {\n return (\n <>\n <StatusBarActions />\n <span role='separator' className='grow' />\n <Surface role='status' />\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { PaperPlaneTilt, X } from '@phosphor-icons/react';\nimport React, { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { ObservabilityAction, UserFeedback } from '@dxos/plugin-observability/types';\nimport { Button, Input, Popover, useTranslation } from '@dxos/react-ui';\nimport { useForm } from '@dxos/react-ui-form';\nimport { getSize } from '@dxos/react-ui-theme';\n\nimport { STATUS_BAR_PLUGIN } from '../meta';\nimport { mkTranslation } from '../translations';\n\nconst initialValues: UserFeedback = { name: '', email: '', message: '' };\n\nexport const FeedbackForm = ({ onClose }: { onClose: () => void }) => {\n const { t } = useTranslation(STATUS_BAR_PLUGIN);\n const translation = mkTranslation(t);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const onSave = useCallback(\n (values: UserFeedback) => {\n void dispatch(createIntent(ObservabilityAction.CaptureUserFeedback, values));\n onClose();\n },\n [dispatch, onClose],\n );\n\n const { handleSave, canSave, getStatus, ...inputProps } = useForm<UserFeedback>({\n initialValues,\n schema: UserFeedback,\n onSave,\n });\n\n return (\n <div role='form' className='p-3 flex flex-col gap-2'>\n <div role='none' className='space-b-1'>\n <Input.Root validationValence={getStatus('name').status}>\n <Input.Label>{translation('name label')}</Input.Label>\n <Input.TextInput\n classNames={'text-sm'}\n placeholder={translation('name placeholder')}\n autoFocus\n {...inputProps}\n />\n <Input.DescriptionAndValidation>\n <Input.Validation>{getStatus('name').error}</Input.Validation>\n </Input.DescriptionAndValidation>\n </Input.Root>\n </div>\n\n <div role='none' className='space-b-1'>\n <Input.Root validationValence={getStatus('email').status}>\n <Input.Label>{translation('email input label')}</Input.Label>\n <Input.TextInput\n classNames={'text-sm'}\n placeholder={translation('email input placeholder')}\n {...inputProps}\n />\n <Input.DescriptionAndValidation>\n <Input.Validation>{getStatus('email').error}</Input.Validation>\n </Input.DescriptionAndValidation>\n </Input.Root>\n </div>\n\n <div role='none' className='space-b-1'>\n <Input.Root validationValence={getStatus('message').status}>\n <Input.Label>{translation('feedback text area label')}</Input.Label>\n <Input.TextArea\n classNames={'text-sm'}\n rows={5}\n cols={30}\n placeholder={translation('feedback text area placeholder')}\n {...inputProps}\n />\n <Input.DescriptionAndValidation>\n <Input.Validation>{getStatus('message').error}</Input.Validation>\n </Input.DescriptionAndValidation>\n </Input.Root>\n </div>\n\n <div role='none' className='space-b-2'>\n <Button\n type='submit'\n variant='primary'\n classNames='is-full flex gap-2'\n disabled={!canSave}\n onClick={handleSave}\n >\n <span>{translation('send feedback label')}</span>\n <div className='grow' />\n <PaperPlaneTilt className={getSize(5)} />\n </Button>\n <Popover.Close asChild>\n <Button classNames='is-full flex gap-2'>\n <span>{t('cancel label', { ns: 'os' })}</span>\n <div className='grow' />\n <X className={getSize(5)} />\n </Button>\n </Popover.Close>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const STATUS_BAR_PLUGIN = 'dxos.org/plugin/status-bar';\n\nexport const meta = {\n id: STATUS_BAR_PLUGIN,\n name: 'Status Bar',\n description: 'Display a bar with status and actions.',\n icon: 'ph--info--regular',\n} satisfies PluginMeta;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type useTranslation } from '@dxos/react-ui';\n\nimport { STATUS_BAR_PLUGIN } from './meta';\n\ntype StatusBarTranslationKeys =\n | 'plugin name'\n | 'email input label'\n | 'email input placeholder'\n | 'feedback text area label'\n | 'feedback text area placeholder'\n | 'send feedback label'\n | 'name label'\n | 'name placeholder'\n | 'warning title'\n | 'technology preview message'\n | 'learn more label'\n | 'released message'\n | 'see release label'\n | 'powered by dxos message'\n | 'discord label'\n | 'feedback label';\n\ntype RequiredTranslation = { [key in StatusBarTranslationKeys]: string };\ntype TranslationEntry = { [STATUS_BAR_PLUGIN]: RequiredTranslation };\ntype Language = string;\n\n// -- helpers.\nconst entry = (translation: RequiredTranslation): TranslationEntry => ({ [STATUS_BAR_PLUGIN]: translation });\nexport const mkTranslation = (t: ReturnType<typeof useTranslation>['t']) => (key: StatusBarTranslationKeys) => t(key);\n\nconst translations: Record<Language, TranslationEntry> = {\n 'en-US': entry({\n 'plugin name': 'Status Bar',\n 'name label': 'Name',\n 'name placeholder': 'Preferred name',\n 'email input label': 'Email',\n 'email input placeholder': 'hello@example.com',\n 'feedback text area label': 'Feedback',\n 'feedback text area placeholder': 'Please describe your issue or suggestion.',\n 'send feedback label': 'Send Feedback',\n 'warning title': 'WARNING',\n 'technology preview message': 'Composer is still in technology preview.',\n 'learn more label': 'Learn more',\n 'released message': 'This version released {{released}}.',\n 'see release label': 'See release on GitHub',\n 'powered by dxos message': 'Powered by <dxos>DXOS</dxos>',\n 'discord label': 'Discord',\n 'feedback label': 'Feedback',\n }),\n};\n\nexport default [translations];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { formatDistance } from 'date-fns/formatDistance';\nimport React from 'react';\n\nimport { useConfig } from '@dxos/react-client';\nimport { Link, Message, Popover, Trans, useTranslation, Icon } from '@dxos/react-ui';\n\nimport { StatusBar } from './StatusBar';\nimport { STATUS_BAR_PLUGIN } from '../meta';\n\nconst repo = 'https://github.com/dxos/dxos';\n\nconst VERSION_REGEX = /([\\d.]+)/;\n\nexport const VersionNumber = () => {\n const config = useConfig();\n const { t } = useTranslation(STATUS_BAR_PLUGIN);\n const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};\n const [_, v] = version?.match(VERSION_REGEX) ?? [];\n\n const releaseUrl =\n config.values.runtime?.app?.env?.DX_ENVIRONMENT === 'production'\n ? `${repo}/releases/tag/v${version}`\n : `${repo}/commit/${commitHash}`;\n\n const previewUrl = 'https://docs.dxos.org/composer#technology-preview';\n\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <StatusBar.Button classNames='text-xs'>v{v}</StatusBar.Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n side='top'\n role='message'\n classNames='z-[12] bg-warning-500 max-is-[min(calc(100vw-16px),40ch)]'\n >\n <Message.Root valence='warning' className='rounded-be-none p-5'>\n <Message.Title>\n <Icon icon='ph--warning--duotone' size={6} classNames='inline mie-2' />\n <span>{t('warning title')}</span>\n </Message.Title>\n <Message.Body>\n {t('technology preview message')}\n <br />\n <Link href={previewUrl} target='_blank' rel='noreferrer' variant='neutral'>\n {t('learn more label')}\n <Icon icon='ph--arrow-square-out--bold' classNames='inline mis-1' />\n </Link>\n </Message.Body>\n </Message.Root>\n <div role='none' className='plb-4 pli-5 space-b-2 text-baseText'>\n {timestamp && (\n <p>\n {t('released message', {\n released: formatDistance(new Date(timestamp), new Date(), { addSuffix: true }),\n })}\n <br />\n <Link href={releaseUrl} target='_blank' rel='noreferrer' variant='neutral'>\n {t('see release label')}\n <Icon icon='ph--arrow-square-out--bold' classNames='inline mis-1' />\n </Link>\n </p>\n )}\n <p>\n <Trans\n {...{\n t,\n i18nKey: 'powered by dxos message',\n components: {\n dxos: <Link href='https://dxos.org' target='_blank' rel='noreferrer' variant='neutral' />,\n },\n }}\n />\n </p>\n </div>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport {\n Capabilities,\n contributes,\n createSurface,\n defineModule,\n definePlugin,\n Events,\n Surface,\n} from '@dxos/app-framework';\n\nimport { StatusBarActions, StatusBarPanel } from './components';\nimport { VersionNumber } from './components/VersionNumber';\nimport { meta, STATUS_BAR_PLUGIN } from './meta';\nimport translations from './translations';\n\nexport const StatusBarPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: meta.id,\n role: 'status-bar',\n component: () => <StatusBarPanel />,\n }),\n createSurface({\n id: meta.id,\n role: 'status-bar--r0-footer',\n component: () => <Surface role='status' />,\n }),\n createSurface({\n id: meta.id,\n role: 'status-bar--r1-footer',\n component: () => <StatusBarActions />,\n }),\n createSurface({\n id: `${STATUS_BAR_PLUGIN}/header-end`,\n role: 'header-end',\n component: () => <VersionNumber />,\n }),\n ]),\n }),\n ]);\n"],
|
|
5
|
-
"mappings": ";AAIA,SAASA,
|
|
6
|
-
"names": ["
|
|
3
|
+
"sources": ["../../../src/components/FeedbackForm.tsx", "../../../src/meta.ts", "../../../src/translations.ts", "../../../src/components/StatusBar.tsx", "../../../src/components/StatusBarPanel.tsx", "../../../src/components/VersionNumber.tsx", "../../../src/StatusBarPlugin.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { PaperPlaneTilt, X } from '@phosphor-icons/react';\nimport React, { useRef } from 'react';\n\nimport { getSnapshot } from '@dxos/echo-schema';\nimport { UserFeedback } from '@dxos/plugin-observability/types';\nimport { Button, Input, Popover, useTranslation } from '@dxos/react-ui';\nimport { FormProvider, useFormContext, useInputProps } from '@dxos/react-ui-form';\nimport { getSize } from '@dxos/react-ui-theme';\n\nimport { STATUS_BAR_PLUGIN } from '../meta';\nimport { mkTranslation } from '../translations';\n\nconst defaultValues: UserFeedback = { name: '', email: '', message: '' };\n\nconst FormContent = () => {\n const { t } = useTranslation(STATUS_BAR_PLUGIN);\n const translation = mkTranslation(t);\n const { handleSave, canSave } = useFormContext<UserFeedback>();\n\n const nameProps = useInputProps(['name']);\n const emailProps = useInputProps(['email']);\n const messageProps = useInputProps(['message']);\n\n return (\n <div role='form' className='p-3 flex flex-col gap-2'>\n <div role='none' className='space-b-1'>\n <Input.Root validationValence={nameProps.getStatus().status}>\n <Input.Label>{translation('name label')}</Input.Label>\n <Input.TextInput\n classNames={'text-sm'}\n placeholder={translation('name placeholder')}\n autoFocus\n value={nameProps.getValue() ?? ''}\n onChange={(e) => nameProps.onValueChange('string', e.target.value)}\n onBlur={nameProps.onBlur}\n />\n <Input.DescriptionAndValidation>\n <Input.Validation>{nameProps.getStatus().error}</Input.Validation>\n </Input.DescriptionAndValidation>\n </Input.Root>\n </div>\n\n <div role='none' className='space-b-1'>\n <Input.Root validationValence={emailProps.getStatus().status}>\n <Input.Label>{translation('email input label')}</Input.Label>\n <Input.TextInput\n classNames={'text-sm'}\n placeholder={translation('email input placeholder')}\n value={emailProps.getValue() ?? ''}\n onChange={(e) => emailProps.onValueChange('string', e.target.value)}\n onBlur={emailProps.onBlur}\n />\n <Input.DescriptionAndValidation>\n <Input.Validation>{emailProps.getStatus().error}</Input.Validation>\n </Input.DescriptionAndValidation>\n </Input.Root>\n </div>\n\n <div role='none' className='space-b-1'>\n <Input.Root validationValence={messageProps.getStatus().status}>\n <Input.Label>{translation('feedback text area label')}</Input.Label>\n <Input.TextArea\n classNames={'text-sm'}\n rows={5}\n cols={30}\n placeholder={translation('feedback text area placeholder')}\n value={messageProps.getValue() ?? ''}\n onChange={(e) => messageProps.onValueChange('string', e.target.value)}\n onBlur={messageProps.onBlur}\n />\n <Input.DescriptionAndValidation>\n <Input.Validation>{messageProps.getStatus().error}</Input.Validation>\n </Input.DescriptionAndValidation>\n </Input.Root>\n </div>\n\n <div role='none' className='space-b-2'>\n <Button\n type='submit'\n variant='primary'\n classNames='is-full flex gap-2'\n disabled={!canSave}\n onClick={handleSave}\n >\n <span>{translation('send feedback label')}</span>\n <div className='grow' />\n <PaperPlaneTilt className={getSize(5)} />\n </Button>\n <Popover.Close asChild>\n <Button classNames='is-full flex gap-2'>\n <span>{t('cancel label', { ns: 'os' })}</span>\n <div className='grow' />\n <X className={getSize(5)} />\n </Button>\n </Popover.Close>\n </div>\n </div>\n );\n};\n\nexport const FeedbackForm = ({ onSave }: { onSave: (values: UserFeedback) => void }) => {\n const formRef = useRef<HTMLDivElement>(null);\n\n const initialValues = getSnapshot(defaultValues);\n\n return (\n <FormProvider formRef={formRef} schema={UserFeedback} initialValues={initialValues} onSave={onSave}>\n <div ref={formRef}>\n <FormContent />\n </div>\n </FormProvider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const STATUS_BAR_PLUGIN = 'dxos.org/plugin/status-bar';\n\nexport const meta: PluginMeta = {\n id: STATUS_BAR_PLUGIN,\n name: 'Status Bar',\n description: 'Display a bar with status and actions.',\n icon: 'ph--info--regular',\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type useTranslation } from '@dxos/react-ui';\n\nimport { STATUS_BAR_PLUGIN } from './meta';\n\ntype StatusBarTranslationKeys =\n | 'plugin name'\n | 'email input label'\n | 'email input placeholder'\n | 'feedback text area label'\n | 'feedback text area placeholder'\n | 'send feedback label'\n | 'name label'\n | 'name placeholder'\n | 'warning title'\n | 'technology preview message'\n | 'learn more label'\n | 'released message'\n | 'see release label'\n | 'powered by dxos message'\n | 'discord label'\n | 'feedback label';\n\ntype RequiredTranslation = { [key in StatusBarTranslationKeys]: string };\ntype TranslationEntry = { [STATUS_BAR_PLUGIN]: RequiredTranslation };\ntype Language = string;\n\n// -- helpers.\nconst entry = (translation: RequiredTranslation): TranslationEntry => ({ [STATUS_BAR_PLUGIN]: translation });\nexport const mkTranslation = (t: ReturnType<typeof useTranslation>['t']) => (key: StatusBarTranslationKeys) => t(key);\n\nconst translations: Record<Language, TranslationEntry> = {\n 'en-US': entry({\n 'plugin name': 'Status Bar',\n 'name label': 'Name',\n 'name placeholder': 'Preferred name',\n 'email input label': 'Email',\n 'email input placeholder': 'hello@example.com',\n 'feedback text area label': 'Feedback',\n 'feedback text area placeholder': 'Please describe your issue or suggestion.',\n 'send feedback label': 'Send Feedback',\n 'warning title': 'WARNING',\n 'technology preview message': 'Composer is currently in beta.',\n 'learn more label': 'Learn more',\n 'released message': 'This version released {{released}}.',\n 'see release label': 'See release on GitHub',\n 'powered by dxos message': 'Powered by <dxos>DXOS</dxos>',\n 'discord label': 'Discord',\n 'feedback label': 'Feedback',\n }),\n};\n\nexport default [translations];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Slot } from '@radix-ui/react-slot';\nimport React, { type ComponentPropsWithRef, forwardRef, type PropsWithChildren, type ReactNode } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\ntype StatusBarTextProps = ThemedClassName<{ children: ReactNode }>;\n\nconst StatusBarText = forwardRef<HTMLSpanElement, StatusBarTextProps>(({ classNames, children }, forwardedRef) => (\n <span className={mx(classNames)} ref={forwardedRef}>\n {children}\n </span>\n));\n\ntype StatusBarButtonProps = ThemedClassName<ComponentPropsWithRef<'button'> & { asChild?: boolean }>;\n\nconst StatusBarButton = forwardRef<HTMLButtonElement, StatusBarButtonProps>(\n ({ classNames, children, asChild, ...props }, forwardedRef) => {\n const classes = mx(\n 'flex items-center justify-center gap-2 p-1 px-2 rounded-sm',\n 'select-none cursor-pointer dx-focus-ring text-description text-xs',\n 'hover:bg-neutral-75 active:bg-neutral-150 dark:hover:bg-neutral-750 dark:active:bg-neutral-700',\n classNames,\n );\n\n return asChild ? (\n <Slot role='button' ref={forwardedRef} className={classes} {...props}>\n {children}\n </Slot>\n ) : (\n <button className={classes} ref={forwardedRef} {...props}>\n {children}\n </button>\n );\n },\n);\n\nexport default StatusBarButton;\n\ntype StatusBarItemProps = ThemedClassName<ComponentPropsWithRef<'div'>>;\n\nconst StatusBarItem = forwardRef<HTMLDivElement, StatusBarItemProps>(\n ({ classNames, children, ...props }, forwardedRef) => (\n <div\n role='menuitem'\n className={mx('flex items-center justify-center gap-2 p-1 px-2 rounded-sm select-none', classNames)}\n ref={forwardedRef}\n {...props}\n >\n {children}\n </div>\n ),\n);\n\ntype StartContentProps = ThemedClassName<PropsWithChildren<{}>>;\n\nconst StartContent = forwardRef<HTMLDivElement, StartContentProps>(({ classNames, children }, forwardedRef) => (\n <div role='none' className={mx('flex-grow flex items-center space-x-2', classNames)} ref={forwardedRef}>\n {children}\n </div>\n));\n\ntype EndContentProps = ThemedClassName<PropsWithChildren<{}>>;\n\nconst EndContent = forwardRef<HTMLDivElement, EndContentProps>(({ classNames, children }, forwardedRef) => (\n <div role='none' className={mx('flex-grow flex items-center justify-end', classNames)} ref={forwardedRef}>\n {children}\n </div>\n));\n\nexport const StatusBar = {\n Text: StatusBarText,\n Item: StatusBarItem,\n Button: StatusBarButton,\n StartContent,\n EndContent,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { createIntent, Surface, useIntentDispatcher } from '@dxos/app-framework';\nimport { ObservabilityAction, type UserFeedback } from '@dxos/plugin-observability/types';\nimport { Icon, Popover, useTranslation } from '@dxos/react-ui';\n\nimport { FeedbackForm } from './FeedbackForm';\nimport { StatusBar } from './StatusBar';\nimport { VersionNumber } from './VersionNumber';\nimport { STATUS_BAR_PLUGIN } from '../meta';\n\nexport const StatusBarActions = () => {\n const { t } = useTranslation(STATUS_BAR_PLUGIN);\n const [open, setOpen] = useState(false);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const handleSave = useCallback(\n (values: UserFeedback) => {\n void dispatch(createIntent(ObservabilityAction.CaptureUserFeedback, values));\n setOpen(false);\n },\n [dispatch],\n );\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <StatusBar.Button data-joyride='welcome/feedback'>\n <Icon icon='ph--paper-plane-tilt--regular' size={4} />\n <StatusBar.Text classNames='hidden sm:block'>{t('feedback label')}</StatusBar.Text>\n </StatusBar.Button>\n </Popover.Trigger>\n {/* TODO(zan): Configure this label? */}\n <StatusBar.Button asChild>\n <a href='https://dxos.org/discord' target='_blank' rel='noopener noreferrer'>\n <Icon icon='ph--discord-logo--regular' size={4} />\n <StatusBar.Text classNames='hidden sm:block'>{t('discord label')}</StatusBar.Text>\n </a>\n </StatusBar.Button>\n <VersionNumber />\n <Popover.Portal>\n <Popover.Content classNames='shadow-lg'>\n <FeedbackForm onSave={handleSave} />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n\nexport const StatusBarPanel = () => {\n return (\n <>\n <StatusBarActions />\n <span role='separator' className='grow' />\n <Surface role='status' />\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { formatDistance } from 'date-fns/formatDistance';\nimport React from 'react';\n\nimport { useConfig } from '@dxos/react-client';\nimport { Link, Message, Popover, Trans, useTranslation, Icon } from '@dxos/react-ui';\n\nimport { StatusBar } from './StatusBar';\nimport { STATUS_BAR_PLUGIN } from '../meta';\n\nconst repo = 'https://github.com/dxos/dxos';\n\nconst VERSION_REGEX = /([\\d.]+)/;\n\nexport const VersionNumber = () => {\n const config = useConfig();\n const { t } = useTranslation(STATUS_BAR_PLUGIN);\n const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};\n const [_, v] = version?.match(VERSION_REGEX) ?? [];\n const isLabs = config.values.runtime?.app?.env?.DX_LABS;\n\n const releaseUrl =\n config.values.runtime?.app?.env?.DX_ENVIRONMENT === 'production'\n ? `${repo}/releases/tag/v${version}`\n : `${repo}/commit/${commitHash}`;\n\n const previewUrl = 'https://docs.dxos.org/composer#technology-preview';\n\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <StatusBar.Button classNames='text-xs'>{isLabs ? version : v}</StatusBar.Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n side='top'\n role='message'\n classNames='z-[12] bg-warning-500 max-is-[min(calc(100vw-16px),40ch)]'\n >\n <Message.Root valence='warning' className='rounded-be-none p-5'>\n <Message.Title>\n <Icon icon='ph--warning--duotone' size={6} classNames='inline mie-2' />\n <span>{t('warning title')}</span>\n </Message.Title>\n <Message.Body>\n {t('technology preview message')}\n <br />\n <Link href={previewUrl} target='_blank' rel='noreferrer' variant='neutral'>\n {t('learn more label')}\n <Icon icon='ph--arrow-square-out--bold' classNames='inline mis-1' />\n </Link>\n </Message.Body>\n </Message.Root>\n <div role='none' className='plb-4 pli-5 space-b-2 text-baseText'>\n {timestamp && (\n <p>\n {t('released message', {\n released: formatDistance(new Date(timestamp), new Date(), { addSuffix: true }),\n })}\n <br />\n <Link href={releaseUrl} target='_blank' rel='noreferrer' variant='neutral'>\n {t('see release label')}\n <Icon icon='ph--arrow-square-out--bold' classNames='inline mis-1' />\n </Link>\n </p>\n )}\n <p>\n <Trans\n {...{\n t,\n i18nKey: 'powered by dxos message',\n components: {\n dxos: <Link href='https://dxos.org' target='_blank' rel='noreferrer' variant='neutral' />,\n },\n }}\n />\n </p>\n </div>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport {\n Capabilities,\n contributes,\n createSurface,\n defineModule,\n definePlugin,\n Events,\n Surface,\n} from '@dxos/app-framework';\n\nimport { StatusBarActions, StatusBarPanel } from './components';\nimport { VersionNumber } from './components/VersionNumber';\nimport { meta, STATUS_BAR_PLUGIN } from './meta';\nimport translations from './translations';\n\nexport const StatusBarPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: meta.id,\n role: 'status-bar',\n component: () => <StatusBarPanel />,\n }),\n createSurface({\n id: meta.id,\n role: 'status-bar--r0-footer',\n component: () => <Surface role='status' />,\n }),\n createSurface({\n id: meta.id,\n role: 'status-bar--r1-footer',\n component: () => <StatusBarActions />,\n }),\n createSurface({\n id: `${STATUS_BAR_PLUGIN}/header-end`,\n role: 'header-end',\n component: () => <VersionNumber />,\n }),\n ]),\n }),\n ]);\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,gBAAgBC,SAAS;AAClC,OAAOC,SAASC,cAAc;AAE9B,SAASC,mBAAmB;AAC5B,SAASC,oBAAoB;AAC7B,SAASC,QAAQC,OAAOC,SAASC,sBAAsB;AACvD,SAASC,cAAcC,gBAAgBC,qBAAqB;AAC5D,SAASC,eAAe;;;ACLjB,IAAMC,oBAAoB;AAE1B,IAAMC,OAAmB;EAC9BC,IAAIF;EACJG,MAAM;EACNC,aAAa;EACbC,MAAM;AACR;;;ACkBA,IAAMC,QAAQ,CAACC,iBAAwD;EAAE,CAACC,iBAAAA,GAAoBD;AAAY;AACnG,IAAME,gBAAgB,CAACC,MAA8C,CAACC,QAAkCD,EAAEC,GAAAA;AAEjH,IAAMC,eAAmD;EACvD,SAASN,MAAM;IACb,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,qBAAqB;IACrB,2BAA2B;IAC3B,4BAA4B;IAC5B,kCAAkC;IAClC,uBAAuB;IACvB,iBAAiB;IACjB,8BAA8B;IAC9B,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,2BAA2B;IAC3B,iBAAiB;IACjB,kBAAkB;EACpB,CAAA;AACF;AAEA,IAAA,uBAAe;EAACM;;;;AFvChB,IAAMC,gBAA8B;EAAEC,MAAM;EAAIC,OAAO;EAAIC,SAAS;AAAG;AAEvE,IAAMC,cAAc,MAAA;AAClB,QAAM,EAAEC,EAAC,IAAKC,eAAeC,iBAAAA;AAC7B,QAAMC,cAAcC,cAAcJ,CAAAA;AAClC,QAAM,EAAEK,YAAYC,QAAO,IAAKC,eAAAA;AAEhC,QAAMC,YAAYC,cAAc;IAAC;GAAO;AACxC,QAAMC,aAAaD,cAAc;IAAC;GAAQ;AAC1C,QAAME,eAAeF,cAAc;IAAC;GAAU;AAE9C,SACE,sBAAA,cAACG,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,sBAAA,cAACF,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,sBAAA,cAACC,MAAMC,MAAI;IAACC,mBAAmBT,UAAUU,UAAS,EAAGC;KACnD,sBAAA,cAACJ,MAAMK,OAAK,MAAEjB,YAAY,YAAA,CAAA,GAC1B,sBAAA,cAACY,MAAMM,WAAS;IACdC,YAAY;IACZC,aAAapB,YAAY,kBAAA;IACzBqB,WAAAA;IACAC,OAAOjB,UAAUkB,SAAQ,KAAM;IAC/BC,UAAU,CAACC,MAAMpB,UAAUqB,cAAc,UAAUD,EAAEE,OAAOL,KAAK;IACjEM,QAAQvB,UAAUuB;MAEpB,sBAAA,cAAChB,MAAMiB,0BAAwB,MAC7B,sBAAA,cAACjB,MAAMkB,YAAU,MAAEzB,UAAUU,UAAS,EAAGgB,KAAK,CAAA,CAAA,CAAA,GAKpD,sBAAA,cAACtB,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,sBAAA,cAACC,MAAMC,MAAI;IAACC,mBAAmBP,WAAWQ,UAAS,EAAGC;KACpD,sBAAA,cAACJ,MAAMK,OAAK,MAAEjB,YAAY,mBAAA,CAAA,GAC1B,sBAAA,cAACY,MAAMM,WAAS;IACdC,YAAY;IACZC,aAAapB,YAAY,yBAAA;IACzBsB,OAAOf,WAAWgB,SAAQ,KAAM;IAChCC,UAAU,CAACC,MAAMlB,WAAWmB,cAAc,UAAUD,EAAEE,OAAOL,KAAK;IAClEM,QAAQrB,WAAWqB;MAErB,sBAAA,cAAChB,MAAMiB,0BAAwB,MAC7B,sBAAA,cAACjB,MAAMkB,YAAU,MAAEvB,WAAWQ,UAAS,EAAGgB,KAAK,CAAA,CAAA,CAAA,GAKrD,sBAAA,cAACtB,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,sBAAA,cAACC,MAAMC,MAAI;IAACC,mBAAmBN,aAAaO,UAAS,EAAGC;KACtD,sBAAA,cAACJ,MAAMK,OAAK,MAAEjB,YAAY,0BAAA,CAAA,GAC1B,sBAAA,cAACY,MAAMoB,UAAQ;IACbb,YAAY;IACZc,MAAM;IACNC,MAAM;IACNd,aAAapB,YAAY,gCAAA;IACzBsB,OAAOd,aAAae,SAAQ,KAAM;IAClCC,UAAU,CAACC,MAAMjB,aAAakB,cAAc,UAAUD,EAAEE,OAAOL,KAAK;IACpEM,QAAQpB,aAAaoB;MAEvB,sBAAA,cAAChB,MAAMiB,0BAAwB,MAC7B,sBAAA,cAACjB,MAAMkB,YAAU,MAAEtB,aAAaO,UAAS,EAAGgB,KAAK,CAAA,CAAA,CAAA,GAKvD,sBAAA,cAACtB,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,sBAAA,cAACwB,QAAAA;IACCC,MAAK;IACLC,SAAQ;IACRlB,YAAW;IACXmB,UAAU,CAACnC;IACXoC,SAASrC;KAET,sBAAA,cAACsC,QAAAA,MAAMxC,YAAY,qBAAA,CAAA,GACnB,sBAAA,cAACS,OAAAA;IAAIE,WAAU;MACf,sBAAA,cAAC8B,gBAAAA;IAAe9B,WAAW+B,QAAQ,CAAA;OAErC,sBAAA,cAACC,QAAQC,OAAK;IAACC,SAAAA;KACb,sBAAA,cAACV,QAAAA;IAAOhB,YAAW;KACjB,sBAAA,cAACqB,QAAAA,MAAM3C,EAAE,gBAAgB;IAAEiD,IAAI;EAAK,CAAA,CAAA,GACpC,sBAAA,cAACrC,OAAAA;IAAIE,WAAU;MACf,sBAAA,cAACoC,GAAAA;IAAEpC,WAAW+B,QAAQ,CAAA;;AAMlC;AAEO,IAAMM,eAAe,CAAC,EAAEC,OAAM,MAA8C;AACjF,QAAMC,UAAUC,OAAuB,IAAA;AAEvC,QAAMC,gBAAgBC,YAAY7D,aAAAA;AAElC,SACE,sBAAA,cAAC8D,cAAAA;IAAaJ;IAAkBK,QAAQC;IAAcJ;IAA8BH;KAClF,sBAAA,cAACxC,OAAAA;IAAIgD,KAAKP;KACR,sBAAA,cAACtD,aAAAA,IAAAA,CAAAA,CAAAA;AAIT;;;AGhHA,SAAS8D,YAAY;AACrB,OAAOC,UAAqCC,kBAA0D;AAGtG,SAASC,UAAU;AAInB,IAAMC,gBAAgBC,2BAAgD,CAAC,EAAEC,YAAYC,SAAQ,GAAIC,iBAC/F,gBAAAC,OAAA,cAACC,QAAAA;EAAKC,WAAWC,GAAGN,UAAAA;EAAaO,KAAKL;GACnCD,QAAAA,CAAAA;AAML,IAAMO,kBAAkBT,2BACtB,CAAC,EAAEC,YAAYC,UAAUQ,SAAS,GAAGC,MAAAA,GAASR,iBAAAA;AAC5C,QAAMS,UAAUL,GACd,8DACA,qEACA,kGACAN,UAAAA;AAGF,SAAOS,UACL,gBAAAN,OAAA,cAACS,MAAAA;IAAKC,MAAK;IAASN,KAAKL;IAAcG,WAAWM;IAAU,GAAGD;KAC5DT,QAAAA,IAGH,gBAAAE,OAAA,cAACW,UAAAA;IAAOT,WAAWM;IAASJ,KAAKL;IAAe,GAAGQ;KAChDT,QAAAA;AAGP,CAAA;AAOF,IAAMc,gBAAgBC,2BACpB,CAAC,EAAEC,YAAYC,UAAU,GAAGC,MAAAA,GAASC,iBACnC,gBAAAC,OAAA,cAACC,OAAAA;EACCC,MAAK;EACLC,WAAWC,GAAG,0EAA0ER,UAAAA;EACxFS,KAAKN;EACJ,GAAGD;GAEHD,QAAAA,CAAAA;AAOP,IAAMS,eAAeX,2BAA8C,CAAC,EAAEC,YAAYC,SAAQ,GAAIE,iBAC5F,gBAAAC,OAAA,cAACC,OAAAA;EAAIC,MAAK;EAAOC,WAAWC,GAAG,yCAAyCR,UAAAA;EAAaS,KAAKN;GACvFF,QAAAA,CAAAA;AAML,IAAMU,aAAaZ,2BAA4C,CAAC,EAAEC,YAAYC,SAAQ,GAAIE,iBACxF,gBAAAC,OAAA,cAACC,OAAAA;EAAIC,MAAK;EAAOC,WAAWC,GAAG,2CAA2CR,UAAAA;EAAaS,KAAKN;GACzFF,QAAAA,CAAAA;AAIE,IAAMW,YAAY;EACvBC,MAAMC;EACNC,MAAMjB;EACNkB,QAAQC;EACRP;EACAC;AACF;;;AC5EA,OAAOO,UAASC,aAAaC,gBAAgB;AAE7C,SAASC,cAAcC,SAASC,2BAA2B;AAC3D,SAASC,2BAA8C;AACvD,SAASC,QAAAA,OAAMC,WAAAA,UAASC,kBAAAA,uBAAsB;;;ACJ9C,SAASC,sBAAsB;AAC/B,OAAOC,YAAW;AAElB,SAASC,iBAAiB;AAC1B,SAASC,MAAMC,SAASC,WAAAA,UAASC,OAAOC,kBAAAA,iBAAgBC,YAAY;AAKpE,IAAMC,OAAO;AAEb,IAAMC,gBAAgB;AAEf,IAAMC,gBAAgB,MAAA;AAC3B,QAAMC,SAASC,UAAAA;AACf,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,iBAAAA;AAC7B,QAAM,EAAEC,SAASC,WAAWC,WAAU,IAAKP,OAAOQ,OAAOC,SAASC,KAAKC,SAAS,CAAC;AACjF,QAAM,CAACC,GAAGC,CAAAA,IAAKR,SAASS,MAAMhB,aAAAA,KAAkB,CAAA;AAChD,QAAMiB,SAASf,OAAOQ,OAAOC,SAASC,KAAKM,KAAKC;AAEhD,QAAMC,aACJlB,OAAOQ,OAAOC,SAASC,KAAKM,KAAKG,mBAAmB,eAChD,GAAGtB,IAAAA,kBAAsBQ,OAAAA,KACzB,GAAGR,IAAAA,WAAeU,UAAAA;AAExB,QAAMa,aAAa;AAEnB,SACE,gBAAAC,OAAA,cAACC,SAAQC,MAAI,MACX,gBAAAF,OAAA,cAACC,SAAQE,SAAO;IAACC,SAAAA;KACf,gBAAAJ,OAAA,cAACK,UAAUC,QAAM;IAACC,YAAW;KAAWb,SAASV,UAAUQ,CAAAA,CAAAA,GAE7D,gBAAAQ,OAAA,cAACC,SAAQO,QAAM,MACb,gBAAAR,OAAA,cAACC,SAAQQ,SAAO;IACdC,MAAK;IACLC,MAAK;IACLJ,YAAW;KAEX,gBAAAP,OAAA,cAACY,QAAQV,MAAI;IAACW,SAAQ;IAAUC,WAAU;KACxC,gBAAAd,OAAA,cAACY,QAAQG,OAAK,MACZ,gBAAAf,OAAA,cAACgB,MAAAA;IAAKC,MAAK;IAAuBC,MAAM;IAAGX,YAAW;MACtD,gBAAAP,OAAA,cAACmB,QAAAA,MAAMtC,EAAE,eAAA,CAAA,CAAA,GAEX,gBAAAmB,OAAA,cAACY,QAAQQ,MAAI,MACVvC,EAAE,4BAAA,GACH,gBAAAmB,OAAA,cAACqB,MAAAA,IAAAA,GACD,gBAAArB,OAAA,cAACsB,MAAAA;IAAKC,MAAMxB;IAAYyB,QAAO;IAASC,KAAI;IAAaC,SAAQ;KAC9D7C,EAAE,kBAAA,GACH,gBAAAmB,OAAA,cAACgB,MAAAA;IAAKC,MAAK;IAA6BV,YAAW;SAIzD,gBAAAP,OAAA,cAAC2B,OAAAA;IAAIhB,MAAK;IAAOG,WAAU;KACxB7B,aACC,gBAAAe,OAAA,cAAC4B,KAAAA,MACE/C,EAAE,oBAAoB;IACrBgD,UAAUC,eAAe,IAAIC,KAAK9C,SAAAA,GAAY,oBAAI8C,KAAAA,GAAQ;MAAEC,WAAW;IAAK,CAAA;EAC9E,CAAA,GACA,gBAAAhC,OAAA,cAACqB,MAAAA,IAAAA,GACD,gBAAArB,OAAA,cAACsB,MAAAA;IAAKC,MAAM1B;IAAY2B,QAAO;IAASC,KAAI;IAAaC,SAAQ;KAC9D7C,EAAE,mBAAA,GACH,gBAAAmB,OAAA,cAACgB,MAAAA;IAAKC,MAAK;IAA6BV,YAAW;QAIzD,gBAAAP,OAAA,cAAC4B,KAAAA,MACC,gBAAA5B,OAAA,cAACiC,OACK;IACFpD;IACAqD,SAAS;IACTC,YAAY;MACVC,MAAM,gBAAApC,OAAA,cAACsB,MAAAA;QAAKC,MAAK;QAAmBC,QAAO;QAASC,KAAI;QAAaC,SAAQ;;IAC/E;EACF,CAAA,CAAA,CAAA,GAIN,gBAAA1B,OAAA,cAACC,SAAQoC,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB;;;ADvEO,IAAMC,mBAAmB,MAAA;AAC9B,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,iBAAAA;AAC7B,QAAM,CAACC,MAAMC,OAAAA,IAAWC,SAAS,KAAA;AACjC,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AAEtC,QAAMC,aAAaC,YACjB,CAACC,WAAAA;AACC,SAAKJ,SAASK,aAAaC,oBAAoBC,qBAAqBH,MAAAA,CAAAA;AACpEP,YAAQ,KAAA;EACV,GACA;IAACG;GAAS;AAGZ,SACE,gBAAAQ,OAAA,cAACC,SAAQC,MAAI;IAACd;IAAYe,cAAcd;KACtC,gBAAAW,OAAA,cAACC,SAAQG,SAAO;IAACC,SAAAA;KACf,gBAAAL,OAAA,cAACM,UAAUC,QAAM;IAACC,gBAAa;KAC7B,gBAAAR,OAAA,cAACS,OAAAA;IAAKC,MAAK;IAAgCC,MAAM;MACjD,gBAAAX,OAAA,cAACM,UAAUM,MAAI;IAACC,YAAW;KAAmB5B,EAAE,gBAAA,CAAA,CAAA,CAAA,GAIpD,gBAAAe,OAAA,cAACM,UAAUC,QAAM;IAACF,SAAAA;KAChB,gBAAAL,OAAA,cAACc,KAAAA;IAAEC,MAAK;IAA2BC,QAAO;IAASC,KAAI;KACrD,gBAAAjB,OAAA,cAACS,OAAAA;IAAKC,MAAK;IAA4BC,MAAM;MAC7C,gBAAAX,OAAA,cAACM,UAAUM,MAAI;IAACC,YAAW;KAAmB5B,EAAE,eAAA,CAAA,CAAA,CAAA,GAGpD,gBAAAe,OAAA,cAACkB,eAAAA,IAAAA,GACD,gBAAAlB,OAAA,cAACC,SAAQkB,QAAM,MACb,gBAAAnB,OAAA,cAACC,SAAQmB,SAAO;IAACP,YAAW;KAC1B,gBAAAb,OAAA,cAACqB,cAAAA;IAAaC,QAAQ5B;MACtB,gBAAAM,OAAA,cAACC,SAAQsB,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB;AAEO,IAAMC,iBAAiB,MAAA;AAC5B,SACE,gBAAAxB,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAAChB,kBAAAA,IAAAA,GACD,gBAAAgB,OAAA,cAACyB,QAAAA;IAAKC,MAAK;IAAYC,WAAU;MACjC,gBAAA3B,OAAA,cAAC4B,SAAAA;IAAQF,MAAK;;AAGpB;;;AE1DA,OAAOG,YAAW;AAElB,SACEC,cACAC,aACAC,eACAC,cACAC,cACAC,QACAC,WAAAA,gBACK;AAOA,IAAMC,kBAAkB,MAC7BC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAU,MAAMC,YAAYC,aAAaC,cAAcC,oBAAAA;EACzD,CAAA;EACAT,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOO;IACpBL,UAAU,MACRC,YAAYC,aAAaI,cAAc;MACrCC,cAAc;QACZX,IAAIF,KAAKE;QACTY,MAAM;QACNC,WAAW,MAAM,gBAAAC,OAAA,cAACC,gBAAAA,IAAAA;MACpB,CAAA;MACAJ,cAAc;QACZX,IAAIF,KAAKE;QACTY,MAAM;QACNC,WAAW,MAAM,gBAAAC,OAAA,cAACE,UAAAA;UAAQJ,MAAK;;MACjC,CAAA;MACAD,cAAc;QACZX,IAAIF,KAAKE;QACTY,MAAM;QACNC,WAAW,MAAM,gBAAAC,OAAA,cAACG,kBAAAA,IAAAA;MACpB,CAAA;MACAN,cAAc;QACZX,IAAI,GAAGkB,iBAAAA;QACPN,MAAM;QACNC,WAAW,MAAM,gBAAAC,OAAA,cAACK,eAAAA,IAAAA;MACpB,CAAA;KACD;EACL,CAAA;CACD;",
|
|
6
|
+
"names": ["PaperPlaneTilt", "X", "React", "useRef", "getSnapshot", "UserFeedback", "Button", "Input", "Popover", "useTranslation", "FormProvider", "useFormContext", "useInputProps", "getSize", "STATUS_BAR_PLUGIN", "meta", "id", "name", "description", "icon", "entry", "translation", "STATUS_BAR_PLUGIN", "mkTranslation", "t", "key", "translations", "defaultValues", "name", "email", "message", "FormContent", "t", "useTranslation", "STATUS_BAR_PLUGIN", "translation", "mkTranslation", "handleSave", "canSave", "useFormContext", "nameProps", "useInputProps", "emailProps", "messageProps", "div", "role", "className", "Input", "Root", "validationValence", "getStatus", "status", "Label", "TextInput", "classNames", "placeholder", "autoFocus", "value", "getValue", "onChange", "e", "onValueChange", "target", "onBlur", "DescriptionAndValidation", "Validation", "error", "TextArea", "rows", "cols", "Button", "type", "variant", "disabled", "onClick", "span", "PaperPlaneTilt", "getSize", "Popover", "Close", "asChild", "ns", "X", "FeedbackForm", "onSave", "formRef", "useRef", "initialValues", "getSnapshot", "FormProvider", "schema", "UserFeedback", "ref", "Slot", "React", "forwardRef", "mx", "StatusBarText", "forwardRef", "classNames", "children", "forwardedRef", "React", "span", "className", "mx", "ref", "StatusBarButton", "asChild", "props", "classes", "Slot", "role", "button", "StatusBarItem", "forwardRef", "classNames", "children", "props", "forwardedRef", "React", "div", "role", "className", "mx", "ref", "StartContent", "EndContent", "StatusBar", "Text", "StatusBarText", "Item", "Button", "StatusBarButton", "React", "useCallback", "useState", "createIntent", "Surface", "useIntentDispatcher", "ObservabilityAction", "Icon", "Popover", "useTranslation", "formatDistance", "React", "useConfig", "Link", "Message", "Popover", "Trans", "useTranslation", "Icon", "repo", "VERSION_REGEX", "VersionNumber", "config", "useConfig", "t", "useTranslation", "STATUS_BAR_PLUGIN", "version", "timestamp", "commitHash", "values", "runtime", "app", "build", "_", "v", "match", "isLabs", "env", "DX_LABS", "releaseUrl", "DX_ENVIRONMENT", "previewUrl", "React", "Popover", "Root", "Trigger", "asChild", "StatusBar", "Button", "classNames", "Portal", "Content", "side", "role", "Message", "valence", "className", "Title", "Icon", "icon", "size", "span", "Body", "br", "Link", "href", "target", "rel", "variant", "div", "p", "released", "formatDistance", "Date", "addSuffix", "Trans", "i18nKey", "components", "dxos", "Arrow", "StatusBarActions", "t", "useTranslation", "STATUS_BAR_PLUGIN", "open", "setOpen", "useState", "dispatchPromise", "dispatch", "useIntentDispatcher", "handleSave", "useCallback", "values", "createIntent", "ObservabilityAction", "CaptureUserFeedback", "React", "Popover", "Root", "onOpenChange", "Trigger", "asChild", "StatusBar", "Button", "data-joyride", "Icon", "icon", "size", "Text", "classNames", "a", "href", "target", "rel", "VersionNumber", "Portal", "Content", "FeedbackForm", "onSave", "Arrow", "StatusBarPanel", "span", "role", "className", "Surface", "React", "Capabilities", "contributes", "createSurface", "defineModule", "definePlugin", "Events", "Surface", "StatusBarPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupReactSurface", "ReactSurface", "createSurface", "role", "component", "React", "StatusBarPanel", "Surface", "StatusBarActions", "STATUS_BAR_PLUGIN", "VersionNumber"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-status-bar/src/
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-status-bar/src/meta.ts":{"bytes":1277,"imports":[],"format":"esm"},"packages/plugins/plugin-status-bar/src/translations.ts":{"bytes":4726,"imports":[{"path":"packages/plugins/plugin-status-bar/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-status-bar/src/components/FeedbackForm.tsx":{"bytes":15619,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-status-bar/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-status-bar/src/translations.ts","kind":"import-statement","original":"../translations"}],"format":"esm"},"packages/plugins/plugin-status-bar/src/components/StatusBar.tsx":{"bytes":7783,"imports":[{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-status-bar/src/components/VersionNumber.tsx":{"bytes":11172,"imports":[{"path":"date-fns/formatDistance","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-status-bar/src/components/StatusBar.tsx","kind":"import-statement","original":"./StatusBar"},{"path":"packages/plugins/plugin-status-bar/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-status-bar/src/components/StatusBarPanel.tsx":{"bytes":8160,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-status-bar/src/components/FeedbackForm.tsx","kind":"import-statement","original":"./FeedbackForm"},{"path":"packages/plugins/plugin-status-bar/src/components/StatusBar.tsx","kind":"import-statement","original":"./StatusBar"},{"path":"packages/plugins/plugin-status-bar/src/components/VersionNumber.tsx","kind":"import-statement","original":"./VersionNumber"},{"path":"packages/plugins/plugin-status-bar/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-status-bar/src/components/index.ts":{"bytes":728,"imports":[{"path":"packages/plugins/plugin-status-bar/src/components/FeedbackForm.tsx","kind":"import-statement","original":"./FeedbackForm"},{"path":"packages/plugins/plugin-status-bar/src/components/StatusBar.tsx","kind":"import-statement","original":"./StatusBar"},{"path":"packages/plugins/plugin-status-bar/src/components/StatusBarPanel.tsx","kind":"import-statement","original":"./StatusBarPanel"}],"format":"esm"},"packages/plugins/plugin-status-bar/src/StatusBarPlugin.tsx":{"bytes":6167,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-status-bar/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-status-bar/src/components/VersionNumber.tsx","kind":"import-statement","original":"./components/VersionNumber"},{"path":"packages/plugins/plugin-status-bar/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-status-bar/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-status-bar/src/index.ts":{"bytes":699,"imports":[{"path":"packages/plugins/plugin-status-bar/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-status-bar/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-status-bar/src/StatusBarPlugin.tsx","kind":"import-statement","original":"./StatusBarPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-status-bar/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":28321},"packages/plugins/plugin-status-bar/dist/lib/browser/index.mjs":{"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"date-fns/formatDistance","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["FeedbackForm","STATUS_BAR_PLUGIN","StatusBar","StatusBarActions","StatusBarPanel","StatusBarPlugin","meta"],"entryPoint":"packages/plugins/plugin-status-bar/src/index.ts","inputs":{"packages/plugins/plugin-status-bar/src/components/FeedbackForm.tsx":{"bytesInOutput":4547},"packages/plugins/plugin-status-bar/src/meta.ts":{"bytesInOutput":202},"packages/plugins/plugin-status-bar/src/translations.ts":{"bytesInOutput":947},"packages/plugins/plugin-status-bar/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-status-bar/src/components/StatusBar.tsx":{"bytesInOutput":1955},"packages/plugins/plugin-status-bar/src/components/StatusBarPanel.tsx":{"bytesInOutput":2319},"packages/plugins/plugin-status-bar/src/components/VersionNumber.tsx":{"bytesInOutput":3247},"packages/plugins/plugin-status-bar/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-status-bar/src/StatusBarPlugin.tsx":{"bytesInOutput":1317}},"bytes":15295}}}
|