react-os-shell 3.0.0 → 3.1.0

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 (31) hide show
  1. package/dist/{Browser-3SDJFEZW.js → Browser-FO63XIQV.js} +4 -4
  2. package/dist/{Browser-3SDJFEZW.js.map → Browser-FO63XIQV.js.map} +1 -1
  3. package/dist/{Documents-HCHGAFPB.js → Documents-4JRA364C.js} +3 -3
  4. package/dist/{Documents-HCHGAFPB.js.map → Documents-4JRA364C.js.map} +1 -1
  5. package/dist/Files-SPOMBGBL.js +12 -0
  6. package/dist/{Files-FYWUNLBY.js.map → Files-SPOMBGBL.js.map} +1 -1
  7. package/dist/{Notepad-WRS7EMCK.js → Notepad-WSPYRQ4K.js} +3 -3
  8. package/dist/{Notepad-WRS7EMCK.js.map → Notepad-WSPYRQ4K.js.map} +1 -1
  9. package/dist/Preview-3RGNW6LO.js +8 -0
  10. package/dist/{Preview-HOLQVFSU.js.map → Preview-3RGNW6LO.js.map} +1 -1
  11. package/dist/{Spreadsheet-MRUQ4LJR.js → Spreadsheet-J2PF7T5E.js} +4 -4
  12. package/dist/{Spreadsheet-MRUQ4LJR.js.map → Spreadsheet-J2PF7T5E.js.map} +1 -1
  13. package/dist/apps/index.js +12 -12
  14. package/dist/{chunk-XRCABX52.js → chunk-BCU7WB26.js} +3 -3
  15. package/dist/{chunk-XRCABX52.js.map → chunk-BCU7WB26.js.map} +1 -1
  16. package/dist/{chunk-SKNOGIDC.js → chunk-EJT5XFIO.js} +3 -3
  17. package/dist/{chunk-SKNOGIDC.js.map → chunk-EJT5XFIO.js.map} +1 -1
  18. package/dist/{chunk-QS2MEW6R.js → chunk-JUGAXFZR.js} +4 -4
  19. package/dist/{chunk-QS2MEW6R.js.map → chunk-JUGAXFZR.js.map} +1 -1
  20. package/dist/{chunk-X4MB43G2.js → chunk-PLYMJPLE.js} +4 -4
  21. package/dist/{chunk-X4MB43G2.js.map → chunk-PLYMJPLE.js.map} +1 -1
  22. package/dist/{chunk-D7QQTFM3.js → chunk-W3IGMW4R.js} +3 -3
  23. package/dist/{chunk-D7QQTFM3.js.map → chunk-W3IGMW4R.js.map} +1 -1
  24. package/dist/{chunk-XVCEFF6M.js → chunk-Z4AOGID4.js} +3 -3
  25. package/dist/{chunk-XVCEFF6M.js.map → chunk-Z4AOGID4.js.map} +1 -1
  26. package/dist/index.d.ts +5 -0
  27. package/dist/index.js +39 -9
  28. package/dist/index.js.map +1 -1
  29. package/package.json +1 -1
  30. package/dist/Files-FYWUNLBY.js +0 -12
  31. package/dist/Preview-HOLQVFSU.js +0 -8
package/dist/index.d.ts CHANGED
@@ -884,6 +884,11 @@ interface DesktopHostConfig {
884
884
  /** Desktop right-click menu items to hide (all shown by default). Pass keys
885
885
  * here when the consumer surfaces them elsewhere — e.g. under Preferences. */
886
886
  hiddenContextMenuItems?: DesktopContextMenuItem[];
887
+ /** Open the consumer's own "report a bug / suggestion" UI. When set, the
888
+ * desktop and taskbar right-click menus show a "Suggestion or Bug" item that
889
+ * calls this. Lets a consumer that files feedback natively (the shell itself
890
+ * dropped bug reporting in v3.0.0) surface the familiar right-click entry. */
891
+ onReportBug?: () => void;
887
892
  }
