@fde-desktop/fde-core 0.4.13 → 0.4.19

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 (132) hide show
  1. package/dist/{AppEmptyState-Boej96TB.js → AppEmptyState-BVfKZU-h.js} +1 -1
  2. package/dist/AppEmptyState-Z8_Cviti.cjs +1 -0
  3. package/dist/AppIcon-Czrtau6A.cjs +1 -0
  4. package/dist/{AppIcon-mtEoyzOb.js → AppIcon-aFNw89J2.js} +1 -1
  5. package/dist/AppMenuBar-38QtFTPk.cjs +1 -0
  6. package/dist/AppTempMemory-DAC62jiS.cjs +1 -0
  7. package/dist/AppTempMemory-DgUW6GaF.js +23 -0
  8. package/dist/CalendarApp-BYTyu089.js +9 -0
  9. package/dist/CalendarApp-DPOK4mqg.cjs +1 -0
  10. package/dist/{ColorPicker-WCeD3Wjf.js → ColorPicker-B76rCS2H.js} +1 -1
  11. package/dist/ColorPicker-BZqsPh3X.cjs +1 -0
  12. package/dist/CreateItemApp-B0IHL16b.cjs +1 -0
  13. package/dist/CreateItemApp-UUP2HAu2.js +149 -0
  14. package/dist/DeviceInfoApp-BPQyeVSd.js +162 -0
  15. package/dist/DeviceInfoApp-D2mS2OT-.cjs +1 -0
  16. package/dist/DownloadProgress-CpJguS8g.cjs +1 -0
  17. package/dist/FilePickerApp-ClmPw6lk.cjs +1 -0
  18. package/dist/{FilePickerApp-ClHuhm6Z.js → FilePickerApp-D7fERKbp.js} +1 -1
  19. package/dist/FilesApp-DhJbO8wg.js +191 -0
  20. package/dist/FilesApp-LbwRRR1i.cjs +1 -0
  21. package/dist/IconColorPicker-7rWNAiNQ.cjs +1 -0
  22. package/dist/IconColorPicker-DUIXSb5E.js +58 -0
  23. package/dist/ImageViewerApp-9T-V8uP5.cjs +1 -0
  24. package/dist/ImageViewerApp-ihqIwJ-L.js +68 -0
  25. package/dist/ImageViewerMenuBar-DmvZoZ03.cjs +1 -0
  26. package/dist/{ImageViewerMenuBar-BIsUokxV.js → ImageViewerMenuBar-ZeIKHdA-.js} +18 -19
  27. package/dist/MenuEditApp-DRKfmSIZ.js +361 -0
  28. package/dist/MenuEditApp-U7EqB5Rl.cjs +1 -0
  29. package/dist/MenuEditMenuBar-BE_cXaoG.cjs +1 -0
  30. package/dist/MenuEditMenuBar-Df1je7F6.js +59 -0
  31. package/dist/NotesApp-DZfNQ8mN.cjs +1 -0
  32. package/dist/NotesApp-rwAeXyJy.js +344 -0
  33. package/dist/{NotesMenuBar-DILZTjnT.js → NotesMenuBar-C503t5pu.js} +12 -13
  34. package/dist/NotesMenuBar-CwgZ9dHy.cjs +1 -0
  35. package/dist/PdfApp-DNZaSXbF.cjs +1 -0
  36. package/dist/PdfApp-K1Z612o3.js +38 -0
  37. package/dist/PdfMenuBar-BPzP_JUO.cjs +1 -0
  38. package/dist/PdfMenuBar-DEUKgKTE.js +38 -0
  39. package/dist/SettingsApp-DdWqiYFE.cjs +1 -0
  40. package/dist/SettingsApp-ghc3RaMv.js +875 -0
  41. package/dist/SettingsMenuBar-C4KAPoBs.js +41 -0
  42. package/dist/SettingsMenuBar-CgmaF9_B.cjs +1 -0
  43. package/dist/{UploaderApp-Bboc4KZ1.js → UploaderApp-D9vfOR0S.js} +28 -40
  44. package/dist/UploaderApp-omSY-NSn.cjs +1 -0
  45. package/dist/VscIcon-CeELixwP.cjs +1 -0
  46. package/dist/buildBreadcrumbs-C2c2a4R3.cjs +1 -0
  47. package/dist/desktopStore-LSQweOqZ.cjs +1 -0
  48. package/dist/{desktopStore-8cSZlj7s.js → desktopStore-xnNbYaYm.js} +263 -263
  49. package/dist/formatBytes-Bv1bQPKQ.cjs +1 -0
  50. package/dist/formatBytes-CaP80WnM.js +14 -0
  51. package/dist/i18nConstants-DgbKSBIK.cjs +1 -0
  52. package/dist/i18nConstants-Nzpf2IFp.js +611 -0
  53. package/dist/imageViewerStore-CYt4R4e4.cjs +1 -0
  54. package/dist/index.cjs +1 -1
  55. package/dist/index.css +1 -1
  56. package/dist/index.d.ts +50 -29
  57. package/dist/index.js +698 -650
  58. package/dist/menuEditStore-sU6qaF2j.cjs +1 -0
  59. package/dist/notesStore-BnMXBRaV.cjs +1 -0
  60. package/dist/settingsAppStore-CQ4JHd7Q.cjs +1 -0
  61. package/dist/useAdaptiveDimensions-BDZxP4E3.cjs +1 -0
  62. package/dist/{useAdaptiveDimensions-DxNLJ7R5.js → useAdaptiveDimensions-sv9lwqF_.js} +1 -1
  63. package/dist/useCloseInterceptor-AzfjUZgz.cjs +1 -0
  64. package/dist/{useCloseInterceptor-CIxhOZx1.js → useCloseInterceptor-Bwm4I0O8.js} +1 -1
  65. package/dist/useDeviceDetection-B9jjlate.js +37 -0
  66. package/dist/useDeviceDetection-CnxnQWIq.cjs +1 -0
  67. package/dist/useDragDrop-Bdwzk6VO.cjs +1 -0
  68. package/dist/useDragDrop-D2LtOEYC.js +139 -0
  69. package/dist/useDynamicIcon-Cg3B_Aeq.cjs +1 -0
  70. package/dist/useNotifications-CR9JLjtC.js +26 -0
  71. package/dist/useNotifications-rwLmJ7fI.cjs +1 -0
  72. package/dist/useOpenApp-BBZ_B7Pr.cjs +1 -0
  73. package/dist/{useOpenApp-uguTLkyl.js → useOpenApp-DdEbOVby.js} +3 -3
  74. package/dist/useResolvedUrl-CgqjNxzw.js +389 -0
  75. package/dist/useResolvedUrl-Dz2AhrDV.cjs +1 -0
  76. package/package.json +1 -1
  77. package/dist/AppEmptyState-CLc00OOG.cjs +0 -1
  78. package/dist/AppIcon-C8vHUVcb.cjs +0 -1
  79. package/dist/AppMenuBar-CAlkNHjj.cjs +0 -1
  80. package/dist/CalendarApp-DOmjWbpl.js +0 -10
  81. package/dist/CalendarApp-Z0bCCYsK.cjs +0 -1
  82. package/dist/ColorPicker-CQRRwY-y.cjs +0 -1
  83. package/dist/CreateItemApp-BkFFFdX1.cjs +0 -1
  84. package/dist/CreateItemApp-DR8Y4bwo.js +0 -202
  85. package/dist/DeviceInfoApp-BXQ9uOwF.cjs +0 -1
  86. package/dist/DeviceInfoApp-I63mJRWy.js +0 -195
  87. package/dist/DownloadProgress-CkTGTf0z.cjs +0 -1
  88. package/dist/FilePickerApp-By6-vbag.cjs +0 -1
  89. package/dist/FilesApp-BRK2OqkQ.cjs +0 -1
  90. package/dist/FilesApp-BuoFP_KA.js +0 -212
  91. package/dist/ImageViewerApp-B1niWF75.cjs +0 -1
  92. package/dist/ImageViewerApp-iojtyFEf.js +0 -69
  93. package/dist/ImageViewerMenuBar-BgzgSF3v.cjs +0 -1
  94. package/dist/MenuEditApp-BHptoJbz.cjs +0 -1
  95. package/dist/MenuEditApp-CJUbJaqh.js +0 -492
  96. package/dist/MenuEditMenuBar-CCOSPAUe.cjs +0 -1
  97. package/dist/MenuEditMenuBar-DnCL-kaZ.js +0 -60
  98. package/dist/NotesApp-BmQIBtJ2.cjs +0 -1
  99. package/dist/NotesApp-DJ2dGt4-.js +0 -364
  100. package/dist/NotesMenuBar-BzojwMtH.cjs +0 -1
  101. package/dist/PdfApp-IjY_GtnW.js +0 -39
  102. package/dist/PdfApp-krW8UI97.cjs +0 -1
  103. package/dist/PdfMenuBar-Bd5MTZcZ.js +0 -39
  104. package/dist/PdfMenuBar-DWD0Qa3F.cjs +0 -1
  105. package/dist/SettingsApp-BE22l5UP.cjs +0 -1
  106. package/dist/SettingsApp-BTFtTFY_.js +0 -1228
  107. package/dist/SettingsMenuBar-CZE2evG2.cjs +0 -1
  108. package/dist/SettingsMenuBar-ktC0viTd.js +0 -42
  109. package/dist/UploaderApp-Dr1mF7oj.cjs +0 -1
  110. package/dist/VscIcon-BYb_Soyy.cjs +0 -1
  111. package/dist/buildBreadcrumbs-Ccd8i11b.cjs +0 -1
  112. package/dist/desktopStore-C1jR6Fdb.cjs +0 -1
  113. package/dist/imageViewerStore-Dfylg59V.cjs +0 -1
  114. package/dist/menuEditStore-CYwtfD6H.cjs +0 -1
  115. package/dist/notesStore-CrWTO6oB.cjs +0 -1
  116. package/dist/rolldown-runtime-CAFD8bLK.js +0 -11
  117. package/dist/settingsAppStore-DuYZNeFf.cjs +0 -1
  118. package/dist/useAdaptiveDimensions-3Lz4X0Tc.cjs +0 -1
  119. package/dist/useCloseInterceptor-CdX-09Ib.cjs +0 -1
  120. package/dist/useDynamicIcon-CK6SjEv5.cjs +0 -1
  121. package/dist/useOpenApp-ChDhsL9h.cjs +0 -1
  122. package/dist/useResolvedUrl-B6x4xy0x.js +0 -29
  123. package/dist/useResolvedUrl-Bb39DpVy.cjs +0 -1
  124. /package/dist/{Colors-CuABn2W4.js → Colors-BIj4g0eH.js} +0 -0
  125. /package/dist/{Colors-CNJbU7oq.cjs → Colors-PNt4eyR6.cjs} +0 -0
  126. /package/dist/{DownloadProgress-DnVASsv5.js → DownloadProgress-DBFA58C5.js} +0 -0
  127. /package/dist/{imageViewerStore-COrD02Zu.js → imageViewerStore-C6UgceP-.js} +0 -0
  128. /package/dist/{menuEditStore-CxsgLiQu.js → menuEditStore-DPqViGva.js} +0 -0
  129. /package/dist/{notesStore-Dgah46U5.js → notesStore-KZDXN6zx.js} +0 -0
  130. /package/dist/{settingsAppStore-DHZhi6Rl.js → settingsAppStore-Y7x3r6pV.js} +0 -0
  131. /package/dist/{useMenuBarUtils-DAap0ukp.cjs → useMenuBarUtils-BOnQYtKU.cjs} +0 -0
  132. /package/dist/{useMenuBarUtils-ChAfI7OA.js → useMenuBarUtils-DTPFK0IN.js} +0 -0
package/dist/index.js CHANGED
@@ -1,54 +1,46 @@
1
- import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, o as u, p as d, r as f, s as p, t as m, u as h } from "./SettingsApp-BTFtTFY_.js";
2
- import { A as g, B as _, C as v, D as y, E as b, F as x, H as S, I as C, L as w, M as T, N as E, O as D, P as ee, R as O, S as k, T as te, U as A, V as j, _ as ne, a as re, b as ie, c as M, d as ae, f as oe, g as se, h as ce, i as le, j as ue, k as de, l as fe, m as pe, n as me, o as he, p as ge, r as _e, s as ve, t as ye, u as be, v as xe, w as Se, x as Ce, y as we, z as Te } from "./useOpenApp-uguTLkyl.js";
3
- import { $ as Ee, A as De, B as Oe, C as ke, D as Ae, E as je, F as Me, G as Ne, H as Pe, I as Fe, J as Ie, K as Le, L as Re, M as ze, N as Be, O as Ve, P as He, Q as Ue, R as We, S as Ge, T as Ke, U as qe, V as Je, W as Ye, X as Xe, Y as Ze, Z as Qe, _ as $e, a as et, at as tt, b as nt, c as rt, ct as it, d as at, dt as ot, et as st, f as ct, ft as lt, g as ut, h as dt, i as ft, it as pt, j as mt, k as ht, l as gt, lt as _t, m as vt, mt as yt, n as N, nt as bt, o as P, ot as xt, p as St, pt as Ct, q as wt, r as Tt, rt as Et, s as Dt, st as Ot, t as kt, tt as At, u as jt, ut as Mt, v as F, w as Nt, x as Pt, y as Ft, z as It } from "./desktopStore-8cSZlj7s.js";
4
- import { a as Lt, c as Rt, i as I, n as zt, o as Bt, r as Vt, s as Ht, t as Ut } from "./useDynamicIcon-_wGeWu-b.js";
5
- import { t as Wt } from "./useAdaptiveDimensions-DxNLJ7R5.js";
6
- import { a as Gt, i as Kt, o as qt, r as Jt, s as Yt, t as Xt } from "./MenuEditApp-CJUbJaqh.js";
7
- import { t as L } from "./AppIcon-mtEoyzOb.js";
8
- import { a as Zt, i as Qt, n as $t, r as en, t as tn } from "./useCloseInterceptor-CIxhOZx1.js";
1
+ import { _ as e, a as t, d as n, f as r, i, l as a, m as o, n as s, o as c, p as l, r as u, s as d, t as f, u as p, v as m } from "./i18nConstants-Nzpf2IFp.js";
2
+ import { a as h, c as g, d as _, f as v, i as y, l as b, n as x, p as S, r as C, s as w, t as T, u as E } from "./useResolvedUrl-CgqjNxzw.js";
3
+ import { A as D, B as ee, C as O, D as k, E as te, F as A, H as j, I as ne, L as re, M as ie, N as M, O as ae, P as oe, R as se, S as ce, T as le, U as ue, V as de, _ as fe, a as pe, b as me, c as he, d as ge, f as _e, g as ve, h as ye, i as be, j as xe, k as Se, l as Ce, m as we, n as Te, o as Ee, p as De, r as Oe, s as ke, t as Ae, u as je, v as Me, w as Ne, x as Pe, y as Fe, z as Ie } from "./useOpenApp-DdEbOVby.js";
4
+ import { $ as Le, A as Re, B as ze, C as Be, D as Ve, E as He, F as Ue, G as We, H as Ge, I as Ke, J as qe, K as Je, L as Ye, M as Xe, N as Ze, O as Qe, P as $e, Q as et, R as tt, S as nt, T as rt, U as it, V as at, W as ot, X as st, Y as ct, Z as lt, _ as ut, a as dt, at as ft, b as pt, c as mt, ct as ht, d as gt, dt as _t, et as vt, f as yt, ft as bt, g as xt, h as St, ht as Ct, i as wt, it as Tt, j as Et, k as Dt, l as Ot, lt as kt, m as At, mt as jt, n as N, nt as Mt, o as P, ot as Nt, p as Pt, pt as Ft, q as It, r as Lt, rt as Rt, s as zt, st as Bt, t as Vt, tt as Ht, u as Ut, ut as Wt, v as F, w as Gt, x as Kt, y as qt, z as Jt } from "./desktopStore-xnNbYaYm.js";
5
+ import { a as Yt, c as Xt, i as I, n as Zt, o as Qt, r as $t, s as en, t as tn } from "./useDynamicIcon-_wGeWu-b.js";
6
+ import { t as nn } from "./useAdaptiveDimensions-sv9lwqF_.js";
7
+ import { a as rn, i as an, o as on, r as sn, s as cn } from "./useDragDrop-D2LtOEYC.js";
8
+ import { t as L } from "./AppIcon-aFNw89J2.js";
9
+ import { a as ln, i as un, n as dn, r as fn, t as pn } from "./useCloseInterceptor-Bwm4I0O8.js";
9
10
  import { t as R } from "./VscIcon-AEENjKOE.js";
10
- import { n as nn, t as rn } from "./AppMenuBar-DmSfQRXU.js";
11
- import { r as an, t as on } from "./FilesApp-BuoFP_KA.js";
12
- import { n as sn, r as cn, t as ln } from "./buildBreadcrumbs-noWhu8os.js";
13
- import { r as un, t as dn } from "./DeviceInfoApp-I63mJRWy.js";
14
- import { t as fn } from "./useResolvedUrl-B6x4xy0x.js";
15
- import { t as pn } from "./CalendarApp-DOmjWbpl.js";
16
- import { a as mn, n as hn, t as gn } from "./FilePickerApp-ClHuhm6Z.js";
17
- import { r as _n, t as vn } from "./NotesApp-DJ2dGt4-.js";
18
- import { n as yn, t as bn } from "./AppEmptyState-Boej96TB.js";
19
- import { t as xn } from "./Colors-CuABn2W4.js";
20
- import { t as Sn } from "./ImageViewerApp-iojtyFEf.js";
21
- import { t as Cn } from "./PdfApp-IjY_GtnW.js";
22
- import { t as wn } from "./DownloadProgress-DnVASsv5.js";
23
- import { r as Tn, t as En } from "./UploaderApp-Bboc4KZ1.js";
24
- import { t as Dn } from "./ColorPicker-WCeD3Wjf.js";
25
- import { t as On } from "./useMenuBarUtils-ChAfI7OA.js";
26
- import { t as kn } from "./NotesMenuBar-DILZTjnT.js";
27
- import { t as An } from "./MenuEditMenuBar-DnCL-kaZ.js";
28
- import { t as jn } from "./SettingsMenuBar-ktC0viTd.js";
29
- import { t as Mn } from "./PdfMenuBar-Bd5MTZcZ.js";
30
- import { t as Nn } from "./ImageViewerMenuBar-BIsUokxV.js";
31
- import { i as Pn, r as Fn, t as In } from "./CreateItemApp-DR8Y4bwo.js";
11
+ import { n as mn, t as hn } from "./AppMenuBar-DmSfQRXU.js";
12
+ import { t as gn } from "./useNotifications-CR9JLjtC.js";
13
+ import { n as _n, r as vn, t as yn } from "./buildBreadcrumbs-noWhu8os.js";
14
+ import { t as bn } from "./useDeviceDetection-B9jjlate.js";
15
+ import { n as xn, t as Sn } from "./AppEmptyState-BVfKZU-h.js";
16
+ import { t as Cn } from "./Colors-BIj4g0eH.js";
17
+ import { t as wn } from "./ColorPicker-B76rCS2H.js";
18
+ import { t as Tn } from "./DownloadProgress-DBFA58C5.js";
19
+ import { a as En, n as Dn, t as On } from "./FilePickerApp-D7fERKbp.js";
20
+ import { n as kn, t as An } from "./IconColorPicker-DUIXSb5E.js";
21
+ import { t as jn } from "./AppTempMemory-DgUW6GaF.js";
22
+ import { t as Mn } from "./useMenuBarUtils-DTPFK0IN.js";
23
+ import { t as Nn } from "./formatBytes-CaP80WnM.js";
32
24
  import "@mantine/core/styles.css";
33
25
  import "@mantine/dates/styles.css";
34
- import { Suspense as Ln, createContext as Rn, createElement as zn, memo as Bn, useCallback as z, useContext as Vn, useEffect as B, useLayoutEffect as Hn, useMemo as V, useRef as H, useState as U } from "react";
26
+ import { Suspense as Pn, createContext as Fn, createElement as In, memo as Ln, useCallback as z, useContext as Rn, useEffect as B, useLayoutEffect as zn, useMemo as V, useRef as H, useState as U } from "react";
35
27
  import { Fragment as W, jsx as G, jsxs as K } from "react/jsx-runtime";
36
- import { ActionIcon as Un, Anchor as Wn, Button as q, Center as Gn, Group as Kn, Loader as qn, MantineProvider as Jn, Menu as J, Modal as Yn, Notification as Xn, Popover as Y, Progress as Zn, Stack as Qn, Text as X, TextInput as $n, UnstyledButton as er, createTheme as tr, useMantineTheme as nr } from "@mantine/core";
37
- import { QueryClient as rr, QueryClient as ir, QueryClientProvider as ar } from "@tanstack/react-query";
38
- import { create as or } from "zustand";
39
- import { AnimatePresence as sr, motion as cr, useAnimationControls as lr } from "framer-motion";
40
- import { initReactI18next as ur, useTranslation as Z } from "react-i18next";
41
- import dr from "i18next";
42
- import fr from "i18next-browser-languagedetector";
43
- import { Rnd as pr } from "react-rnd";
44
- import { useShallow as mr } from "zustand/react/shallow";
45
- import { FcDoNotInsert as hr, FcInfo as gr } from "react-icons/fc";
46
- import { Terminal as _r } from "@xterm/xterm";
47
- import { FitAddon as vr } from "@xterm/addon-fit";
48
- import { ClipboardAddon as yr } from "@xterm/addon-clipboard";
28
+ import { ActionIcon as Bn, Anchor as Vn, Button as q, Center as Hn, Group as Un, Loader as Wn, MantineProvider as Gn, Menu as J, Modal as Kn, Notification as qn, Popover as Y, Progress as Jn, Stack as Yn, Text as X, TextInput as Xn, UnstyledButton as Zn, createTheme as Qn, useMantineTheme as $n } from "@mantine/core";
29
+ import { QueryClient as er, QueryClient as tr, QueryClientProvider as nr } from "@tanstack/react-query";
30
+ import { create as rr } from "zustand";
31
+ import { AnimatePresence as ir, motion as ar, useAnimationControls as or } from "framer-motion";
32
+ import { initReactI18next as sr, useTranslation as Z } from "react-i18next";
33
+ import cr from "i18next";
34
+ import lr from "i18next-browser-languagedetector";
35
+ import { Rnd as ur } from "react-rnd";
36
+ import { useShallow as dr } from "zustand/react/shallow";
37
+ import { FcDoNotInsert as fr, FcInfo as pr } from "react-icons/fc";
38
+ import { Terminal as mr } from "@xterm/xterm";
39
+ import { FitAddon as hr } from "@xterm/addon-fit";
40
+ import { ClipboardAddon as gr } from "@xterm/addon-clipboard";
49
41
  import "@xterm/xterm/css/xterm.css";
50
42
  //#region src/components/Theme/ThemeContext.ts
