@fde-desktop/fde-core 0.4.10 → 0.4.13

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 (221) hide show
  1. package/dist/AppEmptyState-Boej96TB.js +49 -0
  2. package/dist/AppEmptyState-CLc00OOG.cjs +1 -0
  3. package/dist/AppIcon-C8vHUVcb.cjs +1 -0
  4. package/dist/AppIcon-mtEoyzOb.js +22 -0
  5. package/dist/AppMenuBar-CAlkNHjj.cjs +1 -0
  6. package/dist/AppMenuBar-DmSfQRXU.js +197 -0
  7. package/dist/CalendarApp-DOmjWbpl.js +10 -0
  8. package/dist/CalendarApp-Z0bCCYsK.cjs +1 -0
  9. package/dist/ColorPicker-CQRRwY-y.cjs +1 -0
  10. package/dist/ColorPicker-WCeD3Wjf.js +35 -0
  11. package/dist/CreateItemApp-BkFFFdX1.cjs +1 -0
  12. package/dist/CreateItemApp-DR8Y4bwo.js +202 -0
  13. package/dist/DeviceInfoApp-BXQ9uOwF.cjs +1 -0
  14. package/dist/DeviceInfoApp-I63mJRWy.js +195 -0
  15. package/dist/DownloadProgress-CkTGTf0z.cjs +1 -0
  16. package/dist/DownloadProgress-DnVASsv5.js +39 -0
  17. package/dist/FilePickerApp-By6-vbag.cjs +1 -0
  18. package/dist/FilePickerApp-ClHuhm6Z.js +390 -0
  19. package/dist/FilesApp-BRK2OqkQ.cjs +1 -0
  20. package/dist/FilesApp-BuoFP_KA.js +212 -0
  21. package/dist/ImageViewerApp-B1niWF75.cjs +1 -0
  22. package/dist/{ImageViewerApp-CWiP6zx-.js → ImageViewerApp-iojtyFEf.js} +18 -17
  23. package/dist/{ImageViewerMenuBar-BULkh_Ku.js → ImageViewerMenuBar-BIsUokxV.js} +15 -14
  24. package/dist/ImageViewerMenuBar-BgzgSF3v.cjs +1 -0
  25. package/dist/MenuEditApp-BHptoJbz.cjs +1 -0
  26. package/dist/MenuEditApp-CJUbJaqh.js +492 -0
  27. package/dist/MenuEditMenuBar-CCOSPAUe.cjs +1 -0
  28. package/dist/{MenuEditMenuBar-B94z4Umw.js → MenuEditMenuBar-DnCL-kaZ.js} +13 -12
  29. package/dist/NotesApp-BmQIBtJ2.cjs +1 -0
  30. package/dist/NotesApp-DJ2dGt4-.js +364 -0
  31. package/dist/NotesMenuBar-BzojwMtH.cjs +1 -0
  32. package/dist/{NotesMenuBar-BB4NkKGf.js → NotesMenuBar-DILZTjnT.js} +10 -9
  33. package/dist/PdfApp-IjY_GtnW.js +39 -0
  34. package/dist/PdfApp-krW8UI97.cjs +1 -0
  35. package/dist/PdfMenuBar-Bd5MTZcZ.js +39 -0
  36. package/dist/PdfMenuBar-DWD0Qa3F.cjs +1 -0
  37. package/dist/SettingsApp-BE22l5UP.cjs +1 -0
  38. package/dist/SettingsApp-BTFtTFY_.js +1228 -0
  39. package/dist/SettingsMenuBar-CZE2evG2.cjs +1 -0
  40. package/dist/SettingsMenuBar-ktC0viTd.js +42 -0
  41. package/dist/UploaderApp-Bboc4KZ1.js +263 -0
  42. package/dist/UploaderApp-Dr1mF7oj.cjs +1 -0
  43. package/dist/{VscIcon-DueRJVTe.js → VscIcon-AEENjKOE.js} +1 -1
  44. package/dist/VscIcon-BYb_Soyy.cjs +1 -0
  45. package/dist/buildBreadcrumbs-Ccd8i11b.cjs +1 -0
  46. package/dist/buildBreadcrumbs-noWhu8os.js +45 -0
  47. package/dist/{desktopStore-B0R1-BeA.js → desktopStore-8cSZlj7s.js} +342 -549
  48. package/dist/desktopStore-C1jR6Fdb.cjs +1 -0
  49. package/dist/{imageViewerStore-CJMRXaQh.js → imageViewerStore-COrD02Zu.js} +1 -1
  50. package/dist/imageViewerStore-Dfylg59V.cjs +1 -0
  51. package/dist/index.cjs +1 -53
  52. package/dist/index.css +1 -1
  53. package/dist/index.d.ts +16 -6
  54. package/dist/index.js +3033 -7513
  55. package/dist/menuEditStore-CYwtfD6H.cjs +1 -0
  56. package/dist/{menuEditStore-C8S_EedM.js → menuEditStore-CxsgLiQu.js} +1 -1
  57. package/dist/notesStore-CrWTO6oB.cjs +1 -0
  58. package/dist/{notesStore-DKRgTTFn.js → notesStore-Dgah46U5.js} +1 -1
  59. package/dist/rolldown-runtime-CAFD8bLK.js +11 -0
  60. package/dist/{settingsAppStore-KOeWRO6h.js → settingsAppStore-DHZhi6Rl.js} +1 -1
  61. package/dist/settingsAppStore-DuYZNeFf.cjs +1 -0
  62. package/dist/useAdaptiveDimensions-3Lz4X0Tc.cjs +1 -0
  63. package/dist/{useAdaptiveDimensions-CunsU0mn.js → useAdaptiveDimensions-DxNLJ7R5.js} +1 -1
  64. package/dist/{useCloseInterceptor-CuKAAFnj.js → useCloseInterceptor-CIxhOZx1.js} +12 -12
  65. package/dist/useCloseInterceptor-CdX-09Ib.cjs +1 -0
  66. package/dist/useDynamicIcon-CK6SjEv5.cjs +1 -0
  67. package/dist/{useDynamicIcon-GJg3vWsJ.js → useDynamicIcon-_wGeWu-b.js} +1 -1
  68. package/dist/useOpenApp-ChDhsL9h.cjs +1 -0
  69. package/dist/{useOpenApp-BVpSfNrG.js → useOpenApp-uguTLkyl.js} +51 -67
  70. package/dist/{useResolvedUrl-DFKXq598.js → useResolvedUrl-B6x4xy0x.js} +1 -2
  71. package/dist/useResolvedUrl-Bb39DpVy.cjs +1 -0
  72. package/package.json +3 -4
  73. package/dist/AccordionChevron-CJXAq5o5.js +0 -26
  74. package/dist/AccordionChevron-DBXp38Lm.cjs +0 -1
  75. package/dist/ActionIcon-C_SfdBfx.cjs +0 -1
  76. package/dist/ActionIcon-CtVbYlGY.js +0 -145
  77. package/dist/AppEmptyState-BTujnL_b.js +0 -4962
  78. package/dist/AppEmptyState-Dc4GaDfu.cjs +0 -1
  79. package/dist/AppIcon--qzR4sgf.cjs +0 -1
  80. package/dist/AppIcon-DCDuaU-t.js +0 -80
  81. package/dist/AppMenuBar-BiHbNg9V.cjs +0 -9
  82. package/dist/AppMenuBar-CHJy8OF0.js +0 -2639
  83. package/dist/Box-DRm8EabO.js +0 -1593
  84. package/dist/Box-D_64wv6n.cjs +0 -1
  85. package/dist/Button-D0FXpkur.cjs +0 -1
  86. package/dist/Button-k7SxX1Xl.js +0 -178
  87. package/dist/CalendarApp-C1HvuJoa.cjs +0 -1
  88. package/dist/CalendarApp-DBEQqsS_.js +0 -1721
  89. package/dist/Center-CyryG5zn.js +0 -25
  90. package/dist/Center-T4No_FAa.cjs +0 -1
  91. package/dist/CheckIcon-C3WjIR2i.js +0 -25
  92. package/dist/CheckIcon-CBMLR6Gc.cjs +0 -1
  93. package/dist/CodeServerApp-B3l5QPuG.cjs +0 -1
  94. package/dist/CodeServerApp-BpeALSaX.js +0 -2
  95. package/dist/CodeServerApp-CRjCngFv.cjs +0 -1
  96. package/dist/CodeServerApp-DY94cy1a.js +0 -149
  97. package/dist/ColorPicker-BL4UbKCV.cjs +0 -1
  98. package/dist/ColorPicker-DvRR-wlQ.js +0 -997
  99. package/dist/CreateItemApp-BU9wmjKM.cjs +0 -1
  100. package/dist/CreateItemApp-CtdH1K1g.js +0 -400
  101. package/dist/CreateItemApp-t9F-a6wD.cjs +0 -1
  102. package/dist/DeviceInfoApp-C306YvtZ.js +0 -223
  103. package/dist/DeviceInfoApp-Cdju_LIB.cjs +0 -1
  104. package/dist/DeviceInfoApp-CyB01v4D.cjs +0 -1
  105. package/dist/DownloadProgress-IRw1dzLX.cjs +0 -1
  106. package/dist/DownloadProgress-hdupSUBT.js +0 -174
  107. package/dist/FileIcon-BCpGMI5U.js +0 -88
  108. package/dist/FileIcon-BCrsxmtt.cjs +0 -1
  109. package/dist/FilePickerApp-DMGuvahM.js +0 -409
  110. package/dist/FilePickerApp-Eu0cr2Cm.cjs +0 -1
  111. package/dist/FilesApp-BQFVHkEn.js +0 -225
  112. package/dist/FilesApp-BZ_dzZnF.cjs +0 -1
  113. package/dist/FilesApp-SIWXFPXt.cjs +0 -1
  114. package/dist/Group-BzwlMeob.js +0 -48
  115. package/dist/Group-DhwePB84.cjs +0 -1
  116. package/dist/ImageViewerApp-BOz59TGc.cjs +0 -1
  117. package/dist/ImageViewerApp-BeqY6voE.cjs +0 -1
  118. package/dist/ImageViewerApp-DBAfJPSo.js +0 -2
  119. package/dist/ImageViewerMenuBar-Cb0Nr5-M.js +0 -2
  120. package/dist/ImageViewerMenuBar-CoEp0RxK.cjs +0 -1
  121. package/dist/ImageViewerMenuBar-zOkJtqKo.cjs +0 -1
  122. package/dist/MenuEditApp-BoKtj2GH.js +0 -2
  123. package/dist/MenuEditApp-D21sEp86.js +0 -2615
  124. package/dist/MenuEditApp-k3cPfTG9.cjs +0 -1
  125. package/dist/MenuEditApp-sz9GlLVH.cjs +0 -5
  126. package/dist/MenuEditMenuBar-6QxlIDpl.cjs +0 -1
  127. package/dist/MenuEditMenuBar-Bv6R42lf.js +0 -2
  128. package/dist/MenuEditMenuBar-CBsmH_-T.cjs +0 -1
  129. package/dist/NotesApp-BtR55Hva.cjs +0 -207
  130. package/dist/NotesApp-C59exz_9.js +0 -16154
  131. package/dist/NotesApp-D47I5LS_.js +0 -2
  132. package/dist/NotesApp-lOwsi2sg.cjs +0 -1
  133. package/dist/NotesMenuBar-BZITC74y.cjs +0 -1
  134. package/dist/NotesMenuBar-Bp0sPqyR.cjs +0 -1
  135. package/dist/NotesMenuBar-xlfODmMA.js +0 -2
  136. package/dist/Paper-DtUYKmYn.js +0 -30
  137. package/dist/Paper-DwCpwWwH.cjs +0 -1
  138. package/dist/PdfApp-1XbFGfoY.cjs +0 -1
  139. package/dist/PdfApp-BhIoJWeK.cjs +0 -1
  140. package/dist/PdfApp-C5Rt1Zaw.js +0 -2
  141. package/dist/PdfApp-C8Hwxxqh.js +0 -38
  142. package/dist/PdfMenuBar-BA9rKuMP.cjs +0 -1
  143. package/dist/PdfMenuBar-JXHqwxhZ.cjs +0 -1
  144. package/dist/PdfMenuBar-R0fu7oYF.js +0 -2
  145. package/dist/PdfMenuBar-sd-9Vk3h.js +0 -38
  146. package/dist/SettingsApp-7EhpjzUE.cjs +0 -1
  147. package/dist/SettingsApp-ByiPAj1I.cjs +0 -1
  148. package/dist/SettingsApp-d6fmBHxR.js +0 -1829
  149. package/dist/SettingsApp-qKJmC0lj.js +0 -2
  150. package/dist/SettingsMenuBar-BPwv8JQK.js +0 -41
  151. package/dist/SettingsMenuBar-D8R7hOik.js +0 -2
  152. package/dist/SettingsMenuBar-DDrjZLmg.cjs +0 -1
  153. package/dist/SettingsMenuBar-DQjUa8g1.cjs +0 -1
  154. package/dist/Slider-BNO-vDFn.js +0 -1175
  155. package/dist/Slider-Bg_EIBg6.cjs +0 -1
  156. package/dist/Stack-BOaJgV3N.cjs +0 -1
  157. package/dist/Stack-CuDEaP7e.js +0 -34
  158. package/dist/StorybookApp-Bkr-7mXp.cjs +0 -1
  159. package/dist/StorybookApp-WYninkJo.js +0 -10
  160. package/dist/TerminalApp-8XbsKAWa.js +0 -10041
  161. package/dist/TerminalApp-Bq2e7QQu.cjs +0 -1
  162. package/dist/TerminalApp-CVu3Axc9.js +0 -2
  163. package/dist/TerminalApp-b7_d0jRO.cjs +0 -36
  164. package/dist/TerminalMenuBar-Cb8x9laS.js +0 -2
  165. package/dist/TerminalMenuBar-De-FH5AE.cjs +0 -1
  166. package/dist/TerminalMenuBar-iKLydNda.js +0 -112
  167. package/dist/TerminalMenuBar-yOaWd-hn.cjs +0 -1
  168. package/dist/TextInput-C3qfxxWI.js +0 -980
  169. package/dist/TextInput-DcYns3hz.cjs +0 -1
  170. package/dist/Tooltip-CAOO-qdx.js +0 -3185
  171. package/dist/Tooltip-DDh_x-CB.cjs +0 -1
  172. package/dist/UnstyledButton-CI3kyRck.js +0 -25
  173. package/dist/UnstyledButton-Cl5RuIid.cjs +0 -1
  174. package/dist/UploaderApp-C76ydsd8.js +0 -487
  175. package/dist/UploaderApp-CHACW8Yr.js +0 -2
  176. package/dist/UploaderApp-Q_a3mBik.cjs +0 -1
  177. package/dist/UploaderApp-htj59ppo.cjs +0 -1
  178. package/dist/VscIcon-CxEmqD80.cjs +0 -1
  179. package/dist/chunk-BQCxAhux.js +0 -23
  180. package/dist/chunk-CiTBaPhY.cjs +0 -1
  181. package/dist/create-safe-context-95P-Bfg3.cjs +0 -1
  182. package/dist/create-safe-context-XT2cxc14.js +0 -12
  183. package/dist/desktopStore-Cox-Og1z.cjs +0 -1
  184. package/dist/fc-DejOsQyD.cjs +0 -1
  185. package/dist/fc-kd8WzIER.js +0 -20536
  186. package/dist/fc-xJ_v2ayq.cjs +0 -184
  187. package/dist/fi-BahYsbim.js +0 -9993
  188. package/dist/fi-BkhyTcZo.cjs +0 -1
  189. package/dist/getRuntime-BLXyQZBB.cjs +0 -1
  190. package/dist/getRuntime-CCRXVzJH.js +0 -63
  191. package/dist/iconBase-B4UCuSvv.cjs +0 -1
  192. package/dist/iconBase-D7iPes7B.js +0 -108
  193. package/dist/imageViewerStore-CH1qW6md.cjs +0 -1
  194. package/dist/is-element-BocgicRg.cjs +0 -1
  195. package/dist/is-element-Bu_JY8Qy.js +0 -7
  196. package/dist/menuEditStore-CU7IAg3L.cjs +0 -1
  197. package/dist/notesStore-zKmChTfF.cjs +0 -1
  198. package/dist/react-DYmzHD0X.js +0 -27
  199. package/dist/react-Dldg32sN.cjs +0 -1
  200. package/dist/settingsAppStore-BrlImdAH.cjs +0 -1
  201. package/dist/terminalStore-LWWjCvCe.js +0 -30
  202. package/dist/terminalStore-fZe5t7Ty.cjs +0 -1
  203. package/dist/use-merged-ref-BI9n1hUK.cjs +0 -1
  204. package/dist/use-merged-ref-BT8_u6vW.js +0 -25
  205. package/dist/use-resolved-styles-api-AVDygMKo.cjs +0 -1
  206. package/dist/use-resolved-styles-api-pEOi2wiK.js +0 -21
  207. package/dist/use-uncontrolled-A4hm9ATM.js +0 -23
  208. package/dist/use-uncontrolled-BPrfGv0W.cjs +0 -1
  209. package/dist/useAdaptiveDimensions-Btp0m5Pm.cjs +0 -1
  210. package/dist/useCloseInterceptor-a_6Lcuqj.cjs +0 -1
  211. package/dist/useDynamicIcon-SytdL1Tu.cjs +0 -1
  212. package/dist/useOpenApp-Br0jo4-y.cjs +0 -1
  213. package/dist/useResolvedUrl-Be5ZlCX7.cjs +0 -1
  214. package/dist/useTranslation-DMRGdqZi.js +0 -279
  215. package/dist/useTranslation-D_O7S4RJ.cjs +0 -1
  216. package/dist/vsc-Ciibqbxo.cjs +0 -1
  217. package/dist/vsc-DGKSpOAR.js +0 -9574
  218. /package/dist/{Colors-BxX4G8kX.cjs → Colors-CNJbU7oq.cjs} +0 -0
  219. /package/dist/{Colors-hca6raEG.js → Colors-CuABn2W4.js} +0 -0
  220. /package/dist/{useMenuBarUtils-ChmpZjwu.js → useMenuBarUtils-ChAfI7OA.js} +0 -0
  221. /package/dist/{useMenuBarUtils-Bp5PiztD.cjs → useMenuBarUtils-DAap0ukp.cjs} +0 -0