888
893
  declare function DesktopHostProvider({ value, children }: {
889
894
  value: DesktopHostConfig;
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  import { subscribePomo, getPomoSnapshot } from './chunk-6VMTAVUD.js';
2
2
  export { setShellTodoProvider } from './chunk-6VMTAVUD.js';
3
- import { PREVIEW_OPENED_EVENT, publishDesktopFolders, requestFilesTrashView, FolderGlyph, openPreviewFile, requestFilesDesktopFolderView, FileIconTile, hashGradient } from './chunk-X4MB43G2.js';
4
- export { Breadcrumbs } from './chunk-X4MB43G2.js';
3
+ import { PREVIEW_OPENED_EVENT, publishDesktopFolders, requestFilesTrashView, FolderGlyph, openPreviewFile, requestFilesDesktopFolderView, FileIconTile, hashGradient } from './chunk-PLYMJPLE.js';
4
+ export { Breadcrumbs } from './chunk-PLYMJPLE.js';
5
5
  import { SidebarLayout } from './chunk-VGTEM5RZ.js';
6
6
  export { SidebarLayout } from './chunk-VGTEM5RZ.js';
7
7
  import { playNotification, playStartup, soundsEnabled, getSoundConfig, SOUND_PACK_KEYS, SOUND_PACKS, SOUND_TYPES, SOUND_TYPE_LABELS, setSoundForType, previewSound, setAllSounds, playLogout } from './chunk-D7PYW2QS.js';
8
- import './chunk-SKNOGIDC.js';
8
+ import './chunk-EJT5XFIO.js';
9
9
  import { toast_default } from './chunk-VENYVK3L.js';
10
10
  export { toast_default as toast } from './chunk-VENYVK3L.js';
11
- export { EditableGrid } from './chunk-XVCEFF6M.js';
11
+ export { EditableGrid } from './chunk-Z4AOGID4.js';
12
12
  import { useAuth, useShellAuth } from './chunk-ADJ3CERD.js';
13
13
  export { ShellAuthProvider, setShellAuthBridge, useShellAuth } from './chunk-ADJ3CERD.js';
14
- import { APP_VERSION } from './chunk-XRCABX52.js';
15
- export { VERSION } from './chunk-XRCABX52.js';
14
+ import { APP_VERSION } from './chunk-BCU7WB26.js';
15
+ export { VERSION } from './chunk-BCU7WB26.js';
16
16
  import { useWindowManager, PopupMenu, PopupMenuLabel, PopupMenuDivider, PopupMenuItem, WINDOW_REGISTRY, isPageEntry, Modal, useShellPrefs, useIsMobile, ModalActions, useModalActive, client_default, LoadingSpinner, setWindowPosition, ThumbCard, activateModal } from './chunk-6OWYD4O6.js';
17
17
  export { CancelButton, CopyButton, DocFavStar, Modal, ModalActions, PopupMenu, PopupMenuDivider, PopupMenuItem, PopupMenuLabel, ShellPrefsProvider, WindowCrashedFallback, WindowErrorBoundary, WindowManagerProvider, WindowTitle, commitExposeHighlight, exitExposeMode, getActiveWindowRoute, getExposeHighlight, getWindowPosition, isEntityEntry, isPageEntry, registerModalEscapeInterceptor, setExposeHighlight, setShellApiClient, setShellWindowRegistry, setWindowDefaultPosition, setWindowPosition, subscribeExposeHighlight, toggleExposeMode, useLocalStoragePrefs, useModalActive, useShellPrefs, useWidgetSettings, useWindowManager, useWindowMenuItem, useWindowTitle } from './chunk-6OWYD4O6.js';
18
18
  export { ConfirmProvider, confirm, confirmDestructive, prompt } from './chunk-UBN4IUDE.js';
@@ -2267,6 +2267,16 @@ function Desktop({ profile }) {
2267
2267
  /* @__PURE__ */ jsx("svg", { className: "h-4 w-4 text-gray-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" }) }),
2268
2268
  "About ",
2269
2269
  host.productName ?? "this app"
2270
+ ] }),
2271
+ host.onReportBug && /* @__PURE__ */ jsxs(Fragment, { children: [
2272
+ /* @__PURE__ */ jsx(PopupMenuDivider, {}),
2273
+ /* @__PURE__ */ jsxs(PopupMenuItem, { onClick: () => {
2274
+ setContextMenu(null);
2275
+ host.onReportBug();
2276
+ }, children: [
2277
+ /* @__PURE__ */ jsx("svg", { className: "h-4 w-4 text-gray-400", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z" }) }),
2278
+ "Suggestion or Bug"
2279
+ ] })
2270
2280
  ] })
2271
2281
  ] }),
