@dxos/plugin-status-bar 0.7.5-main.9d26e3a → 0.7.5-main.e9bb01b
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 +149 -63
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +185 -92
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +149 -62
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/StatusBarPlugin.d.ts +1 -3
- package/dist/types/src/StatusBarPlugin.d.ts.map +1 -1
- package/dist/types/src/components/StatusBar.d.ts +10 -24
- package/dist/types/src/components/StatusBar.d.ts.map +1 -1
- package/dist/types/src/components/StatusBarPanel.d.ts +1 -0
- package/dist/types/src/components/StatusBarPanel.d.ts.map +1 -1
- package/dist/types/src/components/VersionNumber.d.ts +3 -0
- package/dist/types/src/components/VersionNumber.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +2 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1 -1
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -24
- package/src/StatusBarPlugin.tsx +39 -18
- package/src/components/StatusBar.stories.tsx +2 -2
- package/src/components/StatusBar.tsx +8 -34
- package/src/components/StatusBarPanel.tsx +35 -26
- package/src/components/VersionNumber.tsx +86 -0
- package/src/index.ts +2 -5
- package/src/meta.ts +1 -1
- package/src/translations.ts +17 -1
- package/dist/lib/browser/chunk-4KDZC7WS.mjs +0 -14
- package/dist/lib/browser/chunk-4KDZC7WS.mjs.map +0 -7
- package/dist/lib/browser/meta.mjs +0 -9
- package/dist/lib/browser/meta.mjs.map +0 -7
- package/dist/lib/node/chunk-OGG3PMIV.cjs +0 -37
- package/dist/lib/node/chunk-OGG3PMIV.cjs.map +0 -7
- package/dist/lib/node/meta.cjs +0 -30
- package/dist/lib/node/meta.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-UVUSU6KS.mjs +0 -16
- package/dist/lib/node-esm/chunk-UVUSU6KS.mjs.map +0 -7
- package/dist/lib/node-esm/meta.mjs +0 -10
- package/dist/lib/node-esm/meta.mjs.map +0 -7
package/dist/lib/node/index.cjs
CHANGED
|
@@ -28,84 +28,82 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var node_exports = {};
|
|
30
30
|
__export(node_exports, {
|
|
31
|
+
STATUS_BAR_PLUGIN: () => STATUS_BAR_PLUGIN,
|
|
31
32
|
StatusBar: () => StatusBar,
|
|
33
|
+
StatusBarActions: () => StatusBarActions,
|
|
32
34
|
StatusBarPanel: () => StatusBarPanel,
|
|
33
35
|
StatusBarPlugin: () => StatusBarPlugin,
|
|
34
|
-
|
|
36
|
+
meta: () => meta
|
|
35
37
|
});
|
|
36
38
|
module.exports = __toCommonJS(node_exports);
|
|
37
|
-
var import_chunk_OGG3PMIV = require("./chunk-OGG3PMIV.cjs");
|
|
38
|
-
var import_react = __toESM(require("react"));
|
|
39
|
-
var import_app_framework = require("@dxos/app-framework");
|
|
40
|
-
var import_react_tabster = require("@fluentui/react-tabster");
|
|
41
39
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
42
|
-
var
|
|
40
|
+
var import_react = __toESM(require("react"));
|
|
43
41
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
44
|
-
var
|
|
45
|
-
var
|
|
42
|
+
var import_react2 = __toESM(require("react"));
|
|
43
|
+
var import_app_framework = require("@dxos/app-framework");
|
|
46
44
|
var import_react_ui = require("@dxos/react-ui");
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
45
|
+
var import_react3 = require("@phosphor-icons/react");
|
|
46
|
+
var import_react4 = __toESM(require("react"));
|
|
47
|
+
var import_app_framework2 = require("@dxos/app-framework");
|
|
50
48
|
var import_types = require("@dxos/plugin-observability/types");
|
|
51
49
|
var import_react_ui2 = require("@dxos/react-ui");
|
|
52
50
|
var import_react_ui_form = require("@dxos/react-ui-form");
|
|
53
51
|
var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
|
54
|
-
var
|
|
52
|
+
var import_formatDistance = require("date-fns/formatDistance");
|
|
53
|
+
var import_react5 = __toESM(require("react"));
|
|
54
|
+
var import_react_client = require("@dxos/react-client");
|
|
55
|
+
var import_react_ui3 = require("@dxos/react-ui");
|
|
56
|
+
var import_react6 = __toESM(require("react"));
|
|
57
|
+
var import_app_framework3 = require("@dxos/app-framework");
|
|
58
|
+
var StatusBarText = /* @__PURE__ */ (0, import_react.forwardRef)(({ classNames, children }, forwardedRef) => /* @__PURE__ */ import_react.default.createElement("span", {
|
|
55
59
|
className: (0, import_react_ui_theme.mx)(classNames),
|
|
56
60
|
ref: forwardedRef
|
|
57
61
|
}, children));
|
|
58
|
-
var StatusBarButton = /* @__PURE__ */ (0,
|
|
59
|
-
const classes = (0, import_react_ui_theme.mx)("flex items-center gap-2 p-1 px-2 rounded-sm", "select-none cursor-pointer
|
|
60
|
-
return asChild ? /* @__PURE__ */
|
|
62
|
+
var StatusBarButton = /* @__PURE__ */ (0, import_react.forwardRef)(({ classNames, children, asChild, ...props }, forwardedRef) => {
|
|
63
|
+
const classes = (0, import_react_ui_theme.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);
|
|
64
|
+
return asChild ? /* @__PURE__ */ import_react.default.createElement(import_react_slot.Slot, {
|
|
61
65
|
role: "button",
|
|
62
66
|
ref: forwardedRef,
|
|
63
67
|
className: classes,
|
|
64
68
|
...props
|
|
65
|
-
}, children) : /* @__PURE__ */
|
|
69
|
+
}, children) : /* @__PURE__ */ import_react.default.createElement("button", {
|
|
66
70
|
className: classes,
|
|
67
71
|
ref: forwardedRef,
|
|
68
72
|
...props
|
|
69
73
|
}, children);
|
|
70
74
|
});
|
|
71
|
-
var StatusBarItem = /* @__PURE__ */ (0,
|
|
75
|
+
var StatusBarItem = /* @__PURE__ */ (0, import_react.forwardRef)(({ classNames, children, ...props }, forwardedRef) => /* @__PURE__ */ import_react.default.createElement("div", {
|
|
72
76
|
role: "menuitem",
|
|
73
|
-
className: (0, import_react_ui_theme.mx)("flex items-center gap-2 p-1 px-2 rounded-sm select-none", classNames),
|
|
77
|
+
className: (0, import_react_ui_theme.mx)("flex items-center justify-center gap-2 p-1 px-2 rounded-sm select-none", classNames),
|
|
74
78
|
ref: forwardedRef,
|
|
75
79
|
...props
|
|
76
80
|
}, children));
|
|
77
|
-
var
|
|
78
|
-
const groupAttrs = (0, import_react_tabster.useFocusableGroup)({
|
|
79
|
-
tabBehavior: "limited"
|
|
80
|
-
});
|
|
81
|
-
return /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
82
|
-
role: "menubar",
|
|
83
|
-
tabIndex: 0,
|
|
84
|
-
...groupAttrs,
|
|
85
|
-
className: (0, import_react_ui_theme.mx)("bs-[--statusbar-size] flex justify-end items-center gap-2 bg-base text-description text-lg pointer-fine:text-xs ch-focus-ring-inset", classNames),
|
|
86
|
-
ref: forwardedRef
|
|
87
|
-
}, children);
|
|
88
|
-
});
|
|
89
|
-
var StartContent = /* @__PURE__ */ (0, import_react2.forwardRef)(({ classNames, children }, forwardedRef) => /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
81
|
+
var StartContent = /* @__PURE__ */ (0, import_react.forwardRef)(({ classNames, children }, forwardedRef) => /* @__PURE__ */ import_react.default.createElement("div", {
|
|
90
82
|
role: "none",
|
|
91
83
|
className: (0, import_react_ui_theme.mx)("flex-grow flex items-center space-x-2", classNames),
|
|
92
84
|
ref: forwardedRef
|
|
93
85
|
}, children));
|
|
94
|
-
var EndContent = /* @__PURE__ */ (0,
|
|
86
|
+
var EndContent = /* @__PURE__ */ (0, import_react.forwardRef)(({ classNames, children }, forwardedRef) => /* @__PURE__ */ import_react.default.createElement("div", {
|
|
95
87
|
role: "none",
|
|
96
88
|
className: (0, import_react_ui_theme.mx)("flex-grow flex items-center justify-end", classNames),
|
|
97
89
|
ref: forwardedRef
|
|
98
90
|
}, children));
|
|
99
91
|
var StatusBar = {
|
|
100
|
-
Container: StatusBarContainer,
|
|
101
92
|
Text: StatusBarText,
|
|
102
93
|
Item: StatusBarItem,
|
|
103
94
|
Button: StatusBarButton,
|
|
104
95
|
StartContent,
|
|
105
96
|
EndContent
|
|
106
97
|
};
|
|
98
|
+
var STATUS_BAR_PLUGIN = "dxos.org/plugin/status-bar";
|
|
99
|
+
var meta = {
|
|
100
|
+
id: STATUS_BAR_PLUGIN,
|
|
101
|
+
name: "Status Bar",
|
|
102
|
+
description: "Display a bar with status and actions.",
|
|
103
|
+
icon: "ph--info--regular"
|
|
104
|
+
};
|
|
107
105
|
var entry = (translation) => ({
|
|
108
|
-
[
|
|
106
|
+
[STATUS_BAR_PLUGIN]: translation
|
|
109
107
|
});
|
|
110
108
|
var mkTranslation = (t) => (key) => t(key);
|
|
111
109
|
var translations = {
|
|
@@ -117,7 +115,15 @@ var translations = {
|
|
|
117
115
|
"email input placeholder": "hello@example.com",
|
|
118
116
|
"feedback text area label": "Feedback",
|
|
119
117
|
"feedback text area placeholder": "Found a bug? Have a suggestion? Let us know!",
|
|
120
|
-
"send feedback label": "Send Feedback"
|
|
118
|
+
"send feedback label": "Send Feedback",
|
|
119
|
+
"warning title": "WARNING",
|
|
120
|
+
"technology preview message": "Composer is still in technology preview.",
|
|
121
|
+
"learn more label": "Learn more",
|
|
122
|
+
"released message": "This version released {{released}}.",
|
|
123
|
+
"see release label": "See release on GitHub",
|
|
124
|
+
"powered by dxos message": "Powered by <dxos>DXOS</dxos>",
|
|
125
|
+
"discord label": "Discord",
|
|
126
|
+
"feedback label": "Feedback"
|
|
121
127
|
})
|
|
122
128
|
};
|
|
123
129
|
var translations_default = [
|
|
@@ -129,11 +135,11 @@ var initialValues = {
|
|
|
129
135
|
message: ""
|
|
130
136
|
};
|
|
131
137
|
var FeedbackForm = ({ onClose }) => {
|
|
132
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
138
|
+
const { t } = (0, import_react_ui2.useTranslation)(STATUS_BAR_PLUGIN);
|
|
133
139
|
const translation = mkTranslation(t);
|
|
134
|
-
const { dispatchPromise: dispatch } = (0,
|
|
135
|
-
const onSave = (0,
|
|
136
|
-
void dispatch((0,
|
|
140
|
+
const { dispatchPromise: dispatch } = (0, import_app_framework2.useIntentDispatcher)();
|
|
141
|
+
const onSave = (0, import_react4.useCallback)((values) => {
|
|
142
|
+
void dispatch((0, import_app_framework2.createIntent)(import_types.ObservabilityAction.CaptureUserFeedback, values));
|
|
137
143
|
onClose();
|
|
138
144
|
}, [
|
|
139
145
|
dispatch,
|
|
@@ -144,119 +150,206 @@ var FeedbackForm = ({ onClose }) => {
|
|
|
144
150
|
schema: import_types.UserFeedback,
|
|
145
151
|
onSave
|
|
146
152
|
});
|
|
147
|
-
return /* @__PURE__ */
|
|
153
|
+
return /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
148
154
|
role: "form",
|
|
149
155
|
className: "p-3 flex flex-col gap-2"
|
|
150
|
-
}, /* @__PURE__ */
|
|
156
|
+
}, /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
151
157
|
role: "none",
|
|
152
158
|
className: "space-b-1"
|
|
153
|
-
}, /* @__PURE__ */
|
|
159
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, {
|
|
154
160
|
validationValence: getStatus("name").status
|
|
155
|
-
}, /* @__PURE__ */
|
|
161
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Label, null, translation("name label")), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.TextInput, {
|
|
156
162
|
classNames: "text-sm",
|
|
157
163
|
placeholder: translation("name placeholder"),
|
|
158
164
|
autoFocus: true,
|
|
159
165
|
...inputProps
|
|
160
|
-
}), /* @__PURE__ */
|
|
166
|
+
}), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.DescriptionAndValidation, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Validation, null, getStatus("name").error)))), /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
161
167
|
role: "none",
|
|
162
168
|
className: "space-b-1"
|
|
163
|
-
}, /* @__PURE__ */
|
|
169
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, {
|
|
164
170
|
validationValence: getStatus("email").status
|
|
165
|
-
}, /* @__PURE__ */
|
|
171
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Label, null, translation("email input label")), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.TextInput, {
|
|
166
172
|
classNames: "text-sm",
|
|
167
173
|
placeholder: translation("email input placeholder"),
|
|
168
174
|
...inputProps
|
|
169
|
-
}), /* @__PURE__ */
|
|
175
|
+
}), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.DescriptionAndValidation, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Validation, null, getStatus("email").error)))), /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
170
176
|
role: "none",
|
|
171
177
|
className: "space-b-1"
|
|
172
|
-
}, /* @__PURE__ */
|
|
178
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, {
|
|
173
179
|
validationValence: getStatus("message").status
|
|
174
|
-
}, /* @__PURE__ */
|
|
180
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Label, null, translation("feedback text area label")), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.TextArea, {
|
|
175
181
|
classNames: "text-sm",
|
|
176
182
|
rows: 5,
|
|
177
183
|
cols: 30,
|
|
178
184
|
placeholder: translation("feedback text area placeholder"),
|
|
179
185
|
...inputProps
|
|
180
|
-
}), /* @__PURE__ */
|
|
186
|
+
}), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.DescriptionAndValidation, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Validation, null, getStatus("message").error)))), /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
181
187
|
role: "none",
|
|
182
188
|
className: "space-b-2"
|
|
183
|
-
}, /* @__PURE__ */
|
|
189
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
|
|
184
190
|
type: "submit",
|
|
185
191
|
variant: "primary",
|
|
186
192
|
classNames: "is-full flex gap-2",
|
|
187
193
|
disabled: !canSave,
|
|
188
194
|
onClick: handleSave
|
|
189
|
-
}, /* @__PURE__ */
|
|
195
|
+
}, /* @__PURE__ */ import_react4.default.createElement("span", null, translation("send feedback label")), /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
190
196
|
className: "grow"
|
|
191
|
-
}), /* @__PURE__ */
|
|
197
|
+
}), /* @__PURE__ */ import_react4.default.createElement(import_react3.PaperPlaneTilt, {
|
|
192
198
|
className: (0, import_react_ui_theme2.getSize)(5)
|
|
193
|
-
})), /* @__PURE__ */
|
|
199
|
+
})), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Popover.Close, {
|
|
194
200
|
asChild: true
|
|
195
|
-
}, /* @__PURE__ */
|
|
201
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
|
|
196
202
|
classNames: "is-full flex gap-2"
|
|
197
|
-
}, /* @__PURE__ */
|
|
203
|
+
}, /* @__PURE__ */ import_react4.default.createElement("span", null, t("cancel label", {
|
|
198
204
|
ns: "os"
|
|
199
|
-
})), /* @__PURE__ */
|
|
205
|
+
})), /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
200
206
|
className: "grow"
|
|
201
|
-
}), /* @__PURE__ */
|
|
207
|
+
}), /* @__PURE__ */ import_react4.default.createElement(import_react3.X, {
|
|
202
208
|
className: (0, import_react_ui_theme2.getSize)(5)
|
|
203
209
|
})))));
|
|
204
210
|
};
|
|
205
|
-
var
|
|
206
|
-
|
|
207
|
-
|
|
211
|
+
var repo = "https://github.com/dxos/dxos";
|
|
212
|
+
var VERSION_REGEX = /([\d.]+)/;
|
|
213
|
+
var VersionNumber = () => {
|
|
214
|
+
const config = (0, import_react_client.useConfig)();
|
|
215
|
+
const { t } = (0, import_react_ui3.useTranslation)(STATUS_BAR_PLUGIN);
|
|
216
|
+
const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};
|
|
217
|
+
const [_, v] = version?.match(VERSION_REGEX) ?? [];
|
|
218
|
+
const releaseUrl = config.values.runtime?.app?.env?.DX_ENVIRONMENT === "production" ? `${repo}/releases/tag/v${version}` : `${repo}/commit/${commitHash}`;
|
|
219
|
+
const previewUrl = "https://docs.dxos.org/composer#technology-preview";
|
|
220
|
+
return /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Popover.Root, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Popover.Trigger, {
|
|
221
|
+
asChild: true
|
|
222
|
+
}, /* @__PURE__ */ import_react5.default.createElement(StatusBar.Button, {
|
|
223
|
+
classNames: "text-xs"
|
|
224
|
+
}, "v", v)), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Popover.Portal, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Popover.Content, {
|
|
225
|
+
side: "top",
|
|
226
|
+
role: "message",
|
|
227
|
+
classNames: "z-[12] bg-warning-500 max-is-[min(calc(100vw-16px),40ch)]"
|
|
228
|
+
}, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Message.Root, {
|
|
229
|
+
valence: "warning",
|
|
230
|
+
className: "rounded-be-none p-5"
|
|
231
|
+
}, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Message.Title, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Icon, {
|
|
232
|
+
icon: "ph--warning--duotone",
|
|
233
|
+
size: 6,
|
|
234
|
+
classNames: "inline mie-2"
|
|
235
|
+
}), /* @__PURE__ */ import_react5.default.createElement("span", null, t("warning title"))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Message.Body, null, t("technology preview message"), /* @__PURE__ */ import_react5.default.createElement("br", null), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Link, {
|
|
236
|
+
href: previewUrl,
|
|
237
|
+
target: "_blank",
|
|
238
|
+
rel: "noreferrer",
|
|
239
|
+
variant: "neutral"
|
|
240
|
+
}, t("learn more label"), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Icon, {
|
|
241
|
+
icon: "ph--arrow-square-out--bold",
|
|
242
|
+
classNames: "inline mis-1"
|
|
243
|
+
})))), /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
244
|
+
role: "none",
|
|
245
|
+
className: "plb-4 pli-5 space-b-2 text-baseText"
|
|
246
|
+
}, timestamp && /* @__PURE__ */ import_react5.default.createElement("p", null, t("released message", {
|
|
247
|
+
released: (0, import_formatDistance.formatDistance)(new Date(timestamp), /* @__PURE__ */ new Date(), {
|
|
248
|
+
addSuffix: true
|
|
249
|
+
})
|
|
250
|
+
}), /* @__PURE__ */ import_react5.default.createElement("br", null), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Link, {
|
|
251
|
+
href: releaseUrl,
|
|
252
|
+
target: "_blank",
|
|
253
|
+
rel: "noreferrer",
|
|
254
|
+
variant: "neutral"
|
|
255
|
+
}, t("see release label"), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Icon, {
|
|
256
|
+
icon: "ph--arrow-square-out--bold",
|
|
257
|
+
classNames: "inline mis-1"
|
|
258
|
+
}))), /* @__PURE__ */ import_react5.default.createElement("p", null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Trans, {
|
|
259
|
+
t,
|
|
260
|
+
i18nKey: "powered by dxos message",
|
|
261
|
+
components: {
|
|
262
|
+
dxos: /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Link, {
|
|
263
|
+
href: "https://dxos.org",
|
|
264
|
+
target: "_blank",
|
|
265
|
+
rel: "noreferrer",
|
|
266
|
+
variant: "neutral"
|
|
267
|
+
})
|
|
268
|
+
}
|
|
269
|
+
}))), /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Popover.Arrow, null))));
|
|
270
|
+
};
|
|
271
|
+
var StatusBarActions = () => {
|
|
272
|
+
const { t } = (0, import_react_ui.useTranslation)(STATUS_BAR_PLUGIN);
|
|
273
|
+
const [open, setOpen] = (0, import_react2.useState)(false);
|
|
274
|
+
return /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Root, {
|
|
208
275
|
open,
|
|
209
276
|
onOpenChange: setOpen
|
|
210
|
-
}, /* @__PURE__ */
|
|
211
|
-
role: "status"
|
|
212
|
-
}), /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Popover.Trigger, {
|
|
277
|
+
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Trigger, {
|
|
213
278
|
asChild: true
|
|
214
|
-
}, /* @__PURE__ */
|
|
215
|
-
"aria-label": "Give feedback about composer",
|
|
279
|
+
}, /* @__PURE__ */ import_react2.default.createElement(StatusBar.Button, {
|
|
216
280
|
"data-joyride": "welcome/feedback"
|
|
217
|
-
}, /* @__PURE__ */
|
|
281
|
+
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Icon, {
|
|
218
282
|
icon: "ph--paper-plane-tilt--regular",
|
|
219
283
|
size: 4
|
|
220
|
-
}), /* @__PURE__ */
|
|
284
|
+
}), /* @__PURE__ */ import_react2.default.createElement(StatusBar.Text, {
|
|
221
285
|
classNames: "hidden sm:block"
|
|
222
|
-
}, "
|
|
223
|
-
"aria-label": "Open DXOS Discord",
|
|
286
|
+
}, t("feedback label")))), /* @__PURE__ */ import_react2.default.createElement(StatusBar.Button, {
|
|
224
287
|
asChild: true
|
|
225
|
-
}, /* @__PURE__ */
|
|
288
|
+
}, /* @__PURE__ */ import_react2.default.createElement("a", {
|
|
226
289
|
href: "https://dxos.org/discord",
|
|
227
290
|
target: "_blank",
|
|
228
291
|
rel: "noopener noreferrer"
|
|
229
|
-
}, /* @__PURE__ */
|
|
292
|
+
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Icon, {
|
|
230
293
|
icon: "ph--discord-logo--regular",
|
|
231
294
|
size: 4
|
|
232
|
-
}), /* @__PURE__ */
|
|
295
|
+
}), /* @__PURE__ */ import_react2.default.createElement(StatusBar.Text, {
|
|
233
296
|
classNames: "hidden sm:block"
|
|
234
|
-
}, "
|
|
297
|
+
}, t("discord label")))), /* @__PURE__ */ import_react2.default.createElement(VersionNumber, null), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Portal, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Content, {
|
|
235
298
|
classNames: "shadow-lg"
|
|
236
|
-
}, /* @__PURE__ */
|
|
299
|
+
}, /* @__PURE__ */ import_react2.default.createElement(FeedbackForm, {
|
|
237
300
|
onClose: () => setOpen(false)
|
|
238
|
-
}), /* @__PURE__ */
|
|
301
|
+
}), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Arrow, null))));
|
|
239
302
|
};
|
|
240
|
-
var
|
|
241
|
-
return {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
id: import_chunk_OGG3PMIV.meta_default.id,
|
|
248
|
-
role: "status-bar",
|
|
249
|
-
component: () => /* @__PURE__ */ import_react.default.createElement(StatusBarPanel, null)
|
|
250
|
-
})
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
};
|
|
303
|
+
var StatusBarPanel = () => {
|
|
304
|
+
return /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement(StatusBarActions, null), /* @__PURE__ */ import_react2.default.createElement("span", {
|
|
305
|
+
role: "separator",
|
|
306
|
+
className: "grow"
|
|
307
|
+
}), /* @__PURE__ */ import_react2.default.createElement(import_app_framework.Surface, {
|
|
308
|
+
role: "status"
|
|
309
|
+
}));
|
|
254
310
|
};
|
|
255
|
-
var
|
|
311
|
+
var StatusBarPlugin = () => (0, import_app_framework3.definePlugin)(meta, [
|
|
312
|
+
(0, import_app_framework3.defineModule)({
|
|
313
|
+
id: `${meta.id}/module/translations`,
|
|
314
|
+
activatesOn: import_app_framework3.Events.SetupTranslations,
|
|
315
|
+
activate: () => (0, import_app_framework3.contributes)(import_app_framework3.Capabilities.Translations, translations_default)
|
|
316
|
+
}),
|
|
317
|
+
(0, import_app_framework3.defineModule)({
|
|
318
|
+
id: `${meta.id}/module/react-surface`,
|
|
319
|
+
activatesOn: import_app_framework3.Events.SetupSurfaces,
|
|
320
|
+
activate: () => (0, import_app_framework3.contributes)(import_app_framework3.Capabilities.ReactSurface, [
|
|
321
|
+
(0, import_app_framework3.createSurface)({
|
|
322
|
+
id: meta.id,
|
|
323
|
+
role: "status-bar",
|
|
324
|
+
component: () => /* @__PURE__ */ import_react6.default.createElement(StatusBarPanel, null)
|
|
325
|
+
}),
|
|
326
|
+
(0, import_app_framework3.createSurface)({
|
|
327
|
+
id: meta.id,
|
|
328
|
+
role: "status-bar--r0-footer",
|
|
329
|
+
component: () => /* @__PURE__ */ import_react6.default.createElement(import_app_framework3.Surface, {
|
|
330
|
+
role: "status"
|
|
331
|
+
})
|
|
332
|
+
}),
|
|
333
|
+
(0, import_app_framework3.createSurface)({
|
|
334
|
+
id: meta.id,
|
|
335
|
+
role: "status-bar--r1-footer",
|
|
336
|
+
component: () => /* @__PURE__ */ import_react6.default.createElement(StatusBarActions, null)
|
|
337
|
+
}),
|
|
338
|
+
(0, import_app_framework3.createSurface)({
|
|
339
|
+
id: `${STATUS_BAR_PLUGIN}/header-end`,
|
|
340
|
+
role: "header-end",
|
|
341
|
+
component: () => /* @__PURE__ */ import_react6.default.createElement(VersionNumber, null)
|
|
342
|
+
})
|
|
343
|
+
])
|
|
344
|
+
})
|
|
345
|
+
]);
|
|
256
346
|
// Annotate the CommonJS export names for ESM import in node:
|
|
257
347
|
0 && (module.exports = {
|
|
348
|
+
STATUS_BAR_PLUGIN,
|
|
258
349
|
StatusBar,
|
|
350
|
+
StatusBarActions,
|
|
259
351
|
StatusBarPanel,
|
|
260
|
-
StatusBarPlugin
|
|
352
|
+
StatusBarPlugin,
|
|
353
|
+
meta
|
|
261
354
|
});
|
|
262
355
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport {\n createSurface,\n type PluginDefinition,\n type SurfaceProvides,\n type TranslationsProvides,\n} from '@dxos/app-framework';\n\nimport { StatusBarPanel } from './components';\nimport meta from './meta';\nimport translations from './translations';\n\nexport type StatusBarPluginProvides = SurfaceProvides & TranslationsProvides;\n\nexport const StatusBarPlugin = (): PluginDefinition<StatusBarPluginProvides> => {\n return {\n meta,\n provides: {\n translations,\n surface: {\n definitions: () =>\n createSurface({\n id: meta.id,\n role: 'status-bar',\n component: () => <StatusBarPanel />,\n }),\n },\n },\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { Slot } from '@radix-ui/react-slot';\nimport React, { forwardRef, type HTMLAttributes, 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<{ children: ReactNode; asChild?: boolean }> &\n HTMLAttributes<HTMLButtonElement>;\n\nconst StatusBarButton = forwardRef<HTMLButtonElement, StatusBarButtonProps>(\n ({ classNames, children, asChild, ...props }, forwardedRef) => {\n const classes = mx(\n 'flex items-center gap-2 p-1 px-2 rounded-sm',\n 'select-none cursor-pointer ch-focus-ring',\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<{ children: ReactNode }> & HTMLAttributes<HTMLDivElement>;\n\nconst StatusBarItem = forwardRef<HTMLDivElement, StatusBarItemProps>(\n ({ classNames, children, ...props }, forwardedRef) => (\n <div\n role='menuitem'\n className={mx('flex items-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 StatusBarContainerProps = ThemedClassName<{ children: ReactNode }>;\n\n// TODO(zan): tabable group with tabster.\nconst StatusBarContainer = forwardRef<HTMLDivElement, StatusBarContainerProps>(\n ({ classNames, children }, forwardedRef) => {\n const groupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n return (\n <div\n role='menubar'\n tabIndex={0}\n {...groupAttrs}\n className={mx(\n 'bs-[--statusbar-size] flex justify-end items-center gap-2 bg-base text-description text-lg pointer-fine:text-xs ch-focus-ring-inset',\n classNames,\n )}\n ref={forwardedRef}\n >\n {children}\n </div>\n );\n },\n);\n\ntype StartContentProps = ThemedClassName<{ children: ReactNode }>;\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<{ children: ReactNode }>;\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 Container: StatusBarContainer,\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 } from '@dxos/react-ui';\n\nimport { FeedbackForm } from './FeedbackForm';\nimport { StatusBar } from './StatusBar';\n\nexport const StatusBarPanel = () => {\n const [open, setOpen] = useState(false);\n\n // TODO(wittjosiah): Factor out feedback and discord buttons.\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <StatusBar.Container>\n <StatusBar.EndContent>\n <Surface role='status' />\n <Popover.Trigger asChild>\n <StatusBar.Button aria-label='Give feedback about composer' data-joyride='welcome/feedback'>\n <Icon icon='ph--paper-plane-tilt--regular' size={4} />\n <StatusBar.Text classNames='hidden sm:block'>Feedback</StatusBar.Text>\n </StatusBar.Button>\n </Popover.Trigger>\n {/* TODO(zan): Configure this label? */}\n <StatusBar.Button aria-label='Open DXOS Discord' 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'>Discord</StatusBar.Text>\n </a>\n </StatusBar.Button>\n </StatusBar.EndContent>\n </StatusBar.Container>\n <Popover.Content classNames='shadow-lg'>\n <FeedbackForm onClose={() => setOpen(false)} />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Root>\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 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\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': 'Found a bug? Have a suggestion? Let us know!',\n 'send feedback label': 'Send Feedback',\n }),\n};\n\nexport default [translations];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { StatusBarPlugin } from './StatusBarPlugin';\n\nexport default StatusBarPlugin;\n\nexport * from './StatusBarPlugin';\nexport * from './components';\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["import_react", "import_app_framework", "import_react_ui", "import_react_ui_theme", "StatusBarText", "forwardRef", "classNames", "children", "forwardedRef", "React", "span", "className", "mx", "ref", "StatusBarButton", "asChild", "props", "classes", "Slot", "role", "button", "StatusBarItem", "div", "
|
|
3
|
+
"sources": ["../../../src/components/StatusBar.tsx", "../../../src/components/StatusBarPanel.tsx", "../../../src/components/FeedbackForm.tsx", "../../../src/meta.ts", "../../../src/translations.ts", "../../../src/components/VersionNumber.tsx", "../../../src/StatusBarPlugin.tsx"],
|
|
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': 'Found a bug? Have a suggestion? Let us know!',\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.SetupSurfaces,\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": "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",
|
|
6
|
+
"names": ["import_react", "import_app_framework", "import_react_ui", "import_react_ui_theme", "StatusBarText", "forwardRef", "classNames", "children", "forwardedRef", "React", "span", "className", "mx", "ref", "StatusBarButton", "asChild", "props", "classes", "Slot", "role", "button", "StatusBarItem", "div", "StartContent", "EndContent", "StatusBar", "Text", "Item", "Button", "STATUS_BAR_PLUGIN", "meta", "id", "name", "description", "icon", "entry", "translation", "mkTranslation", "t", "key", "translations", "initialValues", "email", "message", "FeedbackForm", "onClose", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "onSave", "useCallback", "values", "createIntent", "ObservabilityAction", "CaptureUserFeedback", "handleSave", "canSave", "getStatus", "inputProps", "useForm", "schema", "UserFeedback", "Input", "Root", "validationValence", "status", "Label", "TextInput", "placeholder", "autoFocus", "DescriptionAndValidation", "Validation", "error", "TextArea", "rows", "cols", "type", "variant", "disabled", "onClick", "PaperPlaneTilt", "getSize", "Popover", "Close", "ns", "X", "repo", "VERSION_REGEX", "VersionNumber", "config", "useConfig", "version", "timestamp", "commitHash", "runtime", "app", "build", "_", "v", "match", "releaseUrl", "env", "DX_ENVIRONMENT", "previewUrl", "Trigger", "Portal", "Content", "side", "Message", "valence", "Title", "Icon", "size", "Body", "br", "Link", "href", "target", "rel", "p", "released", "formatDistance", "Date", "addSuffix", "Trans", "i18nKey", "components", "dxos", "Arrow", "StatusBarActions", "open", "setOpen", "useState", "onOpenChange", "data-joyride", "a", "StatusBarPanel", "Surface", "StatusBarPlugin", "definePlugin", "defineModule", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "SetupSurfaces", "ReactSurface", "createSurface", "component"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-status-bar/src/components/StatusBar.tsx":{"bytes":
|
|
1
|
+
{"inputs":{"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/meta.ts":{"bytes":1289,"imports":[],"format":"esm"},"packages/plugins/plugin-status-bar/src/translations.ts":{"bytes":4755,"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":13476,"imports":[{"path":"@phosphor-icons/react","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":"@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/VersionNumber.tsx":{"bytes":10881,"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":6757,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","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":624,"imports":[{"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":6151,"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/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":26403},"packages/plugins/plugin-status-bar/dist/lib/node/index.cjs":{"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},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","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":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","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":["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/StatusBar.tsx":{"bytesInOutput":1948},"packages/plugins/plugin-status-bar/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-status-bar/src/components/StatusBarPanel.tsx":{"bytesInOutput":1972},"packages/plugins/plugin-status-bar/src/components/FeedbackForm.tsx":{"bytesInOutput":3972},"packages/plugins/plugin-status-bar/src/meta.ts":{"bytesInOutput":202},"packages/plugins/plugin-status-bar/src/translations.ts":{"bytesInOutput":960},"packages/plugins/plugin-status-bar/src/components/VersionNumber.tsx":{"bytesInOutput":3174},"packages/plugins/plugin-status-bar/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-status-bar/src/StatusBarPlugin.tsx":{"bytesInOutput":1313}},"bytes":14286}}}
|