@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.
Files changed (45) hide show
  1. package/dist/lib/browser/index.mjs +149 -63
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +185 -92
  5. package/dist/lib/node/index.cjs.map +4 -4
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/lib/node-esm/index.mjs +149 -62
  8. package/dist/lib/node-esm/index.mjs.map +4 -4
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/types/src/StatusBarPlugin.d.ts +1 -3
  11. package/dist/types/src/StatusBarPlugin.d.ts.map +1 -1
  12. package/dist/types/src/components/StatusBar.d.ts +10 -24
  13. package/dist/types/src/components/StatusBar.d.ts.map +1 -1
  14. package/dist/types/src/components/StatusBarPanel.d.ts +1 -0
  15. package/dist/types/src/components/StatusBarPanel.d.ts.map +1 -1
  16. package/dist/types/src/components/VersionNumber.d.ts +3 -0
  17. package/dist/types/src/components/VersionNumber.d.ts.map +1 -0
  18. package/dist/types/src/index.d.ts +2 -3
  19. package/dist/types/src/index.d.ts.map +1 -1
  20. package/dist/types/src/meta.d.ts +1 -2
  21. package/dist/types/src/meta.d.ts.map +1 -1
  22. package/dist/types/src/translations.d.ts +1 -1
  23. package/dist/types/src/translations.d.ts.map +1 -1
  24. package/dist/types/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +17 -24
  26. package/src/StatusBarPlugin.tsx +39 -18
  27. package/src/components/StatusBar.stories.tsx +2 -2
  28. package/src/components/StatusBar.tsx +8 -34
  29. package/src/components/StatusBarPanel.tsx +35 -26
  30. package/src/components/VersionNumber.tsx +86 -0
  31. package/src/index.ts +2 -5
  32. package/src/meta.ts +1 -1
  33. package/src/translations.ts +17 -1
  34. package/dist/lib/browser/chunk-4KDZC7WS.mjs +0 -14
  35. package/dist/lib/browser/chunk-4KDZC7WS.mjs.map +0 -7
  36. package/dist/lib/browser/meta.mjs +0 -9
  37. package/dist/lib/browser/meta.mjs.map +0 -7
  38. package/dist/lib/node/chunk-OGG3PMIV.cjs +0 -37
  39. package/dist/lib/node/chunk-OGG3PMIV.cjs.map +0 -7
  40. package/dist/lib/node/meta.cjs +0 -30
  41. package/dist/lib/node/meta.cjs.map +0 -7
  42. package/dist/lib/node-esm/chunk-UVUSU6KS.mjs +0 -16
  43. package/dist/lib/node-esm/chunk-UVUSU6KS.mjs.map +0 -7
  44. package/dist/lib/node-esm/meta.mjs +0 -10
  45. package/dist/lib/node-esm/meta.mjs.map +0 -7
@@ -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
- default: () => src_default
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 import_react2 = __toESM(require("react"));
40
+ var import_react = __toESM(require("react"));
43
41
  var import_react_ui_theme = require("@dxos/react-ui-theme");
