@burdenoff/fe-libs 2026.1021.6 → 2026.1021.7

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.
@@ -1,20 +1,20 @@
1
- import { Button as e } from "../ui/button.js";
2
- import { Select as t, SelectContent as n, SelectItem as r, SelectTrigger as i, SelectValue as a } from "../ui/select.js";
3
- import { Badge as o } from "../ui/badge.js";
4
- import { Card as s, CardContent as c, CardDescription as l, CardHeader as u, CardTitle as d } from "../ui/card.js";
1
+ import { useShellLabel as e } from "../shared/providers/shell/useShellLabel.js";
2
+ import { Button as t } from "../ui/button.js";
3
+ import { Select as n, SelectContent as r, SelectItem as i, SelectTrigger as a, SelectValue as o } from "../ui/select.js";
4
+ import { Badge as s } from "../ui/badge.js";
5
+ import { Card as c, CardContent as l, CardDescription as u, CardHeader as d, CardTitle as f } from "../ui/card.js";
5
6
  import { Input as ee } from "../ui/input.js";
6
- import { Label as f } from "../ui/label.js";
7
- import { THEME_OPTIONS as p, useTheme as m } from "../shared/providers/shell/ThemeProvider.js";
7
+ import { Label as p } from "../ui/label.js";
8
+ import { THEME_OPTIONS as m, useTheme as te } from "../shared/providers/shell/ThemeProvider.js";
8
9
  import { Switch as h } from "../ui/switch.js";
9
- import { useShellLabel as te } from "../shared/providers/shell/useShellLabel.js";
10
10
  import { useThemeOptionLabels as ne } from "./useThemeOptionLabels.js";
11
11
  import { cn as g } from "../utils/cn.js";
12
12
  import "../utils/index.js";
13
13
  import { useCallback as _, useId as v, useMemo as y, useState as b } from "react";
14
- import { Check as x, Palette as S, Pencil as re, Plus as C, Trash2 as ie, X as w } from "lucide-react";
15
- import { jsx as T, jsxs as E } from "react/jsx-runtime";
14
+ import { Check as x, Palette as S, Pencil as C, Plus as re, Trash2 as w, X as T } from "lucide-react";
15
+ import { jsx as E, jsxs as D } from "react/jsx-runtime";
16
16
  //#region src/chrome/ThemePreferences.tsx