51
- var br = Rn(void 0), xr = {
43
+ var _r = Fn(void 0), vr = {
52
44
  borderRadius: "8px",
53
45
  headerHeight: 40,
54
46
  minWidth: 400,
@@ -56,12 +48,12 @@ var br = Rn(void 0), xr = {
56
48
  defaultWidth: 800,
57
49
  defaultHeight: 600,
58
50
  shadow: "0 8px 32px rgba(0, 0, 0, 0.2)"
59
- }, Sr = {
51
+ }, yr = {
60
52
  height: 48,
61
53
  position: "bottom",
62
54
  background: "rgba(0, 0, 0, 0.8)",
63
55
  blur: !0
64
- }, Cr = {
56
+ }, br = {
65
57
  light: {
66
58
  mode: "light",
67
59
  colors: {
@@ -70,8 +62,8 @@ var br = Rn(void 0), xr = {
70
62
  window: "#ffffff",
71
63
  accent: "#339af0"
72
64
  },
73
- window: xr,
74
- taskbar: Sr,
65
+ window: vr,
66
+ taskbar: yr,
75
67
  desktop: {
76
68
  background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
77
69
  iconSize: 64,
@@ -86,8 +78,8 @@ var br = Rn(void 0), xr = {
86
78
  window: "#25262b",
87
79
  accent: "#4dabf7"
88
80
  },
89
- window: xr,
90
- taskbar: Sr,
81
+ window: vr,
82
+ taskbar: yr,
91
83
  desktop: {
92
84
  background: "linear-gradient(135deg, #1a1b1e 0%, #2d1f3d 100%)",
93
85
  iconSize: 64,
@@ -97,17 +89,15 @@ var br = Rn(void 0), xr = {
97
89
  };
98
90
  //#endregion
99
91
  //#region src/components/Theme/ThemeProvider.tsx
100
- function wr({ children: e, initialMode: t = "light", mode: n, theme: r }) {
101
- let [i, a] = U(n ?? t), o = H(null);
102
- B(() => {
103
- n !== void 0 && n !== i && a(n);
104
- }, [n, i]);
105
- let s = z(() => {
92
+ function xr({ children: e, initialMode: t = "light", mode: n, theme: r }) {
93
+ let [i, a] = U(t), o = H(null), s = n ?? i, c = z(() => {
106
94
  a((e) => e === "light" ? "dark" : "light");
107
- }, []), c = z((e) => {
95
+ }, []), l = z((e) => {
96
+ a(e);
97
+ }, []), u = z((e) => {
108
98
  o.current = e;
109
- }, []), l = z(() => {
110
- let e = Cr[i], t = o.current;
99
+ }, []), d = z(() => {
100
+ let e = br[s], t = o.current;
111
101
  return t ? {
112
102
  ...e,
113
103
  colors: {
@@ -149,41 +139,41 @@ function wr({ children: e, initialMode: t = "light", mode: n, theme: r }) {
149
139
  ...r.desktop
150
140
  }
151
141
  } : e;
152
- }, [i, r]);
142
+ }, [s, r]);
153
143
  B(() => {
154
- document.documentElement.style.setProperty("color-scheme", i), document.documentElement.setAttribute("data-mantine-color-scheme", i);
155
- }, [i]);
156
- let u = V(() => ({
157
- getTheme: l,
158
- setMode: a,
159
- toggle: s,
160
- setCustomColors: c
144
+ document.documentElement.style.setProperty("color-scheme", s), document.documentElement.setAttribute("data-mantine-color-scheme", s);
145
+ }, [s]);
146
+ let f = V(() => ({
147
+ getTheme: d,
148
+ setMode: l,
149
+ toggle: c,
150
+ setCustomColors: u
161
151
  }), [
152
+ d,
162
153
  l,
163
- a,
164
- s,
165
- c
154
+ c,
155
+ u
166
156
  ]);
167
- return /* @__PURE__ */ G(br.Provider, {
168
- value: u,
157
+ return /* @__PURE__ */ G(_r.Provider, {
158
+ value: f,
169
159
  children: e
170
160
  });
171
161
  }
172
162
  //#endregion
173
163
  //#region src/components/Theme/useTheme.ts
174
- function Tr() {
175
- let e = Vn(br);
164
+ function Sr() {
165
+ let e = Rn(_r);
176
166
  if (!e) throw Error("useTheme must be used within a ThemeProvider");
177
167
  return e.getTheme();
178
168
  }
179
- function Er() {
180
- let e = Vn(br);
169
+ function Cr() {
170
+ let e = Rn(_r);
181
171
  if (!e) throw Error("useThemeContext must be used within a ThemeProvider");
182
172
  return e;
183
173
  }
184
174
  //#endregion
185
175
  //#region src/components/Theme/defaultMantineTheme.ts
186
- var Dr = {
176
+ var wr = {
187
177
  primaryColor: "blue",
188
178
  other: {
189
179
  desktop: { backgroundColor: "#1a1a2e" },
@@ -198,40 +188,40 @@ var Dr = {
198
188
  },
199
189
  accent: "#339af0"
200
190
  }
201
- }, Or = Rn(void 0), kr = new ir({ defaultOptions: { queries: {
191
+ }, Tr = Fn(void 0), Er = new tr({ defaultOptions: { queries: {
202
192
  staleTime: Infinity,
203
193
  gcTime: Infinity
204
194
  } } });
205
- function Ar({ children: e, fileSystem: t, isReady: n, error: r }) {
206
- let i = Tr(), o = a((e) => e.setThemeMode), s = a((e) => e.toggleTheme), c = V(() => ({
207
- fs: n ? t : null,
208
- isReady: n,
209
- error: r,
210
- theme: i,
195
+ function Dr({ children: t, fileSystem: n, isReady: r, error: i }) {
196
+ let a = Sr(), o = e((e) => e.setThemeMode), s = e((e) => e.toggleTheme), c = V(() => ({
197
+ fs: r ? n : null,
198
+ isReady: r,
199
+ error: i,
200
+ theme: a,
211
201
  setThemeMode: o,
212
202
  toggleTheme: s
213
203
  }), [
214
- t,
215
204
  n,
216
205
  r,
217
206
  i,
207
+ a,
218
208
  o,
219
209
  s
220
210
  ]);
221
- return /* @__PURE__ */ G(Or.Provider, {
211
+ return /* @__PURE__ */ G(Tr.Provider, {
222
212
  value: c,
223
- children: e
213
+ children: t
224
214
  });
225
215
  }
226
- function jr({ children: e, fileSystem: t, initialMode: n, theme: r, mantineTheme: i, fallback: o = null, onError: s, queryClient: c = kr }) {
227
- let [l, u] = U(!1), [d, f] = U(null), p = a((e) => e.theme.mode), m = a((e) => e.setThemeMode);
216
+ function Or({ children: t, fileSystem: n, initialMode: r, theme: i, mantineTheme: a, fallback: o = null, onError: s, queryClient: c = Er }) {
217
+ let [l, u] = U(!1), [d, f] = U(null), p = e((e) => e.theme.mode), m = e((e) => e.setThemeMode);
228
218
  B(() => {
229
- n && m(n);
219
+ r && m(r);
230
220
  }, []), B(() => {
231
221
  let e = !0;
232
222
  return (async () => {
233
223
  try {
234
- await t.initialize(), e && u(!0);
224
+ await n.initialize(), e && u(!0);
235
225
  } catch (t) {
236
226
  let n = t instanceof Error ? t : Error(String(t));
237
227
  e && (f(n), s?.(n));
@@ -239,24 +229,24 @@ function jr({ children: e, fileSystem: t, initialMode: n, theme: r, mantineTheme
239
229
  })(), () => {
240
230
  e = !1;
241
231
  };
242
- }, [t, s]);
243
- let h = V(() => tr({
244
- ...Dr,
245
- ...i
246
- }), [i]);
247
- return d || !l ? /* @__PURE__ */ G(W, { children: o }) : /* @__PURE__ */ G(ar, {
232
+ }, [n, s]);
233
+ let h = V(() => Qn({
234
+ ...wr,
235
+ ...a
236
+ }), [a]);
237
+ return d || !l ? /* @__PURE__ */ G(W, { children: o }) : /* @__PURE__ */ G(nr, {
248
238
  client: c,
249
- children: /* @__PURE__ */ G(Jn, {
239
+ children: /* @__PURE__ */ G(Gn, {
250
240
  theme: h,
251
241
  forceColorScheme: p,
252
- children: /* @__PURE__ */ G(wr, {
242
+ children: /* @__PURE__ */ G(xr, {
253
243
  mode: p,
254
- theme: r,
255
- children: /* @__PURE__ */ G(Ar, {
256
- fileSystem: t,
244
+ theme: i,
245
+ children: /* @__PURE__ */ G(Dr, {
246
+ fileSystem: n,
257
247
  isReady: l,
258
248
  error: d,
259
- children: e
249
+ children: t
260
250
  })
261
251
  })
262
252
  })
@@ -264,16 +254,16 @@ function jr({ children: e, fileSystem: t, initialMode: n, theme: r, mantineTheme
264
254
  }
265
255
  //#endregion
266
256
  //#region src/components/FdeProvider/useFdeContext.ts
267
- function Mr() {
268
- let e = Vn(Or);
257
+ function kr() {
258
+ let e = Rn(Tr);
269
259
  if (!e) throw Error("useFdeContext must be used within an FdeProvider");
270
260
  return e;
271
261
  }
272
262
  //#endregion
273
263
  //#region src/hooks/useWindowButtonRegistry.tsx
274
- var Nr = Rn(null), Pr = ({ children: e }) => {
264
+ var Ar = Fn(null), jr = ({ children: e }) => {
275
265
  let t = H(/* @__PURE__ */ new Map());
276
- return /* @__PURE__ */ G(Nr.Provider, {
266
+ return /* @__PURE__ */ G(Ar.Provider, {
277
267
  value: {
278
268
  register: (e, n) => {
279
269
  t.current.set(e, n);
@@ -285,46 +275,77 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
285
275
  },
286
276
  children: e
287
277
  });
288
- }, Fr = () => {
289
- let e = Vn(Nr);
278
+ }, Mr = () => {
279
+ let e = Rn(Ar);
290
280
  if (!e) throw Error("useWindowButtonRegistry must be used within WindowButtonRegistryProvider");
291
281
  return e;
292
- }, Ir = { root: "_root_1z0nr_1" }, Lr = "linear-gradient(90deg, rgba(42, 123, 155, 1) 0%, rgba(87, 199, 133, 1) 50%, rgba(237, 221, 83, 1) 100%)", Rr = ({ children: e, onContextMenu: t, wallpaper: n, backgroundColor: r }) => {
293
- let i = P((e) => e.setViewportSize), a = H(null);
282
+ }, Nr = {
283
+ root: "_root_hze7e_1",
284
+ background: "_background_hze7e_10",
285
+ noiseOverlay: "_noiseOverlay_hze7e_19"
286
+ }, Pr = ({ children: t, onContextMenu: n, wallpaper: r, wallpaperModule: i, backgroundColor: a }) => {
287
+ let o = P((e) => e.setViewportSize), s = H(null), c = e((e) => e.wallpaperHasNoise), l = e((e) => e.wallpaperNoiseOpacity), { backgroundImage: u, noiseImageUrl: d } = V(() => {
288
+ if (i === "gradient") {
289
+ let e = r ?? "", t = e.match(/url\(data:image\/png;base64,[^)]+\)/);
290
+ return {
291
+ backgroundImage: e,
292
+ noiseImageUrl: t ? t[0].replace(/url\((.*)\)/, "$1") : ""
293
+ };
294
+ }
295
+ return {
296
+ backgroundImage: r ? `url(${r})` : "",
297
+ noiseImageUrl: ""
298
+ };
299
+ }, [r, i]), f = l / 100;
294
300
  B(() => {
295
- let e = a.current;
301
+ let e = s.current;
296
302
  if (!e) return;
297
303
  let t = new ResizeObserver((e) => {
298
304
  let { width: t, height: n } = e[0]?.contentRect ?? {};
299
- t && t > 0 && n && n > 0 && i(t, n);
305
+ t && t > 0 && n && n > 0 && o(t, n);
300
306
  });
301
307
  return t.observe(e), () => t.disconnect();
302
- }, [i]);
303
- let o = n ? `url(${n})` : Lr;
304
- return /* @__PURE__ */ G("div", {
305
- ref: a,
306
- className: Ir.root,
308
+ }, [o]);
309
+ let p = {
310
+ "--taskbar-height": "48px",
311
+ "--noise-tile-size": "128px"
312
+ };
313
+ return /* @__PURE__ */ K("div", {
314
+ ref: s,
315
+ className: Nr.root,
307
316
  "data-testid": "desktop-area",
308
- style: {
309
- "--taskbar-height": "48px",
310
- backgroundColor: r ?? "transparent",
311
- backgroundImage: o,
312
- backgroundSize: "cover",
313
- backgroundPosition: "center"
314
- },
315
- onContextMenu: t,
316
- children: e
317
+ style: p,
318
+ onContextMenu: n,
319
+ children: [
320
+ /* @__PURE__ */ G("div", {
321
+ className: Nr.background,
322
+ style: {
323
+ backgroundImage: u,
324
+ backgroundSize: "cover",
325
+ backgroundPosition: "center",
326
+ backgroundColor: a ?? "transparent"
327
+ }
328
+ }),
329
+ c && d && /* @__PURE__ */ G("div", {
330
+ className: Nr.noiseOverlay,
331
+ style: {
332
+ backgroundImage: `url(${d})`,
333
+ opacity: f
334
+ }
335
+ }),
336
+ t
337
+ ]
317
338
  });
318
- }, zr = (e) => e.toLocaleTimeString([], {
339
+ }, Fr = (e) => e.toLocaleTimeString([], {
319
340
  hour: "2-digit",
320
341
  minute: "2-digit"
321
- }), Br = () => {
322
- let [e, t] = U(() => zr(/* @__PURE__ */ new Date()));
342
+ }), Ir = () => {
343
+ let [e, t] = U(() => Fr(/* @__PURE__ */ new Date()));
323
344
  return B(() => {
324
- let e = setInterval(() => t(zr(/* @__PURE__ */ new Date())), 1e3);
345
+ let e = setInterval(() => t(Fr(/* @__PURE__ */ new Date())), 1e3);
325
346
  return () => clearInterval(e);
326
347
  }, []), e;
327
- }, Vr = -8, Hr = 0, Ur = () => {
348
+ }, Lr = -8, Rr = 0, zr = () => {
328
349
  let [e, t] = U({
329
350
  activeMenu: null,
330
351
  position: {
@@ -337,7 +358,7 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
337
358
  activeMenu: "window",
338
359
  position: {
339
360
  x: e.clientX,
340
- y: e.clientY + Vr
361
+ y: e.clientY + Lr
341
362
  },
342
363
  targetWindowId: n
343
364
  });
@@ -346,7 +367,7 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
346
367
  activeMenu: "panel",
347
368
  position: {
348
369
  x: e.clientX,
349
- y: e.clientY + Vr
370
+ y: e.clientY + Lr
350
371
  },
351
372
  targetWindowId: null
352
373
  });
@@ -355,7 +376,7 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
355
376
  activeMenu: "launcher",
356
377
  position: {
357
378
  x: e.clientX,
358
- y: e.clientY + Hr
379
+ y: e.clientY + Rr
359
380
  },
360
381
  targetWindowId: null
361
382
  });
@@ -377,17 +398,17 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
377
398
  openLauncherMenu: i,
378
399
  closeMenu: a
379
400
  };
380
- }, Wr = () => {
381
- let e = a((e) => e.animationDuration);
401
+ }, Br = () => {
402
+ let t = e((e) => e.animationDuration);
382
403
  return {
383
- duration: e,
384
- windowVariants: oe(e),
385
- panelVariants: be(e),
386
- minimizeVariant: fe(.3),
387
- restoreVariant: ae(.3),
388
- maximizeTransition: M(.25),
389
- easeIn: he(e),
390
- easeOut: ve(e)
404
+ duration: t,
405
+ windowVariants: _e(t),
406
+ panelVariants: je(t),
407
+ minimizeVariant: Ce(.3),
408
+ restoreVariant: ge(.3),
409
+ maximizeTransition: he(.25),
410
+ easeIn: Ee(t),
411
+ easeOut: ke(t)
391
412
  };
392
413
  }, Q = {
393
414
  WELCOME: "welcome",
@@ -407,14 +428,14 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
407
428
  CODE_SERVER: "code-server",
408
429
  DEVICE_INFO: "device-info",
409
430
  MENUEDIT: "menuedit"
410
- }, Gr = {
431
+ }, Vr = {
411
432
  [Q.FILES]: "filesApp",
412
433
  [Q.PDF]: "pdfViewer",
413
434
  [Q.IMAGE_VIEWER]: "imageViewer",
414
435
  [Q.DOS_EMULATOR]: "dosEmulator",
415
436
  [Q.CODE_SERVER]: "codeServer",
416
437
  [Q.DEVICE_INFO]: "deviceInfo"
417
- }, Kr = [
438
+ }, Hr = [
418
439
  Q.WELCOME,
419
440
  Q.UPLOADER,
420
441
  Q.TERMINAL,
@@ -429,13 +450,13 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
429
450
  ];
430
451
  //#endregion
431
452
  //#region src/hooks/useAppName.ts
432
- function qr(e) {
453
+ function Ur(e) {
433
454
  let { t } = Z("apps");
434
- return e ? t(`names.${Gr[e] ?? e}`, e) : "";
455
+ return e ? t(`names.${Vr[e] ?? e}`, e) : "";
435
456
  }
436
457
  //#endregion
437
458
  //#region src/hooks/useSearchFilter.ts
438
- function Jr(e, t, n) {
459
+ function Wr(e, t, n) {
439
460
  return V(() => {
440
461
  if (!t.trim()) return e;
441
462
  let r = t.toLowerCase().trim();
@@ -451,7 +472,7 @@ function Jr(e, t, n) {
451
472
  }
452
473
  //#endregion
453
474
  //#region src/hooks/useCollapsible.ts
454
- function Yr(e) {
475
+ function Gr(e) {
455
476
  let [t, n] = U(e ?? /* @__PURE__ */ new Set());
456
477
  return {
457
478
  expanded: t,
@@ -485,32 +506,32 @@ function Yr(e) {
485
506
  isExpanded: z((e) => t.has(e), [t])
486
507
  };
487
508
  }
488
- var Xr = {
509
+ var Kr = {
489
510
  header: "_header_2d0oy_1",
490
511
  iconContainer: "_iconContainer_2d0oy_20",
491
512
  expandIcon: "_expandIcon_2d0oy_28",
492
513
  icon: "_icon_2d0oy_20",
493
514
  title: "_title_2d0oy_42",
494
515
  content: "_content_2d0oy_48"
495
- }, Zr = ({ title: e, fcIcon: t = "FcFolder", expanded: n, onToggle: r, children: i, className: a, "aria-label": o }) => {
496
- let s = Rt(n ? "VscRemove" : "VscAdd", {
516
+ }, qr = ({ title: e, fcIcon: t = "FcFolder", expanded: n, onToggle: r, children: i, className: a, "aria-label": o }) => {
517
+ let s = Xt(n ? "VscRemove" : "VscAdd", {
497
518
  size: 14,
498
- className: Xr.expandIcon
519
+ className: Kr.expandIcon
499
520
  });
500
521
  return /* @__PURE__ */ K("div", {
501
522
  className: a,
502
- children: [/* @__PURE__ */ K(er, {
503
- className: Xr.header,
523
+ children: [/* @__PURE__ */ K(Zn, {
524
+ className: Kr.header,
504
525
  onClick: r,
505
526
  "aria-expanded": n,
506
527
  "aria-label": o ?? e,
507
528
  children: [
508
529
  /* @__PURE__ */ G("span", {
509
- className: Xr.iconContainer,
530
+ className: Kr.iconContainer,
510
531
  children: s
511
532
  }),
512
533
  /* @__PURE__ */ G("span", {
513
- className: Xr.icon,
534
+ className: Kr.icon,
514
535
  children: /* @__PURE__ */ G(L, {
515
536
  fcIcon: t,
516
537
  size: 16
@@ -519,16 +540,16 @@ var Xr = {
519
540
  /* @__PURE__ */ G(X, {
520
541
  size: "sm",
521
542
  fw: 500,
522
- className: Xr.title,
543
+ className: Kr.title,
523
544
  children: e
524
545
  })
525
546
  ]
526
547
  }), n && /* @__PURE__ */ G("div", {
527
- className: Xr.content,
548
+ className: Kr.content,
528
549
  children: i
529
550
  })]
530
551
  });
531
- }, Qr = {
552
+ }, Jr = {
532
553
  trigger: "_trigger_4gumo_1",
533
554
  panel: "_panel_4gumo_23",
534
555
  searchContainer: "_searchContainer_4gumo_39",
@@ -540,7 +561,7 @@ var Xr = {
540
561
  };
541
562
  //#endregion
542
563
  //#region src/components/Launcher/Launcher.tsx
543
- function $r(e) {
564
+ function Yr(e) {
544
565
  let t = e.icon, n = "fcIcon" in e ? e.fcIcon : void 0, r = t?.startsWith("Fc") || t?.startsWith("Fi") || t?.startsWith("Vsc");
545
566
  return {
546
567
  id: e.id,
@@ -551,15 +572,15 @@ function $r(e) {
551
572
  iconColor: "iconColor" in e ? e.iconColor : void 0
552
573
  };
553
574
  }
554
- var ei = ({ app: e, onOpen: t }) => {
555
- let n = qr(e.id);
575
+ var Xr = ({ app: e, onOpen: t }) => {
576
+ let n = Ur(e.id);
556
577
  return /* @__PURE__ */ K("button", {
557
- className: Qr.appButton,
578
+ className: Jr.appButton,
558
579
  onClick: () => t(e.id),
559
580
  role: "menuitem",
560
581
  "aria-label": n,
561
582
  children: [/* @__PURE__ */ G("span", {
562
- className: Qr.appIcon,
583
+ className: Jr.appIcon,
563
584
  children: /* @__PURE__ */ G(L, {
564
585
  fcIcon: e.fcIcon,
565
586
  iconUrl: e.iconUrl,
@@ -571,20 +592,20 @@ var ei = ({ app: e, onOpen: t }) => {
571
592
  children: n
572
593
  })]
573
594
  }, e.id);
574
- }, ti = ({ folder: e, isExpanded: t, apps: n, onToggle: r, onOpen: i }) => /* @__PURE__ */ G(Zr, {
575
- title: Yt(e),
595
+ }, Zr = ({ folder: e, isExpanded: t, apps: n, onToggle: r, onOpen: i }) => /* @__PURE__ */ G(qr, {
596
+ title: cn(e),
576
597
  fcIcon: e.fcIcon,
577
598
  expanded: t,
578
599
  onToggle: r,
579
- children: n.map((e) => /* @__PURE__ */ G(ei, {
600
+ children: n.map((e) => /* @__PURE__ */ G(Xr, {
580
601
  app: e,
581
602
  onOpen: i
582
603
  }, e.id))
583
- }, e.id), ni = ({ fcIcon: e = "FcDebian", onContextMenu: t }) => {
584
- let n = I(e, {
604
+ }, e.id), Qr = ({ fcIcon: t = "FcDebian", onContextMenu: n }) => {
605
+ let r = I(t, {
585
606
  size: 22,
586
607
  style: { display: "block" }
587
- }), [r, i] = U(!1), [o, s] = U(""), c = ye(), l = a((e) => e.theme.colors.taskbar), u = P((e) => e.launcherFolders), d = P((e) => e.customApps), { panelVariants: f } = Wr(), p = H(null), m = H(null), { expanded: h, toggle: g, reset: _ } = Yr(/* @__PURE__ */ new Set()), v = V(() => [...it].sort((e, t) => e.name.localeCompare(t.name)), []), y = V(() => new Set(u.flatMap((e) => e.appIds)), [u]), b = Jr(V(() => v.filter((e) => !y.has(e.id)), [v, y]), o, (e) => [e.id, e.name]), x = V(() => {
608
+ }), [i, a] = U(!1), [o, s] = U(""), c = Ae(), l = e((e) => e.theme.colors.taskbar), u = P((e) => e.launcherFolders), d = P((e) => e.customApps), { panelVariants: f } = Br(), p = H(null), m = H(null), { expanded: h, toggle: g, reset: _ } = Gr(/* @__PURE__ */ new Set()), v = V(() => [...ht].sort((e, t) => e.name.localeCompare(t.name)), []), y = V(() => new Set(u.flatMap((e) => e.appIds)), [u]), b = Wr(V(() => v.filter((e) => !y.has(e.id)), [v, y]), o, (e) => [e.id, e.name]), x = V(() => {
588
609
  let e = u.map((e) => ({
589
610
  ...e,
590
611
  appIds: e.appIds.filter((t) => {
@@ -613,57 +634,57 @@ var ei = ({ app: e, onOpen: t }) => {
613
634
  return d.filter((t) => t.id.toLowerCase().includes(e) || t.name.toLowerCase().includes(e));
614
635
  }, [d, o]);
615
636
  B(() => {
616
- o.trim() && r && (x.map((e) => e.id).forEach((e) => {
637
+ o.trim() && i && (x.map((e) => e.id).forEach((e) => {
617
638
  h.has(e) || g(e);
618
- }), S.length > 0 && !h.has("launcher-folder-custom-apps") && g(It));
639
+ }), S.length > 0 && !h.has("launcher-folder-custom-apps") && g(Jt));
619
640
  }, [
620
641
  o,
621
642
  x,
622
643
  S,
623
- r,
644
+ i,
624
645
  h,
625
646
  g
626
647
  ]), B(() => {
627
- r || _();
628
- }, [r, _]), B(() => {
629
- if (!r) return;
648
+ i || _();
649
+ }, [i, _]), B(() => {
650
+ if (!i) return;
630
651
  let e = (e) => {
631
- p.current && !p.current.contains(e.target) && (i(!1), s(""));
652
+ p.current && !p.current.contains(e.target) && (a(!1), s(""));
632
653
  }, t = (e) => {
633
- e.key === "Escape" && (i(!1), s(""));
654
+ e.key === "Escape" && (a(!1), s(""));
634
655
  };
635
656
  return document.addEventListener("mousedown", e), document.addEventListener("keydown", t), () => {
636
657
  document.removeEventListener("mousedown", e), document.removeEventListener("keydown", t);
637
658
  };
638
- }, [r]);
659
+ }, [i]);
639
660
  let C = (e) => {
640
- if (e.preventDefault(), e.stopPropagation(), r) {
641
- i(!1), s("");
661
+ if (e.preventDefault(), e.stopPropagation(), i) {
662
+ a(!1), s("");
642
663
  return;
643
664
  }
644
- t?.(e);
665
+ n?.(e);
645
666
  };
646
667
  B(() => {
647
- r && m.current && m.current.focus();
648
- }, [r]);
668
+ i && m.current && m.current.focus();
669
+ }, [i]);
649
670
  let w = z((e) => {
650
- c(e), i(!1), s("");
671
+ c(e), a(!1), s("");
651
672
  }, [c]), T = z((e) => {
652
673
  g(e);
653
674
  }, [g]), E = I("FcSearch", { size: 16 }), D = z(() => {
654
- r ? (i(!1), s("")) : i(!0);
655
- }, [r]);
675
+ i ? (a(!1), s("")) : a(!0);
676
+ }, [i]);
656
677
  return /* @__PURE__ */ K("div", {
657
678
  ref: p,
658
679
  children: [/* @__PURE__ */ G("button", {
659
- className: Qr.trigger,
680
+ className: Jr.trigger,
660
681
  onClick: D,
661
682
  onContextMenu: C,
662
683
  "aria-label": "Launcher",
663
- "aria-expanded": r,
664
- children: n
665
- }), /* @__PURE__ */ G(sr, { children: r && /* @__PURE__ */ K(cr.div, {
666
- className: Qr.panel,
684
+ "aria-expanded": i,
685
+ children: r
686
+ }), /* @__PURE__ */ G(ir, { children: i && /* @__PURE__ */ K(ar.div, {
687
+ className: Jr.panel,
667
688
  style: { background: l },
668
689
  role: "menu",
669
690
  "aria-label": "App launcher",
@@ -671,40 +692,40 @@ var ei = ({ app: e, onOpen: t }) => {
671
692
  animate: f.animate,
672
693
  exit: f.exit,
673
694
  children: [/* @__PURE__ */ G("div", {
674
- className: Qr.searchContainer,
675
- children: /* @__PURE__ */ G($n, {
695
+ className: Jr.searchContainer,
696
+ children: /* @__PURE__ */ G(Xn, {
676
697
  ref: m,
677
698
  placeholder: "Search apps...",
678
699
  value: o,
679
700
  onChange: (e) => s(e.target.value),
680
701
  leftSection: E,
681
702
  size: "xs",
682
- classNames: { input: Qr.searchInput },
703
+ classNames: { input: Jr.searchInput },
683
704
  "aria-label": "Search apps"
684
705
  })
685
706
  }), /* @__PURE__ */ K("div", {
686
- className: Qr.scrollContainer,
707
+ className: Jr.scrollContainer,
687
708
  children: [
688
709
  x.map((e) => {
689
710
  let t = h.has(e.id);
690
- return e.id === "launcher-folder-custom-apps" ? S.length === 0 ? null : /* @__PURE__ */ G(ti, {
711
+ return e.id === "launcher-folder-custom-apps" ? S.length === 0 ? null : /* @__PURE__ */ G(Zr, {
691
712
  folder: e,
692
713
  isExpanded: t,
693
- apps: S.map($r),
714
+ apps: S.map(Yr),
694
715
  onToggle: () => T(e.id),
695
716
  onOpen: w
696
- }, e.id) : /* @__PURE__ */ G(ti, {
717
+ }, e.id) : /* @__PURE__ */ G(Zr, {
697
718
  folder: e,
698
719
  isExpanded: t,
699
- apps: e.appIds.map((e) => v.find((t) => t.id === e)).filter((e) => e !== void 0).sort((e, t) => e.name.localeCompare(t.name)).map($r),
720
+ apps: e.appIds.map((e) => v.find((t) => t.id === e)).filter((e) => e !== void 0).sort((e, t) => e.name.localeCompare(t.name)).map(Yr),
700
721
  onToggle: () => T(e.id),
701
722
  onOpen: w
702
723
  }, e.id);
703
724
  }),
704
725
  b.length > 0 && /* @__PURE__ */ G("div", {
705
- className: Qr.appsSection,
706
- children: b.map((e) => /* @__PURE__ */ G(ei, {
707
- app: $r(e),
726
+ className: Jr.appsSection,
727
+ children: b.map((e) => /* @__PURE__ */ G(Xr, {
728
+ app: Yr(e),
708
729
  onOpen: w
709
730
  }, e.id))
710
731
  }),
@@ -719,7 +740,7 @@ var ei = ({ app: e, onOpen: t }) => {
719
740
  })]
720
741
  }) })]
721
742
  });
722
- }, ri = ({ x: e, y: t }) => /* @__PURE__ */ G(J.Target, { children: /* @__PURE__ */ G("div", {
743
+ }, $r = ({ x: e, y: t }) => /* @__PURE__ */ G(J.Target, { children: /* @__PURE__ */ G("div", {
723
744
  "aria-hidden": "true",
724
745
  style: {
725
746
  position: "fixed",
@@ -729,9 +750,9 @@ var ei = ({ app: e, onOpen: t }) => {
729
750
  height: 0,
730
751
  pointerEvents: "none"
731
752
  }
732
- }) }), ii = (e) => {
753
+ }) }), ei = (e) => {
733
754
  let t = H(null), [n, r] = U(0);
734
- return Hn(() => {
755
+ return zn(() => {
735
756
  if (t.current && e) {
736
757
  let e = t.current.offsetHeight;
737
758
  r(e);
@@ -740,16 +761,16 @@ var ei = ({ app: e, onOpen: t }) => {
740
761
  menuRef: t,
741
762
  menuHeight: n
742
763
  };
743
- }, ai = { menuItem: "_menuItem_18vno_1" }, oi = 8, si = ({ windowMenuOpened: e, panelMenuOpened: t, launcherMenuOpened: n, menuPosition: r, targetWindowId: i, targetWindowState: a, onCloseWindow: o, onMinimizeWindow: s, onMaximizeWindow: c, onRestoreWindow: l, onClose: u }) => {
764
+ }, ti = { menuItem: "_menuItem_18vno_1" }, ni = 8, ri = ({ windowMenuOpened: e, panelMenuOpened: t, launcherMenuOpened: n, menuPosition: r, targetWindowId: i, targetWindowState: a, onCloseWindow: o, onMinimizeWindow: s, onMaximizeWindow: c, onRestoreWindow: l, onClose: u }) => {
744
765
  let { t: d } = Z("contextMenu"), f = {
745
766
  size: 14,
746
767
  style: { display: "block" }
747
- }, p = () => I("FcCancel", f), m = () => I("FcMinus", f), h = () => I("FcTemplate", f), g = () => I("FcUndo", f), _ = () => I("FcSettings", f), v = () => I("FcFolder", f), y = ye(), b = qr("menuedit"), x = P((e) => e.openWindow), S = a === "minimized", C = a === "maximized", { menuRef: w, menuHeight: T } = ii(e), { menuRef: E, menuHeight: D } = ii(t), { menuRef: ee, menuHeight: O } = ii(n), [k, te] = U(!1), [A, j] = U(!1), [ne, re] = U(!1);
748
- Hn(() => {
768
+ }, p = () => I("FcCancel", f), m = () => I("FcMinus", f), h = () => I("FcTemplate", f), g = () => I("FcUndo", f), _ = () => I("FcSettings", f), v = () => I("FcFolder", f), y = Ae(), b = Ur("menuedit"), x = P((e) => e.openWindow), S = a === "minimized", C = a === "maximized", { menuRef: w, menuHeight: T } = ei(e), { menuRef: E, menuHeight: D } = ei(t), { menuRef: ee, menuHeight: O } = ei(n), [k, te] = U(!1), [A, j] = U(!1), [ne, re] = U(!1);
769
+ zn(() => {
749
770
  e || te(!1), e && T > 0 && te(!0);
750
- }, [e, T]), Hn(() => {
771
+ }, [e, T]), zn(() => {
751
772
  t || j(!1), t && D > 0 && j(!0);
752
- }, [t, D]), Hn(() => {
773
+ }, [t, D]), zn(() => {
753
774
  n || re(!1), n && O > 0 && re(!0);
754
775
  }, [n, O]);
755
776
  let ie = V(() => e ? {
@@ -775,8 +796,8 @@ var ei = ({ app: e, onOpen: t }) => {
775
796
  A,
776
797
  ne
777
798
  ]), M = V(() => {
778
- let { x: e, y: t } = r, { height: n, ready: i } = ie, a = t - oi;
779
- return i && n > 0 && t > window.innerHeight - 48 - n - oi && (a = t - n + oi), {
799
+ let { x: e, y: t } = r, { height: n, ready: i } = ie, a = t - ni;
800
+ return i && n > 0 && t > window.innerHeight - 48 - n - ni && (a = t - n + ni), {
780
801
  x: e,
781
802
  y: a
782
803
  };
@@ -807,7 +828,7 @@ var ei = ({ app: e, onOpen: t }) => {
807
828
  closeOnEscape: !0,
808
829
  closeOnItemClick: !0,
809
830
  withinPortal: !0,
810
- children: [/* @__PURE__ */ G(ri, {
831
+ children: [/* @__PURE__ */ G($r, {
811
832
  x: M.x,
812
833
  y: M.y
813
834
  }), /* @__PURE__ */ K(J.Dropdown, {
@@ -819,7 +840,7 @@ var ei = ({ app: e, onOpen: t }) => {
819
840
  i && s(i);
820
841
  },
821
842
  children: /* @__PURE__ */ K("div", {
822
- className: ai.menuItem,
843
+ className: ti.menuItem,
823
844
  children: [
824
845
  /* @__PURE__ */ G(m, {}),
825
846
  " ",
@@ -832,7 +853,7 @@ var ei = ({ app: e, onOpen: t }) => {
832
853
  i && l(i);
833
854
  },
834
855
  children: /* @__PURE__ */ K("div", {
835
- className: ai.menuItem,
856
+ className: ti.menuItem,
836
857
  children: [
837
858
  /* @__PURE__ */ G(g, {}),
838
859
  " ",
@@ -844,7 +865,7 @@ var ei = ({ app: e, onOpen: t }) => {
844
865
  i && c(i);
845
866
  },
846
867
  children: /* @__PURE__ */ K("div", {
847
- className: ai.menuItem,
868
+ className: ti.menuItem,
848
869
  children: [
849
870
  /* @__PURE__ */ G(h, {}),
850
871
  " ",
@@ -858,7 +879,7 @@ var ei = ({ app: e, onOpen: t }) => {
858
879
  i && o(i);
859
880
  },
860
881
  children: /* @__PURE__ */ K("div", {
861
- className: ai.menuItem,
882
+ className: ti.menuItem,
862
883
  children: [
863
884
  /* @__PURE__ */ G(p, {}),
864
885
  " ",
@@ -876,7 +897,7 @@ var ei = ({ app: e, onOpen: t }) => {
876
897
  closeOnEscape: !0,
877
898
  closeOnItemClick: !0,
878
899
  withinPortal: !0,
879
- children: [/* @__PURE__ */ G(ri, {
900
+ children: [/* @__PURE__ */ G($r, {
880
901
  x: M.x,
881
902
  y: M.y
882
903
  }), /* @__PURE__ */ G(J.Dropdown, {
@@ -887,7 +908,7 @@ var ei = ({ app: e, onOpen: t }) => {
887
908
  y("settings");
888
909
  },
889
910
  children: /* @__PURE__ */ K("div", {
890
- className: ai.menuItem,
911
+ className: ti.menuItem,
891
912
  children: [
892
913
  /* @__PURE__ */ G(_, {}),
893
914
  " ",
@@ -904,7 +925,7 @@ var ei = ({ app: e, onOpen: t }) => {
904
925
  closeOnEscape: !0,
905
926
  closeOnItemClick: !0,
906
927
  withinPortal: !0,
907
- children: [/* @__PURE__ */ G(ri, {
928
+ children: [/* @__PURE__ */ G($r, {
908
929
  x: M.x,
909
930
  y: M.y
910
931
  }), /* @__PURE__ */ K(J.Dropdown, {
@@ -926,7 +947,7 @@ var ei = ({ app: e, onOpen: t }) => {
926
947
  })]
927
948
  })
928
949
  ] });
929
- }, ci = {
950
+ }, ii = {
930
951
  actions: {
931
952
  save: "Save",
932
953
  saveAs: "Save As",
@@ -1027,7 +1048,7 @@ var ei = ({ app: e, onOpen: t }) => {
1027
1048
  ariaLabel: "App launcher",
1028
1049
  selectedIcon: "Selected: {{icon}}"
1029
1050
  }
1030
- }, li = {
1051
+ }, ai = {
1031
1052
  names: {
1032
1053
  notepad: "Notepad",
1033
1054
  terminal: "Terminal",
@@ -1158,7 +1179,7 @@ var ei = ({ app: e, onOpen: t }) => {
1158
1179
  notAvailableMessage: "VS Code (code-server) cannot be used in browser mode.",
1159
1180
  dockerRequired: "Please run in Docker to use VS Code."
1160
1181
  }
1161
- }, ui = {
1182
+ }, oi = {
1162
1183
  sections: {
1163
1184
  wallpaper: {
1164
1185
  label: "Wallpaper",
@@ -1189,11 +1210,24 @@ var ei = ({ app: e, onOpen: t }) => {
1189
1210
  title: "Wallpaper",
1190
1211
  wallpaperType: "Wallpaper Type",
1191
1212
  staticImage: "Static Image",
1213
+ gradient: "Gradient",
1214
+ gradientType: "Gradient Type",
1215
+ gradientPreset: "Preset",
1216
+ gradientPosition: "Position {index}",
1217
+ addColor: "Add color",
1218
+ removeColor: "Remove",
1219
+ linear: "Linear",
1220
+ radial: "Radial",
1221
+ conic: "Conic",
1222
+ angle: "Angle",
1192
1223
  chooseFromImages: "Choose from Images",
1193
1224
  uploadFromDisk: "Upload from disk",
1194
1225
  resetToDefault: "Reset to default",
1195
1226
  orEnterUrl: "Or enter a URL",
1196
- wallpaperPreview: "Wallpaper preview"
1227
+ wallpaperPreview: "Wallpaper preview",
1228
+ gradientPreview: "Gradient preview",
1229
+ addNoise: "Add noise texture",
1230
+ noiseOpacity: "Noise opacity"
1197
1231
  },
1198
1232
  appearance: {
1199
1233
  title: "Appearance",
@@ -1233,7 +1267,7 @@ var ei = ({ app: e, onOpen: t }) => {
1233
1267
  spanish: "Español"
1234
1268
  },
1235
1269
  all: "All Settings"
1236
- }, di = {
1270
+ }, si = {
1237
1271
  window: {
1238
1272
  title: "Window",
1239
1273
  minimize: "Minimize",
@@ -1261,7 +1295,7 @@ var ei = ({ app: e, onOpen: t }) => {
1261
1295
  selectFolder: "Select folder",
1262
1296
  filename: "filename.md"
1263
1297
  }
1264
- }, fi = {
1298
+ }, ci = {
1265
1299
  window: {
1266
1300
  minimize: "Minimize",
1267
1301
  restore: "Restore",
@@ -1307,7 +1341,7 @@ var ei = ({ app: e, onOpen: t }) => {
1307
1341
  title: "Launcher",
1308
1342
  editLauncher: "Edit Launcher"
1309
1343
  }
1310
- }, pi = {
1344
+ }, li = {
1311
1345
  empty: {
1312
1346
  title: "There are no new notifications",
1313
1347
  message: "For now"
@@ -1317,7 +1351,7 @@ var ei = ({ app: e, onOpen: t }) => {
1317
1351
  hideNotifications: "Hide notifications",
1318
1352
  clock: "clock"
1319
1353
  }
1320
- }, mi = {
1354
+ }, ui = {
1321
1355
  toolbar: {
1322
1356
  formatting: "Text formatting",
1323
1357
  bold: "Bold",
@@ -1333,7 +1367,7 @@ var ei = ({ app: e, onOpen: t }) => {
1333
1367
  horizontalRule: "Horizontal rule"
1334
1368
  },
1335
1369
  untitled: "untitled.md"
1336
- }, hi = {
1370
+ }, di = {
1337
1371
  hero: {
1338
1372
  title: "Fullstack Developer & DevOps",
1339
1373
  downloadCV: "Download CV",
@@ -1346,7 +1380,7 @@ var ei = ({ app: e, onOpen: t }) => {
1346
1380
  experience: "Professional Experience",
1347
1381
  techStack: "Tech Stack",
1348
1382
  languages: "Languages"
1349
- }, gi = {
1383
+ }, fi = {
1350
1384
  title: "Edit Launcher",
1351
1385
  newFolder: "New Folder",
1352
1386
  predefined: "Predefined",
@@ -1359,7 +1393,7 @@ var ei = ({ app: e, onOpen: t }) => {
1359
1393
  addFolder: "Add folder",
1360
1394
  instructions: "Right-click an app in a folder to remove it. Click an available app to add it to the first custom folder.",
1361
1395
  canCreateNewFolder: "You can create new folders if needed."
1362
- }, _i = {
1396
+ }, pi = {
1363
1397
  actions: {
1364
1398
  save: "Guardar",
1365
1399
  saveAs: "Guardar como",
@@ -1460,7 +1494,7 @@ var ei = ({ app: e, onOpen: t }) => {
1460
1494
  ariaLabel: "Lanzador de aplicaciones",
1461
1495
  selectedIcon: "Seleccionado: {{icon}}"
1462
1496
  }
1463
- }, vi = {
1497
+ }, mi = {
1464
1498
  names: {
1465
1499
  notepad: "Bloc de notas",
1466
1500
  terminal: "Terminal",
@@ -1591,7 +1625,7 @@ var ei = ({ app: e, onOpen: t }) => {
1591
1625
  notAvailableMessage: "VS Code (code-server) no puede usarse en modo navegador.",
1592
1626
  dockerRequired: "Por favor, ejecuta la aplicación en Docker para usar VS Code."
1593
1627
  }
1594
- }, yi = {
1628
+ }, hi = {
1595
1629
  sections: {
1596
1630
  wallpaper: {
1597
1631
  label: "Fondo de pantalla",
@@ -1622,11 +1656,24 @@ var ei = ({ app: e, onOpen: t }) => {
1622
1656
  title: "Fondo de pantalla",
1623
1657
  wallpaperType: "Tipo de fondo",
1624
1658
  staticImage: "Imagen estática",
1659
+ gradient: "Degradado",
1660
+ gradientType: "Tipo de degradado",
1661
+ gradientPreset: "Preset",
1662
+ gradientPosition: "Posición {index}",
1663
+ addColor: "Añadir color",
1664
+ removeColor: "Quitar",
1665
+ linear: "Lineal",
1666
+ radial: "Radial",
1667
+ conic: "Cónico",
1668
+ angle: "Ángulo",
1625
1669
  chooseFromImages: "Elegir de imágenes",
1626
1670
  uploadFromDisk: "Subir desde disco",
1627
1671
  resetToDefault: "Restablecer por defecto",
1628
1672
  orEnterUrl: "O introduce una URL",
1629
- wallpaperPreview: "Vista previa del fondo"
1673
+ wallpaperPreview: "Vista previa del fondo",
1674
+ gradientPreview: "Vista previa del degradado",
1675
+ addNoise: "Añadir textura de ruido",
1676
+ noiseOpacity: "Opacidad del ruido"
1630
1677
  },
1631
1678
  appearance: {
1632
1679
  title: "Apariencia",
@@ -1666,7 +1713,7 @@ var ei = ({ app: e, onOpen: t }) => {
1666
1713
  spanish: "Español"
1667
1714
  },
1668
1715
  all: "Todos los ajustes"
1669
- }, bi = {
1716
+ }, gi = {
1670
1717
  window: {
1671
1718
  title: "Ventana",
1672
1719
  minimize: "Minimizar",
@@ -1694,7 +1741,7 @@ var ei = ({ app: e, onOpen: t }) => {
1694
1741
  selectFolder: "Seleccionar carpeta",
1695
1742
  filename: "nombre.md"
1696
1743
  }
1697
- }, xi = {
1744
+ }, _i = {
1698
1745
  window: {
1699
1746
  minimize: "Minimizar",
1700
1747
  restore: "Restaurar",
@@ -1740,7 +1787,7 @@ var ei = ({ app: e, onOpen: t }) => {
1740
1787
  title: "Launcher",
1741
1788
  editLauncher: "Editar Launcher"
1742
1789
  }
1743
- }, Si = {
1790
+ }, vi = {
1744
1791
  empty: {
1745
1792
  title: "No hay notificaciones nuevas",
1746
1793
  message: "Por ahora"
@@ -1750,7 +1797,7 @@ var ei = ({ app: e, onOpen: t }) => {
1750
1797
  hideNotifications: "Ocultar notificaciones",
1751
1798
  clock: "reloj"
1752
1799
  }
1753
- }, Ci = {
1800
+ }, yi = {
1754
1801
  toolbar: {
1755
1802
  formatting: "Formato de texto",
1756
1803
  bold: "Negrita",
@@ -1766,7 +1813,7 @@ var ei = ({ app: e, onOpen: t }) => {
1766
1813
  horizontalRule: "Línea horizontal"
1767
1814
  },
1768
1815
  untitled: "sin-titulo.md"
1769
- }, wi = {
1816
+ }, bi = {
1770
1817
  hero: {
1771
1818
  title: "Fullstack Developer & DevOps",
1772
1819
  downloadCV: "Descargar CV",
@@ -1779,7 +1826,7 @@ var ei = ({ app: e, onOpen: t }) => {
1779
1826
  experience: "Experiencia Profesional",
1780
1827
  techStack: "Stack Tecnológico",
1781
1828
  languages: "Idiomas"
1782
- }, Ti = {
1829
+ }, xi = {
1783
1830
  newFolder: "Nueva Carpeta",
1784
1831
  predefined: "Predefinida",
1785
1832
  rename: "Renombrar",
@@ -1791,34 +1838,34 @@ var ei = ({ app: e, onOpen: t }) => {
1791
1838
  addFolder: "Añadir carpeta",
1792
1839
  instructions: "Clic derecho en una app dentro de una carpeta para eliminarla. Clic en una app disponible para añadirla a la primera carpeta personalizada.",
1793
1840
  canCreateNewFolder: "Puedes crear una nueva carpeta si lo necesitas."
1794
- }, Ei = ["en", "es"];
1795
- dr.use(fr).use(ur).init({
1841
+ }, Si = ["en", "es"];
1842
+ cr.use(lr).use(sr).init({
1796
1843
  resources: {
1797
1844
  en: {
1798
- common: ci,
1799
- apps: li,
1800
- settings: ui,
1801
- window: di,
1802
- contextMenu: fi,
1803
- notifications: pi,
1804
- notes: mi,
1805
- welcome: hi,
1806
- menuedit: gi
1845
+ common: ii,
1846
+ apps: ai,
1847
+ settings: oi,
1848
+ window: si,
1849
+ contextMenu: ci,
1850
+ notifications: li,
1851
+ notes: ui,
1852
+ welcome: di,
1853
+ menuedit: fi
1807
1854
  },
1808
1855
  es: {
1809
- common: _i,
1810
- apps: vi,
1811
- settings: yi,
1812
- window: bi,
1813
- contextMenu: xi,
1814
- notifications: Si,
1815
- notes: Ci,
1816
- welcome: wi,
1817
- menuedit: Ti
1856
+ common: pi,
1857
+ apps: mi,
1858
+ settings: hi,
1859
+ window: gi,
1860
+ contextMenu: _i,
1861
+ notifications: vi,
1862
+ notes: yi,
1863
+ welcome: bi,
1864
+ menuedit: xi
1818
1865
  }
1819
1866
  },
1820
1867
  fallbackLng: "en",
1821
- supportedLngs: Ei,
1868
+ supportedLngs: Si,
1822
1869
  ns: [
1823
1870
  "common",
1824
1871
  "apps",
@@ -1838,7 +1885,7 @@ dr.use(fr).use(ur).init({
1838
1885
  caches: ["localStorage"]
1839
1886
  }
1840
1887
  });
1841
- var Di = dr, Oi = {
1888
+ var Ci = cr, wi = {
1842
1889
  root: "_root_17um1_1",
1843
1890
  windowButton: "_windowButton_17um1_15",
1844
1891
  systemTray: "_systemTray_17um1_44",
@@ -1846,64 +1893,64 @@ var Di = dr, Oi = {
1846
1893
  clock: "_clock_17um1_70",
1847
1894
  notifButton: "_notifButton_17um1_88",
1848
1895
  langButton: "_langButton_17um1_109"
1849
- }, ki = {
1896
+ }, Ti = {
1850
1897
  en: "English",
1851
1898
  es: "Español"
1852
- }, Ai = () => {
1853
- let { t: e, i18n: t } = Z("settings"), n = a((e) => e.language), r = a((e) => e.setLanguage), [i, o] = U(!1), s = z((e) => {
1854
- r(e), t.changeLanguage(e), localStorage.setItem("fde-desktop:language", e), o(!1);
1855
- }, [r, t]);
1899
+ }, Ei = () => {
1900
+ let { t, i18n: n } = Z("settings"), r = e((e) => e.language), i = e((e) => e.setLanguage), [a, o] = U(!1), s = z((e) => {
1901
+ i(e), n.changeLanguage(e), localStorage.setItem("fde-desktop:language", e), o(!1);
1902
+ }, [i, n]);
1856
1903
  return /* @__PURE__ */ K(Y, {
1857
- opened: i,
1904
+ opened: a,
1858
1905
  onChange: o,
1859
1906
  position: "top-end",
1860
1907
  shadow: "md",
1861
1908
  withArrow: !0,
1862
- children: [/* @__PURE__ */ G(Y.Target, { children: /* @__PURE__ */ G(er, {
1863
- className: Oi.langButton,
1909
+ children: [/* @__PURE__ */ G(Y.Target, { children: /* @__PURE__ */ G(Zn, {
1910
+ className: wi.langButton,
1864
1911
  onClick: () => o((e) => !e),
1865
- "aria-label": e("language.selectPlaceholder"),
1866
- "aria-expanded": i,
1912
+ "aria-label": t("language.selectPlaceholder"),
1913
+ "aria-expanded": a,
1867
1914
  children: /* @__PURE__ */ G(l, {
1868
- lang: n,
1915
+ lang: r,
1869
1916
  size: 16
1870
1917
  })
1871
- }) }), /* @__PURE__ */ G(Y.Dropdown, { children: /* @__PURE__ */ G(Qn, {
1918
+ }) }), /* @__PURE__ */ G(Y.Dropdown, { children: /* @__PURE__ */ G(Yn, {
1872
1919
  gap: "xs",
1873
- children: Ei.map((e) => /* @__PURE__ */ G(er, {
1920
+ children: Si.map((e) => /* @__PURE__ */ G(Zn, {
1874
1921
  onClick: () => s(e),
1875
- "aria-label": ki[e],
1876
- "aria-pressed": e === n,
1922
+ "aria-label": Ti[e],
1923
+ "aria-pressed": e === r,
1877
1924
  style: {
1878
1925
  padding: "8px 12px",
1879
1926
  borderRadius: 6,
1880
1927
  width: "100%",
1881
- background: e === n ? "var(--mantine-primary-color-light)" : "transparent",
1928
+ background: e === r ? "var(--mantine-primary-color-light)" : "transparent",
1882
1929
  cursor: "pointer"
1883
1930
  },
1884
- children: /* @__PURE__ */ K(Kn, {
1931
+ children: /* @__PURE__ */ K(Un, {
1885
1932
  gap: "sm",
1886
1933
  children: [/* @__PURE__ */ G(l, {
1887
1934
  lang: e,
1888
1935
  size: 20
1889
1936
  }), /* @__PURE__ */ G(X, {
1890
1937
  size: "sm",
1891
- fw: e === n ? 600 : 400,
1892
- children: ki[e]
1938
+ fw: e === r ? 600 : 400,
1939
+ children: Ti[e]
1893
1940
  })]
1894
1941
  })
1895
1942
  }, e))
1896
1943
  }) })]
1897
1944
  });
1898
- }, ji = ({ win: e, onClick: t, onContextMenu: n }) => {
1899
- let r = H(null), { register: i, unregister: a } = Fr();
1945
+ }, Di = ({ win: e, onClick: t, onContextMenu: n }) => {
1946
+ let r = H(null), { register: i, unregister: a } = Mr();
1900
1947
  return B(() => (r.current && i(e.id, r.current.getBoundingClientRect()), () => a(e.id)), [
1901
1948
  e.id,
1902
1949
  i,
1903
1950
  a
1904
1951
  ]), /* @__PURE__ */ K("button", {
1905
1952
  ref: r,
1906
- className: Oi.windowButton,
1953
+ className: wi.windowButton,
1907
1954
  "data-active": e.state === "minimized" ? "false" : "true",
1908
1955
  onClick: t,
1909
1956
  onContextMenu: n,
@@ -1920,8 +1967,8 @@ var Di = dr, Oi = {
1920
1967
  children: e.title
1921
1968
  })]
1922
1969
  });
1923
- }, Mi = ({ calendarSlot: e }) => {
1924
- let { t } = Z("notifications"), n = a((e) => e.theme.colors.taskbar), r = a((e) => e.theme.mode), i = a((e) => e.toggleTheme), o = a((e) => e.launcherIcon), s = P((e) => e.notifications), c = P((e) => e.removeNotification), l = P((e) => e.windows), u = P((e) => e.restoreWindow), d = P((e) => e.minimizeWindow), f = P((e) => e.focusWindow), p = P((e) => e.closeWindow), m = P((e) => e.maximizeWindow), h = Br(), [g, _] = U(!1), [v, y] = U(!1), { position: b, targetWindowId: x, windowMenuOpened: S, panelMenuOpened: C, launcherMenuOpened: w, openWindowMenu: T, openPanelMenu: E, openLauncherMenu: D, closeMenu: ee } = Ur(), O = x ? l.find((e) => e.id === x)?.state ?? null : null, k = H(0);
1970
+ }, Oi = ({ calendarSlot: t }) => {
1971
+ let { t: n } = Z("notifications"), r = e((e) => e.theme.colors.taskbar), i = e((e) => e.theme.mode), a = e((e) => e.toggleTheme), o = e((e) => e.launcherIcon), s = P((e) => e.notifications), c = P((e) => e.removeNotification), l = P((e) => e.windows), u = P((e) => e.restoreWindow), d = P((e) => e.minimizeWindow), f = P((e) => e.focusWindow), p = P((e) => e.closeWindow), m = P((e) => e.maximizeWindow), h = Ir(), [g, _] = U(!1), [v, y] = U(!1), { position: b, targetWindowId: x, windowMenuOpened: S, panelMenuOpened: C, launcherMenuOpened: w, openWindowMenu: T, openPanelMenu: E, openLauncherMenu: D, closeMenu: ee } = zr(), O = x ? l.find((e) => e.id === x)?.state ?? null : null, k = H(0);
1925
1972
  B(() => {
1926
1973
  s.length > k.current && setTimeout(() => y(!0), 0), k.current = s.length;
1927
1974
  }, [s.length]);
@@ -1929,23 +1976,23 @@ var Di = dr, Oi = {
1929
1976
  t === "minimized" ? (u(e), f(e)) : d(e);
1930
1977
  };
1931
1978
  return /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ K("div", {
1932
- className: Oi.root,
1933
- style: { background: n },
1979
+ className: wi.root,
1980
+ style: { background: r },
1934
1981
  role: "toolbar",
1935
1982
  "aria-label": "Taskbar",
1936
1983
  onContextMenu: E,
1937
1984
  children: [
1938
- /* @__PURE__ */ G(ni, {
1985
+ /* @__PURE__ */ G(Qr, {
1939
1986
  fcIcon: o,
1940
1987
  onContextMenu: D
1941
1988
  }),
1942
- te.map((e) => /* @__PURE__ */ G(ji, {
1989
+ te.map((e) => /* @__PURE__ */ G(Di, {
1943
1990
  win: e,
1944
1991
  onClick: () => A(e.id, e.state),
1945
1992
  onContextMenu: (t) => T(t, e.id)
1946
1993
  }, e.id)),
1947
1994
  /* @__PURE__ */ K("div", {
1948
- className: Oi.systemTray,
1995
+ className: wi.systemTray,
1949
1996
  "data-testid": "system-tray",
1950
1997
  children: [
1951
1998
  /* @__PURE__ */ K(Y, {
@@ -1956,9 +2003,9 @@ var Di = dr, Oi = {
1956
2003
  withArrow: !0,
1957
2004
  keepMounted: !0,
1958
2005
  children: [/* @__PURE__ */ G(Y.Target, { children: /* @__PURE__ */ G("button", {
1959
- className: Oi.notifButton,
2006
+ className: wi.notifButton,
1960
2007
  onClick: () => y((e) => !e),
1961
- "aria-label": t(v ? "taskbar.hideNotifications" : "taskbar.showNotifications"),
2008
+ "aria-label": n(v ? "taskbar.hideNotifications" : "taskbar.showNotifications"),
1962
2009
  children: /* @__PURE__ */ G(L, {
1963
2010
  fcIcon: v ? "FcCollapse" : "FcExpand",
1964
2011
  size: 18
@@ -1976,11 +2023,11 @@ var Di = dr, Oi = {
1976
2023
  gap: 8,
1977
2024
  minWidth: 300
1978
2025
  },
1979
- children: s.length === 0 ? /* @__PURE__ */ G(Xn, {
1980
- title: t("empty.title"),
2026
+ children: s.length === 0 ? /* @__PURE__ */ G(qn, {
2027
+ title: n("empty.title"),
1981
2028
  onClose: () => y(!1),
1982
- children: t("empty.message")
1983
- }) : s.map((e) => /* @__PURE__ */ G(Xn, {
2029
+ children: n("empty.message")
2030
+ }) : s.map((e) => /* @__PURE__ */ G(qn, {
1984
2031
  withBorder: !0,
1985
2032
  icon: e.fcIcon ? /* @__PURE__ */ G(L, {
1986
2033
  fcIcon: e.fcIcon,
@@ -1995,13 +2042,13 @@ var Di = dr, Oi = {
1995
2042
  })
1996
2043
  })]
1997
2044
  }),
1998
- /* @__PURE__ */ G(Ai, {}),
2045
+ /* @__PURE__ */ G(Ei, {}),
1999
2046
  /* @__PURE__ */ G("button", {
2000
- className: Oi.themeToggle,
2001
- onClick: i,
2002
- "aria-label": t(r === "dark" ? "theme.switchToLight" : "theme.switchToDark", { ns: "common" }),
2003
- title: t(r === "dark" ? "theme.switchToLight" : "theme.switchToDark", { ns: "common" }),
2004
- children: r === "dark" ? "☀️" : "🌙"
2047
+ className: wi.themeToggle,
2048
+ onClick: a,
2049
+ "aria-label": n(i === "dark" ? "theme.switchToLight" : "theme.switchToDark", { ns: "common" }),
2050
+ title: n(i === "dark" ? "theme.switchToLight" : "theme.switchToDark", { ns: "common" }),
2051
+ children: i === "dark" ? "☀️" : "🌙"
2005
2052
  }),
2006
2053
  /* @__PURE__ */ K(Y, {
2007
2054
  opened: g,
@@ -2010,20 +2057,20 @@ var Di = dr, Oi = {
2010
2057
  shadow: "md",
2011
2058
  withArrow: !0,
2012
2059
  children: [/* @__PURE__ */ G(Y.Target, { children: /* @__PURE__ */ G("button", {
2013
- className: Oi.clock,
2060
+ className: wi.clock,
2014
2061
  onClick: () => _((e) => !e),
2015
- "aria-label": t("taskbar.clock"),
2062
+ "aria-label": n("taskbar.clock"),
2016
2063
  "aria-expanded": g,
2017
2064
  children: /* @__PURE__ */ G(X, {
2018
2065
  size: "xs",
2019
2066
  children: h
2020
2067
  })
2021
- }) }), /* @__PURE__ */ G(Y.Dropdown, { children: e })]
2068
+ }) }), /* @__PURE__ */ G(Y.Dropdown, { children: t })]
2022
2069
  })
2023
2070
  ]
2024
2071
  })
2025
2072
  ]
2026
- }), /* @__PURE__ */ G(si, {
2073
+ }), /* @__PURE__ */ G(ri, {
2027
2074
  windowMenuOpened: S,
2028
2075
  panelMenuOpened: C,
2029
2076
  launcherMenuOpened: w,
@@ -2036,21 +2083,21 @@ var Di = dr, Oi = {
2036
2083
  onRestoreWindow: u,
2037
2084
  onClose: ee
2038
2085
  })] });
2039
- }, Ni = ({ message: e = "Loading...", size: t = "lg" }) => /* @__PURE__ */ G(Gn, {
2086
+ }, ki = ({ message: e = "Loading...", size: t = "lg" }) => /* @__PURE__ */ G(Hn, {
2040
2087
  style: {
2041
2088
  width: "100%",
2042
2089
  height: "100%"
2043
2090
  },
2044
- children: /* @__PURE__ */ K(Qn, {
2091
+ children: /* @__PURE__ */ K(Yn, {
2045
2092
  align: "center",
2046
2093
  gap: "md",
2047
- children: [/* @__PURE__ */ G(qn, { size: t }), /* @__PURE__ */ G(X, {
2094
+ children: [/* @__PURE__ */ G(Wn, { size: t }), /* @__PURE__ */ G(X, {
2048
2095
  c: "dimmed",
2049
2096
  children: e
2050
2097
  })]
2051
2098
  })
2052
- }), Pi = ({ progress: e, windowIcon: t }) => {
2053
- let n = nr(), r = () => {
2099
+ }), Ai = ({ progress: e, windowIcon: t }) => {
2100
+ let n = $n(), r = () => {
2054
2101
  switch (e.state) {
2055
2102
  case "fetching": return "Fetching app info...";
2056
2103
  case "compiling": return "Compiling app...";
@@ -2060,13 +2107,13 @@ var Di = dr, Oi = {
2060
2107
  default: return "Loading...";
2061
2108
  }
2062
2109
  }, i = () => e.state === "error" ? "red" : e.state === "ready" ? "green" : n.primaryColor;
2063
- return /* @__PURE__ */ G(Gn, {
2110
+ return /* @__PURE__ */ G(Hn, {
2064
2111
  style: {
2065
2112
  width: "100%",
2066
2113
  height: "100%"
2067
2114
  },
2068
2115
  "data-testid": "custom-app-loading",
2069
- children: /* @__PURE__ */ K(Qn, {
2116
+ children: /* @__PURE__ */ K(Yn, {
2070
2117
  align: "center",
2071
2118
  gap: "lg",
2072
2119
  p: "xl",
@@ -2080,7 +2127,7 @@ var Di = dr, Oi = {
2080
2127
  fw: 700,
2081
2128
  children: e.appName || "App"
2082
2129
  }),
2083
- /* @__PURE__ */ G(Zn, {
2130
+ /* @__PURE__ */ G(Jn, {
2084
2131
  value: e.progress,
2085
2132
  size: "lg",
2086
2133
  radius: "xl",
@@ -2107,12 +2154,12 @@ var Di = dr, Oi = {
2107
2154
  ]
2108
2155
  })
2109
2156
  });
2110
- }, Fi = ({ appId: e }) => /* @__PURE__ */ G(Gn, {
2157
+ }, ji = ({ appId: e }) => /* @__PURE__ */ G(Hn, {
2111
2158
  style: {
2112
2159
  width: "100%",
2113
2160
  height: "100%"
2114
2161
  },
2115
- children: /* @__PURE__ */ K(Qn, {
2162
+ children: /* @__PURE__ */ K(Yn, {
2116
2163
  align: "center",
2117
2164
  gap: "lg",
2118
2165
  p: "xl",
@@ -2120,7 +2167,7 @@ var Di = dr, Oi = {
2120
2167
  children: [
2121
2168
  /* @__PURE__ */ G(X, {
2122
2169
  size: "3rem",
2123
- children: /* @__PURE__ */ G(hr, {})
2170
+ children: /* @__PURE__ */ G(fr, {})
2124
2171
  }),
2125
2172
  /* @__PURE__ */ G(X, {
2126
2173
  size: "lg",
@@ -2145,7 +2192,7 @@ var Di = dr, Oi = {
2145
2192
  },
2146
2193
  children: "Open Welcome App"
2147
2194
  }),
2148
- /* @__PURE__ */ G(Wn, {
2195
+ /* @__PURE__ */ G(Vn, {
2149
2196
  href: "https://github.com/frannunpal/frannunpal.github.io/issues",
2150
2197
  target: "_blank",
2151
2198
  rel: "noopener noreferrer",
@@ -2154,12 +2201,12 @@ var Di = dr, Oi = {
2154
2201
  })
2155
2202
  ]
2156
2203
  })
2157
- }), Ii = ({ appId: e }) => /* @__PURE__ */ G(Gn, {
2204
+ }), Mi = ({ appId: e }) => /* @__PURE__ */ G(Hn, {
2158
2205
  style: {
2159
2206
  width: "100%",
2160
2207
  height: "100%"
2161
2208
  },
2162
- children: /* @__PURE__ */ K(Qn, {
2209
+ children: /* @__PURE__ */ K(Yn, {
2163
2210
  align: "center",
2164
2211
  gap: "lg",
2165
2212
  p: "xl",
@@ -2167,7 +2214,7 @@ var Di = dr, Oi = {
2167
2214
  children: [
2168
2215
  /* @__PURE__ */ G(X, {
2169
2216
  size: "3rem",
2170
- children: /* @__PURE__ */ G(gr, {})
2217
+ children: /* @__PURE__ */ G(pr, {})
2171
2218
  }),
2172
2219
  /* @__PURE__ */ G(X, {
2173
2220
  size: "lg",
@@ -2193,15 +2240,15 @@ var Di = dr, Oi = {
2193
2240
  })
2194
2241
  ]
2195
2242
  })
2196
- }), Li = /* @__PURE__ */ new Set(), $ = null, Ri = null, zi = null, Bi = !1, Vi = 0, Hi = null, Ui = !1, Wi = !1;
2197
- function Gi() {
2198
- Li.clear(), $ = null, Ri = null, zi = null, Bi = !1, Vi = 0, Hi = null, Ui = !1, Wi = !1;
2243
+ }), Ni = /* @__PURE__ */ new Set(), $ = null, Pi = null, Fi = null, Ii = !1, Li = 0, Ri = null, zi = !1, Bi = !1;
2244
+ function Vi() {
2245
+ Ni.clear(), $ = null, Pi = null, Fi = null, Ii = !1, Li = 0, Ri = null, zi = !1, Bi = !1;
2199
2246
  }
2200
- var Ki = 1e4, qi = 2e3, Ji = 5, Yi = 0;
2201
- function Xi() {
2247
+ var Hi = 1e4, Ui = 2e3, Wi = 5, Gi = 0;
2248
+ function Ki() {
2202
2249
  return `${window.location.protocol === "https:" ? "wss:" : "ws:"}//${window.location.host}/api/hmr`;
2203
2250
  }
2204
- async function Zi() {
2251
+ async function qi() {
2205
2252
  try {
2206
2253
  let e = await fetch("/api/hmr", { method: "HEAD" });
2207
2254
  return e.status === 426 || e.status === 400;
@@ -2209,45 +2256,45 @@ async function Zi() {
2209
2256
  return !1;
2210
2257
  }
2211
2258
  }
2212
- function Qi() {
2213
- Ri &&= (clearTimeout(Ri), null), zi &&= (clearTimeout(zi), null), Bi = !1;
2259
+ function Ji() {
2260
+ Pi &&= (clearTimeout(Pi), null), Fi &&= (clearTimeout(Fi), null), Ii = !1;
2214
2261
  }
2215
- function $i(e) {
2216
- typeof BroadcastChannel > "u" || (Hi = new BroadcastChannel("fde-custom-apps"), Hi.onmessage = (t) => {
2262
+ function Yi(e) {
2263
+ typeof BroadcastChannel > "u" || (Ri = new BroadcastChannel("fde-custom-apps"), Ri.onmessage = (t) => {
2217
2264
  let n = t.data;
2218
2265
  n._fromBroadcast = !0, e(n);
2219
2266
  });
2220
2267
  }
2221
- function ea(e) {
2222
- Hi?.postMessage(e);
2268
+ function Xi(e) {
2269
+ Ri?.postMessage(e);
2223
2270
  }
2224
- async function ta() {
2271
+ async function Zi() {
2225
2272
  P.getState().isFsReady || await new Promise((e) => {
2226
2273
  let t = P.subscribe((n) => {
2227
2274
  n.isFsReady && (t(), e());
2228
2275
  });
2229
2276
  });
2230
2277
  try {
2231
- let e = F.getState().registeredApps, { added: t, removed: n } = await Re(e);
2278
+ let e = F.getState().registeredApps, { added: t, removed: n } = await Ye(e);
2232
2279
  for (let e of t) F.getState().registerApp(e), P.getState().handleCustomAppRegistered?.(e);
2233
2280
  for (let e of n) F.getState().unregisterApp(e), P.getState().handleCustomAppUnregistered?.(e);
2234
2281
  } catch (e) {
2235
2282
  console.warn("[HMR] Failed to sync apps on connect:", e);
2236
2283
  }
2237
2284
  }
2238
- function na(e, t, n) {
2239
- if (Bi || $ && $.readyState === WebSocket.OPEN) return $;
2240
- let r = Xi(), i = ++Vi;
2241
- return Bi = !0, $ = new WebSocket(r), zi = setTimeout(() => {
2242
- $ && $.readyState !== WebSocket.OPEN && i === Vi && (console.warn("[HMR] Initial connection timeout"), Yi++, Yi >= Ji ? (console.warn("[HMR] Max initial retries reached, marking server as offline"), t()) : ($?.close(), Ri = setTimeout(() => {
2243
- na(e, t, n);
2244
- }, qi)));
2245
- }, Ki), $.onopen = () => {
2246
- if (i !== Vi) {
2285
+ function Qi(e, t, n) {
2286
+ if (Ii || $ && $.readyState === WebSocket.OPEN) return $;
2287
+ let r = Ki(), i = ++Li;
2288
+ return Ii = !0, $ = new WebSocket(r), Fi = setTimeout(() => {
2289
+ $ && $.readyState !== WebSocket.OPEN && i === Li && (console.warn("[HMR] Initial connection timeout"), Gi++, Gi >= Wi ? (console.warn("[HMR] Max initial retries reached, marking server as offline"), t()) : ($?.close(), Pi = setTimeout(() => {
2290
+ Qi(e, t, n);
2291
+ }, Ui)));
2292
+ }, Hi), $.onopen = () => {
2293
+ if (i !== Li) {
2247
2294
  $?.close();
2248
2295
  return;
2249
2296
  }
2250
- console.log("[HMR] Connected to server"), Yi = 0, Bi = !1, F.getState().resetHmrRetry(), F.getState().setHmrConnected(!0), F.getState().setHmrError(null), F.getState().devServerOffline && n(), F.getState().setDevServerOffline(!1), Qi(), ta().catch((e) => {
2297
+ console.log("[HMR] Connected to server"), Gi = 0, Ii = !1, F.getState().resetHmrRetry(), F.getState().setHmrConnected(!0), F.getState().setHmrError(null), F.getState().devServerOffline && n(), F.getState().setDevServerOffline(!1), Ji(), Zi().catch((e) => {
2251
2298
  console.warn("[HMR] Failed to sync apps:", e);
2252
2299
  });
2253
2300
  }, $.onmessage = (t) => {
@@ -2258,18 +2305,18 @@ function na(e, t, n) {
2258
2305
  console.error("[HMR] Failed to parse message:", e);
2259
2306
  }
2260
2307
  }, $.onclose = (r) => {
2261
- i === Vi && (console.log(`[HMR] Disconnected from server (code: ${r.code})`), $ = null, Bi = !1, F.getState().setHmrConnected(!1), Qi(), Ri = setTimeout(() => {
2262
- na(e, t, n);
2263
- }, qi));
2308
+ i === Li && (console.log(`[HMR] Disconnected from server (code: ${r.code})`), $ = null, Ii = !1, F.getState().setHmrConnected(!1), Ji(), Pi = setTimeout(() => {
2309
+ Qi(e, t, n);
2310
+ }, Ui));
2264
2311
  }, $.onerror = (e) => {
2265
- i === Vi && (console.error("[HMR] WebSocket error:", e), F.getState().setHmrError("Connection failed"));
2312
+ i === Li && (console.error("[HMR] WebSocket error:", e), F.getState().setHmrError("Connection failed"));
2266
2313
  }, $;
2267
2314
  }
2268
- function ra() {
2269
- Qi(), $ &&= ($.close(), null), Hi &&= (Hi.close(), null);
2315
+ function $i() {
2316
+ Ji(), $ &&= ($.close(), null), Ri &&= (Ri.close(), null);
2270
2317
  }
2271
- function ia(e) {
2272
- let t = H(e), { notify: n } = an();
2318
+ function ea(e) {
2319
+ let t = H(e), { notify: n } = gn();
2273
2320
  B(() => {
2274
2321
  t.current = e;
2275
2322
  }, [e]);
@@ -2283,7 +2330,7 @@ function ia(e) {
2283
2330
  console.warn(`[HMR] Error unmounting ${t}:`, e);
2284
2331
  }
2285
2332
  let r = document.getElementById(`app-container-${t}`);
2286
- r && (r.innerHTML = ""), F.getState().setAppLoading(t), Li.forEach((e) => {
2333
+ r && (r.innerHTML = ""), F.getState().setAppLoading(t), Ni.forEach((e) => {
2287
2334
  try {
2288
2335
  e.onReload(t);
2289
2336
  } catch (e) {
@@ -2296,12 +2343,12 @@ function ia(e) {
2296
2343
  if (e.manifest) {
2297
2344
  console.log(`[HMR] App registered: ${e.manifest.id}`);
2298
2345
  let t = !!F.getState().registeredApps[e.manifest.id];
2299
- Ve(), We(e.manifest), F.getState().registerApp(e.manifest), P.getState().handleCustomAppRegistered?.(e.manifest), t || n("New App Available", `${e.manifest.name} is now available`, { fcIcon: "FcApproval" }), e._fromBroadcast || ea(e);
2346
+ Qe(), tt(e.manifest), F.getState().registerApp(e.manifest), P.getState().handleCustomAppRegistered?.(e.manifest), t || n("New App Available", `${e.manifest.name} is now available`, { fcIcon: "FcApproval" }), e._fromBroadcast || Xi(e);
2300
2347
  }
2301
2348
  break;
2302
2349
  case "app-unregistered": {
2303
2350
  let t = e.appId;
2304
- console.log(`[HMR] App unregistered: ${t}`), Ve(), Fe(t), F.getState().unregisterApp(t), P.getState().handleCustomAppUnregistered?.(t), e._fromBroadcast || ea(e);
2351
+ console.log(`[HMR] App unregistered: ${t}`), Qe(), Ke(t), F.getState().unregisterApp(t), P.getState().handleCustomAppUnregistered?.(t), e._fromBroadcast || Xi(e);
2305
2352
  break;
2306
2353
  }
2307
2354
  case "app-error":
@@ -2314,22 +2361,22 @@ function ia(e) {
2314
2361
  n("HMR Reconnected", "Hot module replacement is now active", { fcIcon: "FcApproval" });
2315
2362
  }, [n]);
2316
2363
  B(() => {
2317
- if (Pe() === "browser") {
2364
+ if (Ge() === "browser") {
2318
2365
  console.log("[HMR] Skipping: not running in Docker");
2319
2366
  return;
2320
2367
  }
2321
- if (!Ne() || !Ye()) return;
2368
+ if (!We() || !ot()) return;
2322
2369
  let e = !1;
2323
- return Li.add(t.current), !Wi && !Ui && (Ui = !0, Zi().then((t) => {
2324
- if (Ui = !1, e || !t) {
2370
+ return Ni.add(t.current), !Bi && !zi && (zi = !0, qi().then((t) => {
2371
+ if (zi = !1, e || !t) {
2325
2372
  t || console.warn("[HMR] HMR endpoint not available, skipping WebSocket connection");
2326
2373
  return;
2327
2374
  }
2328
- Wi = !0, $i(r), na(r, i, a);
2375
+ Bi = !0, Yi(r), Qi(r, i, a);
2329
2376
  }).catch(() => {
2330
- Ui = !1;
2377
+ zi = !1;
2331
2378
  })), () => {
2332
- e = !0, Li.delete(t.current), Li.size === 0 && (Wi = !1, ra());
2379
+ e = !0, Ni.delete(t.current), Ni.size === 0 && (Bi = !1, $i());
2333
2380
  };
2334
2381
  }, [
2335
2382
  r,
@@ -2337,9 +2384,9 @@ function ia(e) {
2337
2384
  a
2338
2385
  ]);
2339
2386
  }
2340
- function aa() {
2341
- let { notify: e } = an();
2342
- ia({
2387
+ function ta() {
2388
+ let { notify: e } = gn();
2389
+ ea({
2343
2390
  onReload: () => {},
2344
2391
  onRegistered: z((t) => {
2345
2392
  P.getState().handleCustomAppRegistered?.(t), e("New App Available", `${t.name} is now available`, { fcIcon: "FcApproval" });
@@ -2351,7 +2398,7 @@ function aa() {
2351
2398
  }
2352
2399
  //#endregion
2353
2400
  //#region src/utils/waitForContainer.ts
2354
- function oa(e, t = 5e3) {
2401
+ function na(e, t = 5e3) {
2355
2402
  return new Promise((n, r) => {
2356
2403
  let i = Date.now(), a = null, o = null, s = () => {
2357
2404
  o &&= (clearInterval(o), null), a &&= (clearTimeout(a), null);
@@ -2373,15 +2420,15 @@ function oa(e, t = 5e3) {
2373
2420
  }
2374
2421
  //#endregion
2375
2422
  //#region src/components/Shared/CustomAppLoader/CustomAppLoader.tsx
2376
- var sa = {
2423
+ var ra = {
2377
2424
  state: "idle",
2378
2425
  progress: 0,
2379
2426
  appName: ""
2380
- }, ca = 1e4, la = ({ appId: e, windowIcon: t, notifyReady: n }) => {
2427
+ }, ia = 1e4, aa = ({ appId: e, windowIcon: t, notifyReady: n }) => {
2381
2428
  let [r, i] = U({
2382
- ...sa,
2429
+ ...ra,
2383
2430
  appName: e
2384
- }), [a, o] = U(!1), [s, c] = U(null), [l, u] = U(!1), [d, f] = U(0), p = H(null), m = H(!0), h = H(!1), g = H(null), _ = H(null), v = F((e) => e.devServerOffline), y = F((t) => t.mountedApps[e]), b = F((e) => e.setAppLoading), x = F((e) => e.setAppLoaded), S = F((e) => e.setAppError), C = F((e) => e.clearApp), { notify: w } = an(), T = Ne(), E = z(() => {
2431
+ }), [a, o] = U(!1), [s, c] = U(null), [l, u] = U(!1), [d, f] = U(0), p = H(null), m = H(!0), h = H(!1), g = H(null), _ = H(null), v = F((e) => e.devServerOffline), y = F((t) => t.mountedApps[e]), b = F((e) => e.setAppLoading), x = F((e) => e.setAppLoaded), S = F((e) => e.setAppError), C = F((e) => e.clearApp), { notify: w } = gn(), T = We(), E = z(() => {
2385
2432
  _.current &&= (clearTimeout(_.current), null);
2386
2433
  }, []), D = z(() => {
2387
2434
  g.current &&= (clearInterval(g.current), null);
@@ -2398,8 +2445,8 @@ var sa = {
2398
2445
  ...e,
2399
2446
  state: "fetching",
2400
2447
  progress: 10
2401
- })), b(e), c(null), Ve();
2402
- let t = await De(!0);
2448
+ })), b(e), c(null), Qe();
2449
+ let t = await Re(!0);
2403
2450
  if (!t) throw Error("Apps manifest not found. Make sure apps are built.");
2404
2451
  let r = t.apps.find((t) => t.id === e);
2405
2452
  if (!r) throw Error(`App '${e}' not found in manifest. Available apps: ${t.apps.map((e) => e.id).join(", ")}`);
@@ -2419,7 +2466,7 @@ var sa = {
2419
2466
  }));
2420
2467
  }, 100);
2421
2468
  try {
2422
- await oa(`app-container-${e}`, 5e3);
2469
+ await na(`app-container-${e}`, 5e3);
2423
2470
  } catch {
2424
2471
  throw Error(`Container #app-container-${e} not found`);
2425
2472
  }
@@ -2440,8 +2487,8 @@ var sa = {
2440
2487
  return;
2441
2488
  }
2442
2489
  _.current = setTimeout(() => {
2443
- console.warn(`[${e}] App did not call appReady() within ${ca}ms`), w("Warning", `App ${e} took too long to initialize`, { fcIcon: "FcInfo" }), u(!0), F.getState().setAppReady(e), t();
2444
- }, ca), n();
2490
+ console.warn(`[${e}] App did not call appReady() within ${ia}ms`), w("Warning", `App ${e} took too long to initialize`, { fcIcon: "FcInfo" }), u(!0), F.getState().setAppReady(e), t();
2491
+ }, ia), n();
2445
2492
  }), i((e) => ({
2446
2493
  ...e,
2447
2494
  state: "ready",
@@ -2471,9 +2518,9 @@ var sa = {
2471
2518
  D,
2472
2519
  w
2473
2520
  ]);
2474
- if (ia({ onReload: z((t) => {
2521
+ if (ea({ onReload: z((t) => {
2475
2522
  t === e && (h.current = !1, ee(), C(e), o(!1), i({
2476
- ...sa,
2523
+ ...ra,
2477
2524
  appName: e
2478
2525
  }), c(null), f((e) => e + 1));
2479
2526
  }, [
@@ -2489,17 +2536,17 @@ var sa = {
2489
2536
  d,
2490
2537
  D,
2491
2538
  E
2492
- ]), !T) return /* @__PURE__ */ G(Ii, { appId: e });
2493
- if (v && !y?.isLoaded && !s) return /* @__PURE__ */ G(Fi, { appId: e });
2539
+ ]), !T) return /* @__PURE__ */ G(Mi, { appId: e });
2540
+ if (v && !y?.isLoaded && !s) return /* @__PURE__ */ G(ji, { appId: e });
2494
2541
  let k = r.state === "error", te = a && y?.isReady && !l, A = r.state === "ready" && a && l, j = A && !y?.instance;
2495
- return j ? /* @__PURE__ */ G(Pi, {
2542
+ return j ? /* @__PURE__ */ G(Ai, {
2496
2543
  progress: {
2497
2544
  ...r,
2498
2545
  state: "error",
2499
2546
  error: `App '${e}' loaded but did not mount. Check the browser console for errors.`
2500
2547
  },
2501
2548
  windowIcon: t
2502
- }) : /* @__PURE__ */ K(W, { children: [(k || j || !(te || A)) && /* @__PURE__ */ G(Pi, {
2549
+ }) : /* @__PURE__ */ K(W, { children: [(k || j || !(te || A)) && /* @__PURE__ */ G(Ai, {
2503
2550
  progress: r,
2504
2551
  windowIcon: t
2505
2552
  }), /* @__PURE__ */ G("div", {
@@ -2517,66 +2564,66 @@ var sa = {
2517
2564
  fontFamily: "sans-serif"
2518
2565
  }
2519
2566
  })] });
2520
- }, ua = Rn({
2567
+ }, oa = Fn({
2521
2568
  notifyReady: () => {},
2522
2569
  getContentData: () => void 0
2523
- }), da = () => Vn(ua), fa = ({ children: e }) => {
2570
+ }), sa = () => Rn(oa), ca = ({ children: e }) => {
2524
2571
  let t = H(void 0), n = z((e) => {
2525
2572
  e !== void 0 && (t.current = e);
2526
2573
  }, []), r = z(() => t.current, []);
2527
- return /* @__PURE__ */ G(ua.Provider, {
2574
+ return /* @__PURE__ */ G(oa.Provider, {
2528
2575
  value: {
2529
2576
  notifyReady: n,
2530
2577
  getContentData: r
2531
2578
  },
2532
2579
  children: e
2533
2580
  });
2534
- }, pa = {
2581
+ }, la = {
2535
2582
  root: "_root_1vtes_1",
2536
2583
  titleBar: "_titleBar_1vtes_12",
2537
2584
  windowButtons: "_windowButtons_1vtes_31",
2538
2585
  title: "_title_1vtes_12",
2539
2586
  content: "_content_1vtes_41",
2540
2587
  focusOverlay: "_focusOverlay_1vtes_48"
2541
- }, ma = ({ win: e, isFocused: t, focusWindow: n }) => {
2542
- let { notifyReady: r, getContentData: i } = da(), a = F((t) => e.content in t.registeredApps), o = V(() => Ce(e.content), [e.content]), s = V(() => v(e.content), [e.content]), c = V(() => Se(e.content), [e.content]), l = V(() => y(e.content), [e.content]), u = V(() => k(e.content), [e.content]), d = P((e) => e.closeWindow), f = i() ?? e.contentData, p = {
2588
+ }, ua = ({ win: e, isFocused: t, focusWindow: n }) => {
2589
+ let { notifyReady: r, getContentData: i } = sa(), a = F((t) => e.content in t.registeredApps), o = V(() => Pe(e.content), [e.content]), s = V(() => O(e.content), [e.content]), c = V(() => Ne(e.content), [e.content]), l = V(() => k(e.content), [e.content]), u = V(() => ce(e.content), [e.content]), d = P((e) => e.closeWindow), f = i() ?? e.contentData, p = {
2543
2590
  ...e,
2544
2591
  contentData: f
2545
2592
  }, m = s ? s(p) : void 0;
2546
- if (a) return /* @__PURE__ */ G(la, {
2593
+ if (a) return /* @__PURE__ */ G(aa, {
2547
2594
  appId: e.content,
2548
2595
  windowIcon: e.icon,
2549
2596
  notifyReady: r
2550
2597
  });
2551
- let h = l ? /* @__PURE__ */ G(Ln, {
2552
- fallback: /* @__PURE__ */ G(Ni, { message: u ? `Loading ${u}...` : void 0 }),
2553
- children: zn(o, {
2598
+ let h = l ? /* @__PURE__ */ G(Pn, {
2599
+ fallback: /* @__PURE__ */ G(ki, { message: u ? `Loading ${u}...` : void 0 }),
2600
+ children: In(o, {
2554
2601
  window: e,
2555
2602
  notifyReady: r
2556
2603
  })
2557
- }) : zn(o, {
2604
+ }) : In(o, {
2558
2605
  window: e,
2559
2606
  notifyReady: r
2560
2607
  });
2561
- return /* @__PURE__ */ K(W, { children: [c ? /* @__PURE__ */ G(Ln, {
2608
+ return /* @__PURE__ */ K(W, { children: [c ? /* @__PURE__ */ G(Pn, {
2562
2609
  fallback: null,
2563
- children: zn(c, {
2610
+ children: In(c, {
2564
2611
  windowId: e.id,
2565
2612
  contentData: f,
2566
2613
  onExit: () => d(e.id)
2567
2614
  })
2568
- }) : m && m.length > 0 ? /* @__PURE__ */ G(rn, { elements: m }) : null, /* @__PURE__ */ K("div", {
2569
- className: pa.content,
2615
+ }) : m && m.length > 0 ? /* @__PURE__ */ G(hn, { elements: m }) : null, /* @__PURE__ */ K("div", {
2616
+ className: la.content,
2570
2617
  children: [!t && /* @__PURE__ */ G("div", {
2571
2618
  "data-testid": "focus-overlay",
2572
- className: pa.focusOverlay,
2619
+ className: la.focusOverlay,
2573
2620
  onMouseDown: (t) => {
2574
2621
  t.stopPropagation(), n(e.id);
2575
2622
  }
2576
2623
  }), h]
2577
2624
  })] });
2578
- }, ha = ({ window: e }) => {
2579
- let { t } = Z("window"), n = P((t) => t.windows.find((t) => t.id === e.id)) ?? e, r = qr(n.content), { focusWindow: i, closeWindow: o, minimizeWindow: s, maximizeWindow: c, restoreWindow: l, moveWindow: u, resizeWindow: d } = P(mr((e) => ({
2625
+ }, da = ({ window: t }) => {
2626
+ let { t: n } = Z("window"), r = P((e) => e.windows.find((e) => e.id === t.id)) ?? t, i = Ur(r.content), { focusWindow: a, closeWindow: o, minimizeWindow: s, maximizeWindow: c, restoreWindow: l, moveWindow: u, resizeWindow: d } = P(dr((e) => ({
2580
2627
  focusWindow: e.focusWindow,
2581
2628
  closeWindow: e.closeWindow,
2582
2629
  minimizeWindow: e.minimizeWindow,
@@ -2584,20 +2631,20 @@ var sa = {
2584
2631
  restoreWindow: e.restoreWindow,
2585
2632
  moveWindow: e.moveWindow,
2586
2633
  resizeWindow: e.resizeWindow
2587
- }))), f = a((e) => e.theme.colors.window), p = Zt((e) => e.isOpen), m = Zt((e) => e.windowId), h = Zt((e) => e.onSave), g = Zt((e) => e.onDiscard), _ = Zt((e) => e.closeModal), { windowVariants: v, easeIn: y } = Wr(), b = P((e) => {
2588
- let t = e.windows.find((e) => e.id === n.id);
2634
+ }))), f = e((e) => e.theme.colors.window), p = ln((e) => e.isOpen), m = ln((e) => e.windowId), h = ln((e) => e.onSave), g = ln((e) => e.onDiscard), _ = ln((e) => e.closeModal), { windowVariants: v, easeIn: y } = Br(), b = P((e) => {
2635
+ let t = e.windows.find((e) => e.id === r.id);
2589
2636
  if (!t) return !0;
2590
- let r = t.alwaysOnTop ?? !1, i = e.windows.filter((e) => e.isOpen && e.state !== "minimized" && (e.alwaysOnTop ?? !1) === r);
2637
+ let n = t.alwaysOnTop ?? !1, i = e.windows.filter((e) => e.isOpen && e.state !== "minimized" && (e.alwaysOnTop ?? !1) === n);
2591
2638
  return i.length === 0 ? !0 : Math.max(...i.map((e) => e.zIndex)) === t.zIndex;
2592
- }), { getRect: x } = Fr(), S = lr(), C = H(n.state);
2639
+ }), { getRect: x } = Mr(), S = or(), C = H(r.state);
2593
2640
  B(() => {
2594
2641
  S.start("visible");
2595
2642
  }, [S]), B(() => {
2596
- if (C.current === "minimized" && n.state !== "minimized") {
2597
- let e = x(n.id);
2643
+ if (C.current === "minimized" && r.state !== "minimized") {
2644
+ let e = x(r.id);
2598
2645
  if (e) {
2599
- let t = n.x + n.width / 2, r = n.y + n.height / 2, i = e.left + e.width / 2, a = e.top + e.height / 2;
2600
- S.start(xe(i - t, a - r));
2646
+ let t = r.x + r.width / 2, n = r.y + r.height / 2, i = e.left + e.width / 2, a = e.top + e.height / 2;
2647
+ S.start(Me(i - t, a - n));
2601
2648
  } else S.set({
2602
2649
  x: 0,
2603
2650
  y: 0,
@@ -2605,170 +2652,170 @@ var sa = {
2605
2652
  opacity: 1
2606
2653
  }), S.start("visible");
2607
2654
  }
2608
- C.current = n.state;
2655
+ C.current = r.state;
2609
2656
  }, [
2610
- n.state,
2657
+ r.state,
2611
2658
  S,
2612
2659
  x,
2613
- n.id,
2614
- n.x,
2615
- n.y,
2616
- n.width,
2617
- n.height
2660
+ r.id,
2661
+ r.x,
2662
+ r.y,
2663
+ r.width,
2664
+ r.height
2618
2665
  ]);
2619
2666
  let w = z((e) => {
2620
- e.preventDefault(), it.find((e) => e.id === n.content)?.hasContextMenu || e.stopPropagation();
2621
- }, [n.content]);
2622
- if (!n.isOpen) return null;
2623
- let T = n.state === "minimized", E = n.state === "maximized", D = n.canMaximize !== !1, ee = p && m === n.id, O = async () => {
2624
- let e = x(n.id);
2667
+ e.preventDefault(), ht.find((e) => e.id === r.content)?.hasContextMenu || e.stopPropagation();
2668
+ }, [r.content]);
2669
+ if (!r.isOpen) return null;
2670
+ let T = r.state === "minimized", E = r.state === "maximized", D = r.canMaximize !== !1, ee = p && m === r.id, O = async () => {
2671
+ let e = x(r.id);
2625
2672
  if (e) {
2626
- let t = n.x + n.width / 2, r = n.y + n.height / 2, i = e.left + e.width / 2, a = e.top + e.height / 2;
2627
- await S.start(pe(i - t, a - r));
2673
+ let t = r.x + r.width / 2, n = r.y + r.height / 2, i = e.left + e.width / 2, a = e.top + e.height / 2;
2674
+ await S.start(we(i - t, a - n));
2628
2675
  } else await S.start({
2629
2676
  ...v.exit,
2630
2677
  transition: y
2631
2678
  });
2632
- s(n.id);
2679
+ s(r.id);
2633
2680
  }, k = async () => {
2634
- let e = tn(n.id);
2681
+ let e = pn(r.id);
2635
2682
  e && !e() || (await S.start({
2636
2683
  ...v.exit,
2637
2684
  transition: y
2638
- }), o(n.id));
2685
+ }), o(r.id));
2639
2686
  }, te = () => {
2640
2687
  h?.(), _();
2641
2688
  }, A = () => {
2642
2689
  g?.(), _();
2643
- let e = n.id;
2690
+ let e = r.id;
2644
2691
  e && o(e);
2645
2692
  }, j = () => {
2646
2693
  _();
2647
2694
  };
2648
- return /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(pr, {
2695
+ return /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(ur, {
2649
2696
  position: E ? {
2650
2697
  x: 0,
2651
2698
  y: 0
2652
2699
  } : {
2653
- x: n.x,
2654
- y: n.y
2700
+ x: r.x,
2701
+ y: r.y
2655
2702
  },
2656
2703
  size: E ? {
2657
2704
  width: "100vw",
2658
2705
  height: "100vh"
2659
2706
  } : {
2660
- width: n.width,
2661
- height: n.height
2707
+ width: r.width,
2708
+ height: r.height
2662
2709
  },
2663
- minWidth: n.minWidth ?? 0,
2664
- minHeight: n.minHeight ?? 0,
2710
+ minWidth: r.minWidth ?? 0,
2711
+ minHeight: r.minHeight ?? 0,
2665
2712
  style: {
2666
- zIndex: n.zIndex,
2713
+ zIndex: r.zIndex,
2667
2714
  visibility: T ? "hidden" : "visible",
2668
2715
  pointerEvents: T ? "none" : "auto"
2669
2716
  },
2670
- dragHandleClassName: pa.titleBar,
2717
+ dragHandleClassName: la.titleBar,
2671
2718
  disableDragging: E || T,
2672
2719
  enableResizing: !E && !T,
2673
- onMouseDown: () => i(n.id),
2674
- onDragStop: (e, t) => u(n.id, t.x, t.y),
2675
- onResizeStop: (e, t, r, i, a) => {
2676
- d(n.id, r.offsetWidth, r.offsetHeight), u(n.id, a.x, a.y);
2720
+ onMouseDown: () => a(r.id),
2721
+ onDragStop: (e, t) => u(r.id, t.x, t.y),
2722
+ onResizeStop: (e, t, n, i, a) => {
2723
+ d(r.id, n.offsetWidth, n.offsetHeight), u(r.id, a.x, a.y);
2677
2724
  },
2678
- children: /* @__PURE__ */ K(cr.div, {
2679
- className: pa.root,
2680
- "data-testid": `window-${n.content}`,
2725
+ children: /* @__PURE__ */ K(ar.div, {
2726
+ className: la.root,
2727
+ "data-testid": `window-${r.content}`,
2681
2728
  style: { background: f },
2682
2729
  variants: v,
2683
2730
  initial: "hidden",
2684
2731
  animate: S,
2685
2732
  exit: "exit",
2686
2733
  layout: !0,
2687
- transition: ge,
2734
+ transition: De,
2688
2735
  onContextMenu: w,
2689
2736
  children: [/* @__PURE__ */ K("div", {
2690
- className: pa.titleBar,
2737
+ className: la.titleBar,
2691
2738
  children: [
2692
2739
  /* @__PURE__ */ G(L, {
2693
- fcIcon: n.fcIcon,
2694
- iconUrl: n.iconUrl,
2695
- fallback: n.icon,
2740
+ fcIcon: r.fcIcon,
2741
+ iconUrl: r.iconUrl,
2742
+ fallback: r.icon,
2696
2743
  size: 14,
2697
- color: n.iconColor
2744
+ color: r.iconColor
2698
2745
  }),
2699
2746
  /* @__PURE__ */ G(X, {
2700
2747
  size: "sm",
2701
2748
  fw: 500,
2702
2749
  truncate: !0,
2703
- className: pa.title,
2704
- children: r
2750
+ className: la.title,
2751
+ children: i
2705
2752
  }),
2706
- /* @__PURE__ */ K(Kn, {
2753
+ /* @__PURE__ */ K(Un, {
2707
2754
  gap: 2,
2708
2755
  wrap: "nowrap",
2709
- className: pa.windowButtons,
2756
+ className: la.windowButtons,
2710
2757
  children: [
2711
- /* @__PURE__ */ G(Un, {
2758
+ /* @__PURE__ */ G(Bn, {
2712
2759
  size: "lg",
2713
2760
  variant: "subtle",
2714
- "aria-label": t("window.ariaLabels.minimize"),
2761
+ "aria-label": n("window.ariaLabels.minimize"),
2715
2762
  onClick: O,
2716
2763
  children: /* @__PURE__ */ G(R, { name: "VscChromeMinimize" })
2717
2764
  }),
2718
- D && /* @__PURE__ */ G(Un, {
2765
+ D && /* @__PURE__ */ G(Bn, {
2719
2766
  size: "lg",
2720
2767
  variant: "subtle",
2721
- "aria-label": t(E ? "window.ariaLabels.restore" : "window.ariaLabels.maximize"),
2722
- onClick: () => E ? l(n.id) : c(n.id),
2768
+ "aria-label": n(E ? "window.ariaLabels.restore" : "window.ariaLabels.maximize"),
2769
+ onClick: () => E ? l(r.id) : c(r.id),
2723
2770
  children: E ? /* @__PURE__ */ G(R, { name: "VscChromeRestore" }) : /* @__PURE__ */ G(R, { name: "VscChromeMaximize" })
2724
2771
  }),
2725
- /* @__PURE__ */ G(Un, {
2772
+ /* @__PURE__ */ G(Bn, {
2726
2773
  size: "lg",
2727
2774
  variant: "subtle",
2728
2775
  color: "red",
2729
- "aria-label": t("window.ariaLabels.close"),
2776
+ "aria-label": n("window.ariaLabels.close"),
2730
2777
  onClick: k,
2731
2778
  children: /* @__PURE__ */ G(R, { name: "VscChromeClose" })
2732
2779
  })
2733
2780
  ]
2734
2781
  })
2735
2782
  ]
2736
- }), /* @__PURE__ */ G(fa, { children: /* @__PURE__ */ G(ma, {
2737
- win: n,
2783
+ }), /* @__PURE__ */ G(ca, { children: /* @__PURE__ */ G(ua, {
2784
+ win: r,
2738
2785
  isFocused: b,
2739
- focusWindow: i
2786
+ focusWindow: a
2740
2787
  }) })]
2741
2788
  })
2742
- }), /* @__PURE__ */ K(Yn, {
2789
+ }), /* @__PURE__ */ K(Kn, {
2743
2790
  opened: ee,
2744
2791
  onClose: j,
2745
- title: t("unsavedModal.title"),
2792
+ title: n("unsavedModal.title"),
2746
2793
  centered: !0,
2747
2794
  withinPortal: !0,
2748
2795
  children: [
2749
2796
  /* @__PURE__ */ G(X, {
2750
2797
  size: "sm",
2751
2798
  mb: "lg",
2752
- children: t("unsavedModal.message")
2799
+ children: n("unsavedModal.message")
2753
2800
  }),
2754
2801
  /* @__PURE__ */ G(q, {
2755
2802
  variant: "default",
2756
2803
  onClick: A,
2757
- children: t("unsavedModal.dontSave")
2804
+ children: n("unsavedModal.dontSave")
2758
2805
  }),
2759
2806
  /* @__PURE__ */ G(q, {
2760
2807
  onClick: te,
2761
2808
  ml: "sm",
2762
- children: t("unsavedModal.save")
2809
+ children: n("unsavedModal.save")
2763
2810
  })
2764
2811
  ]
2765
2812
  })] });
2766
- }, ga = {
2813
+ }, fa = {
2767
2814
  root: "_root_1f7p3_1",
2768
2815
  iconImage: "_iconImage_1f7p3_21",
2769
2816
  label: "_label_1f7p3_26"
2770
- }, _a = ({ icon: e, onDoubleClick: t, onContextMenu: n }) => {
2771
- let r = it.find((t) => t.id === e.appId), i = e.iconName !== void 0, a = e.nodeId !== void 0, o = e.icon === "📁", s = e.appId === "pdf", c = H(0), l = qr(e.appId), u = e.appId && !a && r ? l : e.name, d = z((t) => {
2817
+ }, pa = ({ icon: e, onDoubleClick: t, onContextMenu: n }) => {
2818
+ let r = ht.find((t) => t.id === e.appId), i = e.iconName !== void 0, a = e.nodeId !== void 0, o = e.icon === "📁", s = e.appId === "pdf", c = H(0), l = Ur(e.appId), u = e.appId && !a && r ? l : e.name, d = z((t) => {
2772
2819
  if (t.preventDefault(), e.nodeId) {
2773
2820
  t.stopPropagation(), n?.(t, e.nodeId);
2774
2821
  return;
@@ -2779,7 +2826,7 @@ var sa = {
2779
2826
  e.appId,
2780
2827
  r?.hasContextMenu,
2781
2828
  n
2782
- ]), f = () => i ? /* @__PURE__ */ G(sn, {
2829
+ ]), f = () => i ? /* @__PURE__ */ G(_n, {
2783
2830
  type: "folder",
2784
2831
  name: e.name,
2785
2832
  folderNode: {
@@ -2794,11 +2841,11 @@ var sa = {
2794
2841
  updatedAt: /* @__PURE__ */ new Date()
2795
2842
  },
2796
2843
  size: 32
2797
- }) : o && a ? /* @__PURE__ */ G(sn, {
2844
+ }) : o && a ? /* @__PURE__ */ G(_n, {
2798
2845
  type: "folder",
2799
2846
  name: e.name,
2800
2847
  size: 32
2801
- }) : a || s ? /* @__PURE__ */ G(sn, {
2848
+ }) : a || s ? /* @__PURE__ */ G(_n, {
2802
2849
  type: "file",
2803
2850
  name: e.name,
2804
2851
  size: 32
@@ -2810,7 +2857,7 @@ var sa = {
2810
2857
  color: r?.iconColor
2811
2858
  });
2812
2859
  return /* @__PURE__ */ K("div", {
2813
- className: ga.root,
2860
+ className: fa.root,
2814
2861
  style: {
2815
2862
  left: e.x,
2816
2863
  top: e.y
@@ -2827,17 +2874,17 @@ var sa = {
2827
2874
  tabIndex: 0,
2828
2875
  onKeyDown: (n) => n.key === "Enter" && t(e.appId ?? "", e.nodeId),
2829
2876
  children: [/* @__PURE__ */ G("span", {
2830
- className: ga.iconImage,
2877
+ className: fa.iconImage,
2831
2878
  "aria-hidden": "true",
2832
2879
  children: f()
2833
2880
  }), /* @__PURE__ */ G(X, {
2834
2881
  size: "xs",
2835
- className: ga.label,
2882
+ className: fa.label,
2836
2883
  truncate: !0,
2837
2884
  children: u
2838
2885
  })]
2839
2886
  });
2840
- }, va = ({ x: e, y: t }) => /* @__PURE__ */ G(J.Target, { children: /* @__PURE__ */ G("div", {
2887
+ }, ma = ({ x: e, y: t }) => /* @__PURE__ */ G(J.Target, { children: /* @__PURE__ */ G("div", {
2841
2888
  "aria-hidden": "true",
2842
2889
  style: {
2843
2890
  position: "fixed",
@@ -2847,7 +2894,7 @@ var sa = {
2847
2894
  height: 0,
2848
2895
  pointerEvents: "none"
2849
2896
  }
2850
- }) }), ya = ({ owner: e, parentId: t, currentPath: n }) => {
2897
+ }) }), ha = ({ owner: e, parentId: t, currentPath: n }) => {
2851
2898
  let { t: r } = Z("contextMenu"), i = P((e) => e.contextMenu), a = P((e) => e.closeContextMenu), o = P((e) => e.copyToClipboard), s = P((e) => e.cutToClipboard), c = P((e) => e.clipboard), l = P((e) => e.clearClipboard), u = P((e) => e.fsNodes), d = P((e) => e.addNotification), f = P((e) => e.openWindow), p = P((e) => e.desktopSortMode), m = P((e) => e.filesSortMode), h = P((e) => e.setDesktopSortMode), g = P((e) => e.setFilesSortMode), _ = P((e) => e.setFsNodes), v = P((e) => e.syncIcons), y = e === "files" ? m : p, b = e === "files" ? g : h, [x, S] = U({
2852
2899
  opened: !1,
2853
2900
  pending: null
@@ -2857,7 +2904,7 @@ var sa = {
2857
2904
  nodeName: ""
2858
2905
  }), T = i.owner === e, E = i.targetNodeId, D = E ? u.find((e) => e.id === E) : void 0, ee = (e) => {
2859
2906
  a();
2860
- let { x: i, y: o } = ne();
2907
+ let { x: i, y: o } = fe();
2861
2908
  f({
2862
2909
  title: r(e === "folder" ? "createItem.folderTitle" : "createItem.fileTitle"),
2863
2910
  content: "createItem",
@@ -2903,10 +2950,10 @@ var sa = {
2903
2950
  D && s([D]), a();
2904
2951
  }, A = () => {
2905
2952
  D && o([D]), a();
2906
- }, j = (e, t) => u.find((n) => n.name === e && n.parentId === t), re = async (e, t) => {
2953
+ }, j = (e, t) => u.find((n) => n.name === e && n.parentId === t), ne = async (e, t) => {
2907
2954
  let n = await N.createFolder(e.name, t, e.iconName, e.iconColor), r = N.getChildren(e.id);
2908
- for (let e of r) e.type === "folder" ? await re(e, n.id) : await N.createFile(e.name, e.content || "", n.id);
2909
- }, ie = async (e, n) => {
2955
+ for (let e of r) e.type === "folder" ? await ne(e, n.id) : await N.createFile(e.name, e.content || "", n.id);
2956
+ }, re = async (e, n) => {
2910
2957
  if (t) {
2911
2958
  if (c.action === "cut") try {
2912
2959
  await N.move(e.id, t), _(N.getAllNodes()), v();
@@ -2922,7 +2969,7 @@ var sa = {
2922
2969
  else if (c.action === "copy") {
2923
2970
  if (e.type === "folder") {
2924
2971
  let r = j(e.name, t);
2925
- r && n && await N.delete(r.id), (!r || n) && (await re(e, t), _(N.getAllNodes()), v());
2972
+ r && n && await N.delete(r.id), (!r || n) && (await ne(e, t), _(N.getAllNodes()), v());
2926
2973
  } else if (e.type === "file") {
2927
2974
  let r = j(e.name, t);
2928
2975
  if (r && n && await N.delete(r.id), !r || n) try {
@@ -2939,7 +2986,7 @@ var sa = {
2939
2986
  }
2940
2987
  c.action === "cut" && l();
2941
2988
  }
2942
- }, M = async () => {
2989
+ }, ie = async () => {
2943
2990
  if (c.content.length === 0 || !t) return;
2944
2991
  let e = c.content[0];
2945
2992
  j(e.name, t) ? S({
@@ -2948,15 +2995,15 @@ var sa = {
2948
2995
  node: e,
2949
2996
  originalName: e.name
2950
2997
  }
2951
- }) : (await ie(e, !1), a());
2952
- }, ae = (e) => {
2953
- x.pending && ie(x.pending.node, e), S({
2998
+ }) : (await re(e, !1), a());
2999
+ }, M = (e) => {
3000
+ x.pending && re(x.pending.node, e), S({
2954
3001
  opened: !1,
2955
3002
  pending: null
2956
3003
  }), a();
2957
- }, oe = c.content.length > 0 && t !== null, se = c.content.length > 1 ? r("actions.pasteItems", { count: c.content.length }) : r("actions.paste"), ce = (e) => {
3004
+ }, ae = c.content.length > 0 && t !== null, oe = c.content.length > 1 ? r("actions.pasteItems", { count: c.content.length }) : r("actions.paste"), se = (e) => {
2958
3005
  b(e), a();
2959
- }, le = [
3006
+ }, ce = [
2960
3007
  {
2961
3008
  mode: "default",
2962
3009
  icon: "FcDatabase",
@@ -2987,7 +3034,7 @@ var sa = {
2987
3034
  closeOnItemClick: !0,
2988
3035
  withinPortal: !0,
2989
3036
  position: "bottom-start",
2990
- children: [/* @__PURE__ */ G(va, {
3037
+ children: [/* @__PURE__ */ G(ma, {
2991
3038
  x: i.x,
2992
3039
  y: i.y
2993
3040
  }), /* @__PURE__ */ G(J.Dropdown, { children: D ? /* @__PURE__ */ K(W, { children: [
@@ -3008,13 +3055,13 @@ var sa = {
3008
3055
  onClick: A,
3009
3056
  children: r("actions.copy")
3010
3057
  }),
3011
- oe && /* @__PURE__ */ G(J.Item, {
3058
+ ae && /* @__PURE__ */ G(J.Item, {
3012
3059
  leftSection: /* @__PURE__ */ G(R, {
3013
3060
  name: "VscCopy",
3014
3061
  size: 14
3015
3062
  }),
3016
- onClick: M,
3017
- children: se
3063
+ onClick: ie,
3064
+ children: oe
3018
3065
  }),
3019
3066
  /* @__PURE__ */ G(J.Divider, {}),
3020
3067
  /* @__PURE__ */ G(J.Item, {
@@ -3043,23 +3090,23 @@ var sa = {
3043
3090
  onClick: () => ee("file"),
3044
3091
  children: r("actions.createFile")
3045
3092
  }),
3046
- oe && /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(J.Divider, {}), /* @__PURE__ */ G(J.Item, {
3093
+ ae && /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(J.Divider, {}), /* @__PURE__ */ G(J.Item, {
3047
3094
  leftSection: /* @__PURE__ */ G(R, {
3048
3095
  name: "VscCopy",
3049
3096
  size: 14
3050
3097
  }),
3051
- onClick: M,
3052
- children: se
3098
+ onClick: ie,
3099
+ children: oe
3053
3100
  })] }),
3054
3101
  e === "desktop" || e === "files" ? /* @__PURE__ */ K(W, { children: [
3055
3102
  /* @__PURE__ */ G(J.Divider, {}),
3056
3103
  /* @__PURE__ */ G(J.Label, { children: r("sort.title") }),
3057
- le.map((e) => /* @__PURE__ */ G(J.Item, {
3104
+ ce.map((e) => /* @__PURE__ */ G(J.Item, {
3058
3105
  leftSection: /* @__PURE__ */ G(L, {
3059
3106
  fcIcon: e.icon,
3060
3107
  size: 14
3061
3108
  }),
3062
- onClick: () => ce(e.mode),
3109
+ onClick: () => se(e.mode),
3063
3110
  style: y === e.mode ? { fontWeight: 600 } : void 0,
3064
3111
  "data-testid": y === e.mode ? "sort-option-selected" : void 0,
3065
3112
  children: e.label
@@ -3067,9 +3114,9 @@ var sa = {
3067
3114
  ] }) : null
3068
3115
  ] }) })]
3069
3116
  }),
3070
- /* @__PURE__ */ K(Yn, {
3117
+ /* @__PURE__ */ K(Kn, {
3071
3118
  opened: x.opened,
3072
- onClose: () => ae(!1),
3119
+ onClose: () => M(!1),
3073
3120
  title: /* @__PURE__ */ G(X, {
3074
3121
  fw: 600,
3075
3122
  children: r("common:messages.replaceFile")
@@ -3080,12 +3127,12 @@ var sa = {
3080
3127
  size: "sm",
3081
3128
  mb: "md",
3082
3129
  children: r("common:messages.replaceFileMessage", { name: x.pending?.originalName })
3083
- }), /* @__PURE__ */ K(Kn, {
3130
+ }), /* @__PURE__ */ K(Un, {
3084
3131
  justify: "flex-end",
3085
3132
  children: [/* @__PURE__ */ G(q, {
3086
3133
  variant: "default",
3087
3134
  size: "sm",
3088
- onClick: () => ae(!1),
3135
+ onClick: () => M(!1),
3089
3136
  leftSection: /* @__PURE__ */ G(R, {
3090
3137
  name: "VscClose",
3091
3138
  size: 14
@@ -3093,7 +3140,7 @@ var sa = {
3093
3140
  children: r("common:buttons.no")
3094
3141
  }), /* @__PURE__ */ G(q, {
3095
3142
  size: "sm",
3096
- onClick: () => ae(!0),
3143
+ onClick: () => M(!0),
3097
3144
  leftSection: /* @__PURE__ */ G(R, {
3098
3145
  name: "VscCheck",
3099
3146
  size: 14
@@ -3102,7 +3149,7 @@ var sa = {
3102
3149
  })]
3103
3150
  })]
3104
3151
  }),
3105
- /* @__PURE__ */ K(Yn, {
3152
+ /* @__PURE__ */ K(Kn, {
3106
3153
  opened: C.opened,
3107
3154
  onClose: () => k(!1),
3108
3155
  title: /* @__PURE__ */ G(X, {
@@ -3115,7 +3162,7 @@ var sa = {
3115
3162
  size: "sm",
3116
3163
  mb: "md",
3117
3164
  children: r("deleteConfirm.message", { name: C.nodeName })
3118
- }), /* @__PURE__ */ K(Kn, {
3165
+ }), /* @__PURE__ */ K(Un, {
3119
3166
  justify: "flex-end",
3120
3167
  children: [/* @__PURE__ */ G(q, {
3121
3168
  variant: "default",
@@ -3139,7 +3186,7 @@ var sa = {
3139
3186
  })]
3140
3187
  })
3141
3188
  ] });
3142
- }, ba = {
3189
+ }, ga = {
3143
3190
  overlay: "_overlay_34o9z_1",
3144
3191
  content: "_content_34o9z_12",
3145
3192
  phoneIcon: "_phoneIcon_34o9z_22",
@@ -3147,15 +3194,15 @@ var sa = {
3147
3194
  title: "_title_34o9z_50",
3148
3195
  message: "_message_34o9z_54",
3149
3196
  button: "_button_34o9z_58"
3150
- }, xa = ({ onDismiss: e }) => {
3151
- let { isPortrait: t, shouldShowWarning: n } = un();
3197
+ }, _a = ({ onDismiss: e }) => {
3198
+ let { isPortrait: t, shouldShowWarning: n } = bn();
3152
3199
  return !n || !t ? null : /* @__PURE__ */ G("div", {
3153
- className: ba.overlay,
3200
+ className: ga.overlay,
3154
3201
  children: /* @__PURE__ */ K("div", {
3155
- className: ba.content,
3202
+ className: ga.content,
3156
3203
  children: [
3157
3204
  /* @__PURE__ */ G("div", {
3158
- className: ba.phoneIcon,
3205
+ className: ga.phoneIcon,
3159
3206
  children: /* @__PURE__ */ K("svg", {
3160
3207
  width: "64",
3161
3208
  height: "64",
@@ -3182,35 +3229,35 @@ var sa = {
3182
3229
  /* @__PURE__ */ G(X, {
3183
3230
  size: "lg",
3184
3231
  fw: 500,
3185
- className: ba.title,
3232
+ className: ga.title,
3186
3233
  children: "Turn your device"
3187
3234
  }),
3188
3235
  /* @__PURE__ */ G(X, {
3189
3236
  size: "sm",
3190
3237
  c: "dimmed",
3191
- className: ba.message,
3238
+ className: ga.message,
3192
3239
  children: "For a better experience use this app desktop OR horizontal mode"
3193
3240
  }),
3194
3241
  /* @__PURE__ */ G(q, {
3195
3242
  variant: "subtle",
3196
3243
  onClick: e,
3197
- className: ba.button,
3244
+ className: ga.button,
3198
3245
  children: "Continue vertically?"
3199
3246
  })
3200
3247
  ]
3201
3248
  })
3202
3249
  });
3203
- }, Sa = () => typeof window < "u" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light", Ca = () => {
3204
- let e = a((e) => e.applySystemTheme), t = a((e) => e.themeSetManually);
3250
+ }, va = () => typeof window < "u" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light", ya = () => {
3251
+ let t = e((e) => e.applySystemTheme), n = e((e) => e.themeSetManually);
3205
3252
  B(() => {
3206
3253
  if (typeof window > "u") return;
3207
- t || e(Sa());
3208
- let n = window.matchMedia("(prefers-color-scheme: dark)"), r = (t) => {
3209
- a.getState().themeSetManually || e(t.matches ? "dark" : "light");
3254
+ n || t(va());
3255
+ let r = window.matchMedia("(prefers-color-scheme: dark)"), i = (n) => {
3256
+ e.getState().themeSetManually || t(n.matches ? "dark" : "light");
3210
3257
  };
3211
- return n.addEventListener("change", r), () => n.removeEventListener("change", r);
3212
- }, [e, t]);
3213
- }, wa = (e, t) => {
3258
+ return r.addEventListener("change", i), () => r.removeEventListener("change", i);
3259
+ }, [t, n]);
3260
+ }, ba = (e, t) => {
3214
3261
  let n = (e) => e.replace(/^v/, "").split(".").map(Number), r = n(e), i = n(t), a = Math.max(r.length, i.length);
3215
3262
  for (let e = 0; e < a; e++) {
3216
3263
  let t = r[e] ?? 0, n = i[e] ?? 0;
@@ -3218,14 +3265,14 @@ var sa = {
3218
3265
  if (t < n) return !1;
3219
3266
  }
3220
3267
  return !1;
3221
- }, Ta = "frannunpal/frannunpal.github.io", Ea = `https://api.github.com/repos/${Ta}/releases/latest`, Da = async () => {
3222
- let e = await fetch(Ea);
3268
+ }, xa = "frannunpal/frannunpal.github.io", Sa = `https://api.github.com/repos/${xa}/releases/latest`, Ca = async () => {
3269
+ let e = await fetch(Sa);
3223
3270
  if (!e.ok) throw Error(`GitHub API error: ${e.status}`);
3224
3271
  return e.json();
3225
- }, Oa = "fde-desktop:version", ka = !1, Aa = () => {
3226
- let e = P((e) => e.mergeSeed), t = P((e) => e.mergeDesktopApps), n = P((e) => e.reorderDesktopApps), { notify: r } = an();
3272
+ }, wa = typeof __APP_VERSION__ == "string" ? __APP_VERSION__ : "0.4.0", Ta = () => `${wa}-${typeof __PROD__ == "boolean" && __PROD__ ? "prod" : "dev"}-${typeof window < "u" && window.__FDE_IN_DOCKER__ ? "docker" : "web"}`, Ea = () => typeof __PROD__ == "boolean" && __PROD__ ? "prod" : "dev", Da = () => typeof window > "u" ? "web" : window.__FDE_IN_DOCKER__ ? "docker" : /Electron/i.test(navigator.userAgent) ? "electron" : "web", Oa = "fde-desktop:version", ka = !1, Aa = () => {
3273
+ let e = P((e) => e.mergeSeed), t = P((e) => e.mergeDesktopApps), n = P((e) => e.reorderDesktopApps), { notify: r } = gn();
3227
3274
  B(() => {
3228
- typeof window > "u" || ka || (ka = !0, Le() ? ja(r) : Ma(e, t, n, r));
3275
+ typeof window > "u" || ka || (ka = !0, Je() ? ja(r) : Ma(e, t, n, r));
3229
3276
  }, [
3230
3277
  e,
3231
3278
  t,
@@ -3234,8 +3281,8 @@ var sa = {
3234
3281
  ]);
3235
3282
  }, ja = async (e) => {
3236
3283
  try {
3237
- let t = await Da(), n = t.tag_name;
3238
- if (!wa(n, __APP_VERSION__)) return;
3284
+ let t = await Ca(), n = t.tag_name;
3285
+ if (!ba(n, wa)) return;
3239
3286
  e(`Update ${n} available!`, "Click close to open the download page.", {
3240
3287
  fcIcon: "FcEngineering",
3241
3288
  onClose: () => window.open(t.html_url, "_blank")
@@ -3245,11 +3292,11 @@ var sa = {
3245
3292
  }
3246
3293
  }, Ma = async (e, t, n, r) => {
3247
3294
  try {
3248
- let i = localStorage.getItem(Oa), a = i ? JSON.parse(i) : null, o = await fetch(ut("version.json")).then((e) => e.json());
3295
+ let i = localStorage.getItem(Oa), a = i ? JSON.parse(i) : null, o = await fetch(xt("version.json")).then((e) => e.json());
3249
3296
  if (a?.sha === o.sha) return;
3250
- let s = await kt();
3297
+ let s = await Vt();
3251
3298
  if (!s) return;
3252
- e(s), t(_t), n(_t), localStorage.setItem(Oa, JSON.stringify(o)), r("New version available!", "Close this notification to install it.", {
3299
+ e(s), t(kt), n(kt), localStorage.setItem(Oa, JSON.stringify(o)), r("New version available!", "Close this notification to install it.", {
3253
3300
  fcIcon: "FcEngineering",
3254
3301
  onClose: () => window.location.reload()
3255
3302
  });
@@ -3257,37 +3304,37 @@ var sa = {
3257
3304
  ka = !1;
3258
3305
  }
3259
3306
  }, Na = (e) => `https://fonts.googleapis.com/css2?family=${e.replace(/\s+/g, "+")}&display=swap`, Pa = (e) => {
3260
- let t = d[e];
3307
+ let t = r[e];
3261
3308
  if (!t || document.head.querySelector(`link[data-font="${e}"]`)) return;
3262
3309
  let n = document.createElement("link");
3263
3310
  n.rel = "stylesheet", n.href = t, n.setAttribute("data-font", e), document.head.appendChild(n);
3264
3311
  }, Fa = () => {
3265
- let e = a((e) => e.font), t = a((e) => e.fontSize), n = a((e) => e.downloadedFonts);
3312
+ let t = e((e) => e.font), i = e((e) => e.fontSize), a = e((e) => e.downloadedFonts);
3266
3313
  B(() => {
3267
- n.forEach((e) => {
3268
- d[e] || (d[e] = Na(e)), Pa(e);
3314
+ a.forEach((e) => {
3315
+ r[e] || (r[e] = Na(e)), Pa(e);
3269
3316
  });
3270
- }, [n]), B(() => {
3271
- let a = r.map((e) => e.value).includes(e);
3272
- !a && n.includes(e) && (d[e] || (d[e] = Na(e)), Pa(e));
3317
+ }, [a]), B(() => {
3318
+ let e = p.map((e) => e.value).includes(t);
3319
+ !e && a.includes(t) && (r[t] || (r[t] = Na(t)), Pa(t));
3273
3320
  let o;
3274
- o = a ? i[e] ?? i["system-ui"] : n.includes(e) ? `"${e}", sans-serif` : i["system-ui"], document.documentElement.style.setProperty("font-family", o), document.documentElement.style.setProperty("--mantine-font-family", o), document.documentElement.style.setProperty("font-size", `${t}px`);
3321
+ o = e ? n[t] ?? n["system-ui"] : a.includes(t) ? `"${t}", sans-serif` : n["system-ui"], document.documentElement.style.setProperty("font-family", o), document.documentElement.style.setProperty("--mantine-font-family", o), document.documentElement.style.setProperty("font-size", `${i}px`);
3275
3322
  }, [
3276
- e,
3277
3323
  t,
3278
- n
3324
+ i,
3325
+ a
3279
3326
  ]);
3280
3327
  };
3281
3328
  //#endregion
3282
3329
  //#region src/hooks/useLanguageSync.ts
3283
3330
  function Ia() {
3284
- let { i18n: e } = Z(), t = a((e) => e.language);
3331
+ let { i18n: t } = Z(), n = e((e) => e.language);
3285
3332
  B(() => {
3286
- t && e.language !== t && (e.changeLanguage(t), localStorage.setItem("fde-desktop:language", t));
3287
- }, [t, e]), B(() => {
3333
+ n && t.language !== n && (t.changeLanguage(n), localStorage.setItem("fde-desktop:language", n));
3334
+ }, [n, t]), B(() => {
3288
3335
  let e = localStorage.getItem("fde-desktop:language");
3289
- t && !e && localStorage.setItem("fde-desktop:language", t);
3290
- }, [t]);
3336
+ n && !e && localStorage.setItem("fde-desktop:language", n);
3337
+ }, [n]);
3291
3338
  }
3292
3339
  //#endregion
3293
3340
  //#region src/infrastructure/Migration/migrateStorage.ts
@@ -3446,7 +3493,7 @@ function io() {
3446
3493
  }
3447
3494
  Qa = {
3448
3495
  openApp: (e, t) => {
3449
- let n = P.getState().openWindow, r = it.find((t) => t.id === e);
3496
+ let n = P.getState().openWindow, r = ht.find((t) => t.id === e);
3450
3497
  n({
3451
3498
  content: e,
3452
3499
  title: t?.title ?? r?.name ?? e,
@@ -3507,13 +3554,13 @@ function io() {
3507
3554
  openFileDialog: async () => (console.warn("[FdeApi] openFileDialog not yet implemented"), null),
3508
3555
  saveFile: async () => (console.warn("[FdeApi] saveFile not yet implemented"), !1),
3509
3556
  saveFileDialog: async () => (console.warn("[FdeApi] saveFileDialog not yet implemented"), null),
3510
- getTheme: () => a.getState().theme,
3511
- setTheme: (e) => {
3512
- let t = e;
3513
- t.taskbar && t.window && t.accent && (a.getState().setCustomThemeColors(t), to("theme-changed", { theme: JSON.stringify(e) }));
3557
+ getTheme: () => e.getState().theme,
3558
+ setTheme: (t) => {
3559
+ let n = t;
3560
+ n.taskbar && n.window && n.accent && (e.getState().setCustomThemeColors(n), to("theme-changed", { theme: JSON.stringify(t) }));
3514
3561
  },
3515
3562
  showNotification: (e) => {
3516
- let t = xt();
3563
+ let t = Nt();
3517
3564
  return P.getState().addNotification({
3518
3565
  id: t,
3519
3566
  title: e.title,
@@ -3554,82 +3601,83 @@ function oo() {
3554
3601
  }
3555
3602
  //#endregion
3556
3603
  //#region src/components/FdeDesktop/FdeDesktop.tsx
3557
- var so = new ir({ defaultOptions: { queries: {
3604
+ var so = new tr({ defaultOptions: { queries: {
3558
3605
  staleTime: Infinity,
3559
3606
  gcTime: Infinity
3560
3607
  } } }), co = !1;
3561
- function lo({ defaultWallpaper: e, initialApp: t, prefetchLoaders: n }) {
3562
- let r = fn(a((e) => e.wallpaper) ?? void 0), i = P((e) => e.windows), o = P((e) => e.icons), s = P((e) => e.initFs), c = P((e) => e.isFsReady), l = P((e) => e.fsNodes), u = P((e) => e.openContextMenu), d = P((e) => e.filesCurrentFolderId), f = P((e) => e.desktopFolderId), p = ye(), { shouldShowWarning: m } = un(), { notify: h } = an(), [g, _] = U(!1);
3563
- Ca(), Aa(), Fa(), Ia(), aa(), B(() => {
3608
+ function lo({ defaultWallpaper: t, initialApp: n, prefetchLoaders: r }) {
3609
+ let i = e((e) => e.wallpaper), a = e((e) => e.wallpaperModule), o = T(i ?? void 0), s = a === "gradient" ? i ?? void 0 : o ?? t ?? C, c = P((e) => e.windows), l = P((e) => e.icons), u = P((e) => e.initFs), d = P((e) => e.isFsReady), f = P((e) => e.fsNodes), p = P((e) => e.openContextMenu), m = P((e) => e.filesCurrentFolderId), h = P((e) => e.desktopFolderId), g = Ae(), { shouldShowWarning: _ } = bn(), { notify: v } = gn(), [y, b] = U(!1);
3610
+ ya(), Aa(), Fa(), Ia(), ta(), B(() => {
3564
3611
  oo() || io();
3565
3612
  }, []), B(() => {
3566
- if (!c) return;
3613
+ if (!d) return;
3567
3614
  let e = document.getElementById("initial-loader");
3568
3615
  e && (e.classList.add("hidden"), setTimeout(() => e.remove(), 200));
3569
- }, [c]), B(() => {
3570
- if (!n?.length) return;
3616
+ }, [d]), B(() => {
3617
+ if (!r?.length) return;
3571
3618
  let e = setTimeout(() => {
3572
- Za(n);
3619
+ Za(r);
3573
3620
  }, 3e3);
3574
3621
  return () => clearTimeout(e);
3575
- }, [n]), B(() => {
3622
+ }, [r]), B(() => {
3576
3623
  co || (co = !0, Ga().finally(() => {
3577
- s(), t && p(t);
3624
+ u(), n && g(n);
3578
3625
  }));
3579
3626
  }, [
3580
- s,
3581
- p,
3582
- t
3627
+ u,
3628
+ g,
3629
+ n
3583
3630
  ]);
3584
- let v = z((e) => {
3585
- e.preventDefault(), u(e.clientX, e.clientY, "desktop");
3586
- }, [u]), y = z((e, t) => {
3587
- e.preventDefault(), e.stopPropagation(), u(e.clientX, e.clientY, "desktop", t);
3588
- }, [u]), b = z((e, t) => {
3631
+ let x = z((e) => {
3632
+ e.preventDefault(), p(e.clientX, e.clientY, "desktop");
3633
+ }, [p]), S = z((e, t) => {
3634
+ e.preventDefault(), e.stopPropagation(), p(e.clientX, e.clientY, "desktop", t);
3635
+ }, [p]), w = z((e, t) => {
3589
3636
  let n;
3590
3637
  if (t) {
3591
- let r = l.find((e) => e.id === t);
3638
+ let r = f.find((e) => e.id === t);
3592
3639
  if (r?.type === "folder") n = { initialFolderId: t };
3593
3640
  else if (r?.type === "file") {
3594
- let t = Pt(r);
3641
+ let t = Kt(r);
3595
3642
  if (!t) {
3596
- h("Unsupported file type", "The type of file you are trying to open is not supported currently", { fcIcon: "FcDeleteRow" });
3643
+ v("Unsupported file type", "The type of file you are trying to open is not supported currently", { fcIcon: "FcDeleteRow" });
3597
3644
  return;
3598
3645
  }
3599
- t.appId !== e && h("File type mismatch", `Opening "${r.name}" as ${t.appId} instead of ${e}`, { fcIcon: "FcDeleteRow" }), p(t.appId, { contentData: t.contentData });
3646
+ t.appId !== e && v("File type mismatch", `Opening "${r.name}" as ${t.appId} instead of ${e}`, { fcIcon: "FcDeleteRow" }), g(t.appId, { contentData: t.contentData });
3600
3647
  return;
3601
3648
  }
3602
3649
  }
3603
- p(e, { contentData: n });
3650
+ g(e, { contentData: n });
3604
3651
  }, [
3605
- p,
3606
- l,
3607
- h
3652
+ g,
3653
+ f,
3654
+ v
3608
3655
  ]);
3609
- return c ? /* @__PURE__ */ K(W, { children: [
3610
- m && !g && /* @__PURE__ */ G(xa, { onDismiss: () => _(!0) }),
3611
- /* @__PURE__ */ K(Rr, {
3612
- wallpaper: r ?? e,
3613
- onContextMenu: v,
3614
- children: [o.map((e) => /* @__PURE__ */ G(_a, {
3656
+ return d ? /* @__PURE__ */ K(W, { children: [
3657
+ _ && !y && /* @__PURE__ */ G(_a, { onDismiss: () => b(!0) }),
3658
+ /* @__PURE__ */ K(Pr, {
3659
+ wallpaper: s,
3660
+ wallpaperModule: a,
3661
+ onContextMenu: x,
3662
+ children: [l.map((e) => /* @__PURE__ */ G(pa, {
3615
3663
  icon: e,
3616
- onDoubleClick: b,
3617
- onContextMenu: y
3618
- }, e.id)), /* @__PURE__ */ G(sr, { children: i.map((e) => /* @__PURE__ */ G(ha, { window: e }, e.id)) })]
3664
+ onDoubleClick: w,
3665
+ onContextMenu: S
3666
+ }, e.id)), /* @__PURE__ */ G(ir, { children: c.map((e) => /* @__PURE__ */ G(da, { window: e }, e.id)) })]
3619
3667
  }),
3620
- /* @__PURE__ */ G(Mi, {}),
3621
- /* @__PURE__ */ G(ya, {
3668
+ /* @__PURE__ */ G(Oi, {}),
3669
+ /* @__PURE__ */ G(ha, {
3622
3670
  owner: "desktop",
3623
- parentId: f,
3671
+ parentId: h,
3624
3672
  currentPath: "/home"
3625
3673
  }),
3626
- /* @__PURE__ */ G(ya, {
3674
+ /* @__PURE__ */ G(ha, {
3627
3675
  owner: "files",
3628
- parentId: d,
3676
+ parentId: m,
3629
3677
  currentPath: (() => {
3630
- let e = ["/home"], t = d, n = [];
3678
+ let e = ["/home"], t = m, n = [];
3631
3679
  for (; t !== null;) {
3632
- let e = l.find((e) => e.id === t);
3680
+ let e = f.find((e) => e.id === t);
3633
3681
  if (!e) break;
3634
3682
  n.unshift(e.name), t = e.parentId;
3635
3683
  }
@@ -3638,40 +3686,40 @@ function lo({ defaultWallpaper: e, initialApp: t, prefetchLoaders: n }) {
3638
3686
  })
3639
3687
  ] }) : null;
3640
3688
  }
3641
- function uo({ children: e, isReady: t, error: n, defaultWallpaper: r, initialApp: i, prefetchLoaders: o }) {
3642
- let s = Tr(), c = a((e) => e.setThemeMode), l = a((e) => e.toggleTheme), u = V(() => ({
3689
+ function uo({ children: t, isReady: n, error: r, defaultWallpaper: i, initialApp: a, prefetchLoaders: o }) {
3690
+ let s = Sr(), c = e((e) => e.setThemeMode), l = e((e) => e.toggleTheme), u = V(() => ({
3643
3691
  fs: null,
3644
- isReady: t,
3645
- error: n,
3692
+ isReady: n,
3693
+ error: r,
3646
3694
  theme: s,
3647
3695
  setThemeMode: c,
3648
3696
  toggleTheme: l
3649
3697
  }), [
3650
- t,
3651
3698
  n,
3699
+ r,
3652
3700
  s,
3653
3701
  c,
3654
3702
  l
3655
3703
  ]);
3656
- return e ? /* @__PURE__ */ G(Pr, { children: /* @__PURE__ */ G(Or.Provider, {
3704
+ return t ? /* @__PURE__ */ G(jr, { children: /* @__PURE__ */ G(Tr.Provider, {
3657
3705
  value: u,
3658
- children: e
3659
- }) }) : /* @__PURE__ */ G(Pr, { children: /* @__PURE__ */ G(Or.Provider, {
3706
+ children: t
3707
+ }) }) : /* @__PURE__ */ G(jr, { children: /* @__PURE__ */ G(Tr.Provider, {
3660
3708
  value: u,
3661
3709
  children: /* @__PURE__ */ G(lo, {
3662
- defaultWallpaper: r,
3663
- initialApp: i,
3710
+ defaultWallpaper: i,
3711
+ initialApp: a,
3664
3712
  prefetchLoaders: o
3665
3713
  })
3666
3714
  }) });
3667
3715
  }
3668
- function fo({ children: e, fallback: t = null, theme: n, mantineTheme: r, fileSystem: i, initialMode: o, customApps: s, appEntries: c, onError: l, defaultWallpaper: u, initialApp: d, prefetchLoaders: f, queryClient: p = so }) {
3669
- let [m, h] = U(!1), [g, _] = U(null), v = a((e) => e.theme.mode), [y] = U(o), b = y ?? v;
3716
+ function fo({ children: t, fallback: n = null, theme: r, mantineTheme: i, fileSystem: a, initialMode: o, customApps: s, appEntries: c, onError: l, defaultWallpaper: u, initialApp: d, prefetchLoaders: f, queryClient: p = so }) {
3717
+ let [m, h] = U(!1), [g, _] = U(null), v = e((e) => e.theme.mode), [y] = U(o), b = y ?? v;
3670
3718
  B(() => {
3671
3719
  let e = !0;
3672
3720
  return (async () => {
3673
3721
  try {
3674
- if (te(), c && Mt(c), s) {
3722
+ if (le(), c && Wt(c), s) {
3675
3723
  let e = { ...s };
3676
3724
  if (c) for (let t of c) {
3677
3725
  let n = e[t.id];
@@ -3691,17 +3739,17 @@ function fo({ children: e, fallback: t = null, theme: n, mantineTheme: r, fileSy
3691
3739
  iconColor: n.iconColor ?? t.iconColor
3692
3740
  });
3693
3741
  }
3694
- D(e);
3742
+ ae(e);
3695
3743
  }
3696
3744
  } catch (e) {
3697
3745
  console.error("[FdeDesktop] Failed to initialize core registry:", e);
3698
3746
  }
3699
- if (!i) {
3747
+ if (!a) {
3700
3748
  e && h(!0);
3701
3749
  return;
3702
3750
  }
3703
3751
  try {
3704
- await i.initialize(), e && h(!0);
3752
+ await a.initialize(), e && h(!0);
3705
3753
  } catch (t) {
3706
3754
  let n = t instanceof Error ? t : Error(String(t));
3707
3755
  e && (_(n), l?.(n));
@@ -3710,30 +3758,30 @@ function fo({ children: e, fallback: t = null, theme: n, mantineTheme: r, fileSy
3710
3758
  e = !1;
3711
3759
  };
3712
3760
  }, [
3713
- i,
3761
+ a,
3714
3762
  c,
3715
3763
  s,
3716
3764
  l
3717
3765
  ]);
3718
- let x = V(() => tr({
3719
- ...Dr,
3720
- ...r
3721
- }), [r]);
3722
- return g || !m ? /* @__PURE__ */ G(W, { children: t }) : /* @__PURE__ */ G(ar, {
3766
+ let x = V(() => Qn({
3767
+ ...wr,
3768
+ ...i
3769
+ }), [i]);
3770
+ return g || !m ? /* @__PURE__ */ G(W, { children: n }) : /* @__PURE__ */ G(nr, {
3723
3771
  client: p,
3724
- children: /* @__PURE__ */ G(Jn, {
3772
+ children: /* @__PURE__ */ G(Gn, {
3725
3773
  theme: x,
3726
3774
  forceColorScheme: b,
3727
- children: /* @__PURE__ */ G(wr, {
3775
+ children: /* @__PURE__ */ G(xr, {
3728
3776
  mode: b,
3729
- theme: n,
3777
+ theme: r,
3730
3778
  children: /* @__PURE__ */ G(uo, {
3731
3779
  isReady: m,
3732
3780
  error: g,
3733
3781
  defaultWallpaper: u,
3734
3782
  initialApp: d,
3735
3783
  prefetchLoaders: f,
3736
- children: e
3784
+ children: t
3737
3785
  })
3738
3786
  })
3739
3787
  })
@@ -3745,14 +3793,14 @@ var po = ({ component: e, windowId: t, contentData: n, onExit: r }) => e ? /* @_
3745
3793
  windowId: t,
3746
3794
  contentData: n,
3747
3795
  onExit: r
3748
- }) : null, mo = it.filter((e) => e.id !== "settings"), ho = ({ opened: e, position: t, onClose: n, onOpenApp: r, onToggleTheme: i }) => /* @__PURE__ */ K(J, {
3796
+ }) : null, mo = ht.filter((e) => e.id !== "settings"), ho = ({ opened: e, position: t, onClose: n, onOpenApp: r, onToggleTheme: i }) => /* @__PURE__ */ K(J, {
3749
3797
  opened: e,
3750
3798
  onClose: n,
3751
3799
  closeOnClickOutside: !0,
3752
3800
  closeOnEscape: !0,
3753
3801
  closeOnItemClick: !0,
3754
3802
  withinPortal: !0,
3755
- children: [/* @__PURE__ */ G(va, {
3803
+ children: [/* @__PURE__ */ G(ma, {
3756
3804
  x: t.x,
3757
3805
  y: t.y
3758
3806
  }), /* @__PURE__ */ K(J.Dropdown, { children: [
@@ -3774,7 +3822,7 @@ var po = ({ component: e, windowId: t, contentData: n, onExit: r }) => e ? /* @_
3774
3822
  }), yo = {
3775
3823
  scrollback: 5e3,
3776
3824
  shell: "/bin/zsh"
3777
- }, bo = or((e, t) => ({
3825
+ }, bo = rr((e, t) => ({
3778
3826
  states: {},
3779
3827
  getScrollback: (e) => t().states[e]?.scrollback ?? yo.scrollback,
3780
3828
  getShell: (e) => t().states[e]?.shell ?? yo.shell,
@@ -3875,7 +3923,7 @@ var po = ({ component: e, windowId: t, contentData: n, onExit: r }) => e ? /* @_
3875
3923
  }, [x]);
3876
3924
  B(() => {
3877
3925
  if (m.current || (m.current = !0, u.current = !0, !i.current)) return;
3878
- let e = new _r({
3926
+ let e = new mr({
3879
3927
  fontFamily: "'Operator Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace",
3880
3928
  fontSize: 14,
3881
3929
  theme: {
@@ -3887,7 +3935,7 @@ var po = ({ component: e, windowId: t, contentData: n, onExit: r }) => e ? /* @_
3887
3935
  cursorStyle: "underline",
3888
3936
  cursorBlink: !0,
3889
3937
  scrollback: t
3890
- }), n = new vr(), r = new yr();
3938
+ }), n = new hr(), r = new gr();
3891
3939
  return e.loadAddon(n), e.loadAddon(r), e.open(i.current), n.fit(), a.current = e, o.current = n, s.current = r, e.onData((e) => {
3892
3940
  c.current?.readyState === WebSocket.OPEN && c.current.send(JSON.stringify({
3893
3941
  type: "input",
@@ -4008,13 +4056,13 @@ function Do(e) {
4008
4056
  //#region src/components/Apps/TerminalApp/TerminalNotSupported.tsx
4009
4057
  var Oo = () => {
4010
4058
  let { t: e } = Z("apps");
4011
- return /* @__PURE__ */ G(Gn, {
4059
+ return /* @__PURE__ */ G(Hn, {
4012
4060
  "data-testid": "terminal-not-supported",
4013
4061
  style: {
4014
4062
  width: "100%",
4015
4063
  height: "100%"
4016
4064
  },
4017
- children: /* @__PURE__ */ K(Qn, {
4065
+ children: /* @__PURE__ */ K(Yn, {
4018
4066
  align: "center",
4019
4067
  gap: "lg",
4020
4068
  p: "xl",
@@ -4022,7 +4070,7 @@ var Oo = () => {
4022
4070
  children: [
4023
4071
  /* @__PURE__ */ G(X, {
4024
4072
  size: "3rem",
4025
- children: /* @__PURE__ */ G(gr, {})
4073
+ children: /* @__PURE__ */ G(pr, {})
4026
4074
  }),
4027
4075
  /* @__PURE__ */ G(X, {
4028
4076
  size: "lg",
@@ -4046,7 +4094,7 @@ var Oo = () => {
4046
4094
  })
4047
4095
  });
4048
4096
  }, ko = ({ window: e, notifyReady: t }) => {
4049
- let n = e, r = n?.id ?? "", i = Pe(), a = xo(r), o = So(r), { setScrollback: s, setShell: c, reset: l } = bo(), u = H(null), d = H(!1), f = H(!1), [p, m] = U("idle"), [h, g] = U(null);
4097
+ let n = e, r = n?.id ?? "", i = Ge(), a = xo(r), o = So(r), { setScrollback: s, setShell: c, reset: l } = bo(), u = H(null), d = H(!1), f = H(!1), [p, m] = U("idle"), [h, g] = U(null);
4050
4098
  B(() => {
4051
4099
  i !== "docker" || f.current || (f.current = !0, (async () => {
4052
4100
  try {
@@ -4108,13 +4156,13 @@ var Oo = () => {
4108
4156
  }) : /* @__PURE__ */ G(Oo, {});
4109
4157
  }, Ao = () => {
4110
4158
  let { t: e } = Z("apps");
4111
- return /* @__PURE__ */ G(Gn, {
4159
+ return /* @__PURE__ */ G(Hn, {
4112
4160
  "data-testid": "code-server-not-supported",
4113
4161
  style: {
4114
4162
  width: "100%",
4115
4163
  height: "100%"
4116
4164
  },
4117
- children: /* @__PURE__ */ K(Qn, {
4165
+ children: /* @__PURE__ */ K(Yn, {
4118
4166
  align: "center",
4119
4167
  gap: "lg",
4120
4168
  p: "xl",
@@ -4122,7 +4170,7 @@ var Oo = () => {
4122
4170
  children: [
4123
4171
  /* @__PURE__ */ G(X, {
4124
4172
  size: "3rem",
4125
- children: /* @__PURE__ */ G(gr, {})
4173
+ children: /* @__PURE__ */ G(pr, {})
4126
4174
  }),
4127
4175
  /* @__PURE__ */ G(X, {
4128
4176
  size: "lg",
@@ -4244,7 +4292,7 @@ var Oo = () => {
4244
4292
  allow: "clipboard-read; clipboard-write"
4245
4293
  })
4246
4294
  });
4247
- }, No = (e) => Ne() ? /* @__PURE__ */ G(Mo, { ...e }) : /* @__PURE__ */ G(Ao, {}), Po = [{
4295
+ }, No = (e) => We() ? /* @__PURE__ */ G(Mo, { ...e }) : /* @__PURE__ */ G(Ao, {}), Po = [{
4248
4296
  value: "/bin/sh",
4249
4297
  label: "sh"
4250
4298
  }, {
@@ -4337,7 +4385,7 @@ function Fo(e) {
4337
4385
  }
4338
4386
  //#endregion
4339
4387
  //#region src/components/Apps/TerminalApp/TerminalMenuBar.tsx
4340
- var Io = Bn(({ windowId: e, contentData: t, onExit: n }) => /* @__PURE__ */ G(rn, { elements: Fo({
4388
+ var Io = Ln(({ windowId: e, contentData: t, onExit: n }) => /* @__PURE__ */ G(hn, { elements: Fo({
4341
4389
  windowId: e,
4342
4390
  onExit: n,
4343
4391
  clear: t?.clear,
@@ -4364,16 +4412,16 @@ var Lo = { container: "_container_1br66_1" }, Ro = ({ notifyReady: e, window: t,
4364
4412
  ]);
4365
4413
  let a = () => {
4366
4414
  globalThis.window.open(n.url, "_blank", "noopener,noreferrer");
4367
- }, o = Bt(n.icon, {
4415
+ }, o = Qt(n.icon, {
4368
4416
  size: 48,
4369
4417
  color: n.iconColor
4370
- }), s = Bt(n.icon, {
4418
+ }), s = Qt(n.icon, {
4371
4419
  size: 16,
4372
4420
  color: n.iconColor
4373
4421
  });
4374
- return /* @__PURE__ */ G(Gn, {
4422
+ return /* @__PURE__ */ G(Hn, {
4375
4423
  className: Lo.container,
4376
- children: /* @__PURE__ */ K(Qn, {
4424
+ children: /* @__PURE__ */ K(Yn, {
4377
4425
  align: "center",
4378
4426
  gap: "md",
4379
4427
  children: [
@@ -4412,7 +4460,7 @@ var Lo = { container: "_container_1br66_1" }, Ro = ({ notifyReady: e, window: t,
4412
4460
  opened: n,
4413
4461
  position: i,
4414
4462
  open: z((n, i) => {
4415
- if (n.preventDefault(), t && !it.find((e) => e.id === t)?.hasContextMenu) {
4463
+ if (n.preventDefault(), t && !ht.find((e) => e.id === t)?.hasContextMenu) {
4416
4464
  n.stopPropagation();
4417
4465
  return;
4418
4466
  }
@@ -4433,7 +4481,7 @@ function Bo({ snapshotRef: e, getCurrentState: t, initialSnapshot: n, onChange:
4433
4481
  }, [r]), B(() => {
4434
4482
  if (e.current === null) {
4435
4483
  if (i) {
4436
- let t = _n.getState().getSnapshot(i);
4484
+ let t = jn.getState().getSnapshot(i);
4437
4485
  if (t !== null) {
4438
4486
  e.current = t;
4439
4487
  return;
@@ -4454,7 +4502,7 @@ function Bo({ snapshotRef: e, getCurrentState: t, initialSnapshot: n, onChange:
4454
4502
  isDirty: a,
4455
4503
  takeSnapshot: z(() => {
4456
4504
  let n = t();
4457
- e.current = n, o(!1), i && _n.getState().setSnapshot(i, n), s.current && s.current(!1);
4505
+ e.current = n, o(!1), i && jn.getState().setSnapshot(i, n), s.current && s.current(!1);
4458
4506
  }, [
4459
4507
  e,
4460
4508
  t,
@@ -4558,7 +4606,7 @@ var Ho = {
4558
4606
  window: "#25262b",
4559
4607
  accent: "#4dabf7"
4560
4608
  }
4561
- }, Go = typeof __APP_VERSION__ == "string" ? __APP_VERSION__ : "0.4.0", Ko = () => `${Go}-${typeof __PROD__ == "boolean" && __PROD__ ? "prod" : "dev"}-${typeof window < "u" && window.__FDE_IN_DOCKER__ ? "docker" : "web"}`, qo = () => typeof __PROD__ == "boolean" && __PROD__ ? "prod" : "dev", Jo = () => typeof window > "u" ? "web" : window.__FDE_IN_DOCKER__ ? "docker" : /Electron/i.test(navigator.userAgent) ? "electron" : "web", Yo = (e) => ({
4609
+ }, Go = (e) => ({
4562
4610
  primaryColor: "blue",
4563
4611
  other: {
4564
4612
  desktop: e.desktop,
@@ -4568,4 +4616,4 @@ var Ho = {
4568
4616
  }
4569
4617
  });
4570
4618
  //#endregion
4571
- export { me as ANIMATION_DURATION, it as APPS, Q as APP_IDS, Gr as APP_ID_TO_TRANSLATION_KEY, Go as APP_VERSION, r as AVAILABLE_FONTS, bn as AppEmptyState, L as AppIcon, Ni as AppLoading, rn as AppMenuBar, fa as AppReadyProvider, St as BREAKPOINTS, lt as CORE_APPS, Ct as CORE_APP_IDS, ie as CORE_REGISTRY, It as CUSTOM_APPS_FOLDER_ID, pn as CalendarApp, de as CalendarAppLazy, No as CodeServerApp, Zr as CollapsibleSection, Dn as ColorPicker, ho as ContextMenu, ri as ContextMenuAnchor, In as CreateItemApp, g as CreateItemAppLazy, ya as CreateItemContextMenu, la as CustomAppLoader, Pi as CustomAppLoadingScreen, Ii as CustomAppNotSupported, Fi as CustomAppOffline, Cr as DEFAULT_FDE_THEME, t as DEFAULT_LANGUAGE, Oe as DEFAULT_LAUNCHER_FOLDERS, Wo as DEFAULT_THEME_COLORS, Dt as DEFAULT_VIEWPORT_HEIGHT, rt as DEFAULT_VIEWPORT_WIDTH, yt as DEFAULT_WINDOW_DIMENSIONS, Kr as DESKTOP_APPS, _t as DESKTOP_APPS_ORDER, e as DefaultThemeProvider, Rr as Desktop, _a as DesktopIcon, dn as DeviceInfoApp, ue as DeviceInfoAppLazy, nn as DirtyIndicator, wt as DockerFileSystemAdapter, wn as DownloadProgress, qt as DragDropProvider, po as DynamicMenuBarRenderer, _e as EASE_IN, le as EASE_OUT, Ro as ExternalLinkApp, i as FONT_STACKS, fo as FdeDesktop, jr as FdeProvider, sn as FileIcon, gn as FilePickerApp, hn as FilePickerModal, on as FilesApp, T as FilesAppLazy, mn as FolderPicker, Ea as GITHUB_LATEST_RELEASE_URL, Ta as GITHUB_RELEASES_REPO, d as GOOGLE_FONTS_HREF, gt as ICON_COLUMN_WIDTH, jt as ICON_MARGIN, at as ICON_ROW_HEIGHT, Ft as IMAGE_MIME_TYPES, Fn as IconColorPicker, Sn as ImageViewerApp, E as ImageViewerAppLazy, Nn as ImageViewerMenuBar, ee as ImageViewerMenuBarLazy, Ze as IndexedDBFileSystem, l as LanguageFlag, Ai as LanguageSelector, ni as Launcher, Xt as MenuEditApp, x as MenuEditAppLazy, An as MenuEditMenuBar, C as MenuEditMenuBarLazy, vn as NotesApp, w as NotesAppLazy, kn as NotesMenuBar, O as NotesMenuBarLazy, Je as PREDEFINED_LAUNCHER_FOLDERS, xn as PRESET_COLORS, Pn as PRESET_ICONS, f as PROFILE, Cn as PdfApp, Te as PdfAppLazy, Mn as PdfMenuBar, _ as PdfMenuBarLazy, rr as QueryClient, h as SETTINGS_SECTIONS, u as SUPPORTED_LANGUAGES, m as SettingsApp, j as SettingsAppLazy, jn as SettingsMenuBar, S as SettingsMenuBarLazy, c as SettingsSectionComponent, ke as SortOptions, vo as StorybookApp, ct as TASKBAR_HEIGHT, nt as TEXT_MIME_TYPES, Mi as Taskbar, si as TaskbarContextMenu, ko as TerminalApp, Io as TerminalMenuBar, wr as ThemeProvider, En as UploaderApp, A as UploaderAppLazy, R as VscIcon, ha as Window, Pr as WindowButtonRegistryProvider, Ue as WindowManagerAdapter, On as appendDirtyIndicator, ln as buildBreadcrumbs, re as centerWindowPosition, Zi as checkHMREndpointExists, s as clearBrowserData, Ve as clearManifestCache, ht as convertToAppEntry, pt as createDesktopIcon, he as createEaseIn, ve as createEaseOut, Ee as createFile, st as createFolder, At as createLauncherFolder, M as createMaximizeTransition, fe as createMinimizeVariant, be as createPanelVariants, bt as createPredefinedLauncherFolder, ae as createRestoreVariant, tt as createWindow, oe as createWindowVariants, De as fetchAppManifest, N as fileSystem, Tn as formatBytes, xt as generateUUID, Ce as getAppComponent, Pt as getAppIdForMime, k as getAppName, vt as getBaseUrl, mt as getCachedManifest, tn as getCloseInterceptor, ze as getCustomAppById, Be as getCustomApps, qo as getEnvironment, ao as getFdeApi, cn as getFileExtension, yn as getFourRandomColors, v as getMenuBarBuilder, Se as getMenuBarComponent, Qe as getMimeTypeFromExtension, o as getPersistedThemeMode, Jo as getReleaseType, Pe as getRuntime, Ko as getVersionString, Xe as hashBlob, Di as i18n, b as initRegistry, io as initializeFdeApi, n as injectFontLink, qe as isBrowser, He as isCustomApp, Ye as isDev, Ne as isDocker, Le as isElectron, oo as isFdeApiInitialized, y as isLazyApp, wa as isNewerVersion, ge as maximizeTransition, Me as mergeAppsWithCustomApps, Ga as migrateStorage, pe as minimizeVariant, ce as openVariants, se as panelVariants, Za as prefetchApps, ne as randomWindowPosition, Ge as registerAppFileHandler, $t as registerCloseInterceptor, D as registerComponents, Mt as registerCustomApps, ot as registerDesktopApps, Fe as removeFromManifestCache, dt as resetBaseUrlCache, Tt as resetFileSystem, Gi as resetHMRState, ft as resetWindowManager, et as resolveFileUrl, ut as resolveUrl, xe as restoreVariant, Ie as setApiBaseUrl, $e as setTestBaseUrl, Nt as sortDesktopIcons, Ke as sortDesktopIconsByMode, je as sortNodes, Ae as sortNodesByMode, Re as syncWithServer, Yo as toMantineTheme, en as unregisterCloseInterceptor, Et as updateLauncherFolder, We as updateManifestCache, Wt as useAdaptiveDimensions, Wr as useAnimationDuration, qr as useAppName, da as useAppReady, _n as useAppTempMemoryStore, Aa as useAppUpdate, Fa as useApplyFont, Br as useClock, Qt as useCloseInterceptor, Zt as useCloseModalStore, Yr as useCollapsible, zo as useContextMenu, ia as useCustomAppHMR, aa as useCustomAppLifecycle, F as useCustomAppStore, P as useDesktopStore, un as useDeviceDetection, Uo as useDownload, Jt as useDragDropState, Gt as useDraggableItem, Kt as useDroppableArea, Ut as useDynamicIcon, zt as useDynamicIconElement, Vt as useFcIcon, I as useFcIconElement, Vo as useFdeApi, Mr as useFdeContext, Lt as useFiIcon, Bt as useFiIconElement, Yt as useFolderName, p as useFontDownload, Bo as useIsDirty, Ia as useLanguageSync, an as useNotifications, ye as useOpenApp, fn as useResolvedUrl, Jr as useSearchFilter, a as useSettingsStore, Ca as useSystemTheme, Ur as useTaskbarContextMenu, ii as useTaskbarHeight, Tr as useTheme, Er as useThemeContext, Ht as useVscIcon, Rt as useVscIconElement, Fr as useWindowButtonRegistry, Ot as uuidv4, oa as waitForContainer, we as windowVariants };
4619
+ export { Te as ANIMATION_DURATION, ht as APPS, Q as APP_IDS, Vr as APP_ID_TO_TRANSLATION_KEY, wa as APP_VERSION, p as AVAILABLE_FONTS, Sn as AppEmptyState, L as AppIcon, ki as AppLoading, hn as AppMenuBar, ca as AppReadyProvider, Pt as BREAKPOINTS, bt as CORE_APPS, Ft as CORE_APP_IDS, me as CORE_REGISTRY, Jt as CUSTOM_APPS_FOLDER_ID, jt as CalendarApp, Se as CalendarAppLazy, No as CodeServerApp, qr as CollapsibleSection, wn as ColorPicker, ho as ContextMenu, $r as ContextMenuAnchor, D as CreateItemAppLazy, ha as CreateItemContextMenu, aa as CustomAppLoader, Ai as CustomAppLoadingScreen, Mi as CustomAppNotSupported, ji as CustomAppOffline, br as DEFAULT_FDE_THEME, x as DEFAULT_GRADIENT_CSS, f as DEFAULT_LANGUAGE, ze as DEFAULT_LAUNCHER_FOLDERS, Wo as DEFAULT_THEME_COLORS, zt as DEFAULT_VIEWPORT_HEIGHT, mt as DEFAULT_VIEWPORT_WIDTH, C as DEFAULT_WALLPAPER_URL, Ct as DEFAULT_WINDOW_DIMENSIONS, Hr as DESKTOP_APPS, kt as DESKTOP_APPS_ORDER, m as DefaultThemeProvider, Pr as Desktop, pa as DesktopIcon, xe as DeviceInfoAppLazy, mn as DirtyIndicator, It as DockerFileSystemAdapter, Tn as DownloadProgress, on as DragDropProvider, po as DynamicMenuBarRenderer, Oe as EASE_IN, be as EASE_OUT, Ro as ExternalLinkApp, n as FONT_STACKS, fo as FdeDesktop, Or as FdeProvider, _n as FileIcon, On as FilePickerApp, Dn as FilePickerModal, ie as FilesAppLazy, En as FolderPicker, Sa as GITHUB_LATEST_RELEASE_URL, xa as GITHUB_RELEASES_REPO, r as GOOGLE_FONTS_HREF, y as GRADIENT_PRESETS, Ot as ICON_COLUMN_WIDTH, Ut as ICON_MARGIN, gt as ICON_ROW_HEIGHT, qt as IMAGE_MIME_TYPES, An as IconColorPicker, M as ImageViewerAppLazy, oe as ImageViewerMenuBarLazy, ct as IndexedDBFileSystem, l as LanguageFlag, Ei as LanguageSelector, Qr as Launcher, A as MenuEditAppLazy, ne as MenuEditMenuBarLazy, re as NotesAppLazy, se as NotesMenuBarLazy, at as PREDEFINED_LAUNCHER_FOLDERS, Cn as PRESET_COLORS, kn as PRESET_ICONS, u as PROFILE, Ie as PdfAppLazy, ee as PdfMenuBarLazy, er as QueryClient, a as SETTINGS_SECTIONS, h as SUNSET_CONFIG, s as SUPPORTED_LANGUAGES, de as SettingsAppLazy, j as SettingsMenuBarLazy, d as SettingsSectionComponent, Be as SortOptions, vo as StorybookApp, yt as TASKBAR_HEIGHT, pt as TEXT_MIME_TYPES, Oi as Taskbar, ri as TaskbarContextMenu, ko as TerminalApp, Io as TerminalMenuBar, xr as ThemeProvider, ue as UploaderAppLazy, R as VscIcon, da as Window, jr as WindowButtonRegistryProvider, et as WindowManagerAdapter, Mn as appendDirtyIndicator, yn as buildBreadcrumbs, g as buildGradientCSS, pe as centerWindowPosition, qi as checkHMREndpointExists, i as clearBrowserData, Qe as clearManifestCache, Dt as convertToAppEntry, Tt as createDesktopIcon, Ee as createEaseIn, ke as createEaseOut, Le as createFile, vt as createFolder, Ht as createLauncherFolder, he as createMaximizeTransition, Ce as createMinimizeVariant, S as createNoiseDataUrl, je as createPanelVariants, Mt as createPredefinedLauncherFolder, ge as createRestoreVariant, ft as createWindow, _e as createWindowVariants, Re as fetchAppManifest, N as fileSystem, Nn as formatBytes, Nt as generateUUID, Pe as getAppComponent, Kt as getAppIdForMime, ce as getAppName, At as getBaseUrl, Et as getCachedManifest, pn as getCloseInterceptor, Xe as getCustomAppById, Ze as getCustomApps, Ea as getEnvironment, ao as getFdeApi, vn as getFileExtension, xn as getFourRandomColors, O as getMenuBarBuilder, Ne as getMenuBarComponent, lt as getMimeTypeFromExtension, o as getPersistedThemeMode, w as getPresets, Da as getReleaseType, Ge as getRuntime, Ta as getVersionString, b as getWallpaperBackgroundStyle, st as hashBlob, Ci as i18n, te as initRegistry, io as initializeFdeApi, c as injectFontLink, it as isBrowser, E as isCSSGradient, $e as isCustomApp, ot as isDev, We as isDocker, Je as isElectron, oo as isFdeApiInitialized, k as isLazyApp, ba as isNewerVersion, De as maximizeTransition, Ue as mergeAppsWithCustomApps, Ga as migrateStorage, we as minimizeVariant, ye as openVariants, ve as panelVariants, _ as parseGradientCSS, Za as prefetchApps, fe as randomWindowPosition, nt as registerAppFileHandler, dn as registerCloseInterceptor, ae as registerComponents, Wt as registerCustomApps, _t as registerDesktopApps, Ke as removeFromManifestCache, St as resetBaseUrlCache, Lt as resetFileSystem, Vi as resetHMRState, wt as resetWindowManager, dt as resolveFileUrl, xt as resolveUrl, Me as restoreVariant, qe as setApiBaseUrl, ut as setTestBaseUrl, Gt as sortDesktopIcons, rt as sortDesktopIconsByMode, He as sortNodes, Ve as sortNodesByMode, Ye as syncWithServer, Go as toMantineTheme, fn as unregisterCloseInterceptor, Rt as updateLauncherFolder, tt as updateManifestCache, nn as useAdaptiveDimensions, Br as useAnimationDuration, Ur as useAppName, sa as useAppReady, jn as useAppTempMemoryStore, Aa as useAppUpdate, Fa as useApplyFont, Ir as useClock, un as useCloseInterceptor, ln as useCloseModalStore, Gr as useCollapsible, zo as useContextMenu, ea as useCustomAppHMR, ta as useCustomAppLifecycle, F as useCustomAppStore, P as useDesktopStore, bn as useDeviceDetection, Uo as useDownload, sn as useDragDropState, rn as useDraggableItem, an as useDroppableArea, tn as useDynamicIcon, Zt as useDynamicIconElement, $t as useFcIcon, I as useFcIconElement, Vo as useFdeApi, kr as useFdeContext, Yt as useFiIcon, Qt as useFiIconElement, cn as useFolderName, t as useFontDownload, Bo as useIsDirty, Ia as useLanguageSync, gn as useNotifications, Ae as useOpenApp, T as useResolvedUrl, Wr as useSearchFilter, e as useSettingsStore, ya as useSystemTheme, zr as useTaskbarContextMenu, ei as useTaskbarHeight, Sr as useTheme, Cr as useThemeContext, en as useVscIcon, Xt as useVscIconElement, Mr as useWindowButtonRegistry, Bt as uuidv4, v as validateGradientConfig, na as waitForContainer, Fe as windowVariants };