@fde-desktop/fde-core 0.4.9 → 0.4.11

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