44
- var import_react3 = __toESM(require("react"));
45
- var import_app_framework2 = require("@dxos/app-framework");
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 import_react4 = require("@phosphor-icons/react");
48
- var import_react5 = __toESM(require("react"));
49
- var import_app_framework3 = require("@dxos/app-framework");
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 StatusBarText = /* @__PURE__ */ (0, import_react2.forwardRef)(({ classNames, children }, forwardedRef) => /* @__PURE__ */ import_react2.default.createElement("span", {
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, import_react2.forwardRef)(({ classNames, children, asChild, ...props }, forwardedRef) => {
59
- const classes = (0, import_react_ui_theme.mx)("flex items-center gap-2 p-1 px-2 rounded-sm", "select-none cursor-pointer ch-focus-ring", "hover:bg-neutral-75 active:bg-neutral-150 dark:hover:bg-neutral-750 dark:active:bg-neutral-700", classNames);
60
- return asChild ? /* @__PURE__ */ import_react2.default.createElement(import_react_slot.Slot, {
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__ */ import_react2.default.createElement("button", {
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, import_react2.forwardRef)(({ classNames, children, ...props }, forwardedRef) => /* @__PURE__ */ import_react2.default.createElement("div", {
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 StatusBarContainer = /* @__PURE__ */ (0, import_react2.forwardRef)(({ classNames, children }, forwardedRef) => {
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, import_react2.forwardRef)(({ classNames, children }, forwardedRef) => /* @__PURE__ */ import_react2.default.createElement("div", {
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
- [import_chunk_OGG3PMIV.STATUS_BAR_PLUGIN]: translation
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)(import_chunk_OGG3PMIV.STATUS_BAR_PLUGIN);
138
+ const { t } = (0, import_react_ui2.useTranslation)(STATUS_BAR_PLUGIN);
133
139
  const translation = mkTranslation(t);
134
- const { dispatchPromise: dispatch } = (0, import_app_framework3.useIntentDispatcher)();
135
- const onSave = (0, import_react5.useCallback)((values) => {
136
- void dispatch((0, import_app_framework3.createIntent)(import_types.ObservabilityAction.CaptureUserFeedback, values));
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__ */ import_react5.default.createElement("div", {
153
+ return /* @__PURE__ */ import_react4.default.createElement("div", {
148
154
  role: "form",
149
155
  className: "p-3 flex flex-col gap-2"
150
- }, /* @__PURE__ */ import_react5.default.createElement("div", {
156
+ }, /* @__PURE__ */ import_react4.default.createElement("div", {
151
157
  role: "none",
152
158
  className: "space-b-1"
153
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.Root, {
159
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, {
154
160
  validationValence: getStatus("name").status
155
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.Label, null, translation("name label")), /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.TextInput, {
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__ */ import_react5.default.createElement(import_react_ui2.Input.DescriptionAndValidation, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.Validation, null, getStatus("name").error)))), /* @__PURE__ */ import_react5.default.createElement("div", {
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__ */ import_react5.default.createElement(import_react_ui2.Input.Root, {
169
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, {
164
170
  validationValence: getStatus("email").status
165
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.Label, null, translation("email input label")), /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.TextInput, {
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__ */ import_react5.default.createElement(import_react_ui2.Input.DescriptionAndValidation, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.Validation, null, getStatus("email").error)))), /* @__PURE__ */ import_react5.default.createElement("div", {
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__ */ import_react5.default.createElement(import_react_ui2.Input.Root, {
178
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, {
173
179
  validationValence: getStatus("message").status
174
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.Label, null, translation("feedback text area label")), /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.TextArea, {
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__ */ import_react5.default.createElement(import_react_ui2.Input.DescriptionAndValidation, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Input.Validation, null, getStatus("message").error)))), /* @__PURE__ */ import_react5.default.createElement("div", {
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__ */ import_react5.default.createElement(import_react_ui2.Button, {
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__ */ import_react5.default.createElement("span", null, translation("send feedback label")), /* @__PURE__ */ import_react5.default.createElement("div", {
195
+ }, /* @__PURE__ */ import_react4.default.createElement("span", null, translation("send feedback label")), /* @__PURE__ */ import_react4.default.createElement("div", {
190
196
  className: "grow"
191
- }), /* @__PURE__ */ import_react5.default.createElement(import_react4.PaperPlaneTilt, {
197
+ }), /* @__PURE__ */ import_react4.default.createElement(import_react3.PaperPlaneTilt, {
192
198
  className: (0, import_react_ui_theme2.getSize)(5)
193
- })), /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Popover.Close, {
199
+ })), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Popover.Close, {
194
200
  asChild: true
195
- }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui2.Button, {
201
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
196
202
  classNames: "is-full flex gap-2"
197
- }, /* @__PURE__ */ import_react5.default.createElement("span", null, t("cancel label", {
203
+ }, /* @__PURE__ */ import_react4.default.createElement("span", null, t("cancel label", {
198
204
  ns: "os"
199
- })), /* @__PURE__ */ import_react5.default.createElement("div", {
205
+ })), /* @__PURE__ */ import_react4.default.createElement("div", {
200
206
  className: "grow"
201
- }), /* @__PURE__ */ import_react5.default.createElement(import_react4.X, {
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 StatusBarPanel = () => {
206
- const [open, setOpen] = (0, import_react3.useState)(false);
207
- return /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Popover.Root, {
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__ */ import_react3.default.createElement(StatusBar.Container, null, /* @__PURE__ */ import_react3.default.createElement(StatusBar.EndContent, null, /* @__PURE__ */ import_react3.default.createElement(import_app_framework2.Surface, {
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__ */ import_react3.default.createElement(StatusBar.Button, {
215
- "aria-label": "Give feedback about composer",
279
+ }, /* @__PURE__ */ import_react2.default.createElement(StatusBar.Button, {
216
280
  "data-joyride": "welcome/feedback"
217
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Icon, {
281
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Icon, {
218
282
  icon: "ph--paper-plane-tilt--regular",
219
283
  size: 4
220
- }), /* @__PURE__ */ import_react3.default.createElement(StatusBar.Text, {
284
+ }), /* @__PURE__ */ import_react2.default.createElement(StatusBar.Text, {
221
285
  classNames: "hidden sm:block"
222
- }, "Feedback"))), /* @__PURE__ */ import_react3.default.createElement(StatusBar.Button, {
223
- "aria-label": "Open DXOS Discord",
286
+ }, t("feedback label")))), /* @__PURE__ */ import_react2.default.createElement(StatusBar.Button, {
224
287
  asChild: true
225
- }, /* @__PURE__ */ import_react3.default.createElement("a", {
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__ */ import_react3.default.createElement(import_react_ui.Icon, {
292
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Icon, {
230
293
  icon: "ph--discord-logo--regular",
231
294
  size: 4
232
- }), /* @__PURE__ */ import_react3.default.createElement(StatusBar.Text, {
295
+ }), /* @__PURE__ */ import_react2.default.createElement(StatusBar.Text, {
233
296
  classNames: "hidden sm:block"
234
- }, "Discord"))))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Popover.Content, {
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__ */ import_react3.default.createElement(FeedbackForm, {
299
+ }, /* @__PURE__ */ import_react2.default.createElement(FeedbackForm, {
237
300
  onClose: () => setOpen(false)
238
- }), /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Popover.Arrow, null)));
301
+ }), /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Popover.Arrow, null))));
239
302
  };
240
- var StatusBarPlugin = () => {
241
- return {
242
- meta: import_chunk_OGG3PMIV.meta_default,
243
- provides: {
244
- translations: translations_default,
245
- surface: {
246
- definitions: () => (0, import_app_framework.createSurface)({
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 src_default = StatusBarPlugin;
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/StatusBarPlugin.tsx", "../../../src/components/StatusBar.tsx", "../../../src/components/StatusBarPanel.tsx", "../../../src/components/FeedbackForm.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
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": "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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", "StatusBarContainer", "groupAttrs", "useFocusableGroup", "tabBehavior", "tabIndex", "StartContent", "EndContent", "StatusBar", "Container", "Text", "Item", "Button", "entry", "translation", "STATUS_BAR_PLUGIN", "mkTranslation", "t", "key", "translations", "initialValues", "name", "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", "StatusBarPanel", "open", "setOpen", "useState", "onOpenChange", "Surface", "Trigger", "aria-label", "data-joyride", "Icon", "icon", "size", "a", "href", "target", "rel", "Content", "Arrow", "StatusBarPlugin", "meta", "provides", "surface", "definitions", "createSurface", "id", "component"]
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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,wBAAqB;AACrB,mBAAsG;AAGtG,4BAAmB;ACJnB,IAAAA,gBAAgC;AAEhC,2BAAwB;AACxB,sBAA8C;ACH9C,IAAAA,gBAAkC;AAClC,IAAAA,gBAAmC;AAEnC,IAAAC,wBAAkD;AAClD,mBAAkD;AAClD,IAAAC,mBAAuD;AACvD,2BAAwB;AACxB,IAAAC,yBAAwB;AGPxB,4BAA+B;AAC/B,IAAAH,gBAAkB;AAElB,0BAA0B;AAC1B,IAAAE,mBAAoE;ACJpE,IAAAF,gBAAkB;AAElB,IAAAC,wBAQO;ANFP,IAAMG,gBAAgBC,6CAAgD,CAAC,EAAEC,YAAYC,SAAQ,GAAIC,iBAC/F,6BAAAC,QAAA,cAACC,QAAAA;EAAKC,eAAWC,0BAAGN,UAAAA;EAAaO,KAAKL;GACnCD,QAAAA,CAAAA;AAML,IAAMO,kBAAkBT,6CACtB,CAAC,EAAEC,YAAYC,UAAUQ,SAAS,GAAGC,MAAAA,GAASR,iBAAAA;AAC5C,QAAMS,cAAUL,0BACd,8DACA,qEACA,kGACAN,UAAAA;AAGF,SAAOS,UACL,6BAAAN,QAAA,cAACS,wBAAAA;IAAKC,MAAK;IAASN,KAAKL;IAAcG,WAAWM;IAAU,GAAGD;KAC5DT,QAAAA,IAGH,6BAAAE,QAAA,cAACW,UAAAA;IAAOT,WAAWM;IAASJ,KAAKL;IAAe,GAAGQ;KAChDT,QAAAA;AAGP,CAAA;AAOF,IAAMc,gBAAgBhB,6CACpB,CAAC,EAAEC,YAAYC,UAAU,GAAGS,MAAAA,GAASR,iBACnC,6BAAAC,QAAA,cAACa,OAAAA;EACCH,MAAK;EACLR,eAAWC,0BAAG,0EAA0EN,UAAAA;EACxFO,KAAKL;EACJ,GAAGQ;GAEHT,QAAAA,CAAAA;AAOP,IAAMgB,eAAelB,6CAA8C,CAAC,EAAEC,YAAYC,SAAQ,GAAIC,iBAC5F,6BAAAC,QAAA,cAACa,OAAAA;EAAIH,MAAK;EAAOR,eAAWC,0BAAG,yCAAyCN,UAAAA;EAAaO,KAAKL;GACvFD,QAAAA,CAAAA;AAML,IAAMiB,aAAanB,6CAA4C,CAAC,EAAEC,YAAYC,SAAQ,GAAIC,iBACxF,6BAAAC,QAAA,cAACa,OAAAA;EAAIH,MAAK;EAAOR,eAAWC,0BAAG,2CAA2CN,UAAAA;EAAaO,KAAKL;GACzFD,QAAAA,CAAAA;AAIE,IAAMkB,YAAY;EACvBC,MAAMtB;EACNuB,MAAMN;EACNO,QAAQd;EACRS;EACAC;AACF;AG1EO,IAAMK,oBAAoB;AAE1B,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,aAAa;EACbC,MAAM;AACR;ACkBA,IAAMC,QAAQ,CAACC,iBAAwD;EAAE,CAACP,iBAAAA,GAAoBO;AAAY;AACnG,IAAMC,gBAAgB,CAACC,MAA8C,CAACC,QAAkCD,EAAEC,GAAAA;AAEjH,IAAMC,eAAmD;EACvD,SAASL,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;EAACK;;AFvChB,IAAMC,gBAA8B;EAAET,MAAM;EAAIU,OAAO;EAAIC,SAAS;AAAG;AAEhE,IAAMC,eAAe,CAAC,EAAEC,QAAO,MAA2B;AAC/D,QAAM,EAAEP,EAAC,QAAKQ,iCAAejB,iBAAAA;AAC7B,QAAMO,cAAcC,cAAcC,CAAAA;AAClC,QAAM,EAAES,iBAAiBC,SAAQ,QAAKC,2CAAAA;AAEtC,QAAMC,aAASC,2BACb,CAACC,WAAAA;AACC,SAAKJ,aAASK,oCAAaC,iCAAoBC,qBAAqBH,MAAAA,CAAAA;AACpEP,YAAAA;EACF,GACA;IAACG;IAAUH;GAAQ;AAGrB,QAAM,EAAEW,YAAYC,SAASC,WAAW,GAAGC,WAAAA,QAAeC,8BAAsB;IAC9EnB;IACAoB,QAAQC;IACRZ;EACF,CAAA;AAEA,SACEzC,8BAAAA,QAAA,cAACa,OAAAA;IAAIH,MAAK;IAAOR,WAAU;KACzBF,8BAAAA,QAAA,cAACa,OAAAA;IAAIH,MAAK;IAAOR,WAAU;KACzBF,8BAAAA,QAAA,cAACsD,uBAAMC,MAAI;IAACC,mBAAmBP,UAAU,MAAA,EAAQQ;KAC/CzD,8BAAAA,QAAA,cAACsD,uBAAMI,OAAK,MAAE/B,YAAY,YAAA,CAAA,GAC1B3B,8BAAAA,QAAA,cAACsD,uBAAMK,WAAS;IACd9D,YAAY;IACZ+D,aAAajC,YAAY,kBAAA;IACzBkC,WAAAA;IACC,GAAGX;MAENlD,8BAAAA,QAAA,cAACsD,uBAAMQ,0BAAwB,MAC7B9D,8BAAAA,QAAA,cAACsD,uBAAMS,YAAU,MAAEd,UAAU,MAAA,EAAQe,KAAK,CAAA,CAAA,CAAA,GAKhDhE,8BAAAA,QAAA,cAACa,OAAAA;IAAIH,MAAK;IAAOR,WAAU;KACzBF,8BAAAA,QAAA,cAACsD,uBAAMC,MAAI;IAACC,mBAAmBP,UAAU,OAAA,EAASQ;KAChDzD,8BAAAA,QAAA,cAACsD,uBAAMI,OAAK,MAAE/B,YAAY,mBAAA,CAAA,GAC1B3B,8BAAAA,QAAA,cAACsD,uBAAMK,WAAS;IACd9D,YAAY;IACZ+D,aAAajC,YAAY,yBAAA;IACxB,GAAGuB;MAENlD,8BAAAA,QAAA,cAACsD,uBAAMQ,0BAAwB,MAC7B9D,8BAAAA,QAAA,cAACsD,uBAAMS,YAAU,MAAEd,UAAU,OAAA,EAASe,KAAK,CAAA,CAAA,CAAA,GAKjDhE,8BAAAA,QAAA,cAACa,OAAAA;IAAIH,MAAK;IAAOR,WAAU;KACzBF,8BAAAA,QAAA,cAACsD,uBAAMC,MAAI;IAACC,mBAAmBP,UAAU,SAAA,EAAWQ;KAClDzD,8BAAAA,QAAA,cAACsD,uBAAMI,OAAK,MAAE/B,YAAY,0BAAA,CAAA,GAC1B3B,8BAAAA,QAAA,cAACsD,uBAAMW,UAAQ;IACbpE,YAAY;IACZqE,MAAM;IACNC,MAAM;IACNP,aAAajC,YAAY,gCAAA;IACxB,GAAGuB;MAENlD,8BAAAA,QAAA,cAACsD,uBAAMQ,0BAAwB,MAC7B9D,8BAAAA,QAAA,cAACsD,uBAAMS,YAAU,MAAEd,UAAU,SAAA,EAAWe,KAAK,CAAA,CAAA,CAAA,GAKnDhE,8BAAAA,QAAA,cAACa,OAAAA;IAAIH,MAAK;IAAOR,WAAU;KACzBF,8BAAAA,QAAA,cAACmB,yBAAAA;IACCiD,MAAK;IACLC,SAAQ;IACRxE,YAAW;IACXyE,UAAU,CAACtB;IACXuB,SAASxB;KAET/C,8BAAAA,QAAA,cAACC,QAAAA,MAAM0B,YAAY,qBAAA,CAAA,GACnB3B,8BAAAA,QAAA,cAACa,OAAAA;IAAIX,WAAU;MACfF,8BAAAA,QAAA,cAACwE,8BAAAA;IAAetE,eAAWuE,gCAAQ,CAAA;OAErCzE,8BAAAA,QAAA,cAAC0E,yBAAQC,OAAK;IAACrE,SAAAA;KACbN,8BAAAA,QAAA,cAACmB,yBAAAA;IAAOtB,YAAW;KACjBG,8BAAAA,QAAA,cAACC,QAAAA,MAAM4B,EAAE,gBAAgB;IAAE+C,IAAI;EAAK,CAAA,CAAA,GACpC5E,8BAAAA,QAAA,cAACa,OAAAA;IAAIX,WAAU;MACfF,8BAAAA,QAAA,cAAC6E,iBAAAA;IAAE3E,eAAWuE,gCAAQ,CAAA;;AAMlC;AG7FA,IAAMK,OAAO;AAEb,IAAMC,gBAAgB;AAEf,IAAMC,gBAAgB,MAAA;AAC3B,QAAMC,aAASC,+BAAAA;AACf,QAAM,EAAErD,EAAC,QAAKQ,iBAAAA,gBAAejB,iBAAAA;AAC7B,QAAM,EAAE+D,SAASC,WAAWC,WAAU,IAAKJ,OAAOtC,OAAO2C,SAASC,KAAKC,SAAS,CAAC;AACjF,QAAM,CAACC,GAAGC,CAAAA,IAAKP,SAASQ,MAAMZ,aAAAA,KAAkB,CAAA;AAEhD,QAAMa,aACJX,OAAOtC,OAAO2C,SAASC,KAAKM,KAAKC,mBAAmB,eAChD,GAAGhB,IAAAA,kBAAsBK,OAAAA,KACzB,GAAGL,IAAAA,WAAeO,UAAAA;AAExB,QAAMU,aAAa;AAEnB,SACE/F,8BAAAA,QAAA,cAAC0E,iBAAAA,QAAQnB,MAAI,MACXvD,8BAAAA,QAAA,cAAC0E,iBAAAA,QAAQsB,SAAO;IAAC1F,SAAAA;KACfN,8BAAAA,QAAA,cAACgB,UAAUG,QAAM;IAACtB,YAAW;KAAU,KAAE6F,CAAAA,CAAAA,GAE3C1F,8BAAAA,QAAA,cAAC0E,iBAAAA,QAAQuB,QAAM,MACbjG,8BAAAA,QAAA,cAAC0E,iBAAAA,QAAQwB,SAAO;IACdC,MAAK;IACLzF,MAAK;IACLb,YAAW;KAEXG,8BAAAA,QAAA,cAACoG,yBAAQ7C,MAAI;IAAC8C,SAAQ;IAAUnG,WAAU;KACxCF,8BAAAA,QAAA,cAACoG,yBAAQE,OAAK,MACZtG,8BAAAA,QAAA,cAACuG,uBAAAA;IAAK9E,MAAK;IAAuB+E,MAAM;IAAG3G,YAAW;MACtDG,8BAAAA,QAAA,cAACC,QAAAA,MAAM4B,EAAE,eAAA,CAAA,CAAA,GAEX7B,8BAAAA,QAAA,cAACoG,yBAAQK,MAAI,MACV5E,EAAE,4BAAA,GACH7B,8BAAAA,QAAA,cAAC0G,MAAAA,IAAAA,GACD1G,8BAAAA,QAAA,cAAC2G,uBAAAA;IAAKC,MAAMb;IAAYc,QAAO;IAASC,KAAI;IAAazC,SAAQ;KAC9DxC,EAAE,kBAAA,GACH7B,8BAAAA,QAAA,cAACuG,uBAAAA;IAAK9E,MAAK;IAA6B5B,YAAW;SAIzDG,8BAAAA,QAAA,cAACa,OAAAA;IAAIH,MAAK;IAAOR,WAAU;KACxBkF,aACCpF,8BAAAA,QAAA,cAAC+G,KAAAA,MACElF,EAAE,oBAAoB;IACrBmF,cAAUC,sCAAe,IAAIC,KAAK9B,SAAAA,GAAY,oBAAI8B,KAAAA,GAAQ;MAAEC,WAAW;IAAK,CAAA;EAC9E,CAAA,GACAnH,8BAAAA,QAAA,cAAC0G,MAAAA,IAAAA,GACD1G,8BAAAA,QAAA,cAAC2G,uBAAAA;IAAKC,MAAMhB;IAAYiB,QAAO;IAASC,KAAI;IAAazC,SAAQ;KAC9DxC,EAAE,mBAAA,GACH7B,8BAAAA,QAAA,cAACuG,uBAAAA;IAAK9E,MAAK;IAA6B5B,YAAW;QAIzDG,8BAAAA,QAAA,cAAC+G,KAAAA,MACC/G,8BAAAA,QAAA,cAACoH,wBACK;IACFvF;IACAwF,SAAS;IACTC,YAAY;MACVC,MAAMvH,8BAAAA,QAAA,cAAC2G,uBAAAA;QAAKC,MAAK;QAAmBC,QAAO;QAASC,KAAI;QAAazC,SAAQ;;IAC/E;EACF,CAAA,CAAA,CAAA,GAINrE,8BAAAA,QAAA,cAAC0E,iBAAAA,QAAQ8C,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB;AJvEO,IAAMC,mBAAmB,MAAA;AAC9B,QAAM,EAAE5F,EAAC,QAAKQ,gBAAAA,gBAAejB,iBAAAA;AAC7B,QAAM,CAACsG,MAAMC,OAAAA,QAAWC,wBAAS,KAAA;AACjC,SACE5H,8BAAAA,QAAA,cAAC0E,gBAAAA,QAAQnB,MAAI;IAACmE;IAAYG,cAAcF;KACtC3H,8BAAAA,QAAA,cAAC0E,gBAAAA,QAAQsB,SAAO;IAAC1F,SAAAA;KACfN,8BAAAA,QAAA,cAACgB,UAAUG,QAAM;IAAC2G,gBAAa;KAC7B9H,8BAAAA,QAAA,cAACuG,gBAAAA,MAAAA;IAAK9E,MAAK;IAAgC+E,MAAM;MACjDxG,8BAAAA,QAAA,cAACgB,UAAUC,MAAI;IAACpB,YAAW;KAAmBgC,EAAE,gBAAA,CAAA,CAAA,CAAA,GAIpD7B,8BAAAA,QAAA,cAACgB,UAAUG,QAAM;IAACb,SAAAA;KAChBN,8BAAAA,QAAA,cAAC+H,KAAAA;IAAEnB,MAAK;IAA2BC,QAAO;IAASC,KAAI;KACrD9G,8BAAAA,QAAA,cAACuG,gBAAAA,MAAAA;IAAK9E,MAAK;IAA4B+E,MAAM;MAC7CxG,8BAAAA,QAAA,cAACgB,UAAUC,MAAI;IAACpB,YAAW;KAAmBgC,EAAE,eAAA,CAAA,CAAA,CAAA,GAGpD7B,8BAAAA,QAAA,cAACgF,eAAAA,IAAAA,GACDhF,8BAAAA,QAAA,cAAC0E,gBAAAA,QAAQuB,QAAM,MACbjG,8BAAAA,QAAA,cAAC0E,gBAAAA,QAAQwB,SAAO;IAACrG,YAAW;KAC1BG,8BAAAA,QAAA,cAACmC,cAAAA;IAAaC,SAAS,MAAMuF,QAAQ,KAAA;MACrC3H,8BAAAA,QAAA,cAAC0E,gBAAAA,QAAQ8C,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB;AAEO,IAAMQ,iBAAiB,MAAA;AAC5B,SACEhI,8BAAAA,QAAA,cAAAA,cAAAA,QAAA,UAAA,MACEA,8BAAAA,QAAA,cAACyH,kBAAAA,IAAAA,GACDzH,8BAAAA,QAAA,cAACC,QAAAA;IAAKS,MAAK;IAAYR,WAAU;MACjCF,8BAAAA,QAAA,cAACiI,8BAAAA;IAAQvH,MAAK;;AAGpB;AK9BO,IAAMwH,kBAAkB,UAC7BC,oCAAa9G,MAAM;MACjB+G,oCAAa;IACX9G,IAAI,GAAGD,KAAKC,EAAE;IACd+G,aAAaC,6BAAOC;IACpBC,UAAU,UAAMC,mCAAYC,mCAAaC,cAAc5G,oBAAAA;EACzD,CAAA;MACAqG,oCAAa;IACX9G,IAAI,GAAGD,KAAKC,EAAE;IACd+G,aAAaC,6BAAOM;IACpBJ,UAAU,UACRC,mCAAYC,mCAAaG,cAAc;UACrCC,qCAAc;QACZxH,IAAID,KAAKC;QACTZ,MAAM;QACNqI,WAAW,MAAM/I,8BAAAA,QAAA,cAACgI,gBAAAA,IAAAA;MACpB,CAAA;UACAc,qCAAc;QACZxH,IAAID,KAAKC;QACTZ,MAAM;QACNqI,WAAW,MAAM/I,8BAAAA,QAAA,cAACiI,sBAAAA,SAAAA;UAAQvH,MAAK;;MACjC,CAAA;UACAoI,qCAAc;QACZxH,IAAID,KAAKC;QACTZ,MAAM;QACNqI,WAAW,MAAM/I,8BAAAA,QAAA,cAACyH,kBAAAA,IAAAA;MACpB,CAAA;UACAqB,qCAAc;QACZxH,IAAI,GAAGF,iBAAAA;QACPV,MAAM;QACNqI,WAAW,MAAM/I,8BAAAA,QAAA,cAACgF,eAAAA,IAAAA;MACpB,CAAA;KACD;EACL,CAAA;CACD;",
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
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-status-bar/src/components/StatusBar.tsx":{"bytes":9929,"imports":[{"path":"@fluentui/react-tabster","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}],"format":"esm"},"packages/plugins/plugin-status-bar/src/meta.ts":{"bytes":1252,"imports":[],"format":"esm"},"packages/plugins/plugin-status-bar/src/translations.ts":{"bytes":3385,"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/StatusBarPanel.tsx":{"bytes":6010,"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"}],"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":2673,"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/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":916,"imports":[{"path":"packages/plugins/plugin-status-bar/src/StatusBarPlugin.tsx","kind":"import-statement","original":"./StatusBarPlugin"},{"path":"packages/plugins/plugin-status-bar/src/StatusBarPlugin.tsx","kind":"import-statement","original":"./StatusBarPlugin"},{"path":"packages/plugins/plugin-status-bar/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-status-bar/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18864},"packages/plugins/plugin-status-bar/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-status-bar/dist/lib/node/chunk-OGG3PMIV.cjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","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/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}],"exports":["StatusBar","StatusBarPanel","StatusBarPlugin","default"],"entryPoint":"packages/plugins/plugin-status-bar/src/index.ts","inputs":{"packages/plugins/plugin-status-bar/src/StatusBarPlugin.tsx":{"bytesInOutput":444},"packages/plugins/plugin-status-bar/src/components/StatusBar.tsx":{"bytesInOutput":2478},"packages/plugins/plugin-status-bar/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-status-bar/src/components/StatusBarPanel.tsx":{"bytesInOutput":1692},"packages/plugins/plugin-status-bar/src/components/FeedbackForm.tsx":{"bytesInOutput":3972},"packages/plugins/plugin-status-bar/src/translations.ts":{"bytesInOutput":570},"packages/plugins/plugin-status-bar/src/index.ts":{"bytesInOutput":35}},"bytes":9982},"packages/plugins/plugin-status-bar/dist/lib/node/meta.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-status-bar/dist/lib/node/meta.cjs":{"imports":[{"path":"packages/plugins/plugin-status-bar/dist/lib/node/chunk-OGG3PMIV.cjs","kind":"import-statement"}],"exports":["STATUS_BAR_PLUGIN","default"],"entryPoint":"packages/plugins/plugin-status-bar/src/meta.ts","inputs":{},"bytes":169},"packages/plugins/plugin-status-bar/dist/lib/node/chunk-OGG3PMIV.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":600},"packages/plugins/plugin-status-bar/dist/lib/node/chunk-OGG3PMIV.cjs":{"imports":[],"exports":["STATUS_BAR_PLUGIN","meta_default"],"inputs":{"packages/plugins/plugin-status-bar/src/meta.ts":{"bytesInOutput":210}},"bytes":353}}}
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}}}