@shellui/core 0.0.14 → 0.0.15

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 (175) hide show
  1. package/package.json +11 -25
  2. package/src/components/ui/dialog.tsx +3 -1
  3. package/src/components/ui/sidebar.tsx +14 -2
  4. package/src/features/config/ConfigProvider.ts +1 -1
  5. package/src/features/config/useConfig.ts +7 -2
  6. package/src/features/layouts/DefaultLayout.tsx +6 -1
  7. package/src/index.ts +2 -2
  8. package/src/service-worker/register.ts +2 -1
  9. package/dist/ContentView-CZG-ro_B.js +0 -146
  10. package/dist/ContentView-CZG-ro_B.js.map +0 -1
  11. package/dist/CookiePreferencesView-Bb3hFqw1.js +0 -213
  12. package/dist/CookiePreferencesView-Bb3hFqw1.js.map +0 -1
  13. package/dist/DefaultLayout-D3IpgS4j.js +0 -406
  14. package/dist/DefaultLayout-D3IpgS4j.js.map +0 -1
  15. package/dist/FullscreenLayout-Do9vAfl8.js +0 -30
  16. package/dist/FullscreenLayout-Do9vAfl8.js.map +0 -1
  17. package/dist/HomeView-DwckTuxz.js +0 -21
  18. package/dist/HomeView-DwckTuxz.js.map +0 -1
  19. package/dist/NotFoundView-DD7azhz-.js +0 -52
  20. package/dist/NotFoundView-DD7azhz-.js.map +0 -1
  21. package/dist/OverlayShell-kDY56DaN.js +0 -642
  22. package/dist/OverlayShell-kDY56DaN.js.map +0 -1
  23. package/dist/SettingsView-Bt4I-KDT.js +0 -2207
  24. package/dist/SettingsView-Bt4I-KDT.js.map +0 -1
  25. package/dist/ViewRoute-ChSPabOy.js +0 -32
  26. package/dist/ViewRoute-ChSPabOy.js.map +0 -1
  27. package/dist/WindowsLayout-CEqkRKyk.js +0 -633
  28. package/dist/WindowsLayout-CEqkRKyk.js.map +0 -1
  29. package/dist/app.d.ts +0 -3
  30. package/dist/app.d.ts.map +0 -1
  31. package/dist/components/ContentView.d.ts +0 -10
  32. package/dist/components/ContentView.d.ts.map +0 -1
  33. package/dist/components/HomeView.d.ts +0 -2
  34. package/dist/components/HomeView.d.ts.map +0 -1
  35. package/dist/components/LoadingOverlay.d.ts +0 -2
  36. package/dist/components/LoadingOverlay.d.ts.map +0 -1
  37. package/dist/components/NotFoundView.d.ts +0 -2
  38. package/dist/components/NotFoundView.d.ts.map +0 -1
  39. package/dist/components/RouteErrorBoundary.d.ts +0 -2
  40. package/dist/components/RouteErrorBoundary.d.ts.map +0 -1
  41. package/dist/components/ViewRoute.d.ts +0 -7
  42. package/dist/components/ViewRoute.d.ts.map +0 -1
  43. package/dist/components/ui/alert-dialog.d.ts +0 -32
  44. package/dist/components/ui/alert-dialog.d.ts.map +0 -1
  45. package/dist/components/ui/breadcrumb.d.ts +0 -20
  46. package/dist/components/ui/breadcrumb.d.ts.map +0 -1
  47. package/dist/components/ui/button-group.d.ts +0 -7
  48. package/dist/components/ui/button-group.d.ts.map +0 -1
  49. package/dist/components/ui/button.d.ts +0 -12
  50. package/dist/components/ui/button.d.ts.map +0 -1
  51. package/dist/components/ui/dialog.d.ts +0 -24
  52. package/dist/components/ui/dialog.d.ts.map +0 -1
  53. package/dist/components/ui/drawer.d.ts +0 -38
  54. package/dist/components/ui/drawer.d.ts.map +0 -1
  55. package/dist/components/ui/select.d.ts +0 -5
  56. package/dist/components/ui/select.d.ts.map +0 -1
  57. package/dist/components/ui/sidebar.d.ts +0 -46
  58. package/dist/components/ui/sidebar.d.ts.map +0 -1
  59. package/dist/components/ui/sonner.d.ts +0 -6
  60. package/dist/components/ui/sonner.d.ts.map +0 -1
  61. package/dist/components/ui/switch.d.ts +0 -8
  62. package/dist/components/ui/switch.d.ts.map +0 -1
  63. package/dist/constants/urls.d.ts +0 -6
  64. package/dist/constants/urls.d.ts.map +0 -1
  65. package/dist/constants/urls.js +0 -8
  66. package/dist/constants/urls.js.map +0 -1
  67. package/dist/features/alertDialog/DialogContext.d.ts +0 -12
  68. package/dist/features/alertDialog/DialogContext.d.ts.map +0 -1
  69. package/dist/features/config/ConfigProvider.d.ts +0 -15
  70. package/dist/features/config/ConfigProvider.d.ts.map +0 -1
  71. package/dist/features/config/types.d.ts +0 -177
  72. package/dist/features/config/types.d.ts.map +0 -1
  73. package/dist/features/config/useConfig.d.ts +0 -8
  74. package/dist/features/config/useConfig.d.ts.map +0 -1
  75. package/dist/features/cookieConsent/CookieConsentModal.d.ts +0 -6
  76. package/dist/features/cookieConsent/CookieConsentModal.d.ts.map +0 -1
  77. package/dist/features/cookieConsent/CookiePreferencesView.d.ts +0 -2
  78. package/dist/features/cookieConsent/CookiePreferencesView.d.ts.map +0 -1
  79. package/dist/features/cookieConsent/cookieConsent.d.ts +0 -22
  80. package/dist/features/cookieConsent/cookieConsent.d.ts.map +0 -1
  81. package/dist/features/cookieConsent/useCookieConsent.d.ts +0 -15
  82. package/dist/features/cookieConsent/useCookieConsent.d.ts.map +0 -1
  83. package/dist/features/drawer/DrawerContext.d.ts +0 -24
  84. package/dist/features/drawer/DrawerContext.d.ts.map +0 -1
  85. package/dist/features/layouts/AppLayout.d.ts +0 -12
  86. package/dist/features/layouts/AppLayout.d.ts.map +0 -1
  87. package/dist/features/layouts/DefaultLayout.d.ts +0 -10
  88. package/dist/features/layouts/DefaultLayout.d.ts.map +0 -1
  89. package/dist/features/layouts/FullscreenLayout.d.ts +0 -9
  90. package/dist/features/layouts/FullscreenLayout.d.ts.map +0 -1
  91. package/dist/features/layouts/LayoutProviders.d.ts +0 -9
  92. package/dist/features/layouts/LayoutProviders.d.ts.map +0 -1
  93. package/dist/features/layouts/OverlayShell.d.ts +0 -10
  94. package/dist/features/layouts/OverlayShell.d.ts.map +0 -1
  95. package/dist/features/layouts/WindowsLayout.d.ts +0 -24
  96. package/dist/features/layouts/WindowsLayout.d.ts.map +0 -1
  97. package/dist/features/layouts/utils.d.ts +0 -16
  98. package/dist/features/layouts/utils.d.ts.map +0 -1
  99. package/dist/features/modal/ModalContext.d.ts +0 -20
  100. package/dist/features/modal/ModalContext.d.ts.map +0 -1
  101. package/dist/features/sentry/initSentry.d.ts +0 -14
  102. package/dist/features/sentry/initSentry.d.ts.map +0 -1
  103. package/dist/features/settings/SettingsContext.d.ts +0 -10
  104. package/dist/features/settings/SettingsContext.d.ts.map +0 -1
  105. package/dist/features/settings/SettingsIcons.d.ts +0 -22
  106. package/dist/features/settings/SettingsIcons.d.ts.map +0 -1
  107. package/dist/features/settings/SettingsProvider.d.ts +0 -5
  108. package/dist/features/settings/SettingsProvider.d.ts.map +0 -1
  109. package/dist/features/settings/SettingsRoutes.d.ts +0 -7
  110. package/dist/features/settings/SettingsRoutes.d.ts.map +0 -1
  111. package/dist/features/settings/SettingsView.d.ts +0 -2
  112. package/dist/features/settings/SettingsView.d.ts.map +0 -1
  113. package/dist/features/settings/components/Advanced.d.ts +0 -2
  114. package/dist/features/settings/components/Advanced.d.ts.map +0 -1
  115. package/dist/features/settings/components/Appearance.d.ts +0 -2
  116. package/dist/features/settings/components/Appearance.d.ts.map +0 -1
  117. package/dist/features/settings/components/DataPrivacy.d.ts +0 -2
  118. package/dist/features/settings/components/DataPrivacy.d.ts.map +0 -1
  119. package/dist/features/settings/components/Develop.d.ts +0 -2
  120. package/dist/features/settings/components/Develop.d.ts.map +0 -1
  121. package/dist/features/settings/components/LanguageAndRegion.d.ts +0 -2
  122. package/dist/features/settings/components/LanguageAndRegion.d.ts.map +0 -1
  123. package/dist/features/settings/components/ServiceWorker.d.ts +0 -2
  124. package/dist/features/settings/components/ServiceWorker.d.ts.map +0 -1
  125. package/dist/features/settings/components/UpdateApp.d.ts +0 -2
  126. package/dist/features/settings/components/UpdateApp.d.ts.map +0 -1
  127. package/dist/features/settings/components/develop/DialogTestButtons.d.ts +0 -2
  128. package/dist/features/settings/components/develop/DialogTestButtons.d.ts.map +0 -1
  129. package/dist/features/settings/components/develop/DrawerTestButtons.d.ts +0 -2
  130. package/dist/features/settings/components/develop/DrawerTestButtons.d.ts.map +0 -1
  131. package/dist/features/settings/components/develop/ModalTestButtons.d.ts +0 -2
  132. package/dist/features/settings/components/develop/ModalTestButtons.d.ts.map +0 -1
  133. package/dist/features/settings/components/develop/ToastTestButtons.d.ts +0 -2
  134. package/dist/features/settings/components/develop/ToastTestButtons.d.ts.map +0 -1
  135. package/dist/features/settings/hooks/useSettings.d.ts +0 -2
  136. package/dist/features/settings/hooks/useSettings.d.ts.map +0 -1
  137. package/dist/features/sonner/SonnerContext.d.ts +0 -29
  138. package/dist/features/sonner/SonnerContext.d.ts.map +0 -1
  139. package/dist/features/theme/ThemeProvider.d.ts +0 -11
  140. package/dist/features/theme/ThemeProvider.d.ts.map +0 -1
  141. package/dist/features/theme/themes.d.ts +0 -114
  142. package/dist/features/theme/themes.d.ts.map +0 -1
  143. package/dist/features/theme/useTheme.d.ts +0 -10
  144. package/dist/features/theme/useTheme.d.ts.map +0 -1
  145. package/dist/i18n/I18nProvider.d.ts +0 -9
  146. package/dist/i18n/I18nProvider.d.ts.map +0 -1
  147. package/dist/i18n/config.d.ts +0 -23
  148. package/dist/i18n/config.d.ts.map +0 -1
  149. package/dist/i18n/translations/en/common.json.d.ts +0 -19
  150. package/dist/i18n/translations/en/cookieConsent.json.d.ts +0 -53
  151. package/dist/i18n/translations/en/settings.json.d.ts +0 -358
  152. package/dist/i18n/translations/fr/common.json.d.ts +0 -19
  153. package/dist/i18n/translations/fr/cookieConsent.json.d.ts +0 -53
  154. package/dist/i18n/translations/fr/settings.json.d.ts +0 -358
  155. package/dist/index-CfvdAI_Y.js +0 -2168
  156. package/dist/index-CfvdAI_Y.js.map +0 -1
  157. package/dist/index.d.ts +0 -7
  158. package/dist/index.d.ts.map +0 -1
  159. package/dist/index.js +0 -12
  160. package/dist/index.js.map +0 -1
  161. package/dist/lib/utils.d.ts +0 -3
  162. package/dist/lib/utils.d.ts.map +0 -1
  163. package/dist/lib/z-index.d.ts +0 -29
  164. package/dist/lib/z-index.d.ts.map +0 -1
  165. package/dist/router/router.d.ts +0 -3
  166. package/dist/router/router.d.ts.map +0 -1
  167. package/dist/router/routes.d.ts +0 -4
  168. package/dist/router/routes.d.ts.map +0 -1
  169. package/dist/sidebar-Dt-gibIZ.js +0 -336
  170. package/dist/sidebar-Dt-gibIZ.js.map +0 -1
  171. package/dist/style.css +0 -1
  172. package/dist/switch-CuKXfl3x.js +0 -44
  173. package/dist/switch-CuKXfl3x.js.map +0 -1
  174. package/dist/types.js +0 -2
  175. package/dist/types.js.map +0 -1