17
- var D = [
17
+ var O = [
18
18
  {
19
19
  name: "Blue",
20
20
  varName: "--color-accent-blue"
@@ -31,7 +31,7 @@ var D = [
31
31
  name: "Indigo",
32
32
  varName: "--color-accent-indigo"
33
33
  }
34
- ], O = [
34
+ ], k = [
35
35
  {
36
36
  value: "compact",
37
37
  label: "Compact"
@@ -44,7 +44,7 @@ var D = [
44
44
  value: "spacious",
45
45
  label: "Spacious"
46
46
  }
47
- ], k = [
47
+ ], ie = [
48
48
  {
49
49
  value: "small",
50
50
  label: "Small"
@@ -71,10 +71,10 @@ var D = [
71
71
  label: "Full"
72
72
  }
73
73
  ], A = (e) => e === "dark" ? "bg-bg-sunken" : "bg-bg-surface";
74
- function j({ className: t, showCustomThemes: n = !0 }) {
75
- let r = te(), i = ne(), { mode: a, density: v, typography: w, glass: j, reduceMotion: F, resolvedThemeName: oe, setMode: se, setDensity: ce, setTypography: le, setGlass: ue, setReduceMotion: de, customThemes: I, activeCustomId: L, createCustomTheme: R, updateCustomTheme: z, deleteCustomTheme: fe, applyCustomTheme: B } = m(), [V, H] = b(!1), [U, pe] = b(() => r("themeSwitcher.myTheme", "My theme")), [W, me] = b("light"), [G, he] = b("#6366F1"), [K, ge] = b("comfortable"), [q, _e] = b("default"), [J, ve] = b("full"), [Y, ye] = b(!1), [X, Z] = b(null), [Q, be] = b(""), xe = _(() => H(!0), []), Se = _(() => {
74
+ function j({ className: n, showCustomThemes: r = !0 }) {
75
+ let i = e(), a = ne(), { mode: o, density: v, typography: T, glass: j, reduceMotion: F, resolvedThemeName: oe, setMode: se, setDensity: ce, setTypography: le, setGlass: ue, setReduceMotion: de, customThemes: I, activeCustomId: L, createCustomTheme: R, updateCustomTheme: z, deleteCustomTheme: fe, applyCustomTheme: B } = te(), [V, H] = b(!1), [U, pe] = b(() => i("themeSwitcher.myTheme", "My theme")), [W, me] = b("light"), [G, he] = b("#6366F1"), [K, ge] = b("comfortable"), [q, _e] = b("default"), [J, ve] = b("full"), [Y, ye] = b(!1), [X, Z] = b(null), [Q, be] = b(""), xe = _(() => H(!0), []), Se = _(() => {
76
76
  B(R({
77
- name: U.trim() || r("themeSwitcher.untitled", "Untitled theme"),
77
+ name: U.trim() || i("themeSwitcher.untitled", "Untitled theme"),
78
78
  base: W,
79
79
  accent: G,
80
80
  density: K,
@@ -92,16 +92,16 @@ function j({ className: t, showCustomThemes: n = !0 }) {
92
92
  Y,
93
93
  R,
94
94
  B,
95
- r
95
+ i
96
96
  ]), Ce = _((e) => {
97
97
  Z(e.id), be(e.name);
98
98
  }, []), we = _(() => {
99
- X && z(X, { name: Q.trim() || r("themeSwitcher.untitled", "Untitled theme") }), Z(null);
99
+ X && z(X, { name: Q.trim() || i("themeSwitcher.untitled", "Untitled theme") }), Z(null);
100
100
  }, [
101
101
  X,
102
102
  Q,
103
103
  z,
104
- r
104
+ i
105
105
  ]), $ = y(() => V ? {
106
106
  theme: W,
107
107
  density: K,
@@ -110,7 +110,7 @@ function j({ className: t, showCustomThemes: n = !0 }) {
110
110
  } : {
111
111
  theme: oe,
112
112
  density: v,
113
- typography: w,
113
+ typography: T,
114
114
  glass: j
115
115
  }, [
116
116
  V,
@@ -120,124 +120,124 @@ function j({ className: t, showCustomThemes: n = !0 }) {
120
120
  J,
121
121
  oe,
122
122
  v,
123
- w,
123
+ T,
124
124
  j
125
125
  ]);
126
- return /* @__PURE__ */ E("div", {
127
- className: g("flex flex-col gap-6", t),
126
+ return /* @__PURE__ */ D("div", {
127
+ className: g("flex flex-col gap-6", n),
128
128
  children: [
129
- n && /* @__PURE__ */ E(s, { children: [/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ E(d, {
129
+ r && /* @__PURE__ */ D(c, { children: [/* @__PURE__ */ D(d, { children: [/* @__PURE__ */ D(f, {
130
130
  className: "flex items-center gap-2",
131
- children: [/* @__PURE__ */ T(S, {
131
+ children: [/* @__PURE__ */ E(S, {
132
132
  className: "size-4 text-text-secondary",
133
133
  "aria-hidden": "true"
134
- }), r("themeSwitcher.label", "Theme")]
135
- }), /* @__PURE__ */ T(l, { children: r("themeSwitcher.description", "Pick a built-in theme or one of your saved custom themes.") })] }), /* @__PURE__ */ T(c, { children: /* @__PURE__ */ E("div", {
134
+ }), i("themeSwitcher.label", "Theme")]
135
+ }), /* @__PURE__ */ E(u, { children: i("themeSwitcher.description", "Pick a built-in theme or one of your saved custom themes.") })] }), /* @__PURE__ */ E(l, { children: /* @__PURE__ */ D("div", {
136
136
  role: "radiogroup",
137
- "aria-label": r("themeSwitcher.label", "Theme"),
137
+ "aria-label": i("themeSwitcher.label", "Theme"),
138
138
  className: "grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4",
139
139
  children: [
140
- p.map((e) => /* @__PURE__ */ T(M, {
141
- label: i.themes[e.value],
140
+ m.map((e) => /* @__PURE__ */ E(M, {
141
+ label: a.themes[e.value],
142
142
  family: e.family,
143
- active: a === e.value,
143
+ active: o === e.value,
144
144
  onSelect: () => se(e.value)
145
145
  }, e.value)),
146
- I.map((e) => /* @__PURE__ */ T(M, {
146
+ I.map((e) => /* @__PURE__ */ E(M, {
147
147
  label: e.name,
148
148
  family: e.base,
149
149
  accent: e.accent,
150
- active: a === "custom" && L === e.id,
150
+ active: o === "custom" && L === e.id,
151
151
  onSelect: () => B(e.id)
152
152
  }, e.id)),
153
- /* @__PURE__ */ E("button", {
153
+ /* @__PURE__ */ D("button", {
154
154
  type: "button",
155
155
  onClick: xe,
156
156
  className: "flex min-h-[5.5rem] flex-col items-center justify-center gap-1 rounded-card border border-dashed border-border-default bg-bg-surface text-text-secondary transition-colors hover:border-border-strong hover:bg-bg-sunken hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
157
- children: [/* @__PURE__ */ T(C, {
157
+ children: [/* @__PURE__ */ E(re, {
158
158
  className: "size-5",
159
159
  "aria-hidden": "true"
160
- }), /* @__PURE__ */ T("span", {
160
+ }), /* @__PURE__ */ E("span", {
161
161
  className: "text-xs font-medium",
162
- children: r("themeSwitcher.newTheme", "New theme")
162
+ children: i("themeSwitcher.newTheme", "New theme")
163
163
  })]
164
164
  })
165
165
  ]
166
166
  }) })] }),
167
- /* @__PURE__ */ E(s, { children: [/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T(d, { children: r("themeSwitcher.accent", "Accent") }), /* @__PURE__ */ T(l, { children: r("themeSwitcher.accentHelp", "Accent color retints buttons, links, and highlights across the app.") })] }), /* @__PURE__ */ T(c, { children: /* @__PURE__ */ E("div", {
167
+ /* @__PURE__ */ D(c, { children: [/* @__PURE__ */ D(d, { children: [/* @__PURE__ */ E(f, { children: i("themeSwitcher.accent", "Accent") }), /* @__PURE__ */ E(u, { children: i("themeSwitcher.accentHelp", "Accent color retints buttons, links, and highlights across the app.") })] }), /* @__PURE__ */ E(l, { children: /* @__PURE__ */ D("div", {
168
168
  className: "flex flex-wrap items-center gap-3",
169
- children: [D.map((e) => /* @__PURE__ */ E("div", {
169
+ children: [O.map((e) => /* @__PURE__ */ D("div", {
170
170
  className: "flex flex-col items-center gap-1.5",
171
- children: [/* @__PURE__ */ T("span", {
171
+ children: [/* @__PURE__ */ E("span", {
172
172
  className: "size-9 rounded-full border border-border-seam shadow-elevation-1",
173
173
  style: { backgroundColor: `var(${e.varName})` },
174
174
  "aria-hidden": "true"
175
- }), /* @__PURE__ */ T("span", {
175
+ }), /* @__PURE__ */ E("span", {
176
176
  className: "text-xs text-text-secondary",
177
- children: i.accents[e.name] ?? e.name
177
+ children: a.accents[e.name] ?? e.name
178
178
  })]
179
- }, e.name)), /* @__PURE__ */ E(e, {
179
+ }, e.name)), /* @__PURE__ */ D(t, {
180
180
  type: "button",
181
181
  variant: "outline",
182
182
  size: "sm",
183
183
  onClick: xe,
184
184
  className: "ml-1",
185
- children: [/* @__PURE__ */ T(S, {
185
+ children: [/* @__PURE__ */ E(S, {
186
186
  className: "size-4",
187
187
  "aria-hidden": "true"
188
- }), r("themeSwitcher.customAccent", "Custom accent")]
188
+ }), i("themeSwitcher.customAccent", "Custom accent")]
189
189
  })]
190
190
  }) })] }),
191
- /* @__PURE__ */ T(N, {
192
- title: r("themeSwitcher.density", "Density"),
193
- description: r("themeSwitcher.densityHelp", "Spacing and control sizing throughout the interface."),
191
+ /* @__PURE__ */ E(N, {
192
+ title: i("themeSwitcher.density", "Density"),
193
+ description: i("themeSwitcher.densityHelp", "Spacing and control sizing throughout the interface."),
194
194
  value: v,
195
- options: O.map((e) => ({
195
+ options: k.map((e) => ({
196
196
  ...e,
197
- label: i.density[e.value]
197
+ label: a.density[e.value]
198
198
  })),
199
199
  onChange: ce
200
200
  }),
201
- /* @__PURE__ */ T(N, {
202
- title: r("themeSwitcher.typography", "Typography"),
203
- description: r("themeSwitcher.typographyHelp", "Base font scale for text across the app."),
204
- value: w,
205
- options: k.map((e) => ({
201
+ /* @__PURE__ */ E(N, {
202
+ title: i("themeSwitcher.typography", "Typography"),
203
+ description: i("themeSwitcher.typographyHelp", "Base font scale for text across the app."),
204
+ value: T,
205
+ options: ie.map((e) => ({
206
206
  ...e,
207
- label: i.typography[e.value]
207
+ label: a.typography[e.value]
208
208
  })),
209
209
  onChange: le
210
210
  }),
211
- /* @__PURE__ */ T(N, {
212
- title: r("themeSwitcher.glassIntensity", "Glass intensity"),
213
- description: r("themeSwitcher.glassHelp", "Strength of the frosted-glass blur on elevated surfaces."),
211
+ /* @__PURE__ */ E(N, {
212
+ title: i("themeSwitcher.glassIntensity", "Glass intensity"),
213
+ description: i("themeSwitcher.glassHelp", "Strength of the frosted-glass blur on elevated surfaces."),
214
214
  value: j,
215
215
  options: ae.map((e) => ({
216
216
  ...e,
217
- label: i.glass[e.value]
217
+ label: a.glass[e.value]
218
218
  })),
219
219
  onChange: ue
220
220
  }),
221
- /* @__PURE__ */ T(s, { children: /* @__PURE__ */ E(c, {
221
+ /* @__PURE__ */ E(c, { children: /* @__PURE__ */ D(l, {
222
222
  className: "flex items-center justify-between gap-4 pt-6",
223
- children: [/* @__PURE__ */ E("div", {
223
+ children: [/* @__PURE__ */ D("div", {
224
224
  className: "flex flex-col",
225
- children: [/* @__PURE__ */ T(f, {
225
+ children: [/* @__PURE__ */ E(p, {
226
226
  htmlFor: "theme-reduce-motion",
227
227
  className: "text-sm font-medium text-text-primary",
228
- children: r("themeSwitcher.reduceMotion", "Reduce motion")
229
- }), /* @__PURE__ */ T("span", {
228
+ children: i("themeSwitcher.reduceMotion", "Reduce motion")
229
+ }), /* @__PURE__ */ E("span", {
230
230
  className: "text-xs text-text-secondary",
231
- children: r("themeSwitcher.motionHelp", "Minimize animations and transitions across the app.")
231
+ children: i("themeSwitcher.motionHelp", "Minimize animations and transitions across the app.")
232
232
  })]
233
- }), /* @__PURE__ */ T(h, {
233
+ }), /* @__PURE__ */ E(h, {
234
234
  id: "theme-reduce-motion",
235
235
  checked: F,
236
236
  onCheckedChange: de,
237
- "aria-label": r("themeSwitcher.reduceMotion", "Reduce motion")
237
+ "aria-label": i("themeSwitcher.reduceMotion", "Reduce motion")
238
238
  })]
239
239
  }) }),
240
- n && V && /* @__PURE__ */ T(P, {
240
+ r && V && /* @__PURE__ */ E(P, {
241
241
  name: U,
242
242
  base: W,
243
243
  accent: G,
@@ -255,68 +255,68 @@ function j({ className: t, showCustomThemes: n = !0 }) {
255
255
  onSave: Se,
256
256
  onCancel: () => H(!1)
257
257
  }),
258
- n && I.length > 0 && /* @__PURE__ */ E(s, { children: [/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T(d, { children: r("themeSwitcher.savedThemes", "Saved themes") }), /* @__PURE__ */ T(l, { children: r("themeSwitcher.savedThemesHelp", "Apply, rename, or remove your custom themes.") })] }), /* @__PURE__ */ T(c, { children: /* @__PURE__ */ T("ul", {
258
+ r && I.length > 0 && /* @__PURE__ */ D(c, { children: [/* @__PURE__ */ D(d, { children: [/* @__PURE__ */ E(f, { children: i("themeSwitcher.savedThemes", "Saved themes") }), /* @__PURE__ */ E(u, { children: i("themeSwitcher.savedThemesHelp", "Apply, rename, or remove your custom themes.") })] }), /* @__PURE__ */ E(l, { children: /* @__PURE__ */ E("ul", {
259
259
  className: "flex flex-col divide-y divide-border-subtle",
260
- children: I.map((t) => {
261
- let n = a === "custom" && L === t.id;
262
- return /* @__PURE__ */ E("li", {
260
+ children: I.map((e) => {
261
+ let n = o === "custom" && L === e.id;
262
+ return /* @__PURE__ */ D("li", {
263
263
  className: "flex flex-wrap items-center gap-3 py-3 first:pt-0 last:pb-0",
264
264
  children: [
265
- /* @__PURE__ */ T("span", {
265
+ /* @__PURE__ */ E("span", {
266
266
  className: "size-6 rounded-full border border-border-seam",
267
- style: { backgroundColor: t.accent },
267
+ style: { backgroundColor: e.accent },
268
268
  "aria-hidden": "true"
269
269
  }),
270
- X === t.id ? /* @__PURE__ */ T(ee, {
270
+ X === e.id ? /* @__PURE__ */ E(ee, {
271
271
  autoFocus: !0,
272
272
  value: Q,
273
- "aria-label": r("themeSwitcher.themeName", "Theme name"),
273
+ "aria-label": i("themeSwitcher.themeName", "Theme name"),
274
274
  onChange: (e) => be(e.target.value),
275
275
  onBlur: we,
276
276
  onKeyDown: (e) => {
277
277
  e.key === "Enter" && we(), e.key === "Escape" && Z(null);
278
278
  },
279
279
  className: "h-8 w-44"
280
- }) : /* @__PURE__ */ E("span", {
280
+ }) : /* @__PURE__ */ D("span", {
281
281
  className: "flex flex-1 items-center gap-2 text-sm text-text-primary",
282
- children: [t.name, n && /* @__PURE__ */ E(o, {
282
+ children: [e.name, n && /* @__PURE__ */ D(s, {
283
283
  variant: "success",
284
284
  className: "gap-1",
285
- children: [/* @__PURE__ */ T(x, {
285
+ children: [/* @__PURE__ */ E(x, {
286
286
  className: "size-3",
287
287
  "aria-hidden": "true"
288
- }), r("common.status.active", "Active")]
288
+ }), i("common.status.active", "Active")]
289
289
  })]
290
290
  }),
291
- /* @__PURE__ */ E("div", {
291
+ /* @__PURE__ */ D("div", {
292
292
  className: "ml-auto flex items-center gap-1",
293
293
  children: [
294
- /* @__PURE__ */ T(e, {
294
+ /* @__PURE__ */ E(t, {
295
295
  type: "button",
296
296
  variant: "outline",
297
297
  size: "sm",
298
298
  disabled: n,
299
- onClick: () => B(t.id),
300
- children: r("themeSwitcher.apply", "Apply")
299
+ onClick: () => B(e.id),
300
+ children: i("themeSwitcher.apply", "Apply")
301
301
  }),
302
- /* @__PURE__ */ T(e, {
302
+ /* @__PURE__ */ E(t, {
303
303
  type: "button",
304
304
  variant: "ghost",
305
305
  size: "icon-sm",
306
- "aria-label": r("themeSwitcher.renameNamed", "Rename {{name}}", { name: t.name }),
307
- onClick: () => Ce(t),
308
- children: /* @__PURE__ */ T(re, {
306
+ "aria-label": i("themeSwitcher.renameNamed", "Rename {{name}}", { name: e.name }),
307
+ onClick: () => Ce(e),
308
+ children: /* @__PURE__ */ E(C, {
309
309
  className: "size-4",
310
310
  "aria-hidden": "true"
311
311
  })
312
312
  }),
313
- /* @__PURE__ */ T(e, {
313
+ /* @__PURE__ */ E(t, {
314
314
  type: "button",
315
315
  variant: "ghost",
316
316
  size: "icon-sm",
317
- "aria-label": r("themeSwitcher.deleteNamed", "Delete {{name}}", { name: t.name }),
318
- onClick: () => fe(t.id),
319
- children: /* @__PURE__ */ T(ie, {
317
+ "aria-label": i("themeSwitcher.deleteNamed", "Delete {{name}}", { name: e.name }),
318
+ onClick: () => fe(e.id),
319
+ children: /* @__PURE__ */ E(w, {
320
320
  className: "size-4 text-action-danger-bg",
321
321
  "aria-hidden": "true"
322
322
  })
@@ -324,92 +324,92 @@ function j({ className: t, showCustomThemes: n = !0 }) {
324
324
  ]
325
325
  })
326
326
  ]
327
- }, t.id);
327
+ }, e.id);
328
328
  })
329
329
  }) })] }),
330
- /* @__PURE__ */ E(s, { children: [/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T(d, { children: r("common.markdownEditor.preview", "Preview") }), /* @__PURE__ */ T(l, { children: r("themeSwitcher.previewHelp", "A scoped preview of the candidate theme — applies only here until you select it.") })] }), /* @__PURE__ */ T(c, { children: /* @__PURE__ */ E("div", {
330
+ /* @__PURE__ */ D(c, { children: [/* @__PURE__ */ D(d, { children: [/* @__PURE__ */ E(f, { children: i("common.markdownEditor.preview", "Preview") }), /* @__PURE__ */ E(u, { children: i("themeSwitcher.previewHelp", "A scoped preview of the candidate theme — applies only here until you select it.") })] }), /* @__PURE__ */ E(l, { children: /* @__PURE__ */ D("div", {
331
331
  "data-theme": $.theme,
332
332
  "data-density": $.density,
333
333
  "data-typography": $.typography,
334
334
  "data-glass": $.glass,
335
- className: g("flex flex-col gap-4 rounded-card border border-border-seam p-4", A(p.find((e) => e.value === $.theme)?.family ?? "light")),
335
+ className: g("flex flex-col gap-4 rounded-card border border-border-seam p-4", A(m.find((e) => e.value === $.theme)?.family ?? "light")),
336
336
  children: [
337
- /* @__PURE__ */ E("div", {
337
+ /* @__PURE__ */ D("div", {
338
338
  className: "flex flex-wrap items-center gap-2",
339
339
  children: [
340
- /* @__PURE__ */ T(e, {
340
+ /* @__PURE__ */ E(t, {
341
341
  type: "button",
342
342
  size: "sm",
343
- children: r("notifications.actionStyle.primary", "Primary")
343
+ children: i("notifications.actionStyle.primary", "Primary")
344
344
  }),
345
- /* @__PURE__ */ T(e, {
345
+ /* @__PURE__ */ E(t, {
346
346
  type: "button",
347
347
  variant: "secondary",
348
348
  size: "sm",
349
- children: r("notifications.actionStyle.secondary", "Secondary")
349
+ children: i("notifications.actionStyle.secondary", "Secondary")
350
350
  }),
351
- /* @__PURE__ */ T(e, {
351
+ /* @__PURE__ */ E(t, {
352
352
  type: "button",
353
353
  variant: "outline",
354
354
  size: "sm",
355
- children: r("themeSwitcher.outline", "Outline")
355
+ children: i("themeSwitcher.outline", "Outline")
356
356
  }),
357
- /* @__PURE__ */ T(e, {
357
+ /* @__PURE__ */ E(t, {
358
358
  type: "button",
359
359
  variant: "ghost",
360
360
  size: "sm",
361
- children: r("themeSwitcher.ghost", "Ghost")
361
+ children: i("themeSwitcher.ghost", "Ghost")
362
362
  })
363
363
  ]
364
364
  }),
365
- /* @__PURE__ */ E("div", {
365
+ /* @__PURE__ */ D("div", {
366
366
  className: "rounded-card border border-border-seam bg-[var(--color-surface-glass)] p-4 shadow-[var(--shadow-pop)] backdrop-blur-[var(--blur-glass)]",
367
367
  children: [
368
- /* @__PURE__ */ T("p", {
368
+ /* @__PURE__ */ E("p", {
369
369
  className: "text-xs font-medium text-text-secondary",
370
- children: r("themeSwitcher.activeSessions", "Active sessions")
370
+ children: i("themeSwitcher.activeSessions", "Active sessions")
371
371
  }),
372
- /* @__PURE__ */ T("p", {
372
+ /* @__PURE__ */ E("p", {
373
373
  className: "mt-1 text-2xl font-semibold text-text-primary",
374
374
  children: "1,284"
375
375
  }),
376
- /* @__PURE__ */ T("p", {
376
+ /* @__PURE__ */ E("p", {
377
377
  className: "mt-1 text-xs text-status-success-text",
378
- children: r("themeSwitcher.previewTrend", "+12.4% this week")
378
+ children: i("themeSwitcher.previewTrend", "+12.4% this week")
379
379
  })
380
380
  ]
381
381
  }),
382
- /* @__PURE__ */ E("div", {
382
+ /* @__PURE__ */ D("div", {
383
383
  className: "flex flex-wrap items-center gap-2",
384
384
  children: [
385
- /* @__PURE__ */ T(o, { children: r("themeSwitcher.default", "Default") }),
386
- /* @__PURE__ */ T(o, {
385
+ /* @__PURE__ */ E(s, { children: i("themeSwitcher.default", "Default") }),
386
+ /* @__PURE__ */ E(s, {
387
387
  variant: "secondary",
388
- children: r("notifications.actionStyle.secondary", "Secondary")
388
+ children: i("notifications.actionStyle.secondary", "Secondary")
389
389
  }),
390
- /* @__PURE__ */ T(o, {
390
+ /* @__PURE__ */ E(s, {
391
391
  variant: "success",
392
- children: r("common.success", "Success")
392
+ children: i("common.success", "Success")
393
393
  }),
394
- /* @__PURE__ */ T(o, {
394
+ /* @__PURE__ */ E(s, {
395
395
  variant: "warning",
396
- children: r("themeSwitcher.warning", "Warning")
396
+ children: i("themeSwitcher.warning", "Warning")
397
397
  }),
398
- /* @__PURE__ */ T(o, {
398
+ /* @__PURE__ */ E(s, {
399
399
  variant: "destructive",
400
- children: r("common.errorPage.title", "Error")
400
+ children: i("common.errorPage.title", "Error")
401
401
  })
402
402
  ]
403
403
  }),
404
- /* @__PURE__ */ T("div", {
404
+ /* @__PURE__ */ E("div", {
405
405
  className: "flex flex-wrap items-center gap-4",
406
- children: D.map((e) => /* @__PURE__ */ E("span", {
406
+ children: O.map((e) => /* @__PURE__ */ D("span", {
407
407
  className: "flex items-center gap-1.5 text-xs text-text-secondary",
408
- children: [/* @__PURE__ */ T("span", {
408
+ children: [/* @__PURE__ */ E("span", {
409
409
  className: "size-3 rounded-full",
410
410
  style: { backgroundColor: `var(${e.varName})` },
411
411
  "aria-hidden": "true"
412
- }), i.accents[e.name] ?? e.name]
412
+ }), a.accents[e.name] ?? e.name]
413
413
  }, e.name))
414
414
  })
415
415
  ]
@@ -418,26 +418,26 @@ function j({ className: t, showCustomThemes: n = !0 }) {
418
418
  });
419
419
  }
420
420
  function M({ label: e, family: t, accent: n, active: r, onSelect: i }) {
421
- return /* @__PURE__ */ E("button", {
421
+ return /* @__PURE__ */ D("button", {
422
422
  type: "button",
423
423
  role: "radio",
424
424
  "aria-checked": r,
425
425
  onClick: i,
426
426
  className: g("group relative flex flex-col gap-2 rounded-card border p-2 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]", r ? "border-border-focus bg-[var(--color-accent-soft)]" : "border-border-default bg-bg-surface hover:border-border-strong hover:bg-bg-sunken"),
427
- children: [/* @__PURE__ */ T("span", {
427
+ children: [/* @__PURE__ */ E("span", {
428
428
  className: g("relative flex h-12 w-full items-end overflow-hidden rounded-button border border-border-seam", A(t)),
429
429
  "aria-hidden": "true",
430
- children: /* @__PURE__ */ T("span", {
430
+ children: /* @__PURE__ */ E("span", {
431
431
  className: "m-1.5 size-3 rounded-full shadow-elevation-1",
432
432
  style: n ? { backgroundColor: n } : void 0,
433
- children: !n && /* @__PURE__ */ T("span", { className: "block size-3 rounded-full bg-action-primary-bg" })
433
+ children: !n && /* @__PURE__ */ E("span", { className: "block size-3 rounded-full bg-action-primary-bg" })
434
434
  })
435
- }), /* @__PURE__ */ E("span", {
435
+ }), /* @__PURE__ */ D("span", {
436
436
  className: "flex items-center justify-between gap-1",
437
- children: [/* @__PURE__ */ T("span", {
437
+ children: [/* @__PURE__ */ E("span", {
438
438
  className: "truncate text-xs font-medium text-text-primary",
439
439
  children: e
440
- }), r && /* @__PURE__ */ T(x, {
440
+ }), r && /* @__PURE__ */ E(x, {
441
441
  className: "size-3.5 shrink-0 text-action-primary-bg",
442
442
  "aria-hidden": "true"
443
443
  })]
@@ -445,13 +445,13 @@ function M({ label: e, family: t, accent: n, active: r, onSelect: i }) {
445
445
  });
446
446
  }
447
447
  function N({ title: e, description: t, value: n, options: r, onChange: i }) {
448
- return /* @__PURE__ */ E(s, { children: [/* @__PURE__ */ E(u, { children: [/* @__PURE__ */ T(d, { children: e }), /* @__PURE__ */ T(l, { children: t })] }), /* @__PURE__ */ T(c, { children: /* @__PURE__ */ T("div", {
448
+ return /* @__PURE__ */ D(c, { children: [/* @__PURE__ */ D(d, { children: [/* @__PURE__ */ E(f, { children: e }), /* @__PURE__ */ E(u, { children: t })] }), /* @__PURE__ */ E(l, { children: /* @__PURE__ */ E("div", {
449
449
  role: "radiogroup",
450
450
  "aria-label": e,
451
451
  className: "inline-flex w-full flex-col gap-1 rounded-button border border-border-default bg-bg-sunken p-1 sm:w-auto sm:flex-row",
452
452
  children: r.map((e) => {
453
453
  let t = n === e.value;
454
- return /* @__PURE__ */ T("button", {
454
+ return /* @__PURE__ */ E("button", {
455
455
  type: "button",
456
456
  role: "radio",
457
457
  "aria-checked": t,
@@ -462,52 +462,52 @@ function N({ title: e, description: t, value: n, options: r, onChange: i }) {
462
462
  })
463
463
  }) })] });
464
464
  }
465
- function P({ name: t, base: n, accent: r, density: i, typography: a, glass: o, reduceMotion: p, onName: m, onBase: _, onAccent: y, onDensity: b, onTypography: S, onGlass: re, onReduceMotion: C, onSave: ie, onCancel: D }) {
466
- let A = te(), j = ne(), M = v(), N = v(), P = v();
467
- return /* @__PURE__ */ E(s, { children: [/* @__PURE__ */ E(u, {
465
+ function P({ name: n, base: r, accent: i, density: a, typography: o, glass: s, reduceMotion: m, onName: te, onBase: _, onAccent: y, onDensity: b, onTypography: S, onGlass: C, onReduceMotion: re, onSave: w, onCancel: O }) {
466
+ let A = e(), j = ne(), M = v(), N = v(), P = v();
467
+ return /* @__PURE__ */ D(c, { children: [/* @__PURE__ */ D(d, {
468
468
  className: "flex-row items-start justify-between gap-4 space-y-0",
469
- children: [/* @__PURE__ */ E("div", {
469
+ children: [/* @__PURE__ */ D("div", {
470
470
  className: "flex flex-col gap-1.5",
471
- children: [/* @__PURE__ */ T(d, { children: A("themeSwitcher.customTheme", "Custom theme") }), /* @__PURE__ */ T(l, { children: A("themeSwitcher.editorHelp", "Design a reusable theme and save it to your library.") })]
472
- }), /* @__PURE__ */ T(e, {
471
+ children: [/* @__PURE__ */ E(f, { children: A("themeSwitcher.customTheme", "Custom theme") }), /* @__PURE__ */ E(u, { children: A("themeSwitcher.editorHelp", "Design a reusable theme and save it to your library.") })]
472
+ }), /* @__PURE__ */ E(t, {
473
473
  type: "button",
474
474
  variant: "ghost",
475
475
  size: "icon-sm",
476
476
  "aria-label": A("themeSwitcher.closeEditor", "Close editor"),
477
- onClick: D,
478
- children: /* @__PURE__ */ T(w, {
477
+ onClick: O,
478
+ children: /* @__PURE__ */ E(T, {
479
479
  className: "size-4",
480
480
  "aria-hidden": "true"
481
481
  })
482
482
  })]
483
- }), /* @__PURE__ */ E(c, {
483
+ }), /* @__PURE__ */ D(l, {
484
484
  className: "flex flex-col gap-4",
485
485
  children: [
486
- /* @__PURE__ */ E("div", {
486
+ /* @__PURE__ */ D("div", {
487
487
  className: "flex flex-col gap-1.5",
488
- children: [/* @__PURE__ */ T(f, {
488
+ children: [/* @__PURE__ */ E(p, {
489
489
  htmlFor: M,
490
490
  children: A("common.name", "Name")
491
- }), /* @__PURE__ */ T(ee, {
491
+ }), /* @__PURE__ */ E(ee, {
492
492
  id: M,
493
- value: t,
494
- onChange: (e) => m(e.target.value),
493
+ value: n,
494
+ onChange: (e) => te(e.target.value),
495
495
  placeholder: A("themeSwitcher.myTheme", "My theme")
496
496
  })]
497
497
  }),
498
- /* @__PURE__ */ E("div", {
498
+ /* @__PURE__ */ D("div", {
499
499
  className: "flex flex-col gap-1.5",
500
- children: [/* @__PURE__ */ T("span", {
500
+ children: [/* @__PURE__ */ E("span", {
501
501
  className: "text-sm font-medium text-text-primary",
502
502
  id: `${M}-base`,
503
503
  children: A("themeSwitcher.base", "Base")
504
- }), /* @__PURE__ */ T("div", {
504
+ }), /* @__PURE__ */ E("div", {
505
505
  role: "radiogroup",
506
506
  "aria-labelledby": `${M}-base`,
507
507
  className: "inline-flex w-full gap-1 rounded-button border border-border-default bg-bg-sunken p-1 sm:w-auto",
508
508
  children: ["light", "dark"].map((e) => {
509
- let t = n === e;
510
- return /* @__PURE__ */ T("button", {
509
+ let t = r === e;
510
+ return /* @__PURE__ */ E("button", {
511
511
  type: "button",
512
512
  role: "radio",
513
513
  "aria-checked": t,
@@ -518,82 +518,82 @@ function P({ name: t, base: n, accent: r, density: i, typography: a, glass: o, r
518
518
  })
519
519
  })]
520
520
  }),
521
- /* @__PURE__ */ E("div", {
521
+ /* @__PURE__ */ D("div", {
522
522
  className: "flex flex-col gap-1.5",
523
- children: [/* @__PURE__ */ T(f, {
523
+ children: [/* @__PURE__ */ E(p, {
524
524
  htmlFor: N,
525
525
  children: A("themeSwitcher.accent", "Accent")
526
- }), /* @__PURE__ */ E("div", {
526
+ }), /* @__PURE__ */ D("div", {
527
527
  className: "flex items-center gap-3",
528
- children: [/* @__PURE__ */ T("input", {
528
+ children: [/* @__PURE__ */ E("input", {
529
529
  id: N,
530
530
  type: "color",
531
- value: r,
531
+ value: i,
532
532
  onChange: (e) => y(e.target.value),
533
533
  "aria-label": A("themeSwitcher.accentColor", "Accent color"),
534
534
  className: "size-10 cursor-pointer rounded-input border border-border-default bg-bg-surface p-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]"
535
- }), /* @__PURE__ */ T("span", {
535
+ }), /* @__PURE__ */ E("span", {
536
536
  className: "font-mono text-sm uppercase text-text-secondary",
537
- children: r
537
+ children: i
538
538
  })]
539
539
  })]
540
540
  }),
541
- /* @__PURE__ */ E("div", {
541
+ /* @__PURE__ */ D("div", {
542
542
  className: "grid grid-cols-1 gap-4 sm:grid-cols-3",
543
543
  children: [
544
- /* @__PURE__ */ T(F, {
544
+ /* @__PURE__ */ E(F, {
545
545
  label: A("themeSwitcher.density", "Density"),
546
- value: i,
547
- options: O.map((e) => ({
546
+ value: a,
547
+ options: k.map((e) => ({
548
548
  ...e,
549
549
  label: j.density[e.value]
550
550
  })),
551
551
  onChange: (e) => b(e)
552
552
  }),
553
- /* @__PURE__ */ T(F, {
553
+ /* @__PURE__ */ E(F, {
554
554
  label: A("themeSwitcher.typography", "Typography"),
555
- value: a,
556
- options: k.map((e) => ({
555
+ value: o,
556
+ options: ie.map((e) => ({
557
557
  ...e,
558
558
  label: j.typography[e.value]
559
559
  })),
560
560
  onChange: (e) => S(e)
561
561
  }),
562
- /* @__PURE__ */ T(F, {
562
+ /* @__PURE__ */ E(F, {
563
563
  label: A("themeSwitcher.glass", "Glass"),
564
- value: o,
564
+ value: s,
565
565
  options: ae.map((e) => ({
566
566
  ...e,
567
567
  label: j.glass[e.value]
568
568
  })),
569
- onChange: (e) => re(e)
569
+ onChange: (e) => C(e)
570
570
  })
571
571
  ]
572
572
  }),
573
- /* @__PURE__ */ E("div", {
573
+ /* @__PURE__ */ D("div", {
574
574
  className: "flex items-center justify-between gap-4",
575
- children: [/* @__PURE__ */ T(f, {
575
+ children: [/* @__PURE__ */ E(p, {
576
576
  htmlFor: P,
577
577
  className: "text-sm font-medium text-text-primary",
578
578
  children: A("themeSwitcher.reduceMotion", "Reduce motion")
579
- }), /* @__PURE__ */ T(h, {
579
+ }), /* @__PURE__ */ E(h, {
580
580
  id: P,
581
- checked: p,
582
- onCheckedChange: C,
581
+ checked: m,
582
+ onCheckedChange: re,
583
583
  "aria-label": A("themeSwitcher.reduceMotion", "Reduce motion")
584
584
  })]
585
585
  }),
586
- /* @__PURE__ */ E("div", {
586
+ /* @__PURE__ */ D("div", {
587
587
  className: "flex items-center justify-end gap-2 pt-2",
588
- children: [/* @__PURE__ */ T(e, {
588
+ children: [/* @__PURE__ */ E(t, {
589
589
  type: "button",
590
590
  variant: "ghost",
591
- onClick: D,
591
+ onClick: O,
592
592
  children: A("common.actions.cancel", "Cancel")
593
- }), /* @__PURE__ */ E(e, {
593
+ }), /* @__PURE__ */ D(t, {
594
594
  type: "button",
595
- onClick: ie,
596
- children: [/* @__PURE__ */ T(x, {
595
+ onClick: w,
596
+ children: [/* @__PURE__ */ E(x, {
597
597
  className: "size-4",
598
598
  "aria-hidden": "true"
599
599
  }), A("common.save", "Save")]
@@ -602,20 +602,20 @@ function P({ name: t, base: n, accent: r, density: i, typography: a, glass: o, r
602
602
  ]
603
603
  })] });
604
604
  }
605
- function F({ label: e, value: o, options: s, onChange: c }) {
605
+ function F({ label: e, value: t, options: s, onChange: c }) {
606
606
  let l = v();
607
- return /* @__PURE__ */ E("div", {
607
+ return /* @__PURE__ */ D("div", {
608
608
  className: "flex flex-col gap-1.5",
609
- children: [/* @__PURE__ */ T(f, {
609
+ children: [/* @__PURE__ */ E(p, {
610
610
  htmlFor: l,
611
611
  children: e
612
- }), /* @__PURE__ */ E(t, {
613
- value: o,
612
+ }), /* @__PURE__ */ D(n, {
613
+ value: t,
614
614
  onValueChange: c,
615
- children: [/* @__PURE__ */ T(i, {
615
+ children: [/* @__PURE__ */ E(a, {
616
616
  id: l,
617
- children: /* @__PURE__ */ T(a, {})
618
- }), /* @__PURE__ */ T(n, { children: s.map((e) => /* @__PURE__ */ T(r, {
617
+ children: /* @__PURE__ */ E(o, {})
618
+ }), /* @__PURE__ */ E(r, { children: s.map((e) => /* @__PURE__ */ E(i, {
619
619
  value: e.value,
620
620
  children: e.label
621
621
  }, e.value)) })]