2272
2282
  contextMenu && contextMenu.itemIdx != null && /* @__PURE__ */ jsxs(PopupMenu, { style: menuStyle(contextMenu.x, contextMenu.y), minWidth: 160, children: [
@@ -4010,7 +4020,7 @@ function CalendarPopup({ now, config, close }) {
4010
4020
  config?.renderDay && /* @__PURE__ */ jsx("div", { className: "mt-2.5 max-h-[280px] overflow-y-auto border-t border-gray-100 pt-2", children: config.renderDay(selected, { close }) }, selected)
4011
4021
  ] });
4012
4022
  }
4013
- function TaskbarContextMenu({ x, y, position, size, onChangePosition, onChangeSize, onClose }) {
4023
+ function TaskbarContextMenu({ x, y, position, size, onChangePosition, onChangeSize, onClose, onReportBug }) {
4014
4024
  const ref = useRef(null);
4015
4025
  useClickOutside(ref, onClose);
4016
4026
  const posStyle = position === "top" ? { left: Math.min(x, window.innerWidth - 200), top: y + 4 } : position === "left" ? { left: x + 4, top: Math.min(y, window.innerHeight - 300) } : position === "right" ? { right: window.innerWidth - x + 4, top: Math.min(y, window.innerHeight - 300) } : { left: Math.min(x, window.innerWidth - 200), bottom: window.innerHeight - y + 4 };
@@ -4044,7 +4054,25 @@ function TaskbarContextMenu({ x, y, position, size, onChangePosition, onChangeSi
4044
4054
  ]
4045
4055
  },
4046
4056
  s
4047
- ))
4057
+ )),
4058
+ onReportBug && /* @__PURE__ */ jsxs(Fragment, { children: [
4059
+ /* @__PURE__ */ jsx("div", { className: "border-t border-white/20 my-1 mx-3" }),
4060
+ /* @__PURE__ */ jsxs(
4061
+ "button",
4062
+ {
4063
+ onClick: () => {
4064
+ onClose();
4065
+ onReportBug();
4066
+ },
4067
+ className: "w-full text-left px-3 py-1.5 text-sm text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition-colors rounded-lg mx-1 flex items-center gap-2",
4068
+ style: { width: "calc(100% - 8px)" },
4069
+ children: [
4070
+ /* @__PURE__ */ jsx("svg", { className: "h-3.5 w-3.5 text-gray-400 shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z" }) }),
4071
+ "Suggestion or Bug"
4072
+ ]
4073
+ }
4074
+ )
4075
+ ] })
4048
4076
  ] });
4049
4077
  }
4050
4078
  function TaskbarFavorites({ favorites, vertical, taskbarPosition, navSections: navSections2, navIcons: navIcons2, onOpen, onToggleFavorite }) {
@@ -4126,6 +4154,7 @@ function Layout({
4126
4154
  taskbarTrayLeft,
4127
4155
  clockCalendar
4128
4156
  } = {}) {
4157
+ const host = useDesktopHost();
4129
4158
  const { user, logout, hasAnyPerm } = useAuth();
4130
4159
  const { openPage, openEntity, openWindows } = useWindowManager();
4131
4160
  const [menuOpen, setMenuOpen] = useState(false);
@@ -4493,7 +4522,8 @@ function Layout({
4493
4522
  savePref("taskbar_size", v);
4494
4523
  setTaskbarMenu(null);
4495
4524
  },
4496
- onClose: () => setTaskbarMenu(null)
4525
+ onClose: () => setTaskbarMenu(null),
4526
+ onReportBug: host.onReportBug
4497
4527
  }
4498
4528
  ),
4499
4529
  /* @__PURE__ */ jsx(GlobalSearch, { ...search }),