@@ -1,1829 +0,0 @@
1
- import { L as e, N as t, O as n, S as r, c as i, d as a, i as o, j as s, k as c, l, n as u, o as d, r as f, t as p, x as m } from "./Box-DRm8EabO.js";
2
- import { n as h, t as g } from "./ColorPicker-DvRR-wlQ.js";
3
- import { s as _, t as v } from "./Tooltip-CAOO-qdx.js";
4
- import { t as y } from "./use-uncontrolled-A4hm9ATM.js";
5
- import { i as b, l as x, p as S, t as C, u as w } from "./TextInput-C3qfxxWI.js";
6
- import { a as T, i as E, n as D, o as O, t as k } from "./Slider-BNO-vDFn.js";
7
- import { r as A } from "./use-merged-ref-BT8_u6vW.js";
8
- import { i as ee, r as j, t as te } from "./DownloadProgress-hdupSUBT.js";
9
- import { t as M } from "./UnstyledButton-CI3kyRck.js";
10
- import { t as N } from "./Paper-DtUYKmYn.js";
11
- import { t as P } from "./Group-BzwlMeob.js";
12
- import { i as ne, o as F } from "./getRuntime-CCRXVzJH.js";
13
- import { t as I } from "./Button-k7SxX1Xl.js";
14
- import { n as L, t as R } from "./AppIcon-DCDuaU-t.js";
15
- import { t as z } from "./Stack-CuDEaP7e.js";
16
- import { t as re } from "./react-DYmzHD0X.js";
17
- import { ft as ie, o as ae, pt as oe } from "./desktopStore-B0R1-BeA.js";
18
- import { t as B } from "./useTranslation-DMRGdqZi.js";
19
- import { i as se } from "./useCloseInterceptor-CuKAAFnj.js";
20
- import { t as V } from "./useResolvedUrl-DFKXq598.js";
21
- import { n as ce } from "./FilePickerApp-DMGuvahM.js";
22
- import { t as le } from "./Colors-hca6raEG.js";
23
- import { n as ue } from "./settingsAppStore-KOeWRO6h.js";
24
- import { createContext as de, createElement as fe, use as pe, useCallback as H, useDeferredValue as me, useEffect as U, useRef as W, useState as G } from "react";
25
- import { jsx as K, jsxs as q } from "react/jsx-runtime";
26
- import { useQuery as he, useQueryClient as ge } from "@tanstack/react-query";
27
- //#region ../../node_modules/.bun/@mantine+hooks@9.0.0+b1ab299f0a400331/node_modules/@mantine/hooks/esm/utils/shallow-equal/shallow-equal.mjs
28
- function _e(e, t) {
29
- if (e === t || Number.isNaN(e) && Number.isNaN(t)) return !0;
30
- if (!(e instanceof Object) || !(t instanceof Object)) return !1;
31
- let n = Object.keys(e), { length: r } = n;
32
- if (r !== Object.keys(t).length) return !1;
33
- for (let i = 0; i < r; i += 1) {
34
- let r = n[i];
35
- if (!(r in t) || e[r] !== t[r] && !(Number.isNaN(e[r]) && Number.isNaN(t[r]))) return !1;
36
- }
37
- return !0;
38
- }
39
- //#endregion
40
- //#region ../../node_modules/.bun/@mantine+hooks@9.0.0+b1ab299f0a400331/node_modules/@mantine/hooks/esm/use-shallow-effect/use-shallow-effect.mjs
41
- function ve(e, t) {
42
- if (!e || !t) return !1;
43
- if (e === t) return !0;
44
- if (e.length !== t.length) return !1;
45
- for (let n = 0; n < e.length; n += 1) if (!_e(e[n], t[n])) return !1;
46
- return !0;
47
- }
48
- function ye(e) {
49
- let t = W([]), n = W(0);
50
- return ve(t.current, e) || (t.current = e, n.current += 1), [n.current];
51
- }
52
- function be(e, t) {
53
- U(e, ye(t));
54
- }
55
- //#endregion
56
- //#region ../../node_modules/.bun/@mantine+hooks@9.0.0+b1ab299f0a400331/node_modules/@mantine/hooks/esm/use-timeout/use-timeout.mjs
57
- function xe(e, t, n = { autoInvoke: !1 }) {
58
- let r = W(null), i = H((...n) => {
59
- r.current ||= window.setTimeout(() => {
60
- e(n), r.current = null;
61
- }, t);
62
- }, [t]), a = H(() => {
63
- r.current &&= (window.clearTimeout(r.current), null);
64
- }, []);
65
- return U(() => (n.autoInvoke && i(), a), [a, i]), {
66
- start: i,
67
- clear: a
68
- };
69
- }
70
- //#endregion
71
- //#region ../../node_modules/.bun/@mantine+hooks@9.0.0+b1ab299f0a400331/node_modules/@mantine/hooks/esm/use-mutation-observer/use-mutation-observer.mjs
72
- function Se(e, t, n) {
73
- let r = W(null);
74
- U(() => {
75
- r.current &&= (r.current.disconnect(), null);
76
- let i = typeof n == "function" ? n() : n;
77
- return i && (r.current = new MutationObserver(e), r.current.observe(i, t)), () => {
78
- r.current &&= (r.current.disconnect(), null);
79
- };
80
- }, [
81
- e,
82
- t,
83
- n
84
- ]);
85
- }
86
- //#endregion
87
- //#region ../../node_modules/.bun/@mantine+hooks@9.0.0+b1ab299f0a400331/node_modules/@mantine/hooks/esm/use-mounted/use-mounted.mjs
88
- function Ce() {
89
- let [e, t] = G(!1);
90
- return U(() => t(!0), []), e;
91
- }
92
- //#endregion
93
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/core/utils/get-env/get-env.mjs
94
- function we() {
95
- return typeof process < "u" && process.env, "development";
96
- }
97
- //#endregion
98
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/core/utils/primitive/primitive.mjs
99
- function Te(e) {
100
- return typeof e == "string" || typeof e == "number" || typeof e == "boolean" || typeof e == "bigint";
101
- }
102
- //#endregion
103
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/FloatingIndicator/use-floating-indicator.mjs
104
- function Ee(e, t) {
105
- if (!t || !e) return !1;
106
- let n = t.parentNode;
107
- for (; n != null;) {
108
- if (n === e) return !0;
109
- n = n.parentNode;
110
- }
111
- return !1;
112
- }
113
- function De({ target: e, parent: t, ref: n, displayAfterTransitionEnd: r, onTransitionStart: i, onTransitionEnd: a }) {
114
- let o = W(-1), s = W(e), [c, l] = G(!1), [u, d] = G(typeof r == "boolean" ? r : !1), f = () => {
115
- if (!e || !t || !n.current) return;
116
- let r = e.getBoundingClientRect(), i = t.getBoundingClientRect(), a = window.getComputedStyle(e), o = window.getComputedStyle(t), s = O(a.borderTopWidth) + O(o.borderTopWidth), c = O(a.borderLeftWidth) + O(o.borderLeftWidth), l = {
117
- top: r.top - i.top - s,
118
- left: r.left - i.left - c,
119
- width: r.width,
120
- height: r.height
121
- };
122
- n.current.style.transform = `translateY(${l.top}px) translateX(${l.left}px)`, n.current.style.width = `${l.width}px`, n.current.style.height = `${l.height}px`;
123
- }, p = () => {
124
- window.clearTimeout(o.current), n.current && (n.current.style.transitionDuration = "0ms"), f(), o.current = window.setTimeout(() => {
125
- n.current && (n.current.style.transitionDuration = "");
126
- }, 30);
127
- }, m = W(null), h = W(null);
128
- return U(() => {
129
- if (c && s.current !== e && i && i(), s.current = e, f(), e) return m.current = new ResizeObserver(p), m.current.observe(e), t && (h.current = new ResizeObserver(p), h.current.observe(t)), () => {
130
- m.current?.disconnect(), h.current?.disconnect();
131
- };
132
- }, [t, e]), U(() => {
133
- if (t) {
134
- let e = (e) => {
135
- Ee(e.target, t) && (p(), d(!1));
136
- };
137
- return t.addEventListener("transitionend", e), () => {
138
- t.removeEventListener("transitionend", e);
139
- };
140
- }
141
- }, [t]), U(() => {
142
- if (n.current && a) {
143
- let e = (e) => {
144
- e.propertyName === "transform" && a();
145
- };
146
- return n.current.addEventListener("transitionend", e), () => {
147
- n.current?.removeEventListener("transitionend", e);
148
- };
149
- }
150
- }, [a]), xe(() => {
151
- we() !== "test" && l(!0);
152
- }, 20, { autoInvoke: !0 }), Se((e) => {
153
- e.forEach((e) => {
154
- e.type === "attributes" && e.attributeName === "dir" && p();
155
- });
156
- }, {
157
- attributes: !0,
158
- attributeFilter: ["dir"]
159
- }, () => document.documentElement), {
160
- initialized: c,
161
- hidden: u
162
- };
163
- }
164
- //#endregion
165
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/FloatingIndicator/FloatingIndicator.module.mjs
166
- var Oe = { root: "m_96b553a6" }, ke = n((e, { transitionDuration: t }, { shouldReduceMotion: n }) => {
167
- let r = e.respectReducedMotion && n ? "0ms" : typeof t == "number" ? `${t}ms` : t || "150ms";
168
- return { root: { "--transition-duration": r } };
169
- }), Ae = f((e) => {
170
- let t = l("FloatingIndicator", null, e), { classNames: n, className: r, style: a, styles: o, unstyled: s, vars: c, target: u, parent: d, transitionDuration: f, mod: m, displayAfterTransitionEnd: h, onTransitionStart: g, onTransitionEnd: _, attributes: v, ref: y, ...b } = t, S = i({
171
- name: "FloatingIndicator",
172
- classes: Oe,
173
- props: t,
174
- className: r,
175
- style: a,
176
- classNames: n,
177
- styles: o,
178
- unstyled: s,
179
- attributes: v,
180
- vars: c,
181
- varsResolver: ke,
182
- stylesCtx: { shouldReduceMotion: x() }
183
- }), C = W(null), { initialized: w, hidden: T } = De({
184
- target: u,
185
- parent: d,
186
- ref: C,
187
- displayAfterTransitionEnd: h,
188
- onTransitionStart: g,
189
- onTransitionEnd: _
190
- }), E = A(y, C);
191
- return !u || !d ? null : /* @__PURE__ */ K(p, {
192
- ref: E,
193
- mod: [{
194
- initialized: w,
195
- hidden: T
196
- }, m],
197
- ...S("root"),
198
- ...b
199
- });
200
- });
201
- Ae.displayName = "@mantine/core/FloatingIndicator", Ae.classes = Oe, Ae.varsResolver = ke;
202
- //#endregion
203
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/Badge/Badge.module.mjs
204
- var je = {
205
- root: "m_347db0ec",
206
- "root--dot": "m_fbd81e3d",
207
- label: "m_5add502a",
208
- section: "m_91fdda9b"
209
- }, Me = n((e, { radius: n, color: r, gradient: i, variant: a, size: o, autoContrast: c, circle: l }) => {
210
- let u = e.variantColorResolver({
211
- color: r || e.primaryColor,
212
- theme: e,
213
- gradient: i,
214
- variant: a || "filled",
215
- autoContrast: c
216
- });
217
- return { root: {
218
- "--badge-height": t(o, "badge-height"),
219
- "--badge-padding-x": t(o, "badge-padding-x"),
220
- "--badge-fz": t(o, "badge-fz"),
221
- "--badge-radius": l || n === void 0 ? void 0 : s(n),
222
- "--badge-bg": r || a ? u.background : void 0,
223
- "--badge-color": r || a ? u.color : void 0,
224
- "--badge-bd": r || a ? u.border : void 0,
225
- "--badge-dot-color": a === "dot" ? m(r, e) : void 0
226
- } };
227
- }), Ne = u((e) => {
228
- let t = l("Badge", null, e), { classNames: n, className: r, style: a, styles: o, unstyled: s, vars: c, radius: u, color: d, gradient: f, leftSection: m, rightSection: h, children: g, variant: _, fullWidth: v, autoContrast: y, circle: b, mod: x, attributes: S, ...C } = t, w = i({
229
- name: "Badge",
230
- props: t,
231
- classes: je,
232
- className: r,
233
- style: a,
234
- classNames: n,
235
- styles: o,
236
- unstyled: s,
237
- attributes: S,
238
- vars: c,
239
- varsResolver: Me
240
- });
241
- return /* @__PURE__ */ q(p, {
242
- variant: _,
243
- mod: [{
244
- block: v,
245
- circle: b,
246
- "with-right-section": !!h,
247
- "with-left-section": !!m
248
- }, x],
249
- ...w("root", { variant: _ }),
250
- ...C,
251
- children: [
252
- m && /* @__PURE__ */ K("span", {
253
- ...w("section"),
254
- "data-position": "left",
255
- children: m
256
- }),
257
- /* @__PURE__ */ K("span", {
258
- ...w("label"),
259
- children: g
260
- }),
261
- h && /* @__PURE__ */ K("span", {
262
- ...w("section"),
263
- "data-position": "right",
264
- children: h
265
- })
266
- ]
267
- });
268
- });
269
- Ne.classes = je, Ne.varsResolver = Me, Ne.displayName = "@mantine/core/Badge";
270
- //#endregion
271
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/Radio/RadioGroup/RadioGroup.mjs
272
- var Pe = de(null), Fe = o(((e) => {
273
- let { value: t, defaultValue: n, onChange: r, size: i, wrapperProps: a, children: o, name: s, readOnly: c, disabled: u, ...d } = l("RadioGroup", null, e), f = w(s), [p, m] = y({
274
- value: t,
275
- defaultValue: n,
276
- finalValue: "",
277
- onChange: r
278
- });
279
- return /* @__PURE__ */ K(Pe, {
280
- value: {
281
- value: p,
282
- onChange: (e) => !c && m(typeof e == "string" ? e : e.currentTarget.value),
283
- size: i,
284
- name: f,
285
- disabled: u
286
- },
287
- children: /* @__PURE__ */ K(b.Wrapper, {
288
- size: i,
289
- ...a,
290
- ...d,
291
- labelElement: "div",
292
- __staticSelector: "RadioGroup",
293
- children: /* @__PURE__ */ K(E, {
294
- role: "radiogroup",
295
- children: o
296
- })
297
- })
298
- });
299
- }));
300
- Fe.classes = b.Wrapper.classes, Fe.displayName = "@mantine/core/RadioGroup";
301
- //#endregion
302
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/Radio/RadioCard/RadioCard.module.mjs
303
- var Ie = { card: "m_9dc8ae12" }, Le = de(null), Re = { withBorder: !0 }, ze = n((e, { radius: t }) => ({ card: { "--card-radius": s(t) } })), Be = f((e) => {
304
- let t = l("RadioCard", Re, e), { classNames: n, className: r, style: a, styles: o, unstyled: s, vars: c, checked: u, mod: d, withBorder: f, value: p, onClick: m, name: h, onKeyDown: g, attributes: v, ...y } = t, b = i({
305
- name: "RadioCard",
306
- classes: Ie,
307
- props: t,
308
- className: r,
309
- style: a,
310
- classNames: n,
311
- styles: o,
312
- unstyled: s,
313
- attributes: v,
314
- vars: c,
315
- varsResolver: ze,
316
- rootSelector: "card"
317
- }), { dir: x } = _(), S = pe(Pe), C = typeof u == "boolean" ? u : S?.value === p || !1, w = h || S?.name, T = (e) => {
318
- if (g?.(e), w && [
319
- "ArrowDown",
320
- "ArrowUp",
321
- "ArrowLeft",
322
- "ArrowRight"
323
- ].includes(e.nativeEvent.code)) {
324
- e.preventDefault();
325
- let t = Array.from(document.querySelectorAll(`[role="radio"][name="${w}"]`)), n = t.findIndex((t) => t === e.target), r = n + 1 >= t.length ? 0 : n + 1, i = n - 1 < 0 ? t.length - 1 : n - 1;
326
- e.nativeEvent.code === "ArrowDown" && (t[r].focus(), t[r].click()), e.nativeEvent.code === "ArrowUp" && (t[i].focus(), t[i].click()), e.nativeEvent.code === "ArrowLeft" && (t[x === "ltr" ? i : r].focus(), t[x === "ltr" ? i : r].click()), e.nativeEvent.code === "ArrowRight" && (t[x === "ltr" ? r : i].focus(), t[x === "ltr" ? r : i].click());
327
- }
328
- };
329
- return /* @__PURE__ */ K(Le, {
330
- value: { checked: C },
331
- children: /* @__PURE__ */ K(M, {
332
- mod: [{
333
- "with-border": f,
334
- checked: C
335
- }, d],
336
- ...b("card"),
337
- ...y,
338
- role: "radio",
339
- "aria-checked": C,
340
- name: w,
341
- onClick: (e) => {
342
- m?.(e), S?.onChange(p || "");
343
- },
344
- onKeyDown: T
345
- })
346
- });
347
- });
348
- Be.displayName = "@mantine/core/RadioCard", Be.classes = Ie, Be.varsResolver = ze;
349
- //#endregion
350
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/Radio/RadioIcon.mjs
351
- function Ve({ size: t, style: n, ...r }) {
352
- return /* @__PURE__ */ K("svg", {
353
- xmlns: "http://www.w3.org/2000/svg",
354
- fill: "none",
355
- viewBox: "0 0 5 5",
356
- style: {
357
- width: e(t),
358
- height: e(t),
359
- ...n
360
- },
361
- "aria-hidden": !0,
362
- ...r,
363
- children: /* @__PURE__ */ K("circle", {
364
- cx: "2.5",
365
- cy: "2.5",
366
- r: "2.5",
367
- fill: "currentColor"
368
- })
369
- });
370
- }
371
- //#endregion
372
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/Radio/RadioIndicator/RadioIndicator.module.mjs
373
- var He = {
374
- indicator: "m_717d7ff6",
375
- icon: "m_3e4da632",
376
- "indicator--outline": "m_2980836c"
377
- }, Ue = { icon: Ve }, We = n((e, { radius: n, color: i, size: a, iconColor: o, variant: c, autoContrast: l }) => {
378
- let u = r({
379
- color: i || e.primaryColor,
380
- theme: e
381
- }), d = u.isThemeColor && u.shade === void 0 ? `var(--mantine-color-${u.color}-outline)` : u.color;
382
- return { indicator: {
383
- "--radio-size": t(a, "radio-size"),
384
- "--radio-radius": n === void 0 ? void 0 : s(n),
385
- "--radio-color": c === "outline" ? d : m(i, e),
386
- "--radio-icon-size": t(a, "radio-icon-size"),
387
- "--radio-icon-color": o ? m(o, e) : j(l, e) ? ee({
388
- color: i,
389
- theme: e,
390
- autoContrast: l
391
- }) : void 0
392
- } };
393
- }), Ge = f((e) => {
394
- let t = l("RadioIndicator", Ue, e), { classNames: n, className: r, style: a, styles: o, unstyled: s, vars: c, icon: u, radius: d, color: f, iconColor: m, autoContrast: h, checked: g, mod: _, variant: v, disabled: y, attributes: b, ...x } = t, S = i({
395
- name: "RadioIndicator",
396
- classes: He,
397
- props: t,
398
- className: r,
399
- style: a,
400
- classNames: n,
401
- styles: o,
402
- unstyled: s,
403
- attributes: b,
404
- vars: c,
405
- varsResolver: We,
406
- rootSelector: "indicator"
407
- }), C = pe(Le), w = typeof g == "boolean" ? g : C?.checked || !1;
408
- return /* @__PURE__ */ K(p, {
409
- ...S("indicator", { variant: v }),
410
- variant: v,
411
- mod: [{
412
- checked: w,
413
- disabled: y
414
- }, _],
415
- ...x,
416
- children: /* @__PURE__ */ K(u, { ...S("icon") })
417
- });
418
- });
419
- Ge.displayName = "@mantine/core/RadioIndicator", Ge.classes = He, Ge.varsResolver = We;
420
- //#endregion
421
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/Radio/Radio.module.mjs
422
- var Ke = {
423
- root: "m_f3f1af94",
424
- inner: "m_89c4f5e4",
425
- icon: "m_f3ed6b2b",
426
- radio: "m_8a3dbb89",
427
- "radio--outline": "m_1bfe9d39"
428
- }, qe = {
429
- labelPosition: "right",
430
- withErrorStyles: !0
431
- }, Je = n((e, { size: n, radius: i, color: a, iconColor: o, variant: c, autoContrast: l }) => {
432
- let u = r({
433
- color: a || e.primaryColor,
434
- theme: e
435
- }), d = u.isThemeColor && u.shade === void 0 ? `var(--mantine-color-${u.color}-outline)` : u.color;
436
- return { root: {
437
- "--radio-size": t(n, "radio-size"),
438
- "--radio-radius": i === void 0 ? void 0 : s(i),
439
- "--radio-color": c === "outline" ? d : m(a, e),
440
- "--radio-icon-color": o ? m(o, e) : j(l, e) ? ee({
441
- color: a,
442
- theme: e,
443
- autoContrast: l
444
- }) : void 0,
445
- "--radio-icon-size": t(n, "radio-icon-size")
446
- } };
447
- }), J = f((e) => {
448
- let t = l("Radio", qe, e), { classNames: n, className: r, style: a, styles: o, unstyled: s, vars: c, id: u, size: f, label: m, labelPosition: h, description: g, error: _, radius: v, color: y, variant: b, disabled: x, wrapperProps: S, icon: C = Ve, rootRef: T, iconColor: E, onChange: O, mod: k, attributes: A, withErrorStyles: ee, checked: j, ...te } = t, M = i({
449
- name: "Radio",
450
- classes: Ke,
451
- props: t,
452
- className: r,
453
- style: a,
454
- classNames: n,
455
- styles: o,
456
- unstyled: s,
457
- attributes: A,
458
- vars: c,
459
- varsResolver: Je
460
- }), N = pe(Pe), P = N?.size ?? f, ne = t.size ? f : P, { styleProps: F, rest: I } = d(te), L = w(u), R = N ? N.value === I.value : void 0, z = {
461
- checked: R ?? j,
462
- name: I.name ?? N?.name,
463
- onChange: (e) => {
464
- N?.onChange(e), O?.(e);
465
- },
466
- disabled: N?.disabled ?? x
467
- };
468
- return /* @__PURE__ */ K(D, {
469
- ...M("root"),
470
- __staticSelector: "Radio",
471
- __stylesApiProps: t,
472
- id: L,
473
- size: ne,
474
- labelPosition: h,
475
- label: m,
476
- description: g,
477
- error: _,
478
- disabled: z.disabled,
479
- classNames: n,
480
- styles: o,
481
- unstyled: s,
482
- "data-checked": (R ?? j) || void 0,
483
- variant: b,
484
- ref: T,
485
- mod: k,
486
- attributes: A,
487
- ...F,
488
- ...S,
489
- children: /* @__PURE__ */ q(p, {
490
- ...M("inner"),
491
- mod: { "label-position": h },
492
- children: [/* @__PURE__ */ K(p, {
493
- ...M("radio", {
494
- focusable: !0,
495
- variant: b
496
- }),
497
- ...I,
498
- ...z,
499
- component: "input",
500
- mod: {
501
- error: !!_,
502
- "with-error-styles": ee
503
- },
504
- id: L,
505
- type: "radio"
506
- }), /* @__PURE__ */ K(C, {
507
- ...M("icon"),
508
- "aria-hidden": !0
509
- })]
510
- })
511
- });
512
- });
513
- J.classes = Ke, J.varsResolver = Je, J.displayName = "@mantine/core/Radio", J.Group = Fe, J.Card = Be, J.Indicator = Ge;
514
- //#endregion
515
- //#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/SegmentedControl/SegmentedControl.module.mjs
516
- var Ye = {
517
- root: "m_cf365364",
518
- indicator: "m_9e182ccd",
519
- label: "m_1738fcb2",
520
- input: "m_1714d588",
521
- control: "m_69686b9b",
522
- innerLabel: "m_78882f40"
523
- }, Xe = { withItemsBorders: !0 }, Ze = n((e, { radius: n, color: r, transitionDuration: i, size: a, transitionTimingFunction: o }) => ({ root: {
524
- "--sc-radius": n === void 0 ? void 0 : s(n),
525
- "--sc-color": r ? m(r, e) : void 0,
526
- "--sc-shadow": r ? void 0 : "var(--mantine-shadow-xs)",
527
- "--sc-transition-duration": i === void 0 ? void 0 : `${i}ms`,
528
- "--sc-transition-timing-function": o,
529
- "--sc-padding": t(a, "sc-padding"),
530
- "--sc-font-size": c(a)
531
- } })), Y = o((e) => {
532
- let t = l("SegmentedControl", Xe, e), { classNames: n, className: r, style: o, styles: s, unstyled: c, vars: u, data: d, value: f, defaultValue: m, onChange: h, size: g, name: _, disabled: v, readOnly: b, fullWidth: x, orientation: C, radius: T, color: E, transitionDuration: D, transitionTimingFunction: O, variant: k, autoContrast: j, withItemsBorders: te, mod: M, attributes: N, ref: P, ...ne } = t, F = i({
533
- name: "SegmentedControl",
534
- props: t,
535
- classes: Ye,
536
- className: r,
537
- style: o,
538
- classNames: n,
539
- styles: s,
540
- unstyled: c,
541
- attributes: N,
542
- vars: u,
543
- varsResolver: Ze
544
- }), I = a(), L = d.map((e) => Te(e) ? {
545
- label: `${e}`,
546
- value: e
547
- } : e), R = Ce(), [z, re] = G(S()), [ie, ae] = G(null), [oe, B] = G({}), se = (e, t) => {
548
- oe[t] = e, B(oe);
549
- }, [V, ce] = y({
550
- value: f,
551
- defaultValue: m,
552
- finalValue: Array.isArray(d) ? L.find((e) => !e.disabled)?.value ?? d[0]?.value ?? null : null,
553
- onChange: h
554
- }), le = w(_), ue = L.map((e) => /* @__PURE__ */ fe(p, {
555
- ...F("control"),
556
- mod: {
557
- active: V === e.value,
558
- orientation: C
559
- },
560
- key: `${e.value}`
561
- }, /* @__PURE__ */ fe("input", {
562
- ...F("input"),
563
- disabled: v || e.disabled,
564
- type: "radio",
565
- name: le,
566
- value: `${e.value}`,
567
- id: `${le}-${e.value}`,
568
- checked: V === e.value,
569
- onChange: () => !b && ce(e.value),
570
- "data-focus-ring": I.focusRing,
571
- key: `${e.value}-input`
572
- }), /* @__PURE__ */ fe(p, {
573
- component: "label",
574
- ...F("label"),
575
- mod: {
576
- active: V === e.value && !(v || e.disabled),
577
- disabled: v || e.disabled,
578
- "read-only": b
579
- },
580
- htmlFor: `${le}-${e.value}`,
581
- ref: (t) => se(t, `${e.value}`),
582
- __vars: { "--sc-label-color": E === void 0 ? void 0 : ee({
583
- color: E,
584
- theme: I,
585
- autoContrast: j
586
- }) },
587
- key: `${e.value}-label`
588
- }, /* @__PURE__ */ K("span", {
589
- ...F("innerLabel"),
590
- children: e.label
591
- })))), de = A(P, (e) => ae(e));
592
- return be(() => {
593
- re(S());
594
- }, [d.length]), d.length === 0 ? null : /* @__PURE__ */ q(p, {
595
- ...F("root"),
596
- variant: k,
597
- size: g,
598
- ref: de,
599
- mod: [{
600
- "full-width": x,
601
- orientation: C,
602
- initialized: R,
603
- "with-items-borders": te
604
- }, M],
605
- ...ne,
606
- role: "radiogroup",
607
- "data-disabled": v,
608
- children: [V !== void 0 && /* @__PURE__ */ K(Ae, {
609
- target: oe[`${V}`],
610
- parent: ie,
611
- component: "span",
612
- transitionDuration: "var(--sc-transition-duration)",
613
- ...F("indicator")
614
- }, z), ue]
615
- });
616
- });
617
- Y.classes = Ye, Y.varsResolver = Ze, Y.displayName = "@mantine/core/SegmentedControl";
618
- //#endregion
619
- //#region src/infrastructure/adapters/DefaultThemeProvider.ts
620
- var Qe = {
621
- mode: "light",
622
- colors: {
623
- desktop: "#f0f4f8",
624
- taskbar: "rgba(255, 255, 255, 0.9)",
625
- window: "#ffffff",
626
- accent: "#339af0"
627
- },
628
- window: {
629
- borderRadius: "8px",
630
- headerHeight: 40,
631
- minWidth: 400,
632
- minHeight: 300,
633
- defaultWidth: 800,
634
- defaultHeight: 600,
635
- shadow: "0 8px 32px rgba(0, 0, 0, 0.2)"
636
- },
637
- taskbar: {
638
- height: 48,
639
- position: "bottom",
640
- background: "rgba(0, 0, 0, 0.8)",
641
- blur: !0
642
- },
643
- desktop: {
644
- background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
645
- iconSize: 64,
646
- iconSpacing: 16
647
- }
648
- }, $e = {
649
- mode: "dark",
650
- colors: {
651
- desktop: "#1a1b1e",
652
- taskbar: "rgba(26, 27, 30, 0.9)",
653
- window: "#25262b",
654
- accent: "#4dabf7"
655
- },
656
- window: {
657
- borderRadius: "8px",
658
- headerHeight: 40,
659
- minWidth: 400,
660
- minHeight: 300,
661
- defaultWidth: 800,
662
- defaultHeight: 600,
663
- shadow: "0 8px 32px rgba(0, 0, 0, 0.2)"
664
- },
665
- taskbar: {
666
- height: 48,
667
- position: "bottom",
668
- background: "rgba(0, 0, 0, 0.8)",
669
- blur: !0
670
- },
671
- desktop: {
672
- background: "linear-gradient(135deg, #1a1b1e 0%, #2d1f3d 100%)",
673
- iconSize: 64,
674
- iconSpacing: 16
675
- }
676
- }, et = class {
677
- mode;
678
- customColors = null;
679
- constructor(e = "light") {
680
- this.mode = e;
681
- }
682
- getTheme() {
683
- let e = this.mode === "light" ? Qe : $e;
684
- return this.customColors ? {
685
- ...e,
686
- colors: {
687
- ...e.colors,
688
- taskbar: this.customColors.taskbar,
689
- window: this.customColors.window,
690
- accent: this.customColors.accent
691
- }
692
- } : e;
693
- }
694
- setMode(e) {
695
- this.mode = e;
696
- }
697
- setCustomColors(e) {
698
- this.customColors = e;
699
- }
700
- toggle() {
701
- this.mode = this.mode === "light" ? "dark" : "light";
702
- }
703
- }, tt = ["en", "es"], nt = "en", rt = () => {
704
- try {
705
- let e = localStorage.getItem("fde-desktop:settings"), t = localStorage.getItem("fran-desktop:settings");
706
- return JSON.parse(e ?? t ?? "{}")?.state?.theme?.mode ?? null;
707
- } catch {
708
- return null;
709
- }
710
- }, it = rt(), at = () => {
711
- if (typeof navigator > "u" || !navigator.language) return nt;
712
- let e = navigator.language.split("-")[0];
713
- return tt.includes(e) ? e : nt;
714
- }, ot = (() => {
715
- try {
716
- let e = localStorage.getItem("fde-desktop:settings"), t = localStorage.getItem("fran-desktop:settings"), n = JSON.parse(e ?? t ?? "{}")?.state?.language;
717
- return n && tt.includes(n) ? n : at();
718
- } catch {
719
- return at();
720
- }
721
- })(), st = typeof window < "u" && window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light", X = new et(it ?? st), Z = re()(oe((e) => ({
722
- wallpaper: null,
723
- wallpaperModule: "default",
724
- launcherIcon: "FcElectronics",
725
- font: "system-ui",
726
- downloadedFonts: [],
727
- fontSize: 14,
728
- animationDuration: .3,
729
- theme: X.getTheme(),
730
- themeSetManually: it !== null,
731
- customThemeColors: null,
732
- language: ot,
733
- setWallpaper: (t) => e({ wallpaper: t }),
734
- setWallpaperModule: (t) => e({ wallpaperModule: t }),
735
- setLauncherIcon: (t) => e({ launcherIcon: t }),
736
- setFont: (t) => e({ font: t }),
737
- markFontDownloaded: (t) => e((e) => ({ downloadedFonts: e.downloadedFonts.includes(t) ? e.downloadedFonts : [...e.downloadedFonts, t] })),
738
- setFontSize: (t) => e({ fontSize: t }),
739
- setAnimationDuration: (t) => e({ animationDuration: t }),
740
- setThemeMode: (t) => {
741
- X.setMode(t), e({
742
- theme: X.getTheme(),
743
- themeSetManually: !0
744
- });
745
- },
746
- toggleTheme: () => {
747
- X.toggle(), e({
748
- theme: X.getTheme(),
749
- themeSetManually: !0
750
- });
751
- },
752
- setThemeAutomatic: () => e({ themeSetManually: !1 }),
753
- applySystemTheme: (t) => {
754
- X.setMode(t), e({ theme: X.getTheme() });
755
- },
756
- setCustomThemeColors: (t) => {
757
- e({ customThemeColors: t });
758
- },
759
- setLanguage: (t) => e({ language: t })
760
- }), {
761
- name: "fde-desktop:settings",
762
- storage: ie(() => localStorage)
763
- })), ct = {
764
- container: "_container_a0fjd_1",
765
- flag: "_flag_a0fjd_8"
766
- }, lt = {
767
- en: /* @__PURE__ */ q("svg", {
768
- viewBox: "0 0 60 40",
769
- className: ct.flag,
770
- children: [
771
- /* @__PURE__ */ K("rect", {
772
- fill: "#012169",
773
- width: "60",
774
- height: "40"
775
- }),
776
- /* @__PURE__ */ K("path", {
777
- d: "M0,0 L60,40 M60,0 L0,40",
778
- stroke: "#fff",
779
- strokeWidth: "6"
780
- }),
781
- /* @__PURE__ */ K("path", {
782
- d: "M0,0 L60,40 M60,0 L0,40",
783
- stroke: "#C8102E",
784
- strokeWidth: "4"
785
- }),
786
- /* @__PURE__ */ K("path", {
787
- d: "M30,0 V40 M0,20 H60",
788
- stroke: "#fff",
789
- strokeWidth: "10"
790
- }),
791
- /* @__PURE__ */ K("path", {
792
- d: "M30,0 V40 M0,20 H60",
793
- stroke: "#C8102E",
794
- strokeWidth: "6"
795
- })
796
- ]
797
- }),
798
- es: /* @__PURE__ */ q("svg", {
799
- viewBox: "0 0 60 40",
800
- className: ct.flag,
801
- children: [/* @__PURE__ */ K("rect", {
802
- fill: "#C60B1E",
803
- width: "60",
804
- height: "40"
805
- }), /* @__PURE__ */ K("rect", {
806
- fill: "#FFC400",
807
- y: "10",
808
- width: "60",
809
- height: "20"
810
- })]
811
- })
812
- }, ut = ({ lang: e, size: t = 20 }) => /* @__PURE__ */ K("div", {
813
- style: {
814
- width: t * 1.5,
815
- height: t
816
- },
817
- className: ct.container,
818
- "aria-label": e === "en" ? "English" : "Español",
819
- "data-testid": `flag-${e}`,
820
- children: lt[e]
821
- }), dt = [
822
- {
823
- value: "system-ui",
824
- label: "System Default",
825
- stack: "system-ui, Avenir, Helvetica, Arial, sans-serif"
826
- },
827
- {
828
- value: "Courier New",
829
- label: "Courier New",
830
- stack: "\"Courier New\", monospace"
831
- },
832
- {
833
- value: "Source Code Pro",
834
- label: "Source Code Pro",
835
- stack: "\"Source Code Pro\", monospace"
836
- },
837
- {
838
- value: "Open Sans",
839
- label: "Open Sans",
840
- stack: "\"Open Sans\", monospace"
841
- }
842
- ], ft = Object.fromEntries(dt.map((e) => [e.value, e.stack])), Q = {
843
- "Source Code Pro": "https://fonts.googleapis.com/css2?family=Source+Code+Pro&display=swap",
844
- "Open Sans": "https://fonts.googleapis.com/css2?family=Open+Sans&display=swap"
845
- }, pt = [
846
- {
847
- id: "wallpaper",
848
- label: "Wallpaper",
849
- fcIcon: "FcPicture",
850
- description: "Change the desktop background image."
851
- },
852
- {
853
- id: "appearance",
854
- label: "Appearance",
855
- fcIcon: "FcBinoculars",
856
- description: "Switch between light and dark mode."
857
- },
858
- {
859
- id: "launcher",
860
- label: "Launcher",
861
- fcIcon: "FcElectronics",
862
- description: "Choose the launcher button icon."
863
- },
864
- {
865
- id: "font",
866
- label: "Font",
867
- fcIcon: "FcEditImage",
868
- description: "Select the system font family."
869
- },
870
- {
871
- id: "language",
872
- label: "Language",
873
- fcIcon: "FcGlobe",
874
- description: "Choose your preferred language."
875
- },
876
- {
877
- id: "reset",
878
- label: "Reset to Default",
879
- fcIcon: "FcDisclaimer",
880
- description: "Reset all settings and data to defaults."
881
- }
882
- ], mt = ({ title: e, description: t, children: n }) => /* @__PURE__ */ q(z, {
883
- gap: "md",
884
- p: "md",
885
- children: [
886
- /* @__PURE__ */ K(F, {
887
- fw: 600,
888
- size: "lg",
889
- children: e
890
- }),
891
- t && /* @__PURE__ */ K(F, {
892
- size: "sm",
893
- c: "dimmed",
894
- children: t
895
- }),
896
- n
897
- ]
898
- }), ht = "/Images/wallpaper.jpg", gt = () => {
899
- let { t: e } = B("settings"), t = Z((e) => e.wallpaper), n = Z((e) => e.wallpaperModule), r = Z((e) => e.setWallpaper), i = Z((e) => e.setWallpaperModule), [a, o] = G(""), [s, c] = G(!1), l = W(null), u = V(t ?? void 0) ?? ht, d = H((e) => {
900
- let t = e.target.files?.[0];
901
- if (!t) return;
902
- let n = new FileReader();
903
- n.onload = (e) => {
904
- let t = e.target?.result;
905
- typeof t == "string" && r(t);
906
- }, n.readAsDataURL(t);
907
- }, [r]), f = H(() => {
908
- let e = a.trim();
909
- e && r(e);
910
- }, [a, r]), p = H(() => {
911
- r(null), o("");
912
- }, [r]), m = H((e) => {
913
- let t = e.url ? e.url.startsWith("idb://") ? e.url : `/${e.url}` : null;
914
- t && r(t), c(!1);
915
- }, [r]);
916
- return /* @__PURE__ */ q(mt, {
917
- title: e("wallpaper.title"),
918
- children: [
919
- /* @__PURE__ */ K("div", { children: /* @__PURE__ */ K(Y, {
920
- value: n,
921
- onChange: i,
922
- data: [{
923
- value: "default",
924
- label: e("wallpaper.staticImage")
925
- }],
926
- fullWidth: !0
927
- }) }),
928
- /* @__PURE__ */ K("img", {
929
- src: u,
930
- alt: e("wallpaper.wallpaperPreview"),
931
- style: {
932
- width: "100%",
933
- height: 180,
934
- objectFit: "cover",
935
- borderRadius: 8
936
- }
937
- }),
938
- /* @__PURE__ */ q(P, { children: [
939
- /* @__PURE__ */ K("input", {
940
- ref: l,
941
- type: "file",
942
- accept: "image/*",
943
- style: { display: "none" },
944
- onChange: d,
945
- "aria-label": e("wallpaper.uploadAria", { defaultValue: "Upload wallpaper file" })
946
- }),
947
- /* @__PURE__ */ K(I, {
948
- variant: "light",
949
- onClick: () => c(!0),
950
- children: e("wallpaper.chooseFromImages")
951
- }),
952
- /* @__PURE__ */ K(I, {
953
- variant: "light",
954
- onClick: () => l.current?.click(),
955
- children: e("wallpaper.uploadFromDisk")
956
- }),
957
- /* @__PURE__ */ K(I, {
958
- variant: "subtle",
959
- color: "red",
960
- onClick: p,
961
- children: e("wallpaper.resetToDefault")
962
- })
963
- ] }),
964
- /* @__PURE__ */ q(P, {
965
- align: "flex-end",
966
- children: [/* @__PURE__ */ K(C, {
967
- label: e("wallpaper.orEnterUrl"),
968
- placeholder: "https://example.com/image.jpg",
969
- value: a,
970
- onChange: (e) => o(e.currentTarget.value),
971
- style: { flex: 1 }
972
- }), /* @__PURE__ */ K(I, {
973
- onClick: f,
974
- disabled: !a.trim(),
975
- children: e("common:actions.apply")
976
- })]
977
- }),
978
- /* @__PURE__ */ K(ce, {
979
- opened: s,
980
- acceptedMimeTypes: ["image/*"],
981
- onConfirm: m,
982
- onCancel: () => c(!1)
983
- })
984
- ]
985
- });
986
- }, _t = () => {
987
- let { t: e } = B("settings"), t = Z((e) => e.theme.mode), n = Z((e) => e.themeSetManually), r = Z((e) => e.customThemeColors), i = Z((e) => e.animationDuration), a = Z((e) => e.setThemeMode), o = Z((e) => e.setThemeAutomatic), s = Z((e) => e.setCustomThemeColors), c = Z((e) => e.setAnimationDuration), l = r ? "custom" : n ? t : "system", u = H((e) => {
988
- e === "system" ? (o(), s(null)) : e === "custom" ? s({
989
- taskbar: "#339af0",
990
- window: "#ffffff",
991
- accent: "#339af0"
992
- }) : (a(e), s(null));
993
- }, [
994
- a,
995
- o,
996
- s
997
- ]), d = H((e) => (t) => {
998
- r && s({
999
- ...r,
1000
- [e]: t
1001
- });
1002
- }, [r, s]), f = H((e) => {
1003
- c(e);
1004
- }, [c]), m = l === "custom";
1005
- return /* @__PURE__ */ q(z, {
1006
- gap: "md",
1007
- p: "md",
1008
- children: [
1009
- /* @__PURE__ */ K(F, {
1010
- fw: 600,
1011
- size: "lg",
1012
- children: e("appearance.title")
1013
- }),
1014
- /* @__PURE__ */ K(F, {
1015
- size: "sm",
1016
- c: "dimmed",
1017
- children: e("appearance.description")
1018
- }),
1019
- /* @__PURE__ */ K(Y, {
1020
- value: l,
1021
- onChange: u,
1022
- data: [
1023
- {
1024
- label: e("common:theme.light"),
1025
- value: "light"
1026
- },
1027
- {
1028
- label: e("common:theme.dark"),
1029
- value: "dark"
1030
- },
1031
- {
1032
- label: e("common:theme.system"),
1033
- value: "system"
1034
- },
1035
- {
1036
- label: e("common:theme.custom"),
1037
- value: "custom"
1038
- }
1039
- ],
1040
- "aria-label": e("appearance.themeMode", { defaultValue: "Theme mode" })
1041
- }),
1042
- /* @__PURE__ */ q(z, {
1043
- gap: "sm",
1044
- mt: "md",
1045
- children: [
1046
- /* @__PURE__ */ q(p, { children: [/* @__PURE__ */ K(F, {
1047
- size: "sm",
1048
- fw: 500,
1049
- mb: "xs",
1050
- c: m ? "dark" : void 0,
1051
- children: e("appearance.taskbar")
1052
- }), /* @__PURE__ */ K(g, {
1053
- value: r?.taskbar ?? "#339af0",
1054
- onChange: d("taskbar"),
1055
- disabled: !m
1056
- })] }),
1057
- /* @__PURE__ */ q(p, { children: [/* @__PURE__ */ K(F, {
1058
- size: "sm",
1059
- fw: 500,
1060
- mb: "xs",
1061
- c: m ? "dark" : void 0,
1062
- children: e("appearance.window")
1063
- }), /* @__PURE__ */ K(g, {
1064
- value: r?.window ?? "#ffffff",
1065
- onChange: d("window"),
1066
- disabled: !m
1067
- })] }),
1068
- /* @__PURE__ */ q(p, { children: [/* @__PURE__ */ K(F, {
1069
- size: "sm",
1070
- fw: 500,
1071
- mb: "xs",
1072
- c: m ? "dark" : void 0,
1073
- children: e("appearance.accent")
1074
- }), /* @__PURE__ */ K(g, {
1075
- value: r?.accent ?? "#339af0",
1076
- onChange: d("accent"),
1077
- disabled: !m
1078
- })] })
1079
- ]
1080
- }),
1081
- /* @__PURE__ */ q(p, {
1082
- mt: "md",
1083
- children: [
1084
- /* @__PURE__ */ K(F, {
1085
- size: "sm",
1086
- fw: 500,
1087
- mb: "xs",
1088
- children: e("appearance.animationDuration")
1089
- }),
1090
- /* @__PURE__ */ K(F, {
1091
- size: "xs",
1092
- c: "dimmed",
1093
- mb: "sm",
1094
- children: e("appearance.animationDescription")
1095
- }),
1096
- /* @__PURE__ */ q(P, {
1097
- align: "center",
1098
- gap: "md",
1099
- children: [/* @__PURE__ */ K(k, {
1100
- value: i,
1101
- onChange: f,
1102
- min: .1,
1103
- max: 1,
1104
- step: .1,
1105
- style: { flex: 1 },
1106
- marks: [
1107
- {
1108
- value: .1,
1109
- label: "0.1s"
1110
- },
1111
- {
1112
- value: .5,
1113
- label: "0.5s"
1114
- },
1115
- {
1116
- value: 1,
1117
- label: "1.0s"
1118
- }
1119
- ],
1120
- "aria-label": e("appearance.animationDuration")
1121
- }), /* @__PURE__ */ q(F, {
1122
- size: "sm",
1123
- fw: 500,
1124
- style: { minWidth: 40 },
1125
- children: [i.toFixed(1), "s"]
1126
- })]
1127
- })
1128
- ]
1129
- })
1130
- ]
1131
- });
1132
- }, vt = () => {
1133
- let e = Z((e) => e.launcherIcon), t = Z((e) => e.setLauncherIcon), [n, r] = G([]), [i, a] = G(""), o = me(i);
1134
- U(() => {
1135
- import("./fc-kd8WzIER.js").then((e) => e.r).then((e) => {
1136
- r(Object.keys(e).filter((e) => e.startsWith("Fc")).sort());
1137
- });
1138
- }, []);
1139
- let s = o ? n.filter((e) => e.toLowerCase().includes(o.toLowerCase())) : n, c = H((e) => {
1140
- t(e);
1141
- }, [t]);
1142
- return /* @__PURE__ */ q(mt, {
1143
- title: "Launcher Icon",
1144
- description: `Selected: ${e}`,
1145
- children: [/* @__PURE__ */ K(C, {
1146
- placeholder: "Search icons...",
1147
- value: i,
1148
- onChange: (e) => a(e.currentTarget.value),
1149
- "aria-label": "Search icons"
1150
- }), /* @__PURE__ */ K(T, {
1151
- style: {
1152
- flex: 1,
1153
- height: 300
1154
- },
1155
- children: /* @__PURE__ */ K(h, {
1156
- cols: 8,
1157
- spacing: 4,
1158
- children: s.map((t) => /* @__PURE__ */ K(v, {
1159
- label: t,
1160
- withArrow: !0,
1161
- openDelay: 400,
1162
- children: /* @__PURE__ */ K(M, {
1163
- onClick: () => c(t),
1164
- "aria-label": t,
1165
- "aria-pressed": t === e,
1166
- style: {
1167
- padding: 6,
1168
- borderRadius: 6,
1169
- background: t === e ? "var(--mantine-primary-color-light)" : "transparent",
1170
- display: "flex",
1171
- alignItems: "center",
1172
- justifyContent: "center"
1173
- },
1174
- children: /* @__PURE__ */ K(R, {
1175
- fcIcon: t,
1176
- size: 24
1177
- })
1178
- })
1179
- }, t))
1180
- })
1181
- })]
1182
- });
1183
- }, yt = (e) => {
1184
- let t = Q[e];
1185
- if (!t || document.head.querySelector(`link[data-font="${e}"]`)) return;
1186
- let n = document.createElement("link");
1187
- n.rel = "stylesheet", n.href = t, n.setAttribute("data-font", e), document.head.appendChild(n);
1188
- }, bt = async (e) => {
1189
- let t = Q[e];
1190
- if (!t) throw Error(`Font "${e}" not found in Google Fonts`);
1191
- let n = await fetch(t);
1192
- if (!n.ok) throw Error(`Failed to download font: HTTP ${n.status}`);
1193
- return await n.text(), yt(e), {
1194
- font: e,
1195
- success: !0
1196
- };
1197
- }, xt = (e) => {
1198
- let t = ge(), n = Z((e) => e.markFontDownloaded), r = Z((e) => e.downloadedFonts), i = e ? r.includes(e) : !1, a = e && !i && Q[e], o = he({
1199
- queryKey: ["font", e ?? ""],
1200
- queryFn: async ({ queryKey: e }) => {
1201
- let [, t] = e;
1202
- if (!t || !Q[t]) throw Error(`Font "${t}" not available`);
1203
- let r = await bt(t);
1204
- return r.success && n(t), r;
1205
- },
1206
- enabled: !!a,
1207
- staleTime: Infinity,
1208
- gcTime: Infinity,
1209
- retry: !1
1210
- }), s = o.isFetching ? {
1211
- status: "downloading",
1212
- loaded: 0,
1213
- total: null,
1214
- percent: null,
1215
- error: null
1216
- } : o.isError ? {
1217
- status: "error",
1218
- loaded: 0,
1219
- total: null,
1220
- percent: null,
1221
- error: o.error?.message ?? "Unknown error"
1222
- } : o.isSuccess ? {
1223
- status: "done",
1224
- loaded: 0,
1225
- total: 0,
1226
- percent: 100,
1227
- error: null
1228
- } : {
1229
- status: "idle",
1230
- loaded: 0,
1231
- total: null,
1232
- percent: null,
1233
- error: null
1234
- }, c = () => {
1235
- e && t.removeQueries({ queryKey: ["font", e] });
1236
- };
1237
- return {
1238
- ...o,
1239
- progress: s,
1240
- isDownloaded: i,
1241
- reset: c
1242
- };
1243
- }, St = le[1], Ct = ({ status: e, error: t, onDownload: n }) => {
1244
- let { t: r } = B("settings");
1245
- return t ? /* @__PURE__ */ K(Ne, {
1246
- color: St,
1247
- variant: "filled",
1248
- size: "sm",
1249
- "aria-label": `Download error: ${t}`,
1250
- children: r("common:status.error")
1251
- }) : /* @__PURE__ */ K(I, {
1252
- size: "xs",
1253
- variant: "light",
1254
- onClick: n,
1255
- loading: e === "downloading",
1256
- "aria-label": r("font.download"),
1257
- children: r("font.download")
1258
- });
1259
- }, wt = () => {
1260
- let { t: e } = B("settings"), t = Z((e) => e.font), n = Z((e) => e.setFont), r = Z((e) => e.fontSize), i = Z((e) => e.setFontSize), a = Z((e) => e.downloadedFonts), o = Z((e) => e.markFontDownloaded), [s, c] = G(null), l = xt(s);
1261
- U(() => {
1262
- l.isSuccess && l.data?.success && s && (a.includes(s) || o(s));
1263
- }, [
1264
- l.isSuccess,
1265
- l.data,
1266
- s,
1267
- a,
1268
- o
1269
- ]);
1270
- let u = H((e) => {
1271
- c(e);
1272
- }, []), d = (e) => a.includes(e) ? "done" : s === e ? l.progress.status : "idle", f = (e) => s === e ? l.progress.error : null, p = H((e) => {
1273
- let t = e.trim();
1274
- t && (Q[t] = `https://fonts.googleapis.com/css2?family=${t.replace(/\s+/g, "+")}&display=swap`, c(t));
1275
- }, []), m = dt.map((e) => e.value), h = a.filter((e) => !m.includes(e));
1276
- return /* @__PURE__ */ q(z, {
1277
- gap: "md",
1278
- p: "md",
1279
- children: [
1280
- /* @__PURE__ */ K(F, {
1281
- fw: 600,
1282
- size: "lg",
1283
- children: e("font.title")
1284
- }),
1285
- /* @__PURE__ */ K(F, {
1286
- size: "sm",
1287
- c: "dimmed",
1288
- children: e("font.description")
1289
- }),
1290
- /* @__PURE__ */ K(J.Group, {
1291
- value: t,
1292
- onChange: n,
1293
- "aria-label": e("font.selectionAria", { defaultValue: "Font selection" }),
1294
- children: /* @__PURE__ */ q(z, {
1295
- gap: "xs",
1296
- children: [dt.map((e) => {
1297
- let t = !!Q[e.value], n = a.includes(e.value), r = d(e.value), i = f(e.value), o = !t || n || r === "done";
1298
- return /* @__PURE__ */ K(N, {
1299
- p: "sm",
1300
- withBorder: !0,
1301
- radius: "md",
1302
- children: /* @__PURE__ */ q(z, {
1303
- gap: "xs",
1304
- children: [/* @__PURE__ */ q(P, {
1305
- justify: "space-between",
1306
- children: [/* @__PURE__ */ K(J, {
1307
- value: e.value,
1308
- label: e.label,
1309
- "aria-label": e.label,
1310
- disabled: !o
1311
- }), /* @__PURE__ */ q(P, {
1312
- gap: "xs",
1313
- align: "center",
1314
- children: [o && /* @__PURE__ */ K(F, {
1315
- size: "sm",
1316
- c: "dimmed",
1317
- style: { fontFamily: e.stack },
1318
- children: "AaBbCcDd"
1319
- }), t && /* @__PURE__ */ K(Ct, {
1320
- fontLabel: e.label,
1321
- status: r,
1322
- error: i,
1323
- onDownload: () => u(e.value),
1324
- isDownloaded: n
1325
- })]
1326
- })]
1327
- }), t && r === "downloading" && /* @__PURE__ */ K(te, { state: l.progress })]
1328
- })
1329
- }, e.value);
1330
- }), h.map((e) => /* @__PURE__ */ K(N, {
1331
- p: "sm",
1332
- withBorder: !0,
1333
- radius: "md",
1334
- children: /* @__PURE__ */ q(P, {
1335
- justify: "space-between",
1336
- children: [/* @__PURE__ */ K(J, {
1337
- value: e,
1338
- label: e,
1339
- "aria-label": e
1340
- }), /* @__PURE__ */ K(F, {
1341
- size: "sm",
1342
- c: "dimmed",
1343
- style: { fontFamily: `"${e}"` },
1344
- children: "AaBbCcDd"
1345
- })]
1346
- })
1347
- }, e))]
1348
- })
1349
- }),
1350
- /* @__PURE__ */ K(N, {
1351
- p: "sm",
1352
- withBorder: !0,
1353
- radius: "md",
1354
- children: /* @__PURE__ */ q(z, {
1355
- gap: "xs",
1356
- children: [/* @__PURE__ */ q(P, {
1357
- justify: "space-between",
1358
- children: [/* @__PURE__ */ K(F, {
1359
- size: "sm",
1360
- fw: 500,
1361
- children: e("font.fontSize")
1362
- }), /* @__PURE__ */ q(F, {
1363
- size: "sm",
1364
- c: "dimmed",
1365
- children: [r, "px"]
1366
- })]
1367
- }), /* @__PURE__ */ K(k, {
1368
- value: r,
1369
- onChange: i,
1370
- min: 10,
1371
- max: 24,
1372
- step: 1,
1373
- marks: [
1374
- { value: 10 },
1375
- { value: 14 },
1376
- { value: 18 },
1377
- { value: 20 },
1378
- { value: 24 }
1379
- ],
1380
- "aria-label": e("font.fontSizeAria", { defaultValue: "Font size" })
1381
- })]
1382
- })
1383
- }),
1384
- /* @__PURE__ */ K(Tt, {
1385
- onDownload: p,
1386
- activeDownload: s,
1387
- fontDownload: l
1388
- })
1389
- ]
1390
- });
1391
- }, Tt = ({ onDownload: e, activeDownload: t, fontDownload: n }) => {
1392
- let { t: r } = B("settings"), [i, a] = G(""), o = t === i.trim(), s = o ? n.progress.status : "idle", c = o && n.progress.status === "error", l = H((e) => {
1393
- a(e), c && n.reset?.();
1394
- }, [c, n]), u = H(() => {
1395
- e(i);
1396
- }, [i, e]), d = o && s === "done";
1397
- return /* @__PURE__ */ K(N, {
1398
- p: "sm",
1399
- withBorder: !0,
1400
- radius: "md",
1401
- children: /* @__PURE__ */ q(z, {
1402
- gap: "xs",
1403
- children: [
1404
- /* @__PURE__ */ q(F, {
1405
- size: "sm",
1406
- fw: 500,
1407
- children: [
1408
- r("font.downloadByName"),
1409
- " ",
1410
- /* @__PURE__ */ K("a", {
1411
- href: "https://fonts.google.com/",
1412
- target: "_blank",
1413
- rel: "noreferrer",
1414
- children: r("font.fromGoogleFonts")
1415
- })
1416
- ]
1417
- }),
1418
- /* @__PURE__ */ q(P, {
1419
- gap: "xs",
1420
- align: "flex-start",
1421
- children: [/* @__PURE__ */ K(C, {
1422
- placeholder: r("font.namePlaceholder", { defaultValue: "e.g. Open Sans" }),
1423
- value: i,
1424
- onChange: (e) => l(e.currentTarget.value),
1425
- style: { flex: 1 },
1426
- "aria-label": r("font.customNameAria", { defaultValue: "Custom font name" }),
1427
- error: c ? r("font.downloadError") : void 0
1428
- }), /* @__PURE__ */ K(I, {
1429
- onClick: u,
1430
- disabled: !i.trim() || s === "downloading",
1431
- loading: s === "downloading",
1432
- "aria-label": r("font.downloadCustomAria", { defaultValue: "Download custom font" }),
1433
- style: { marginTop: c ? 0 : void 0 },
1434
- children: r("font.download")
1435
- })]
1436
- }),
1437
- s === "downloading" && /* @__PURE__ */ K(te, { state: n.progress }),
1438
- d && /* @__PURE__ */ K(F, {
1439
- size: "xs",
1440
- c: "dimmed",
1441
- children: r("font.downloadSuccess")
1442
- })
1443
- ]
1444
- })
1445
- });
1446
- }, Et = ["en", "es"], Dt = "en", Ot = {
1447
- en: "English",
1448
- es: "Español"
1449
- }, kt = () => {
1450
- let { t: e } = B("settings"), t = Z((e) => e.language), n = Z((e) => e.setLanguage), r = H((e) => {
1451
- n(e);
1452
- }, [n]);
1453
- return /* @__PURE__ */ K(mt, {
1454
- title: e("language.title"),
1455
- description: e("language.description"),
1456
- children: /* @__PURE__ */ K(z, {
1457
- gap: "xs",
1458
- children: Et.map((e) => /* @__PURE__ */ K(M, {
1459
- onClick: () => r(e),
1460
- "aria-label": Ot[e],
1461
- "aria-pressed": e === t,
1462
- style: {
1463
- padding: "12px 16px",
1464
- borderRadius: 8,
1465
- width: "100%",
1466
- background: e === t ? "var(--mantine-primary-color-light)" : "transparent",
1467
- border: e === t ? "1px solid var(--mantine-primary-color-filled)" : "1px solid transparent",
1468
- transition: "all 0.15s ease",
1469
- cursor: "pointer"
1470
- },
1471
- children: /* @__PURE__ */ q(P, {
1472
- gap: "sm",
1473
- children: [/* @__PURE__ */ K(ut, {
1474
- lang: e,
1475
- size: 24
1476
- }), /* @__PURE__ */ K(F, {
1477
- fw: e === t ? 600 : 400,
1478
- children: Ot[e]
1479
- })]
1480
- })
1481
- }, e))
1482
- })
1483
- });
1484
- };
1485
- //#endregion
1486
- //#region src/utils/clearBrowserData.ts
1487
- async function At(e) {
1488
- let t = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : void 0;
1489
- if (t) {
1490
- if (!e?.keepServiceWorker && "serviceWorker" in t.navigator) {
1491
- let e = await t.navigator.serviceWorker.getRegistrations();
1492
- for (let t of e) await t.unregister();
1493
- }
1494
- if ("caches" in t) {
1495
- let e = await t.caches.keys();
1496
- for (let n of e) await t.caches.delete(n);
1497
- }
1498
- if (!e?.keepIndexedDB && "indexedDB" in t) {
1499
- let e = await t.indexedDB.databases();
1500
- for (let n of e) n.name && t.indexedDB.deleteDatabase(n.name);
1501
- }
1502
- !e?.keepLocalStorage && "localStorage" in t && t.localStorage.clear(), !e?.keepSessionStorage && "sessionStorage" in t && t.sessionStorage.clear();
1503
- }
1504
- }
1505
- //#endregion
1506
- //#region src/utils/resetDockerWorkspace.ts
1507
- async function jt() {
1508
- ne() && (await fetch("/api/fs/reset", { method: "POST" }), await fetch("/api/fs/seed", { method: "POST" }));
1509
- }
1510
- //#endregion
1511
- //#region src/components/Apps/SettingsApp/sections/ResetSettings.tsx
1512
- var Mt = () => {
1513
- let { t: e } = B("settings"), [t, n] = G(!1), r = H(() => {
1514
- n(!0);
1515
- }, []), i = H(() => {
1516
- n(!1);
1517
- }, []), a = H(async () => {
1518
- await jt(), await At(), window.location.reload();
1519
- }, []), o = H(async () => {
1520
- await jt(), await At({ keepIndexedDB: !0 }), window.location.reload();
1521
- }, []);
1522
- return /* @__PURE__ */ q(mt, {
1523
- title: e("reset.title"),
1524
- description: e("reset.description"),
1525
- children: [/* @__PURE__ */ K(I, {
1526
- color: "red",
1527
- onClick: r,
1528
- style: { alignSelf: "flex-start" },
1529
- children: e("reset.resetButton")
1530
- }), t && /* @__PURE__ */ K(p, {
1531
- style: {
1532
- position: "fixed",
1533
- top: 0,
1534
- left: 0,
1535
- right: 0,
1536
- bottom: 0,
1537
- background: "rgba(0,0,0,0.5)",
1538
- display: "flex",
1539
- alignItems: "center",
1540
- justifyContent: "center",
1541
- zIndex: 1e3
1542
- },
1543
- role: "dialog",
1544
- "aria-label": "Confirm reset",
1545
- children: /* @__PURE__ */ K(p, {
1546
- style: {
1547
- background: "var(--mantine-color-default)",
1548
- borderRadius: 8,
1549
- padding: 24,
1550
- maxWidth: 400,
1551
- width: "100%"
1552
- },
1553
- children: /* @__PURE__ */ q(z, {
1554
- gap: "md",
1555
- children: [
1556
- /* @__PURE__ */ K(F, {
1557
- fw: 600,
1558
- size: "lg",
1559
- ta: "center",
1560
- children: e("reset.modalTitle")
1561
- }),
1562
- /* @__PURE__ */ K(F, {
1563
- size: "sm",
1564
- c: "dimmed",
1565
- ta: "center",
1566
- children: e("reset.modalDescription")
1567
- }),
1568
- /* @__PURE__ */ q(P, {
1569
- justify: "center",
1570
- gap: "xs",
1571
- mt: "md",
1572
- children: [
1573
- /* @__PURE__ */ K(I, {
1574
- variant: "default",
1575
- onClick: i,
1576
- children: e("reset.goBack")
1577
- }),
1578
- /* @__PURE__ */ K(I, {
1579
- color: "blue",
1580
- onClick: o,
1581
- children: e("reset.keepFiles")
1582
- }),
1583
- /* @__PURE__ */ K(I, {
1584
- color: "red",
1585
- onClick: a,
1586
- children: e("reset.burnEverything")
1587
- })
1588
- ]
1589
- })
1590
- ]
1591
- })
1592
- })
1593
- })]
1594
- });
1595
- }, $ = {
1596
- root: "_root_77epl_1",
1597
- sidebar: "_sidebar_77epl_8",
1598
- navItem: "_navItem_77epl_16",
1599
- content: "_content_77epl_41",
1600
- overviewPadding: "_overviewPadding_77epl_47",
1601
- sectionCard: "_sectionCard_77epl_51",
1602
- toolbar: "_toolbar_77epl_60",
1603
- dirtyIndicator: "_dirtyIndicator_77epl_70",
1604
- versionFooter: "_versionFooter_77epl_77"
1605
- }, Nt = {
1606
- name: "Francisco Núñez Palomares",
1607
- title: "Fullstack Developer & DevOps",
1608
- email: "frannunpal@gmail.com",
1609
- phone: "+34 600 275 210",
1610
- location: "Spain",
1611
- linkedin: "https://www.linkedin.com/in/francisco-núñez-palomares-74a484171/",
1612
- github: "https://github.com/frannunpal",
1613
- cvUrls: {
1614
- en: "Desktop/CV_2026_English.pdf",
1615
- es: "Desktop/CV 2026.pdf"
1616
- }
1617
- }, Pt = "0.4.0", Ft = () => Pt, It = {
1618
- wallpaper: gt,
1619
- appearance: _t,
1620
- launcher: vt,
1621
- font: wt,
1622
- language: kt,
1623
- reset: Mt
1624
- }, Lt = ({ window: e, notifyReady: t }) => {
1625
- let { t: n } = B("settings"), [r, i] = G(null), [a, o] = G(!1), s = ae((e) => e.windows), c = e?.id ?? s.find((e) => e.content === "settings")?.id, l = Z((e) => e.wallpaper), u = Z((e) => e.wallpaperModule), d = Z((e) => e.theme), f = Z((e) => e.font), p = Z((e) => e.fontSize), m = Z((e) => e.launcherIcon), g = Z((e) => e.customThemeColors), _ = Z((e) => e.animationDuration), v = Z((e) => e.setWallpaper), y = Z((e) => e.setWallpaperModule), b = Z((e) => e.setFont), x = Z((e) => e.setFontSize), S = Z((e) => e.setLauncherIcon), C = Z((e) => e.setThemeMode), w = Z((e) => e.setCustomThemeColors), T = Z((e) => e.setThemeAutomatic), E = Z((e) => e.setAnimationDuration), D = W(null);
1626
- U(() => {
1627
- D.current === null && (D.current = {
1628
- wallpaper: l,
1629
- wallpaperModule: u,
1630
- themeMode: d.mode,
1631
- font: f,
1632
- fontSize: p,
1633
- launcherIcon: m,
1634
- customThemeColors: g,
1635
- animationDuration: _
1636
- });
1637
- }, [
1638
- l,
1639
- u,
1640
- d.mode,
1641
- f,
1642
- p,
1643
- m,
1644
- g,
1645
- _
1646
- ]), U(() => {
1647
- if (!D.current) return;
1648
- let e = {
1649
- wallpaper: l,
1650
- wallpaperModule: u,
1651
- themeMode: d.mode,
1652
- font: f,
1653
- fontSize: p,
1654
- launcherIcon: m,
1655
- customThemeColors: g,
1656
- animationDuration: _
1657
- };
1658
- o(JSON.stringify(e) !== JSON.stringify(D.current));
1659
- }, [
1660
- l,
1661
- u,
1662
- d.mode,
1663
- f,
1664
- p,
1665
- m,
1666
- g,
1667
- _
1668
- ]);
1669
- let O = H(() => {
1670
- let e = D.current;
1671
- e && (v(e.wallpaper), y(e.wallpaperModule), b(e.font), x(e.fontSize), S(e.launcherIcon), E(e.animationDuration), e.customThemeColors ? w(e.customThemeColors) : (w(null), T()), C(e.themeMode), o(!1));
1672
- }, [
1673
- v,
1674
- y,
1675
- b,
1676
- x,
1677
- S,
1678
- E,
1679
- C,
1680
- w,
1681
- T
1682
- ]);
1683
- U(() => {
1684
- c && ue.getState().reset(c);
1685
- }, [c]), U(() => {
1686
- c && ue.getState().setIsDirty(c, a);
1687
- }, [c, a]), U(() => {
1688
- t?.({
1689
- ...e?.contentData ?? {},
1690
- discard: O
1691
- });
1692
- }, [
1693
- e,
1694
- t,
1695
- O
1696
- ]), se({
1697
- isDirtyGetter: H(() => {
1698
- if (!D.current) return !1;
1699
- let e = {
1700
- wallpaper: Z.getState().wallpaper,
1701
- wallpaperModule: Z.getState().wallpaperModule,
1702
- themeMode: Z.getState().theme.mode,
1703
- font: Z.getState().font,
1704
- fontSize: Z.getState().fontSize,
1705
- launcherIcon: Z.getState().launcherIcon,
1706
- customThemeColors: Z.getState().customThemeColors,
1707
- animationDuration: Z.getState().animationDuration
1708
- };
1709
- return JSON.stringify(e) !== JSON.stringify(D.current);
1710
- }, []),
1711
- windowId: c,
1712
- onDiscard: O,
1713
- onSave: () => {}
1714
- });
1715
- let k = H((e) => {
1716
- i(e);
1717
- }, []), A = H(() => {
1718
- i(null);
1719
- }, []), ee = H(() => {
1720
- globalThis.location.href = `mailto:${Nt.email}`;
1721
- }, []), j = r ? It[r] : null;
1722
- return /* @__PURE__ */ q("div", {
1723
- className: $.root,
1724
- children: [/* @__PURE__ */ K("aside", {
1725
- className: $.sidebar,
1726
- children: /* @__PURE__ */ q("nav", {
1727
- "aria-label": "Settings sections",
1728
- children: [/* @__PURE__ */ q("button", {
1729
- className: $.navItem,
1730
- "data-active": r === null || void 0,
1731
- onClick: A,
1732
- "aria-label": "All Settings",
1733
- "aria-current": r === null ? "page" : void 0,
1734
- children: [/* @__PURE__ */ K(R, {
1735
- fcIcon: "FcList",
1736
- size: 16
1737
- }), /* @__PURE__ */ K(F, {
1738
- size: "xs",
1739
- ml: 6,
1740
- truncate: !0,
1741
- children: n("all")
1742
- })]
1743
- }), pt.map((e) => /* @__PURE__ */ q("button", {
1744
- className: $.navItem,
1745
- "data-active": r === e.id || void 0,
1746
- onClick: () => k(e.id),
1747
- "aria-label": e.label,
1748
- "aria-current": r === e.id ? "page" : void 0,
1749
- children: [/* @__PURE__ */ K(R, {
1750
- fcIcon: e.fcIcon,
1751
- size: 16
1752
- }), /* @__PURE__ */ K(F, {
1753
- size: "xs",
1754
- ml: 6,
1755
- truncate: !0,
1756
- children: n(`sections.${e.id}.label`)
1757
- })]
1758
- }, e.id))]
1759
- })
1760
- }), /* @__PURE__ */ K("main", {
1761
- className: $.content,
1762
- children: j ? /* @__PURE__ */ K(j, {}) : /* @__PURE__ */ q(z, {
1763
- className: $.overviewPadding,
1764
- h: "100%",
1765
- justify: "space-between",
1766
- gap: 0,
1767
- children: [
1768
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K(F, {
1769
- fw: 500,
1770
- mb: "md",
1771
- size: "sm",
1772
- c: "dimmed",
1773
- children: n("all")
1774
- }), /* @__PURE__ */ K(h, {
1775
- cols: 2,
1776
- spacing: "sm",
1777
- children: pt.map((e) => /* @__PURE__ */ K(L, {
1778
- withBorder: !0,
1779
- padding: "md",
1780
- radius: "md",
1781
- className: $.sectionCard,
1782
- onClick: () => k(e.id),
1783
- role: "button",
1784
- "aria-label": `Open ${e.label} settings`,
1785
- children: /* @__PURE__ */ q(z, {
1786
- gap: 6,
1787
- align: "flex-start",
1788
- children: [
1789
- /* @__PURE__ */ K(R, {
1790
- fcIcon: e.fcIcon,
1791
- size: 28
1792
- }),
1793
- /* @__PURE__ */ K(F, {
1794
- size: "sm",
1795
- fw: 500,
1796
- children: n(`sections.${e.id}.label`)
1797
- }),
1798
- /* @__PURE__ */ K(F, {
1799
- size: "xs",
1800
- c: "dimmed",
1801
- children: n(`sections.${e.id}.description`)
1802
- })
1803
- ]
1804
- })
1805
- }, e.id))
1806
- })] }),
1807
- /* @__PURE__ */ K(I, {
1808
- gradient: {
1809
- from: "blue",
1810
- to: "cyan",
1811
- deg: 90
1812
- },
1813
- onClick: ee,
1814
- children: "FDE: Fran Desktop Environment"
1815
- }),
1816
- /* @__PURE__ */ K(F, {
1817
- size: "xs",
1818
- c: "dimmed",
1819
- ta: "center",
1820
- className: $.versionFooter,
1821
- children: Ft()
1822
- })
1823
- ]
1824
- })
1825
- })]
1826
- });
1827
- };
1828
- //#endregion
1829
- export { Et as a, mt as c, ft as d, Q as f, et as g, Z as h, Dt as i, pt as l, rt as m, Nt as n, xt as o, ut as p, At as r, yt as s, Lt as t, dt as u };