@@ -1,2207 +0,0 @@
1
- import { jsx as e, jsxs as n, Fragment as W } from "react/jsx-runtime";
2
- import { forwardRef as D, Children as _, isValidElement as ae, cloneElement as ie, useState as w, useEffect as E, useMemo as R, useCallback as H } from "react";
3
- import { Slot as se } from "@radix-ui/react-slot";
4
- import { c as N, a as S, u as I, e as oe, g as le, B as p, h as re, i as B, j as q, k as Q, l as M, m as ce, n as de, o as me, b as ge, r as ue, p as V, q as pe } from "./index-CfvdAI_Y.js";
5
- import { S as he, a as fe, c as ve, e as be, f as ye, g as xe, h as ke, i as Ne, j as we } from "./sidebar-Dt-gibIZ.js";
6
- import { useLocation as Ce, useNavigate as Te, Routes as G, Route as j, Navigate as Ae } from "react-router";
7
- import { useTranslation as C } from "react-i18next";
8
- import L from "./constants/urls.js";
9
- import { shellui as m, getLogger as Le } from "@shellui/sdk";
10
- import { S as z } from "./switch-CuKXfl3x.js";
11
- const Y = D(({ ...t }, a) => /* @__PURE__ */ e(
12
- "nav",
13
- {
14
- ref: a,
15
- "aria-label": "breadcrumb",
16
- ...t
17
- }
18
- ));
19
- Y.displayName = "Breadcrumb";
20
- const J = D(
21
- ({ className: t, ...a }, s) => /* @__PURE__ */ e(
22
- "ol",
23
- {
24
- ref: s,
25
- className: N(
26
- "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
27
- t
28
- ),
29
- ...a
30
- }
31
- )
32
- );
33
- J.displayName = "BreadcrumbList";
34
- const U = D(
35
- ({ className: t, ...a }, s) => /* @__PURE__ */ e(
36
- "li",
37
- {
38
- ref: s,
39
- className: N("inline-flex items-center gap-1.5", t),
40
- ...a
41
- }
42
- )
43
- );
44
- U.displayName = "BreadcrumbItem";
45
- const Se = D(({ asChild: t, className: a, ...s }, l) => /* @__PURE__ */ e(
46
- t ? se : "a",
47
- {
48
- ref: l,
49
- className: N("transition-colors hover:text-foreground", a),
50
- ...s
51
- }
52
- ));
53
- Se.displayName = "BreadcrumbLink";
54
- const X = D(
55
- ({ className: t, ...a }, s) => /* @__PURE__ */ e(
56
- "span",
57
- {
58
- ref: s,
59
- role: "link",
60
- "aria-disabled": "true",
61
- "aria-current": "page",
62
- className: N("font-normal text-foreground", t),
63
- ...a
64
- }
65
- )
66
- );
67
- X.displayName = "BreadcrumbPage";
68
- const ee = ({ children: t, className: a, ...s }) => /* @__PURE__ */ e(
69
- "li",
70
- {
71
- role: "presentation",
72
- "aria-hidden": "true",
73
- className: N("[&>svg]:size-3.5", a),
74
- ...s,
75
- children: t ?? /* @__PURE__ */ e(
76
- "svg",
77
- {
78
- xmlns: "http://www.w3.org/2000/svg",
79
- width: "24",
80
- height: "24",
81
- viewBox: "0 0 24 24",
82
- fill: "none",
83
- stroke: "currentColor",
84
- strokeWidth: "2",
85
- strokeLinecap: "round",
86
- strokeLinejoin: "round",
87
- children: /* @__PURE__ */ e("polyline", { points: "9 18 15 12 9 6" })
88
- }
89
- )
90
- }
91
- );
92
- ee.displayName = "BreadcrumbSeparator";
93
- const Fe = () => /* @__PURE__ */ e(
94
- "svg",
95
- {
96
- xmlns: "http://www.w3.org/2000/svg",
97
- width: "16",
98
- height: "16",
99
- viewBox: "0 0 24 24",
100
- fill: "none",
101
- stroke: "currentColor",
102
- strokeWidth: "2",
103
- strokeLinecap: "round",
104
- strokeLinejoin: "round",
105
- children: /* @__PURE__ */ e(
106
- "path",
107
- {
108
- fill: "none",
109
- d: "m14.622 17.897l-10.68-2.913M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0zM9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15"
110
- }
111
- )
112
- }
113
- ), Be = () => /* @__PURE__ */ n(
114
- "svg",
115
- {
116
- xmlns: "http://www.w3.org/2000/svg",
117
- width: "16",
118
- height: "16",
119
- viewBox: "0 0 24 24",
120
- fill: "none",
121
- stroke: "currentColor",
122
- strokeWidth: "2",
123
- strokeLinecap: "round",
124
- strokeLinejoin: "round",
125
- children: [
126
- /* @__PURE__ */ e(
127
- "circle",
128
- {
129
- cx: "12",
130
- cy: "12",
131
- r: "10"
132
- }
133
- ),
134
- /* @__PURE__ */ e(
135
- "line",
136
- {
137
- x1: "2",
138
- x2: "22",
139
- y1: "12",
140
- y2: "12"
141
- }
142
- ),
143
- /* @__PURE__ */ e("path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
144
- ]
145
- }
146
- ), Ee = () => /* @__PURE__ */ e(
147
- "svg",
148
- {
149
- xmlns: "http://www.w3.org/2000/svg",
150
- width: "16",
151
- height: "16",
152
- viewBox: "0 0 24 24",
153
- fill: "none",
154
- stroke: "currentColor",
155
- strokeWidth: "2",
156
- strokeLinecap: "round",
157
- strokeLinejoin: "round",
158
- children: /* @__PURE__ */ e("polyline", { points: "20 6 9 17 4 12" })
159
- }
160
- ), De = () => /* @__PURE__ */ n(
161
- "svg",
162
- {
163
- xmlns: "http://www.w3.org/2000/svg",
164
- width: "16",
165
- height: "16",
166
- viewBox: "0 0 24 24",
167
- fill: "none",
168
- stroke: "currentColor",
169
- strokeWidth: "2",
170
- strokeLinecap: "round",
171
- strokeLinejoin: "round",
172
- children: [
173
- /* @__PURE__ */ e("path", { d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" }),
174
- /* @__PURE__ */ e(
175
- "circle",
176
- {
177
- cx: "12",
178
- cy: "12",
179
- r: "3"
180
- }
181
- )
182
- ]
183
- }
184
- ), Ie = () => /* @__PURE__ */ n(
185
- "svg",
186
- {
187
- xmlns: "http://www.w3.org/2000/svg",
188
- width: "16",
189
- height: "16",
190
- viewBox: "0 0 24 24",
191
- fill: "none",
192
- stroke: "currentColor",
193
- strokeWidth: "2",
194
- strokeLinecap: "round",
195
- strokeLinejoin: "round",
196
- children: [
197
- /* @__PURE__ */ e("polyline", { points: "16 18 22 12 16 6" }),
198
- /* @__PURE__ */ e("polyline", { points: "8 6 2 12 8 18" })
199
- ]
200
- }
201
- ), Pe = () => /* @__PURE__ */ e(
202
- "svg",
203
- {
204
- xmlns: "http://www.w3.org/2000/svg",
205
- width: "16",
206
- height: "16",
207
- viewBox: "0 0 24 24",
208
- fill: "none",
209
- stroke: "currentColor",
210
- strokeWidth: "2",
211
- strokeLinecap: "round",
212
- strokeLinejoin: "round",
213
- children: /* @__PURE__ */ e("polyline", { points: "9 18 15 12 9 6" })
214
- }
215
- ), Re = () => /* @__PURE__ */ e(
216
- "svg",
217
- {
218
- xmlns: "http://www.w3.org/2000/svg",
219
- width: "16",
220
- height: "16",
221
- viewBox: "0 0 24 24",
222
- fill: "none",
223
- stroke: "currentColor",
224
- strokeWidth: "2",
225
- strokeLinecap: "round",
226
- strokeLinejoin: "round",
227
- children: /* @__PURE__ */ e("polyline", { points: "15 18 9 12 15 6" })
228
- }
229
- ), We = () => /* @__PURE__ */ e(
230
- "svg",
231
- {
232
- xmlns: "http://www.w3.org/2000/svg",
233
- width: "16",
234
- height: "16",
235
- viewBox: "0 0 24 24",
236
- fill: "none",
237
- stroke: "currentColor",
238
- strokeWidth: "2",
239
- strokeLinecap: "round",
240
- strokeLinejoin: "round",
241
- children: /* @__PURE__ */ e("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" })
242
- }
243
- ), Me = () => /* @__PURE__ */ n(
244
- "svg",
245
- {
246
- xmlns: "http://www.w3.org/2000/svg",
247
- viewBox: "0 0 24 24",
248
- width: "16",
249
- height: "16",
250
- fill: "none",
251
- stroke: "currentColor",
252
- strokeWidth: "2",
253
- strokeLinecap: "round",
254
- strokeLinejoin: "round",
255
- children: [
256
- /* @__PURE__ */ e("path", { d: "M21 12a9 9 0 0 0-9-9a9.75 9.75 0 0 0-6.74 2.74L3 8" }),
257
- /* @__PURE__ */ e("path", { d: "M3 3v5h5m-5 4a9 9 0 0 0 9 9a9.75 9.75 0 0 0 6.74-2.74L21 16" }),
258
- /* @__PURE__ */ e("path", { d: "M16 16h5v5" })
259
- ]
260
- }
261
- ), ze = () => /* @__PURE__ */ n(
262
- "svg",
263
- {
264
- xmlns: "http://www.w3.org/2000/svg",
265
- width: "16",
266
- height: "16",
267
- viewBox: "0 0 24 24",
268
- fill: "none",
269
- stroke: "currentColor",
270
- strokeWidth: "2",
271
- strokeLinecap: "round",
272
- strokeLinejoin: "round",
273
- children: [
274
- /* @__PURE__ */ e("path", { d: "m7.5 4.27 9 5.15" }),
275
- /* @__PURE__ */ e("path", { d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z" }),
276
- /* @__PURE__ */ e("path", { d: "m3.3 7 8.7 5 8.7-5" }),
277
- /* @__PURE__ */ e("path", { d: "M12 22V12" })
278
- ]
279
- }
280
- ), Z = D(
281
- ({ className: t, children: a, ...s }, l) => /* @__PURE__ */ e(
282
- "div",
283
- {
284
- ref: l,
285
- className: N("inline-flex rounded-md", t),
286
- role: "group",
287
- ...s,
288
- children: _.map(a, (i, f) => {
289
- if (ae(i)) {
290
- const r = f === 0, c = f === _.count(a) - 1;
291
- return ie(i, {
292
- className: N(
293
- // Remove rounded corners from all buttons
294
- "rounded-none",
295
- // First button: rounded left only (uses theme radius)
296
- r && "rounded-l-md",
297
- // Last button: rounded right only (uses theme radius)
298
- c && "rounded-r-md",
299
- // Remove left border from all except first, using theme border color
300
- !r && "border-l-0 -ml-px",
301
- i.props.className
302
- )
303
- });
304
- }
305
- return i;
306
- })
307
- }
308
- )
309
- );
310
- Z.displayName = "ButtonGroup";
311
- const je = () => /* @__PURE__ */ n(
312
- "svg",
313
- {
314
- xmlns: "http://www.w3.org/2000/svg",
315
- width: "16",
316
- height: "16",
317
- viewBox: "0 0 24 24",
318
- fill: "none",
319
- stroke: "currentColor",
320
- strokeWidth: "2",
321
- strokeLinecap: "round",
322
- strokeLinejoin: "round",
323
- children: [
324
- /* @__PURE__ */ e(
325
- "circle",
326
- {
327
- cx: "12",
328
- cy: "12",
329
- r: "4"
330
- }
331
- ),
332
- /* @__PURE__ */ e("path", { d: "M12 2v2" }),
333
- /* @__PURE__ */ e("path", { d: "M12 20v2" }),
334
- /* @__PURE__ */ e("path", { d: "m4.93 4.93 1.41 1.41" }),
335
- /* @__PURE__ */ e("path", { d: "m17.66 17.66 1.41 1.41" }),
336
- /* @__PURE__ */ e("path", { d: "M2 12h2" }),
337
- /* @__PURE__ */ e("path", { d: "M20 12h2" }),
338
- /* @__PURE__ */ e("path", { d: "m6.34 17.66-1.41 1.41" }),
339
- /* @__PURE__ */ e("path", { d: "m19.07 4.93-1.41 1.41" })
340
- ]
341
- }
342
- ), Ue = () => /* @__PURE__ */ e(
343
- "svg",
344
- {
345
- xmlns: "http://www.w3.org/2000/svg",
346
- width: "16",
347
- height: "16",
348
- viewBox: "0 0 24 24",
349
- fill: "none",
350
- stroke: "currentColor",
351
- strokeWidth: "2",
352
- strokeLinecap: "round",
353
- strokeLinejoin: "round",
354
- children: /* @__PURE__ */ e("path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" })
355
- }
356
- ), Ze = () => /* @__PURE__ */ n(
357
- "svg",
358
- {
359
- xmlns: "http://www.w3.org/2000/svg",
360
- width: "16",
361
- height: "16",
362
- viewBox: "0 0 24 24",
363
- fill: "none",
364
- stroke: "currentColor",
365
- strokeWidth: "2",
366
- strokeLinecap: "round",
367
- strokeLinejoin: "round",
368
- children: [
369
- /* @__PURE__ */ e(
370
- "rect",
371
- {
372
- width: "20",
373
- height: "14",
374
- x: "2",
375
- y: "3",
376
- rx: "2"
377
- }
378
- ),
379
- /* @__PURE__ */ e(
380
- "line",
381
- {
382
- x1: "8",
383
- x2: "16",
384
- y1: "21",
385
- y2: "21"
386
- }
387
- ),
388
- /* @__PURE__ */ e(
389
- "line",
390
- {
391
- x1: "12",
392
- x2: "12",
393
- y1: "17",
394
- y2: "21"
395
- }
396
- )
397
- ]
398
- }
399
- ), $e = ({
400
- theme: t,
401
- isSelected: a,
402
- isDark: s
403
- }) => {
404
- const l = s ? t.colors.dark : t.colors.light;
405
- return /* @__PURE__ */ n(
406
- "div",
407
- {
408
- className: N(
409
- "relative overflow-hidden rounded-lg border-2 transition-all",
410
- a ? "border-primary shadow-lg" : "border-border"
411
- ),
412
- style: { backgroundColor: l.background },
413
- children: [
414
- /* @__PURE__ */ n("div", { className: "p-3 space-y-2", children: [
415
- /* @__PURE__ */ e(
416
- "div",
417
- {
418
- className: "h-8 rounded-md",
419
- style: { backgroundColor: l.primary }
420
- }
421
- ),
422
- /* @__PURE__ */ n("div", { className: "flex gap-1", children: [
423
- /* @__PURE__ */ e(
424
- "div",
425
- {
426
- className: "h-6 flex-1 rounded",
427
- style: { backgroundColor: l.background }
428
- }
429
- ),
430
- /* @__PURE__ */ e(
431
- "div",
432
- {
433
- className: "h-6 flex-1 rounded",
434
- style: { backgroundColor: l.secondary }
435
- }
436
- ),
437
- /* @__PURE__ */ e(
438
- "div",
439
- {
440
- className: "h-6 flex-1 rounded",
441
- style: { backgroundColor: l.accent }
442
- }
443
- )
444
- ] }),
445
- /* @__PURE__ */ n("div", { className: "flex gap-1", children: [
446
- /* @__PURE__ */ e(
447
- "div",
448
- {
449
- className: "h-4 flex-1 rounded",
450
- style: { backgroundColor: l.muted }
451
- }
452
- ),
453
- /* @__PURE__ */ e(
454
- "div",
455
- {
456
- className: "h-4 flex-1 rounded",
457
- style: { backgroundColor: l.border }
458
- }
459
- )
460
- ] })
461
- ] }),
462
- /* @__PURE__ */ e(
463
- "div",
464
- {
465
- className: "absolute bottom-0 left-0 right-0 bg-background/90 backdrop-blur-sm px-2 py-1",
466
- style: { backgroundColor: l.background },
467
- children: /* @__PURE__ */ e(
468
- "p",
469
- {
470
- className: "text-xs font-medium text-center",
471
- style: t.fontFamily ? {
472
- fontFamily: t.fontFamily,
473
- letterSpacing: t.letterSpacing || "normal",
474
- textShadow: t.textShadow || "none"
475
- } : {},
476
- children: t.displayName
477
- }
478
- )
479
- }
480
- )
481
- ]
482
- }
483
- );
484
- }, _e = () => {
485
- const { t } = C("settings"), { settings: a, updateSetting: s } = S(), { config: l } = I(), i = a.appearance?.theme || "system", f = a.appearance?.themeName || "default", [r, c] = w([]);
486
- E(() => {
487
- l?.themes && l.themes.forEach((g) => {
488
- oe(g);
489
- }), c(le());
490
- }, [l]);
491
- const [u, v] = w(() => typeof window > "u" ? !1 : i === "dark" || i === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches);
492
- E(() => {
493
- if (typeof window > "u") return;
494
- const g = () => {
495
- v(
496
- i === "dark" || i === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches
497
- );
498
- };
499
- if (g(), i === "system") {
500
- const d = window.matchMedia("(prefers-color-scheme: dark)"), h = () => g();
501
- if (d.addEventListener)
502
- return d.addEventListener("change", h), () => d.removeEventListener("change", h);
503
- if (d.addListener)
504
- return d.addListener(h), () => d.removeListener(h);
505
- }
506
- }, [i]);
507
- const x = [
508
- { value: "light", label: t("appearance.themes.light"), icon: je },
509
- { value: "dark", label: t("appearance.themes.dark"), icon: Ue },
510
- { value: "system", label: t("appearance.themes.system"), icon: Ze }
511
- ];
512
- return /* @__PURE__ */ n("div", { className: "space-y-6", children: [
513
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [
514
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
515
- /* @__PURE__ */ e(
516
- "label",
517
- {
518
- className: "text-sm font-medium leading-none",
519
- style: { fontFamily: "var(--heading-font-family, inherit)" },
520
- children: t("appearance.mode")
521
- }
522
- ),
523
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("appearance.modeDescription") })
524
- ] }),
525
- /* @__PURE__ */ e("div", { className: "mt-2", children: /* @__PURE__ */ e(Z, { children: x.map((g) => {
526
- const d = g.icon, h = i === g.value;
527
- return /* @__PURE__ */ n(
528
- p,
529
- {
530
- variant: h ? "default" : "outline",
531
- onClick: () => {
532
- s("appearance", { theme: g.value });
533
- },
534
- className: N(
535
- "h-10 px-4 transition-all flex items-center gap-2 cursor-pointer",
536
- h && ["font-semibold"],
537
- !h && ["bg-background hover:bg-accent/50", "text-muted-foreground"]
538
- ),
539
- "aria-label": g.label,
540
- title: g.label,
541
- children: [
542
- /* @__PURE__ */ e(d, {}),
543
- /* @__PURE__ */ e("span", { className: "text-sm font-medium", children: g.label })
544
- ]
545
- },
546
- g.value
547
- );
548
- }) }) })
549
- ] }),
550
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [
551
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
552
- /* @__PURE__ */ e(
553
- "label",
554
- {
555
- className: "text-sm font-medium leading-none",
556
- style: { fontFamily: "var(--heading-font-family, inherit)" },
557
- children: t("appearance.colorTheme")
558
- }
559
- ),
560
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("appearance.colorThemeDescription") })
561
- ] }),
562
- /* @__PURE__ */ e("div", { className: "mt-2 grid grid-cols-2 md:grid-cols-3 gap-4", children: r.map((g) => {
563
- const d = f === g.name;
564
- return /* @__PURE__ */ e(
565
- "button",
566
- {
567
- onClick: () => {
568
- s("appearance", { themeName: g.name });
569
- },
570
- className: N(
571
- "text-left transition-all cursor-pointer",
572
- d && "ring-2 ring-primary ring-offset-2 rounded-lg"
573
- ),
574
- "aria-label": g.displayName,
575
- children: /* @__PURE__ */ e(
576
- $e,
577
- {
578
- theme: g,
579
- isSelected: d,
580
- isDark: u
581
- }
582
- )
583
- },
584
- g.name
585
- );
586
- }) })
587
- ] })
588
- ] });
589
- }, $ = D(
590
- ({ className: t, children: a, ...s }, l) => /* @__PURE__ */ e(
591
- "select",
592
- {
593
- className: N(
594
- "select-field flex h-10 w-full rounded-md border border-input bg-background pl-3 pr-10 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50",
595
- t
596
- ),
597
- ref: l,
598
- ...s,
599
- children: a
600
- }
601
- )
602
- );
603
- $.displayName = "Select";
604
- const He = () => /* @__PURE__ */ n(
605
- "svg",
606
- {
607
- xmlns: "http://www.w3.org/2000/svg",
608
- width: "16",
609
- height: "16",
610
- viewBox: "0 0 24 24",
611
- fill: "none",
612
- stroke: "currentColor",
613
- strokeWidth: "2",
614
- strokeLinecap: "round",
615
- strokeLinejoin: "round",
616
- children: [
617
- /* @__PURE__ */ e(
618
- "circle",
619
- {
620
- cx: "12",
621
- cy: "12",
622
- r: "10"
623
- }
624
- ),
625
- /* @__PURE__ */ e(
626
- "line",
627
- {
628
- x1: "2",
629
- x2: "22",
630
- y1: "12",
631
- y2: "12"
632
- }
633
- ),
634
- /* @__PURE__ */ e("path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
635
- ]
636
- }
637
- ), Ve = () => /* @__PURE__ */ n(
638
- "svg",
639
- {
640
- xmlns: "http://www.w3.org/2000/svg",
641
- width: "16",
642
- height: "16",
643
- viewBox: "0 0 24 24",
644
- fill: "none",
645
- stroke: "currentColor",
646
- strokeWidth: "2",
647
- strokeLinecap: "round",
648
- strokeLinejoin: "round",
649
- children: [
650
- /* @__PURE__ */ e(
651
- "circle",
652
- {
653
- cx: "12",
654
- cy: "12",
655
- r: "10"
656
- }
657
- ),
658
- /* @__PURE__ */ e("polyline", { points: "12 6 12 12 16 14" })
659
- ]
660
- }
661
- ), Ge = [
662
- {
663
- label: "UTC",
664
- timezones: [{ value: "UTC", label: "UTC (Coordinated Universal Time)" }]
665
- },
666
- {
667
- label: "North America",
668
- timezones: [
669
- { value: "America/New_York", label: "Eastern Time (US & Canada)" },
670
- { value: "America/Chicago", label: "Central Time (US & Canada)" },
671
- { value: "America/Denver", label: "Mountain Time (US & Canada)" },
672
- { value: "America/Los_Angeles", label: "Pacific Time (US & Canada)" },
673
- { value: "America/Toronto", label: "Toronto" },
674
- { value: "America/Vancouver", label: "Vancouver" },
675
- { value: "America/Mexico_City", label: "Mexico City" }
676
- ]
677
- },
678
- {
679
- label: "South America",
680
- timezones: [
681
- { value: "America/Sao_Paulo", label: "São Paulo" },
682
- { value: "America/Buenos_Aires", label: "Buenos Aires" }
683
- ]
684
- },
685
- {
686
- label: "Europe",
687
- timezones: [
688
- { value: "Europe/London", label: "London" },
689
- { value: "Europe/Paris", label: "Paris" },
690
- { value: "Europe/Berlin", label: "Berlin" },
691
- { value: "Europe/Rome", label: "Rome" },
692
- { value: "Europe/Madrid", label: "Madrid" },
693
- { value: "Europe/Amsterdam", label: "Amsterdam" },
694
- { value: "Europe/Stockholm", label: "Stockholm" },
695
- { value: "Europe/Zurich", label: "Zurich" }
696
- ]
697
- },
698
- {
699
- label: "Asia",
700
- timezones: [
701
- { value: "Asia/Tokyo", label: "Tokyo" },
702
- { value: "Asia/Shanghai", label: "Shanghai" },
703
- { value: "Asia/Hong_Kong", label: "Hong Kong" },
704
- { value: "Asia/Singapore", label: "Singapore" },
705
- { value: "Asia/Dubai", label: "Dubai" },
706
- { value: "Asia/Kolkata", label: "Mumbai, New Delhi" },
707
- { value: "Asia/Bangkok", label: "Bangkok" }
708
- ]
709
- },
710
- {
711
- label: "Australia & Pacific",
712
- timezones: [
713
- { value: "Australia/Sydney", label: "Sydney" },
714
- { value: "Australia/Melbourne", label: "Melbourne" },
715
- { value: "Pacific/Auckland", label: "Auckland" }
716
- ]
717
- }
718
- ], O = (t, a, s) => {
719
- try {
720
- return new Intl.DateTimeFormat(s, {
721
- timeZone: a,
722
- weekday: "long",
723
- year: "numeric",
724
- month: "long",
725
- day: "numeric"
726
- }).format(t);
727
- } catch {
728
- return t.toLocaleDateString(s);
729
- }
730
- }, K = (t, a, s) => {
731
- try {
732
- return new Intl.DateTimeFormat(s, {
733
- timeZone: a,
734
- hour: "2-digit",
735
- minute: "2-digit",
736
- second: "2-digit",
737
- hour12: !1
738
- }).format(t);
739
- } catch {
740
- return t.toLocaleTimeString(s);
741
- }
742
- }, Oe = () => typeof Intl < "u" ? Intl.DateTimeFormat().resolvedOptions().timeZone : "UTC", Ke = (t, a = "en") => {
743
- try {
744
- const i = new Intl.DateTimeFormat(a, {
745
- timeZone: t,
746
- timeZoneName: "long"
747
- }).formatToParts(/* @__PURE__ */ new Date()).find((r) => r.type === "timeZoneName")?.value;
748
- return i || t.split("/").pop()?.replace(/_/g, " ") || t;
749
- } catch {
750
- return t;
751
- }
752
- }, qe = () => {
753
- const { t } = C("settings"), { settings: a, updateSetting: s } = S(), { config: l } = I(), i = a.language?.code || "en", f = Oe(), r = a.region?.timezone || f, c = r === f, u = re(l?.language), v = () => {
754
- s("region", { timezone: f });
755
- }, [x, g] = w(() => {
756
- const d = /* @__PURE__ */ new Date();
757
- return {
758
- date: O(d, r, i),
759
- time: K(d, r, i)
760
- };
761
- });
762
- return E(() => {
763
- const d = () => {
764
- const y = /* @__PURE__ */ new Date();
765
- g({
766
- date: O(y, r, i),
767
- time: K(y, r, i)
768
- });
769
- };
770
- d();
771
- const h = setInterval(d, 1e3);
772
- return () => clearInterval(h);
773
- }, [r, i]), /* @__PURE__ */ n("div", { className: "space-y-6", children: [
774
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [
775
- /* @__PURE__ */ e(
776
- "label",
777
- {
778
- className: "text-sm font-medium leading-none",
779
- style: { fontFamily: "var(--heading-font-family, inherit)" },
780
- children: t("languageAndRegion.language")
781
- }
782
- ),
783
- /* @__PURE__ */ e("div", { className: "mt-2", children: /* @__PURE__ */ e(Z, { children: u.map((d) => {
784
- const h = i === d.code;
785
- return /* @__PURE__ */ n(
786
- p,
787
- {
788
- variant: h ? "default" : "outline",
789
- onClick: () => {
790
- s("language", { code: d.code });
791
- },
792
- className: N(
793
- "h-10 px-4 transition-all flex items-center gap-2",
794
- h && ["shadow-md", "font-semibold"],
795
- !h && ["bg-background hover:bg-accent/50", "text-muted-foreground"]
796
- ),
797
- "aria-label": d.nativeName,
798
- title: d.nativeName,
799
- children: [
800
- /* @__PURE__ */ e(He, {}),
801
- /* @__PURE__ */ e("span", { className: "text-sm font-medium", children: d.nativeName })
802
- ]
803
- },
804
- d.code
805
- );
806
- }) }) })
807
- ] }),
808
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [
809
- /* @__PURE__ */ n("div", { className: "flex items-center justify-between", children: [
810
- /* @__PURE__ */ e(
811
- "label",
812
- {
813
- className: "text-sm font-medium leading-none",
814
- style: { fontFamily: "var(--heading-font-family, inherit)" },
815
- children: t("languageAndRegion.region")
816
- }
817
- ),
818
- !c && /* @__PURE__ */ e(
819
- p,
820
- {
821
- variant: "ghost",
822
- size: "sm",
823
- onClick: v,
824
- className: "h-8 text-xs",
825
- children: t("languageAndRegion.resetToBrowser")
826
- }
827
- )
828
- ] }),
829
- /* @__PURE__ */ n("div", { className: "mt-2 space-y-3", children: [
830
- /* @__PURE__ */ e(
831
- $,
832
- {
833
- value: r,
834
- onChange: (d) => {
835
- s("region", { timezone: d.target.value });
836
- },
837
- className: "w-full",
838
- children: Ge.map((d) => /* @__PURE__ */ e(
839
- "optgroup",
840
- {
841
- label: d.label,
842
- children: d.timezones.map((h) => {
843
- const y = h.value === f;
844
- return /* @__PURE__ */ n(
845
- "option",
846
- {
847
- value: h.value,
848
- children: [
849
- h.label,
850
- y ? ` (${t("languageAndRegion.defaultBrowser")})` : ""
851
- ]
852
- },
853
- h.value
854
- );
855
- })
856
- },
857
- d.label
858
- ))
859
- }
860
- ),
861
- /* @__PURE__ */ n("div", { className: "flex items-center gap-2 px-3 py-2 rounded-md bg-muted/60 border border-border/50", children: [
862
- /* @__PURE__ */ e(Ve, {}),
863
- /* @__PURE__ */ n("div", { className: "flex items-baseline gap-2", children: [
864
- /* @__PURE__ */ e("span", { className: "text-lg font-semibold tabular-nums", children: x.time }),
865
- /* @__PURE__ */ e("span", { className: "text-xs text-muted-foreground", children: x.date })
866
- ] })
867
- ] }),
868
- /* @__PURE__ */ n("div", { className: "text-xs text-muted-foreground flex items-center gap-1", children: [
869
- /* @__PURE__ */ n("span", { children: [
870
- t("languageAndRegion.timezoneLabel"),
871
- ":"
872
- ] }),
873
- /* @__PURE__ */ e("span", { className: "font-medium", children: Ke(r, i) }),
874
- c && /* @__PURE__ */ n("span", { className: "ml-1", children: [
875
- "(",
876
- t("languageAndRegion.defaultBrowser"),
877
- ")"
878
- ] })
879
- ] })
880
- ] })
881
- ] })
882
- ] });
883
- }, Qe = Le("shellcore"), Ye = () => {
884
- const { t } = C("settings"), { config: a } = I(), { settings: s } = S(), [l, i] = w(!1), [f, r] = w(!1), [c, u] = w(!1), [v, x] = w(!1), g = s?.serviceWorker?.enabled ?? !0;
885
- E(() => B() ? void 0 : ((async () => {
886
- const b = await M();
887
- i(b.updateAvailable);
888
- })(), q((b) => {
889
- i(b.updateAvailable), b.updateAvailable && (u(!1), x(!1));
890
- })), []);
891
- const d = async () => {
892
- if (!B()) {
893
- u(!1), x(!1), r(!0);
894
- try {
895
- if ((await M()).updateAvailable)
896
- return;
897
- await ce(), await new Promise((o) => setTimeout(o, 1e3)), l || (await M()).updateAvailable || (u(!0), window.setTimeout(() => u(!1), 3e3));
898
- } catch (y) {
899
- x(!0), Qe.error("Failed to check for service worker update:", { error: y });
900
- } finally {
901
- r(!1);
902
- }
903
- }
904
- }, h = a?.version ?? t("updateApp.versionUnknown");
905
- return B() ? /* @__PURE__ */ e("div", { className: "space-y-6", children: /* @__PURE__ */ n("div", { className: "space-y-2", children: [
906
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
907
- /* @__PURE__ */ e(
908
- "label",
909
- {
910
- className: "text-sm font-medium leading-none",
911
- style: { fontFamily: "var(--heading-font-family, inherit)" },
912
- children: t("updateApp.currentVersion")
913
- }
914
- ),
915
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: h })
916
- ] }),
917
- /* @__PURE__ */ e("div", { className: "rounded-lg border border-border bg-muted/30 p-4", children: /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("updateApp.tauriComingSoon") }) })
918
- ] }) }) : /* @__PURE__ */ e("div", { className: "space-y-6", children: /* @__PURE__ */ n("div", { className: "space-y-4", children: [
919
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
920
- /* @__PURE__ */ e(
921
- "label",
922
- {
923
- className: "text-sm font-medium leading-none",
924
- style: { fontFamily: "var(--heading-font-family, inherit)" },
925
- children: t("updateApp.currentVersion")
926
- }
927
- ),
928
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: h })
929
- ] }),
930
- g ? /* @__PURE__ */ n(W, { children: [
931
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [
932
- /* @__PURE__ */ e(
933
- "label",
934
- {
935
- className: "text-sm font-medium leading-none",
936
- style: { fontFamily: "var(--heading-font-family, inherit)" },
937
- children: t("updateApp.status")
938
- }
939
- ),
940
- /* @__PURE__ */ e("div", { className: "flex items-center gap-2 text-sm mt-2", children: l ? /* @__PURE__ */ n("span", { className: "text-blue-600 dark:text-blue-400", children: [
941
- "● ",
942
- t("updateApp.statusUpdateAvailable")
943
- ] }) : /* @__PURE__ */ n("span", { className: "text-green-600 dark:text-green-400", children: [
944
- "● ",
945
- t("updateApp.statusUpToDate")
946
- ] }) })
947
- ] }),
948
- /* @__PURE__ */ n("div", { className: "flex items-center gap-2 flex-wrap", children: [
949
- l && /* @__PURE__ */ e(
950
- p,
951
- {
952
- variant: "default",
953
- onClick: async () => {
954
- await Q();
955
- },
956
- className: "w-full sm:w-auto",
957
- children: t("updateApp.installNow")
958
- }
959
- ),
960
- /* @__PURE__ */ e(
961
- p,
962
- {
963
- variant: "outline",
964
- onClick: d,
965
- disabled: f || l,
966
- className: "w-full sm:w-auto",
967
- children: f ? /* @__PURE__ */ n(W, { children: [
968
- /* @__PURE__ */ e(
969
- "span",
970
- {
971
- className: "inline-block h-4 w-4 shrink-0 animate-spin rounded-full border-2 border-current border-t-transparent mr-2",
972
- "aria-hidden": !0
973
- }
974
- ),
975
- t("updateApp.checking")
976
- ] }) : v ? /* @__PURE__ */ e("span", { className: "inline-flex items-center gap-2 text-red-600 dark:text-red-400", children: t("updateApp.checkError") }) : c && !l ? /* @__PURE__ */ n("span", { className: "inline-flex items-center gap-2 text-green-600 dark:text-green-400", children: [
977
- /* @__PURE__ */ e(Ee, {}),
978
- t("updateApp.youAreUpToDate")
979
- ] }) : t("updateApp.checkForUpdate")
980
- }
981
- )
982
- ] })
983
- ] }) : /* @__PURE__ */ n("div", { className: "space-y-3", children: [
984
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("updateApp.swDisabledMessage") }),
985
- /* @__PURE__ */ e(
986
- p,
987
- {
988
- variant: "outline",
989
- onClick: () => {
990
- m.sendMessageToParent({
991
- type: "SHELLUI_REFRESH_PAGE",
992
- payload: {}
993
- }) || window.location.reload();
994
- },
995
- className: "w-full sm:w-auto",
996
- children: t("updateApp.refreshApp")
997
- }
998
- )
999
- ] })
1000
- ] }) });
1001
- }, Je = () => {
1002
- const { t } = C("settings"), { config: a } = I(), { settings: s, updateSetting: l, resetAllData: i } = S(), f = !!a?.sentry?.dsn, r = (u) => {
1003
- l("errorReporting", { enabled: u }), u ? de() : me();
1004
- }, c = () => {
1005
- m.dialog({
1006
- title: t("advanced.dangerZone.reset.toast.title"),
1007
- description: t("advanced.dangerZone.reset.toast.description"),
1008
- mode: "delete",
1009
- size: "sm",
1010
- okLabel: t("advanced.dangerZone.reset.toast.confirm"),
1011
- cancelLabel: t("advanced.dangerZone.reset.toast.cancel"),
1012
- onOk: () => {
1013
- i(), m.toast({
1014
- title: t("advanced.dangerZone.reset.toast.success.title"),
1015
- description: t("advanced.dangerZone.reset.toast.success.description"),
1016
- type: "success"
1017
- }), m.navigate("/");
1018
- },
1019
- onCancel: () => {
1020
- }
1021
- });
1022
- };
1023
- return /* @__PURE__ */ n("div", { className: "space-y-4", children: [
1024
- /* @__PURE__ */ n("div", { className: "flex items-center justify-between", children: [
1025
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
1026
- /* @__PURE__ */ e(
1027
- "span",
1028
- {
1029
- className: "text-sm font-medium leading-none",
1030
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1031
- children: t("advanced.errorReporting.label")
1032
- }
1033
- ),
1034
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t(f ? "advanced.errorReporting.statusConfigured" : "advanced.errorReporting.statusNotConfigured") })
1035
- ] }),
1036
- f && /* @__PURE__ */ e(
1037
- z,
1038
- {
1039
- id: "error-reporting",
1040
- checked: s.errorReporting.enabled,
1041
- onCheckedChange: r
1042
- }
1043
- )
1044
- ] }),
1045
- /* @__PURE__ */ n("div", { className: "flex items-center justify-between", children: [
1046
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
1047
- /* @__PURE__ */ e(
1048
- "label",
1049
- {
1050
- htmlFor: "developer-features",
1051
- className: "text-sm font-medium leading-none",
1052
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1053
- children: t("advanced.developerFeatures.label")
1054
- }
1055
- ),
1056
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("advanced.developerFeatures.description") })
1057
- ] }),
1058
- /* @__PURE__ */ e(
1059
- z,
1060
- {
1061
- id: "developer-features",
1062
- checked: s.developerFeatures.enabled,
1063
- onCheckedChange: (u) => l("developerFeatures", { enabled: u })
1064
- }
1065
- )
1066
- ] }),
1067
- /* @__PURE__ */ e("div", { className: "border-t pt-6 mt-6", children: /* @__PURE__ */ n("div", { className: "space-y-4", children: [
1068
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
1069
- /* @__PURE__ */ e(
1070
- "h3",
1071
- {
1072
- className: "text-sm font-semibold leading-none text-destructive",
1073
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1074
- children: t("advanced.dangerZone.title")
1075
- }
1076
- ),
1077
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("advanced.dangerZone.description") })
1078
- ] }),
1079
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [
1080
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
1081
- /* @__PURE__ */ e(
1082
- "label",
1083
- {
1084
- className: "text-sm font-medium leading-none",
1085
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1086
- children: t("advanced.dangerZone.reset.title")
1087
- }
1088
- ),
1089
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("advanced.dangerZone.reset.warning") })
1090
- ] }),
1091
- /* @__PURE__ */ e(
1092
- p,
1093
- {
1094
- variant: "destructive",
1095
- onClick: c,
1096
- className: "w-full sm:w-auto",
1097
- children: t("advanced.dangerZone.reset.button")
1098
- }
1099
- )
1100
- ] })
1101
- ] }) })
1102
- ] });
1103
- }, Xe = () => {
1104
- const { t } = C("settings");
1105
- return /* @__PURE__ */ n("div", { children: [
1106
- /* @__PURE__ */ e(
1107
- "h4",
1108
- {
1109
- className: "text-sm font-medium mb-2",
1110
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1111
- children: t("develop.testing.toastNotifications.title")
1112
- }
1113
- ),
1114
- /* @__PURE__ */ n("div", { className: "flex flex-wrap gap-2", children: [
1115
- /* @__PURE__ */ e(
1116
- p,
1117
- {
1118
- onClick: () => {
1119
- m.toast({
1120
- title: t("develop.testing.toastNotifications.messages.success.title"),
1121
- description: t("develop.testing.toastNotifications.messages.success.description"),
1122
- type: "success"
1123
- });
1124
- },
1125
- variant: "outline",
1126
- children: t("develop.testing.toastNotifications.buttons.success")
1127
- }
1128
- ),
1129
- /* @__PURE__ */ e(
1130
- p,
1131
- {
1132
- onClick: () => {
1133
- m.toast({
1134
- title: t("develop.testing.toastNotifications.messages.error.title"),
1135
- description: t("develop.testing.toastNotifications.messages.error.description"),
1136
- type: "error"
1137
- });
1138
- },
1139
- variant: "outline",
1140
- children: t("develop.testing.toastNotifications.buttons.error")
1141
- }
1142
- ),
1143
- /* @__PURE__ */ e(
1144
- p,
1145
- {
1146
- onClick: () => {
1147
- m.toast({
1148
- title: t("develop.testing.toastNotifications.messages.warning.title"),
1149
- description: t("develop.testing.toastNotifications.messages.warning.description"),
1150
- type: "warning"
1151
- });
1152
- },
1153
- variant: "outline",
1154
- children: t("develop.testing.toastNotifications.buttons.warning")
1155
- }
1156
- ),
1157
- /* @__PURE__ */ e(
1158
- p,
1159
- {
1160
- onClick: () => {
1161
- m.toast({
1162
- title: t("develop.testing.toastNotifications.messages.info.title"),
1163
- description: t("develop.testing.toastNotifications.messages.info.description"),
1164
- type: "info"
1165
- });
1166
- },
1167
- variant: "outline",
1168
- children: t("develop.testing.toastNotifications.buttons.info")
1169
- }
1170
- ),
1171
- /* @__PURE__ */ e(
1172
- p,
1173
- {
1174
- onClick: () => {
1175
- m.toast({
1176
- title: t("develop.testing.toastNotifications.messages.default.title"),
1177
- description: t("develop.testing.toastNotifications.messages.default.description"),
1178
- type: "default"
1179
- });
1180
- },
1181
- variant: "outline",
1182
- children: t("develop.testing.toastNotifications.buttons.default")
1183
- }
1184
- ),
1185
- /* @__PURE__ */ e(
1186
- p,
1187
- {
1188
- onClick: () => {
1189
- const a = m.toast({
1190
- title: t("develop.testing.toastNotifications.messages.processing.title"),
1191
- description: t("develop.testing.toastNotifications.messages.processing.description"),
1192
- type: "loading"
1193
- });
1194
- typeof a == "string" && setTimeout(() => {
1195
- m.toast({
1196
- id: a,
1197
- type: "success",
1198
- title: t("develop.testing.toastNotifications.messages.uploadComplete.title"),
1199
- description: t(
1200
- "develop.testing.toastNotifications.messages.uploadComplete.description"
1201
- )
1202
- });
1203
- }, 2e3);
1204
- },
1205
- variant: "outline",
1206
- children: t("develop.testing.toastNotifications.buttons.loadingSuccess")
1207
- }
1208
- ),
1209
- /* @__PURE__ */ e(
1210
- p,
1211
- {
1212
- onClick: () => {
1213
- m.toast({
1214
- title: t("develop.testing.toastNotifications.messages.withAction.title"),
1215
- description: t("develop.testing.toastNotifications.messages.withAction.description"),
1216
- type: "success",
1217
- action: {
1218
- label: t("develop.testing.toastNotifications.messages.actionLabels.undo"),
1219
- onClick: () => {
1220
- m.toast({
1221
- title: t("develop.testing.toastNotifications.messages.undone.title"),
1222
- description: t(
1223
- "develop.testing.toastNotifications.messages.undone.description"
1224
- ),
1225
- type: "info"
1226
- });
1227
- }
1228
- }
1229
- });
1230
- },
1231
- variant: "outline",
1232
- children: t("develop.testing.toastNotifications.buttons.withAction")
1233
- }
1234
- ),
1235
- /* @__PURE__ */ e(
1236
- p,
1237
- {
1238
- onClick: () => {
1239
- m.toast({
1240
- title: t("develop.testing.toastNotifications.messages.withAction.title"),
1241
- description: t("develop.testing.toastNotifications.messages.withAction.description"),
1242
- type: "success",
1243
- action: {
1244
- label: t("develop.testing.toastNotifications.messages.actionLabels.undo"),
1245
- onClick: () => {
1246
- m.toast({
1247
- title: t("develop.testing.toastNotifications.messages.undone.title"),
1248
- description: t(
1249
- "develop.testing.toastNotifications.messages.undone.description"
1250
- ),
1251
- type: "info"
1252
- });
1253
- }
1254
- },
1255
- cancel: {
1256
- label: t("develop.testing.toastNotifications.messages.actionLabels.cancel"),
1257
- onClick: () => {
1258
- m.toast({
1259
- title: t("develop.testing.toastNotifications.messages.cancelled.title"),
1260
- description: t(
1261
- "develop.testing.toastNotifications.messages.cancelled.description"
1262
- ),
1263
- type: "info"
1264
- });
1265
- }
1266
- }
1267
- });
1268
- },
1269
- variant: "outline",
1270
- children: t("develop.testing.toastNotifications.buttons.withActionAndCancel")
1271
- }
1272
- ),
1273
- /* @__PURE__ */ e(
1274
- p,
1275
- {
1276
- onClick: () => {
1277
- m.toast({
1278
- title: t("develop.testing.toastNotifications.messages.persistent.title"),
1279
- description: t("develop.testing.toastNotifications.messages.persistent.description"),
1280
- type: "info",
1281
- duration: 1e4
1282
- });
1283
- },
1284
- variant: "outline",
1285
- children: t("develop.testing.toastNotifications.buttons.longDuration")
1286
- }
1287
- )
1288
- ] })
1289
- ] });
1290
- }, et = () => {
1291
- const { t } = C("settings");
1292
- return /* @__PURE__ */ n("div", { children: [
1293
- /* @__PURE__ */ e(
1294
- "h4",
1295
- {
1296
- className: "text-sm font-medium mb-2",
1297
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1298
- children: t("develop.testing.dialogTesting.title")
1299
- }
1300
- ),
1301
- /* @__PURE__ */ n("div", { className: "flex flex-wrap gap-2", children: [
1302
- /* @__PURE__ */ e(
1303
- p,
1304
- {
1305
- onClick: () => {
1306
- m.dialog({
1307
- title: t("develop.testing.dialogTesting.dialogs.ok.title"),
1308
- description: t("develop.testing.dialogTesting.dialogs.ok.description"),
1309
- mode: "ok",
1310
- onOk: () => {
1311
- m.toast({
1312
- title: t("develop.testing.dialogTesting.toasts.okClicked"),
1313
- type: "success"
1314
- });
1315
- }
1316
- });
1317
- },
1318
- variant: "outline",
1319
- children: t("develop.testing.dialogTesting.buttons.okDialog")
1320
- }
1321
- ),
1322
- /* @__PURE__ */ e(
1323
- p,
1324
- {
1325
- onClick: () => {
1326
- m.dialog({
1327
- title: t("develop.testing.dialogTesting.dialogs.okCancel.title"),
1328
- description: t("develop.testing.dialogTesting.dialogs.okCancel.description"),
1329
- mode: "okCancel",
1330
- size: "sm",
1331
- onOk: () => {
1332
- m.toast({
1333
- title: t("develop.testing.dialogTesting.toasts.okClicked"),
1334
- type: "success"
1335
- });
1336
- },
1337
- onCancel: () => {
1338
- m.toast({
1339
- title: t("develop.testing.dialogTesting.toasts.cancelClicked"),
1340
- type: "info"
1341
- });
1342
- }
1343
- });
1344
- },
1345
- variant: "outline",
1346
- children: t("develop.testing.dialogTesting.buttons.okCancelDialog")
1347
- }
1348
- ),
1349
- /* @__PURE__ */ e(
1350
- p,
1351
- {
1352
- onClick: () => {
1353
- m.dialog({
1354
- title: t("develop.testing.dialogTesting.dialogs.delete.title"),
1355
- description: t("develop.testing.dialogTesting.dialogs.delete.description"),
1356
- mode: "delete",
1357
- okLabel: t("develop.testing.dialogTesting.dialogs.delete.okLabel"),
1358
- cancelLabel: t("develop.testing.dialogTesting.dialogs.delete.cancelLabel"),
1359
- size: "sm",
1360
- onOk: () => {
1361
- m.toast({
1362
- title: t("develop.testing.dialogTesting.toasts.itemDeleted"),
1363
- type: "success"
1364
- });
1365
- },
1366
- onCancel: () => {
1367
- m.toast({
1368
- title: t("develop.testing.dialogTesting.toasts.deletionCancelled"),
1369
- type: "info"
1370
- });
1371
- }
1372
- });
1373
- },
1374
- variant: "outline",
1375
- children: t("develop.testing.dialogTesting.buttons.deleteDialog")
1376
- }
1377
- ),
1378
- /* @__PURE__ */ e(
1379
- p,
1380
- {
1381
- onClick: () => {
1382
- m.dialog({
1383
- title: t("develop.testing.dialogTesting.dialogs.confirm.title"),
1384
- description: t("develop.testing.dialogTesting.dialogs.confirm.description"),
1385
- mode: "confirm",
1386
- okLabel: t("develop.testing.dialogTesting.dialogs.confirm.okLabel"),
1387
- cancelLabel: t("develop.testing.dialogTesting.dialogs.confirm.cancelLabel"),
1388
- size: "sm",
1389
- onOk: () => {
1390
- m.toast({
1391
- title: t("develop.testing.dialogTesting.toasts.actionConfirmed"),
1392
- type: "success"
1393
- });
1394
- },
1395
- onCancel: () => {
1396
- m.toast({
1397
- title: t("develop.testing.dialogTesting.toasts.actionCancelled"),
1398
- type: "info"
1399
- });
1400
- }
1401
- });
1402
- },
1403
- variant: "outline",
1404
- children: t("develop.testing.dialogTesting.buttons.confirmDialog")
1405
- }
1406
- ),
1407
- /* @__PURE__ */ e(
1408
- p,
1409
- {
1410
- onClick: () => {
1411
- m.dialog({
1412
- title: t("develop.testing.dialogTesting.dialogs.onlyCancel.title"),
1413
- description: t("develop.testing.dialogTesting.dialogs.onlyCancel.description"),
1414
- mode: "onlyCancel",
1415
- cancelLabel: t("develop.testing.dialogTesting.dialogs.onlyCancel.cancelLabel"),
1416
- size: "sm",
1417
- onCancel: () => {
1418
- m.toast({
1419
- title: t("develop.testing.dialogTesting.toasts.dialogClosed"),
1420
- type: "info"
1421
- });
1422
- }
1423
- });
1424
- },
1425
- variant: "outline",
1426
- children: t("develop.testing.dialogTesting.buttons.onlyCancelDialog")
1427
- }
1428
- )
1429
- ] })
1430
- ] });
1431
- }, tt = () => {
1432
- const { t } = C("settings");
1433
- return /* @__PURE__ */ n("div", { children: [
1434
- /* @__PURE__ */ e(
1435
- "h4",
1436
- {
1437
- className: "text-sm font-medium mb-2",
1438
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1439
- children: t("develop.testing.modalTesting.title")
1440
- }
1441
- ),
1442
- /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-2", children: /* @__PURE__ */ e(
1443
- p,
1444
- {
1445
- onClick: () => m.openModal(L.settings),
1446
- variant: "outline",
1447
- children: t("develop.testing.modalTesting.buttons.openModal")
1448
- }
1449
- ) }),
1450
- /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground mt-2", children: t("develop.testing.modalTesting.description") })
1451
- ] });
1452
- }, nt = () => {
1453
- const { t } = C("settings"), a = (s) => {
1454
- m.openDrawer({ url: L.settings, ...s });
1455
- };
1456
- return /* @__PURE__ */ n("div", { children: [
1457
- /* @__PURE__ */ e(
1458
- "h4",
1459
- {
1460
- className: "text-sm font-medium mb-2",
1461
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1462
- children: t("develop.testing.drawerTesting.title")
1463
- }
1464
- ),
1465
- /* @__PURE__ */ n("div", { className: "flex flex-wrap gap-2", children: [
1466
- /* @__PURE__ */ e(
1467
- p,
1468
- {
1469
- onClick: () => a({ position: "right" }),
1470
- variant: "outline",
1471
- children: t("develop.testing.drawerTesting.buttons.drawerRight")
1472
- }
1473
- ),
1474
- /* @__PURE__ */ e(
1475
- p,
1476
- {
1477
- onClick: () => a({ position: "left" }),
1478
- variant: "outline",
1479
- children: t("develop.testing.drawerTesting.buttons.drawerLeft")
1480
- }
1481
- ),
1482
- /* @__PURE__ */ e(
1483
- p,
1484
- {
1485
- onClick: () => a({ position: "top" }),
1486
- variant: "outline",
1487
- children: t("develop.testing.drawerTesting.buttons.drawerTop")
1488
- }
1489
- ),
1490
- /* @__PURE__ */ e(
1491
- p,
1492
- {
1493
- onClick: () => a({ position: "bottom" }),
1494
- variant: "outline",
1495
- children: t("develop.testing.drawerTesting.buttons.drawerBottom")
1496
- }
1497
- ),
1498
- /* @__PURE__ */ e(
1499
- p,
1500
- {
1501
- onClick: () => a({ position: "right", size: "400px" }),
1502
- variant: "outline",
1503
- children: t("develop.testing.drawerTesting.buttons.drawerRightNarrow")
1504
- }
1505
- ),
1506
- /* @__PURE__ */ e(
1507
- p,
1508
- {
1509
- onClick: () => a({ position: "bottom", size: "60vh" }),
1510
- variant: "outline",
1511
- children: t("develop.testing.drawerTesting.buttons.drawerBottomHalf")
1512
- }
1513
- ),
1514
- /* @__PURE__ */ e(
1515
- p,
1516
- {
1517
- onClick: () => m.closeDrawer(),
1518
- variant: "outline",
1519
- children: t("develop.testing.drawerTesting.buttons.closeDrawer")
1520
- }
1521
- )
1522
- ] })
1523
- ] });
1524
- }, at = () => {
1525
- const { t } = C("settings"), { settings: a, updateSetting: s } = S(), { config: l } = I(), i = a.language?.code || "en", f = a.layout ?? l?.layout ?? "sidebar", r = l?.navigation?.length ? ge(l?.navigation ?? []).filter(
1526
- (c, u, v) => u === v.findIndex((x) => x.path === c.path)
1527
- ) : [];
1528
- return /* @__PURE__ */ n("div", { className: "space-y-6", children: [
1529
- /* @__PURE__ */ n("div", { children: [
1530
- /* @__PURE__ */ e(
1531
- "h3",
1532
- {
1533
- className: "text-lg font-semibold mb-2",
1534
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1535
- children: t("develop.logging.title")
1536
- }
1537
- ),
1538
- /* @__PURE__ */ n("div", { className: "space-y-4", children: [
1539
- /* @__PURE__ */ n("div", { className: "flex items-center justify-between", children: [
1540
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
1541
- /* @__PURE__ */ e(
1542
- "label",
1543
- {
1544
- htmlFor: "log-shellsdk",
1545
- className: "text-sm font-medium leading-none",
1546
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1547
- children: t("develop.logging.shellsdk.label")
1548
- }
1549
- ),
1550
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("develop.logging.shellsdk.description") })
1551
- ] }),
1552
- /* @__PURE__ */ e(
1553
- z,
1554
- {
1555
- id: "log-shellsdk",
1556
- checked: a.logging?.namespaces?.shellsdk || !1,
1557
- onCheckedChange: (c) => s("logging", {
1558
- namespaces: {
1559
- ...a.logging?.namespaces,
1560
- shellsdk: c
1561
- }
1562
- })
1563
- }
1564
- )
1565
- ] }),
1566
- /* @__PURE__ */ n("div", { className: "flex items-center justify-between", children: [
1567
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
1568
- /* @__PURE__ */ e(
1569
- "label",
1570
- {
1571
- htmlFor: "log-shellcore",
1572
- className: "text-sm font-medium leading-none",
1573
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1574
- children: t("develop.logging.shellcore.label")
1575
- }
1576
- ),
1577
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("develop.logging.shellcore.description") })
1578
- ] }),
1579
- /* @__PURE__ */ e(
1580
- z,
1581
- {
1582
- id: "log-shellcore",
1583
- checked: a.logging?.namespaces?.shellcore || !1,
1584
- onCheckedChange: (c) => s("logging", {
1585
- namespaces: {
1586
- ...a.logging?.namespaces,
1587
- shellcore: c
1588
- }
1589
- })
1590
- }
1591
- )
1592
- ] })
1593
- ] })
1594
- ] }),
1595
- /* @__PURE__ */ n("div", { children: [
1596
- /* @__PURE__ */ e(
1597
- "h3",
1598
- {
1599
- className: "text-lg font-semibold mb-2",
1600
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1601
- children: t("develop.navigation.title")
1602
- }
1603
- ),
1604
- r.length ? /* @__PURE__ */ n("div", { className: "space-y-2", children: [
1605
- /* @__PURE__ */ e(
1606
- "label",
1607
- {
1608
- htmlFor: "develop-nav-select",
1609
- className: "text-sm font-medium leading-none",
1610
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1611
- children: t("develop.navigation.selectLabel")
1612
- }
1613
- ),
1614
- /* @__PURE__ */ e("div", { className: "mt-2", children: /* @__PURE__ */ n(
1615
- $,
1616
- {
1617
- id: "develop-nav-select",
1618
- defaultValue: "",
1619
- onChange: (c) => {
1620
- const u = c.target.value;
1621
- u && m.navigate(u.startsWith("/") ? u : `/${u}`);
1622
- },
1623
- children: [
1624
- /* @__PURE__ */ e("option", { value: "", children: t("develop.navigation.placeholder") }),
1625
- r.map((c) => /* @__PURE__ */ e(
1626
- "option",
1627
- {
1628
- value: `/${c.path}`,
1629
- children: ue(c.label, i) || c.path
1630
- },
1631
- c.path
1632
- ))
1633
- ]
1634
- }
1635
- ) })
1636
- ] }) : /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("develop.navigation.empty") })
1637
- ] }),
1638
- /* @__PURE__ */ n("div", { children: [
1639
- /* @__PURE__ */ e(
1640
- "h3",
1641
- {
1642
- className: "text-lg font-semibold mb-2",
1643
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1644
- children: t("develop.layout.title")
1645
- }
1646
- ),
1647
- /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-2", children: ["sidebar", "windows"].map((c) => /* @__PURE__ */ e(
1648
- p,
1649
- {
1650
- variant: f === c ? "default" : "outline",
1651
- size: "sm",
1652
- onClick: () => s("layout", c),
1653
- children: t(`develop.layout.${c}`)
1654
- },
1655
- c
1656
- )) })
1657
- ] }),
1658
- /* @__PURE__ */ n("div", { children: [
1659
- /* @__PURE__ */ e(
1660
- "h3",
1661
- {
1662
- className: "text-lg font-semibold mb-2",
1663
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1664
- children: t("develop.testing.title")
1665
- }
1666
- ),
1667
- /* @__PURE__ */ n("div", { className: "space-y-4", children: [
1668
- /* @__PURE__ */ e(Xe, {}),
1669
- /* @__PURE__ */ e(et, {}),
1670
- /* @__PURE__ */ e(tt, {}),
1671
- /* @__PURE__ */ e(nt, {})
1672
- ] })
1673
- ] })
1674
- ] });
1675
- }, it = () => {
1676
- const { t } = C("settings"), { config: a } = I(), { settings: s, updateSetting: l } = S(), i = a?.cookieConsent?.cookies ?? [], f = i.length > 0, r = !!s?.cookieConsent?.consentedCookieHosts?.length, c = s?.cookieConsent?.acceptedHosts ?? [], u = i.map((y) => y.host), v = i.filter((y) => y.category === "strict_necessary").map((y) => y.host), x = r && c.length === u.length && u.every((y) => c.includes(y)), g = r && c.length === v.length && v.every((y) => c.includes(y)) && !c.some((y) => !v.includes(y)), d = r && !x && !g, h = () => {
1677
- l("cookieConsent", {
1678
- acceptedHosts: [],
1679
- consentedCookieHosts: []
1680
- });
1681
- };
1682
- return /* @__PURE__ */ e("div", { className: "space-y-6", children: f ? /* @__PURE__ */ n("div", { className: "space-y-2", children: [
1683
- /* @__PURE__ */ e(
1684
- "label",
1685
- {
1686
- className: "text-sm font-medium leading-none",
1687
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1688
- children: t("dataPrivacy.cookieConsent.title")
1689
- }
1690
- ),
1691
- /* @__PURE__ */ n("div", { className: "mt-2 space-y-3", children: [
1692
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t(r ? x ? "dataPrivacy.cookieConsent.statusAcceptedAll" : g ? "dataPrivacy.cookieConsent.statusRejectedAll" : "dataPrivacy.cookieConsent.statusCustom" : "dataPrivacy.cookieConsent.descriptionNotConsented") }),
1693
- r && /* @__PURE__ */ n("div", { className: "flex items-center gap-2 text-sm mt-2", children: [
1694
- /* @__PURE__ */ e(
1695
- "span",
1696
- {
1697
- className: N(
1698
- "px-2 py-1 rounded-md text-xs font-medium transition-colors",
1699
- x ? "bg-primary/10 text-primary border border-primary/20" : "text-muted-foreground"
1700
- ),
1701
- children: t("dataPrivacy.cookieConsent.labelAcceptedAll")
1702
- }
1703
- ),
1704
- /* @__PURE__ */ e("span", { className: "text-muted-foreground/30", children: "|" }),
1705
- /* @__PURE__ */ e(
1706
- "span",
1707
- {
1708
- className: N(
1709
- "px-2 py-1 rounded-md text-xs font-medium transition-colors",
1710
- d ? "bg-muted text-muted-foreground border border-border" : "text-muted-foreground"
1711
- ),
1712
- children: t("dataPrivacy.cookieConsent.labelCustom")
1713
- }
1714
- ),
1715
- /* @__PURE__ */ e("span", { className: "text-muted-foreground/30", children: "|" }),
1716
- /* @__PURE__ */ e(
1717
- "span",
1718
- {
1719
- className: N(
1720
- "px-2 py-1 rounded-md text-xs font-medium transition-colors",
1721
- g ? "bg-muted text-muted-foreground border border-border" : "text-muted-foreground"
1722
- ),
1723
- children: t("dataPrivacy.cookieConsent.labelRejectedAll")
1724
- }
1725
- )
1726
- ] }),
1727
- /* @__PURE__ */ n("div", { className: "flex flex-wrap gap-2", children: [
1728
- /* @__PURE__ */ e(
1729
- p,
1730
- {
1731
- variant: "outline",
1732
- onClick: () => m.openDrawer({ url: L.cookiePreferences, size: "420px" }),
1733
- className: "w-full sm:w-auto",
1734
- children: t("dataPrivacy.cookieConsent.manageButton")
1735
- }
1736
- ),
1737
- /* @__PURE__ */ e(
1738
- p,
1739
- {
1740
- variant: "ghost",
1741
- onClick: h,
1742
- disabled: !r,
1743
- className: "w-full sm:w-auto",
1744
- children: t("dataPrivacy.cookieConsent.button")
1745
- }
1746
- )
1747
- ] })
1748
- ] })
1749
- ] }) : /* @__PURE__ */ n("div", { className: "rounded-lg border bg-card p-4 space-y-3", children: [
1750
- /* @__PURE__ */ n("div", { className: "space-y-1", children: [
1751
- /* @__PURE__ */ e(
1752
- "h3",
1753
- {
1754
- className: "text-sm font-medium leading-none",
1755
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1756
- children: t("dataPrivacy.noCookiesConfigured.title")
1757
- }
1758
- ),
1759
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("dataPrivacy.noCookiesConfigured.description") })
1760
- ] }),
1761
- /* @__PURE__ */ n("div", { className: "flex items-start gap-2 text-sm", children: [
1762
- /* @__PURE__ */ e("span", { className: "text-green-600 dark:text-green-400 mt-0.5", children: "✓" }),
1763
- /* @__PURE__ */ e("span", { className: "text-muted-foreground", children: t("dataPrivacy.noCookiesConfigured.info") })
1764
- ] })
1765
- ] }) });
1766
- }, st = () => {
1767
- const { t } = C("settings"), { settings: a, updateSetting: s } = S(), [l, i] = w(!1), [f, r] = w(!1), [c, u] = w(!0), [v, x] = w(!0), g = a?.serviceWorker?.enabled ?? !0;
1768
- E(() => {
1769
- if (!g) {
1770
- i(!1), r(!1), u(!1), x(!0);
1771
- return;
1772
- }
1773
- const o = async () => {
1774
- if (!(a?.serviceWorker?.enabled ?? !0)) {
1775
- u(!1);
1776
- return;
1777
- }
1778
- u(!0);
1779
- const P = await V();
1780
- if (!(a?.serviceWorker?.enabled ?? !0)) {
1781
- u(!1);
1782
- return;
1783
- }
1784
- if (x(P), P) {
1785
- const F = await M();
1786
- (a?.serviceWorker?.enabled ?? !0) && (i(F.registered), r(F.updateAvailable));
1787
- } else
1788
- (a?.serviceWorker?.enabled ?? !0) && (i(!1), r(!1));
1789
- u(!1);
1790
- }, b = async () => {
1791
- if (!(a?.serviceWorker?.enabled ?? !0))
1792
- return;
1793
- const P = await V();
1794
- if (a?.serviceWorker?.enabled ?? !0)
1795
- if (x(P), P) {
1796
- const F = await M();
1797
- (a?.serviceWorker?.enabled ?? !0) && (i(F.registered), r(F.updateAvailable));
1798
- } else
1799
- (a?.serviceWorker?.enabled ?? !0) && (i(!1), r(!1));
1800
- };
1801
- o();
1802
- const k = q((T) => {
1803
- (a?.serviceWorker?.enabled ?? !0) && (i(T.registered), r(T.updateAvailable), u(!1));
1804
- }), A = setInterval(b, 3e4);
1805
- return () => {
1806
- k(), clearInterval(A);
1807
- };
1808
- }, [g]);
1809
- const d = async (o) => {
1810
- o || (i(!1), r(!1), x(!0), u(!1)), s("serviceWorker", { enabled: o }), o && setTimeout(async () => {
1811
- const b = a?.serviceWorker?.enabled ?? !0;
1812
- if (o && b) {
1813
- const k = await pe();
1814
- i(k);
1815
- }
1816
- }, 1e3);
1817
- }, h = async () => {
1818
- try {
1819
- await Q();
1820
- } catch {
1821
- m.toast({
1822
- title: t("caching.updateError.title"),
1823
- description: t("caching.updateError.description"),
1824
- type: "error"
1825
- });
1826
- }
1827
- }, y = async () => {
1828
- try {
1829
- if ("caches" in window) {
1830
- const o = await caches.keys();
1831
- await Promise.all(o.map((b) => caches.delete(b)));
1832
- }
1833
- m.toast({
1834
- title: t("caching.resetSuccess.title"),
1835
- description: t("caching.resetSuccess.description"),
1836
- type: "success"
1837
- }), setTimeout(() => {
1838
- m.sendMessageToParent({
1839
- type: "SHELLUI_REFRESH_PAGE",
1840
- payload: {}
1841
- }) || window.location.reload();
1842
- }, 1e3);
1843
- } catch {
1844
- m.toast({
1845
- title: t("caching.resetError.title"),
1846
- description: t("caching.resetError.description"),
1847
- type: "error"
1848
- });
1849
- }
1850
- };
1851
- return /* @__PURE__ */ n("div", { className: "space-y-6", children: [
1852
- c ? /* @__PURE__ */ e("div", { className: "text-sm text-muted-foreground", children: t("caching.loading") }) : null,
1853
- !c && /* @__PURE__ */ n("div", { className: "space-y-6", children: [
1854
- /* @__PURE__ */ e("div", { className: "space-y-2", children: /* @__PURE__ */ n("div", { className: "flex items-center justify-between", children: [
1855
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
1856
- /* @__PURE__ */ e(
1857
- "label",
1858
- {
1859
- className: "text-sm font-medium leading-none",
1860
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1861
- children: t("caching.enabled.title")
1862
- }
1863
- ),
1864
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t(g ? "caching.enabled.descriptionEnabled" : "caching.enabled.descriptionDisabled") })
1865
- ] }),
1866
- /* @__PURE__ */ e(
1867
- z,
1868
- {
1869
- checked: g,
1870
- onCheckedChange: d
1871
- }
1872
- )
1873
- ] }) }),
1874
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [
1875
- /* @__PURE__ */ e(
1876
- "label",
1877
- {
1878
- className: "text-sm font-medium leading-none",
1879
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1880
- children: t("caching.status.title")
1881
- }
1882
- ),
1883
- /* @__PURE__ */ e("div", { className: "flex items-center gap-2 text-sm mt-2", children: g ? v ? /* @__PURE__ */ n(W, { children: [
1884
- /* @__PURE__ */ n(
1885
- "span",
1886
- {
1887
- className: l ? "text-green-600 dark:text-green-400" : "text-orange-600 dark:text-orange-400",
1888
- children: [
1889
- l ? "●" : "○",
1890
- " ",
1891
- t(l ? "caching.status.registered" : "caching.status.notRunning")
1892
- ]
1893
- }
1894
- ),
1895
- f && /* @__PURE__ */ n(W, { children: [
1896
- /* @__PURE__ */ e("span", { className: "text-muted-foreground/50", children: "|" }),
1897
- /* @__PURE__ */ n("span", { className: "text-blue-600 dark:text-blue-400", children: [
1898
- "● ",
1899
- t("caching.status.updateAvailable")
1900
- ] })
1901
- ] })
1902
- ] }) : /* @__PURE__ */ n("span", { className: "text-red-600 dark:text-red-400", children: [
1903
- "✗ ",
1904
- t("caching.status.fileNotFound")
1905
- ] }) : /* @__PURE__ */ n("span", { className: "text-muted-foreground", children: [
1906
- "○ ",
1907
- t("caching.status.disabled")
1908
- ] }) })
1909
- ] }),
1910
- g && /* @__PURE__ */ n(W, { children: [
1911
- !v && /* @__PURE__ */ e("div", { className: "rounded-lg border border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950/30 p-4 space-y-3", children: /* @__PURE__ */ n("div", { className: "space-y-1", children: [
1912
- /* @__PURE__ */ e(
1913
- "h3",
1914
- {
1915
- className: "text-sm font-medium leading-none text-red-600 dark:text-red-400",
1916
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1917
- children: t("caching.status.fileNotFound")
1918
- }
1919
- ),
1920
- /* @__PURE__ */ e("p", { className: "text-sm text-red-700 dark:text-red-300", children: t("caching.status.fileNotFoundDescription") })
1921
- ] }) }),
1922
- f && /* @__PURE__ */ n("div", { className: "space-y-2", children: [
1923
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
1924
- /* @__PURE__ */ e(
1925
- "label",
1926
- {
1927
- className: "text-sm font-medium leading-none",
1928
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1929
- children: t("caching.update.title")
1930
- }
1931
- ),
1932
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("caching.update.description") })
1933
- ] }),
1934
- /* @__PURE__ */ e("div", { className: "mt-2", children: /* @__PURE__ */ e(
1935
- p,
1936
- {
1937
- variant: "outline",
1938
- onClick: h,
1939
- className: "w-full sm:w-auto",
1940
- children: t("caching.update.button")
1941
- }
1942
- ) })
1943
- ] }),
1944
- /* @__PURE__ */ n("div", { className: "space-y-2", children: [
1945
- /* @__PURE__ */ n("div", { className: "space-y-0.5", children: [
1946
- /* @__PURE__ */ e(
1947
- "label",
1948
- {
1949
- className: "text-sm font-medium leading-none",
1950
- style: { fontFamily: "var(--heading-font-family, inherit)" },
1951
- children: t("caching.reset.title")
1952
- }
1953
- ),
1954
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t("caching.reset.description") })
1955
- ] }),
1956
- /* @__PURE__ */ e("div", { className: "mt-2", children: /* @__PURE__ */ e(
1957
- p,
1958
- {
1959
- variant: "outline",
1960
- onClick: y,
1961
- className: "w-full sm:w-auto",
1962
- children: t("caching.reset.button")
1963
- }
1964
- ) })
1965
- ] })
1966
- ] })
1967
- ] })
1968
- ] });
1969
- }, ot = (t) => [
1970
- {
1971
- name: t("routes.appearance"),
1972
- icon: Fe,
1973
- path: "appearance",
1974
- element: /* @__PURE__ */ e(_e, {})
1975
- },
1976
- {
1977
- name: t("routes.languageAndRegion"),
1978
- icon: Be,
1979
- path: "language-and-region",
1980
- element: /* @__PURE__ */ e(qe, {})
1981
- },
1982
- {
1983
- name: t("routes.updateApp"),
1984
- icon: Me,
1985
- path: "update-app",
1986
- element: /* @__PURE__ */ e(Ye, {})
1987
- },
1988
- {
1989
- name: t("routes.advanced"),
1990
- icon: De,
1991
- path: "advanced",
1992
- element: /* @__PURE__ */ e(Je, {})
1993
- },
1994
- {
1995
- name: t("routes.dataPrivacy"),
1996
- icon: We,
1997
- path: "data-privacy",
1998
- element: /* @__PURE__ */ e(it, {})
1999
- },
2000
- {
2001
- name: t("routes.develop"),
2002
- icon: Ie,
2003
- path: "developpers",
2004
- element: /* @__PURE__ */ e(at, {})
2005
- },
2006
- ...B() ? [] : [
2007
- {
2008
- name: t("routes.serviceWorker"),
2009
- icon: ze,
2010
- path: "service-worker",
2011
- element: /* @__PURE__ */ e(st, {})
2012
- }
2013
- ]
2014
- ], vt = () => {
2015
- const t = Ce(), a = Te(), { settings: s } = S(), { config: l } = I(), { t: i } = C("settings"), [f, r] = w(() => B());
2016
- E(() => {
2017
- r(B());
2018
- const o = window.setTimeout(() => r(B()), 200);
2019
- return () => window.clearTimeout(o);
2020
- }, []), E(() => {
2021
- if (l?.title) {
2022
- const o = i("settings", { ns: "common" });
2023
- document.title = `${o} | ${l.title}`;
2024
- }
2025
- }, [l?.title, i]);
2026
- const c = R(() => ot(i), [i]), u = R(() => f ? c.filter((o) => o.path !== "service-worker") : c, [c, f]), v = R(() => s.developerFeatures.enabled ? u : u.filter(
2027
- (o) => o.path !== "developpers" && o.path !== "service-worker"
2028
- ), [s.developerFeatures.enabled, u]), x = R(() => {
2029
- const o = ["developpers", "service-worker"];
2030
- return [
2031
- {
2032
- title: i("categories.preferences"),
2033
- routes: v.filter(
2034
- (k) => ["appearance", "language-and-region", "data-privacy"].includes(k.path)
2035
- )
2036
- },
2037
- {
2038
- title: i("categories.system"),
2039
- routes: v.filter((k) => ["update-app", "advanced"].includes(k.path))
2040
- },
2041
- {
2042
- title: i("categories.developer"),
2043
- routes: v.filter((k) => o.includes(k.path))
2044
- }
2045
- ].filter((k) => k.routes.length > 0);
2046
- }, [v, i]), g = H(() => {
2047
- const o = t.pathname;
2048
- return v.find((k) => {
2049
- const A = o.replace(/^\/+|\/+$/g, ""), T = k.path.replace(/^\/+|\/+$/g, "");
2050
- return A === T || A.endsWith(`/${T}`) || A.includes(`/${T}/`);
2051
- });
2052
- }, [t.pathname, v]), d = R(() => g(), [g]), h = R(() => {
2053
- const o = t.pathname, b = L.settings.replace(/^\/+|\/+$/g, ""), k = o.replace(/^\/+|\/+$/g, "");
2054
- if (k === b)
2055
- return !0;
2056
- const A = `${b}/`;
2057
- return k.startsWith(A), !1;
2058
- }, [t.pathname, v]), y = H(() => {
2059
- a(L.settings, { replace: !0 });
2060
- }, [a]);
2061
- return /* @__PURE__ */ e(he, { children: /* @__PURE__ */ n("div", { className: "flex h-full w-full overflow-hidden items-start", children: [
2062
- /* @__PURE__ */ e(fe, { className: "hidden md:flex", children: /* @__PURE__ */ e(ve, { children: x.map((o) => /* @__PURE__ */ n(be, { children: [
2063
- /* @__PURE__ */ e(ye, { children: o.title }),
2064
- /* @__PURE__ */ e(xe, { children: /* @__PURE__ */ e(ke, { children: o.routes.map((b) => /* @__PURE__ */ e(Ne, { children: /* @__PURE__ */ e(
2065
- we,
2066
- {
2067
- asChild: !0,
2068
- isActive: b.name === d?.name,
2069
- children: /* @__PURE__ */ n(
2070
- "button",
2071
- {
2072
- onClick: () => a(`${L.settings}/${b.path}`),
2073
- className: "cursor-pointer",
2074
- children: [
2075
- /* @__PURE__ */ e(b.icon, {}),
2076
- /* @__PURE__ */ e("span", { children: b.name })
2077
- ]
2078
- }
2079
- )
2080
- }
2081
- ) }, b.name)) }) })
2082
- ] }, o.title)) }) }),
2083
- /* @__PURE__ */ e("div", { className: "md:hidden flex h-full w-full flex-col overflow-hidden", children: h ? (
2084
- // Show list of settings pages
2085
- /* @__PURE__ */ n("div", { className: "flex flex-1 flex-col overflow-y-auto bg-background", children: [
2086
- /* @__PURE__ */ e("header", { className: "flex h-16 shrink-0 items-center justify-center px-4 border-b", children: /* @__PURE__ */ e("h1", { className: "text-lg font-semibold", children: i("title") }) }),
2087
- /* @__PURE__ */ e("div", { className: "flex flex-1 flex-col p-4 gap-6", children: x.map((o) => /* @__PURE__ */ n(
2088
- "div",
2089
- {
2090
- className: "flex flex-col gap-2",
2091
- children: [
2092
- /* @__PURE__ */ e(
2093
- "h2",
2094
- {
2095
- className: "text-xs font-semibold text-foreground/60 uppercase tracking-wider px-2",
2096
- style: { fontFamily: "var(--heading-font-family, inherit)" },
2097
- children: o.title
2098
- }
2099
- ),
2100
- /* @__PURE__ */ e("div", { className: "flex flex-col bg-card rounded-lg overflow-hidden border border-border", children: o.routes.map((b, k) => {
2101
- const A = b.icon, T = k === o.routes.length - 1;
2102
- return /* @__PURE__ */ n(
2103
- "div",
2104
- {
2105
- className: "relative",
2106
- children: [
2107
- !T && /* @__PURE__ */ e("div", { className: "absolute left-0 right-0 bottom-0 h-[1px] bg-border" }),
2108
- /* @__PURE__ */ n(
2109
- "button",
2110
- {
2111
- onClick: () => a(`${L.settings}/${b.path}`),
2112
- className: "w-full flex items-center justify-between px-4 py-3 bg-transparent hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground transition-colors cursor-pointer rounded-none",
2113
- children: [
2114
- /* @__PURE__ */ n("div", { className: "flex items-center gap-2 flex-1 min-w-0", children: [
2115
- /* @__PURE__ */ e("div", { className: "flex-shrink-0 text-foreground/70", children: /* @__PURE__ */ e(A, {}) }),
2116
- /* @__PURE__ */ e("span", { className: "text-sm font-normal text-foreground", children: b.name })
2117
- ] }),
2118
- /* @__PURE__ */ e("div", { className: "flex-shrink-0 ml-2 text-foreground/40", children: /* @__PURE__ */ e(Pe, {}) })
2119
- ]
2120
- }
2121
- )
2122
- ]
2123
- },
2124
- b.name
2125
- );
2126
- }) })
2127
- ]
2128
- },
2129
- o.title
2130
- )) })
2131
- ] })
2132
- ) : (
2133
- // Show selected settings page with back button
2134
- /* @__PURE__ */ n("div", { className: "flex h-full flex-1 flex-col overflow-hidden", children: [
2135
- /* @__PURE__ */ n("header", { className: "flex h-16 shrink-0 items-center gap-2 px-4 border-b", children: [
2136
- /* @__PURE__ */ e(
2137
- p,
2138
- {
2139
- variant: "ghost",
2140
- size: "icon",
2141
- onClick: y,
2142
- className: "mr-2",
2143
- children: /* @__PURE__ */ e(Re, {})
2144
- }
2145
- ),
2146
- /* @__PURE__ */ e("h1", { className: "text-lg font-semibold", children: d?.name })
2147
- ] }),
2148
- /* @__PURE__ */ e("div", { className: "flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-4", children: /* @__PURE__ */ n(G, { children: [
2149
- /* @__PURE__ */ e(
2150
- j,
2151
- {
2152
- index: !0,
2153
- element: v.length > 0 ? /* @__PURE__ */ e(
2154
- Ae,
2155
- {
2156
- to: `${L.settings}/${v[0].path}`,
2157
- replace: !0
2158
- }
2159
- ) : null
2160
- }
2161
- ),
2162
- v.map((o) => /* @__PURE__ */ e(
2163
- j,
2164
- {
2165
- path: o.path,
2166
- element: o.element
2167
- },
2168
- o.path
2169
- ))
2170
- ] }) })
2171
- ] })
2172
- ) }),
2173
- /* @__PURE__ */ n("main", { className: "hidden md:flex h-full flex-1 flex-col overflow-hidden", children: [
2174
- d && /* @__PURE__ */ e("header", { className: "flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear", children: /* @__PURE__ */ e("div", { className: "flex items-center gap-2 px-4", children: /* @__PURE__ */ e(Y, { children: /* @__PURE__ */ n(J, { children: [
2175
- /* @__PURE__ */ e(U, { children: i("title") }),
2176
- /* @__PURE__ */ e(ee, {}),
2177
- /* @__PURE__ */ e(U, { children: /* @__PURE__ */ e(X, { children: d.name }) })
2178
- ] }) }) }) }),
2179
- /* @__PURE__ */ e("div", { className: "flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0", children: /* @__PURE__ */ n(G, { children: [
2180
- /* @__PURE__ */ e(
2181
- j,
2182
- {
2183
- index: !0,
2184
- element: /* @__PURE__ */ e("div", { className: "flex flex-1 flex-col items-center justify-center p-8 text-center", children: /* @__PURE__ */ n("div", { className: "max-w-md", children: [
2185
- /* @__PURE__ */ e("h2", { className: "text-lg font-semibold mb-2", children: i("title") }),
2186
- /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: i("selectCategory", {
2187
- defaultValue: "Select a category from the sidebar to get started."
2188
- }) })
2189
- ] }) })
2190
- }
2191
- ),
2192
- v.map((o) => /* @__PURE__ */ e(
2193
- j,
2194
- {
2195
- path: o.path,
2196
- element: o.element
2197
- },
2198
- o.path
2199
- ))
2200
- ] }) })
2201
- ] })
2202
- ] }) });
2203
- };
2204
- export {
2205
- vt as SettingsView
2206
- };
2207
- //# sourceMappingURL=SettingsView-Bt4I-KDT.js.map