@burdenoff/microfe-export 2026.623.2 → 2026.625.1

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,346 +1,345 @@
1
1
  import { useExport as e } from "../providers/ExportProvider.js";
2
- import { useAvailableEntities as t, useCreateExportTemplate as n, useDeleteExportTemplate as r, useExportTemplates as ee } from "../hooks/useExportQueries.js";
3
- import { cn as i } from "../utils/cn.js";
4
- import { getFormatDisplayName as a } from "../constants/enums.js";
5
- import { tWithFallback as o } from "../utils/i18n.js";
6
- import { EmptyState as s, PageLayout as c } from "../components/PageLayout.js";
7
- import { nativeImpact as l, nativeNotify as u } from "../../utils/nativeBridge.js";
8
- import { useMemo as d, useState as f } from "react";
9
- import { ChevronRight as te, FileBox as p, Loader2 as m, Plus as h, Search as g, Sparkles as _, X as v } from "lucide-react";
10
- import { jsx as y, jsxs as b } from "react/jsx-runtime";
11
- import { useI18n as x } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
2
+ import { useAvailableEntities as t, useCreateExportTemplate as n, useDeleteExportTemplate as r, useExportTemplates as i } from "../hooks/useExportQueries.js";
3
+ import { cn as a } from "../utils/cn.js";
4
+ import { getFormatDisplayName as o } from "../constants/enums.js";
5
+ import { tWithFallback as s } from "../utils/i18n.js";
6
+ import { EmptyState as c, PageLayout as l } from "../components/PageLayout.js";
7
+ import { nativeImpact as u, nativeNotify as d } from "../../utils/nativeBridge.js";
8
+ import { useMemo as f, useState as p } from "react";
9
+ import { ChevronRight as m, FileBox as h, Loader2 as g, Plus as _, Search as v, Sparkles as y, X as b } from "lucide-react";
10
+ import { jsx as x, jsxs as S } from "react/jsx-runtime";
11
+ import { useI18n as ee } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
12
+ import { CTAOverflowMenu as C } from "@burdenoff/fe-libs/ui";
12
13
  //#region src/export/pages/ExportTemplatesPage.tsx
13
- var S = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
14
- function C() {
15
- let { basePath: C = "/", navigate: w } = e(), { t: T } = x(), E = (e, t, n) => o(T, e, t, n), { data: D, isLoading: O } = ee(), { deleteTemplate: k } = r(), { createTemplate: A, isPending: j } = n(), { data: M } = t(), [N, P] = f(""), [F, I] = f(!1), [L, R] = f(""), [z, B] = f(""), [V, H] = f([]), [U, W] = f("CSV"), [G, K] = f(null), [q, J] = f(null), Y = () => {
16
- R(""), B(""), H([]), W("CSV"), K(null), I(!0);
17
- }, X = async () => {
18
- if (!L.trim()) {
19
- K(E("export.templates.form.errors.nameRequired", "Template name is required."));
14
+ var w = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
15
+ function T() {
16
+ let { basePath: T = "/", navigate: E } = e(), { t: D } = ee(), O = (e, t, n) => s(D, e, t, n), { data: k, isLoading: A } = i(), { deleteTemplate: j } = r(), { createTemplate: M, isPending: N } = n(), { data: P } = t(), [F, I] = p(""), [te, L] = p(!1), [R, z] = p(""), [B, V] = p(""), [H, U] = p([]), [W, G] = p("CSV"), [K, q] = p(null), [J, Y] = p(null), X = () => {
17
+ z(""), V(""), U([]), G("CSV"), q(null), L(!0);
18
+ }, Z = async () => {
19
+ if (!R.trim()) {
20
+ q(O("export.templates.form.errors.nameRequired", "Template name is required."));
20
21
  return;
21
22
  }
22
- if (V.length === 0) {
23
- K(E("export.templates.form.errors.entityRequired", "Select at least one entity type."));
23
+ if (H.length === 0) {
24
+ q(O("export.templates.form.errors.entityRequired", "Select at least one entity type."));
24
25
  return;
25
26
  }
26
- K(null);
27
+ q(null);
27
28
  try {
28
- await A({
29
- name: L.trim(),
30
- description: z.trim() || void 0,
31
- entityTypes: V,
32
- format: U
33
- }), I(!1);
29
+ await M({
30
+ name: R.trim(),
31
+ description: B.trim() || void 0,
32
+ entityTypes: H,
33
+ format: W
34
+ }), L(!1);
34
35
  } catch (e) {
35
- K(e instanceof Error ? e.message : E("export.templates.form.errors.createFailed", "Failed to create template."));
36
+ q(e instanceof Error ? e.message : O("export.templates.form.errors.createFailed", "Failed to create template."));
36
37
  }
37
- }, Z = (e) => {
38
- H((t) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
39
- }, Q = d(() => {
40
- if (!N) return D;
41
- let e = N.toLowerCase();
42
- return D.filter((t) => t.name.toLowerCase().includes(e) || t.entityTypes.some((t) => t.toLowerCase().includes(e)));
43
- }, [D, N]), $ = (e) => {
44
- w?.(S(C, `templates/${e}`));
45
- }, ne = async (e, t) => {
46
- e.stopPropagation(), l("medium"), J(t);
47
- }, re = async () => {
48
- if (q) {
38
+ }, ne = (e) => {
39
+ U((t) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
40
+ }, Q = f(() => {
41
+ if (!F) return k;
42
+ let e = F.toLowerCase();
43
+ return k.filter((t) => t.name.toLowerCase().includes(e) || t.entityTypes.some((t) => t.toLowerCase().includes(e)));
44
+ }, [k, F]), $ = (e) => {
45
+ E?.(w(T, `templates/${e}`));
46
+ }, re = async (e, t) => {
47
+ e.stopPropagation(), u("medium"), Y(t);
48
+ }, ie = async () => {
49
+ if (J) {
49
50
  try {
50
- await k(q), u("success");
51
+ await j(J), d("success");
51
52
  } catch {
52
- u("error");
53
+ d("error");
53
54
  }
54
- J(null);
55
+ Y(null);
55
56
  }
56
57
  };
57
- return /* @__PURE__ */ b(c, {
58
- title: E("export.templates.title", "Export Templates"),
59
- subtitle: E("export.templates.subtitle", "Reusable export configurations for common data exports"),
60
- icon: /* @__PURE__ */ y(p, { size: 24 }),
61
- headerActions: /* @__PURE__ */ b("div", {
62
- className: "flex flex-wrap items-center gap-2",
63
- children: [/* @__PURE__ */ b("button", {
64
- type: "button",
65
- onClick: Y,
66
- className: "inline-flex items-center gap-2 px-3 py-2 sm:px-4 bg-primary text-primary-foreground rounded-lg hover:bg-primary/90 transition-colors font-medium text-sm",
67
- children: [/* @__PURE__ */ y(h, { size: 16 }), E("export.templates.actions.newTemplate", "New Template")]
68
- }), /* @__PURE__ */ b("button", {
69
- type: "button",
70
- onClick: () => w?.(S(C, "new")),
71
- className: "inline-flex items-center gap-2 px-3 py-2 sm:px-4 border-2 border-border rounded-lg hover:bg-accent transition-colors font-medium text-sm",
72
- children: [/* @__PURE__ */ y(h, { size: 16 }), E("export.templates.actions.newExport", "New Export")]
73
- })]
58
+ return /* @__PURE__ */ S(l, {
59
+ title: O("export.templates.title", "Export Templates"),
60
+ subtitle: O("export.templates.subtitle", "Reusable export configurations for common data exports"),
61
+ icon: /* @__PURE__ */ x(h, { size: 24 }),
62
+ headerActions: /* @__PURE__ */ x(C, {
63
+ primary: {
64
+ label: O("export.templates.actions.newTemplate", "New Template"),
65
+ icon: /* @__PURE__ */ x(_, { size: 16 }),
66
+ onSelect: X
67
+ },
68
+ actions: [{
69
+ label: O("export.templates.actions.newExport", "New Export"),
70
+ icon: /* @__PURE__ */ x(_, { size: 16 }),
71
+ onSelect: () => E?.(w(T, "new"))
72
+ }]
74
73
  }),
75
- headerContent: /* @__PURE__ */ b("span", {
76
- className: "inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full text-xs font-medium bg-muted text-muted-foreground",
77
- children: [/* @__PURE__ */ y(_, { size: 12 }), E("export.templates.summary.available", "{count} template{suffix} available", {
74
+ headerContent: /* @__PURE__ */ S("span", {
75
+ className: "inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full text-xs font-medium bg-bg-sunken text-text-secondary",
76
+ children: [/* @__PURE__ */ x(y, { size: 12 }), O("export.templates.summary.available", "{count} template{suffix} available", {
78
77
  count: Q.length,
79
78
  suffix: Q.length === 1 ? "" : "s"
80
79
  })]
81
80
  }),
82
81
  children: [
83
- F && /* @__PURE__ */ b("div", {
84
- className: "border-2 border-primary/30 rounded-xl p-6 bg-primary/5 space-y-4",
82
+ te && /* @__PURE__ */ S("div", {
83
+ className: "border border-primary/30 rounded-xl p-6 bg-accent-wash space-y-4",
85
84
  children: [
86
- /* @__PURE__ */ b("div", {
85
+ /* @__PURE__ */ S("div", {
87
86
  className: "flex items-center justify-between",
88
- children: [/* @__PURE__ */ y("h3", {
87
+ children: [/* @__PURE__ */ x("h3", {
89
88
  className: "font-semibold text-lg",
90
- children: E("export.templates.form.title", "New Template")
91
- }), /* @__PURE__ */ y("button", {
89
+ children: O("export.templates.form.title", "New Template")
90
+ }), /* @__PURE__ */ x("button", {
92
91
  type: "button",
93
- onClick: () => I(!1),
92
+ onClick: () => L(!1),
94
93
  className: "p-1.5 rounded-md hover:bg-accent",
95
- children: /* @__PURE__ */ y(v, { size: 16 })
94
+ children: /* @__PURE__ */ x(b, { size: 16 })
96
95
  })]
97
96
  }),
98
- G && /* @__PURE__ */ y("p", {
99
- className: "text-sm text-destructive bg-destructive/10 rounded-lg px-3 py-2",
100
- children: G
97
+ K && /* @__PURE__ */ x("p", {
98
+ className: "text-sm text-status-error-text bg-status-error-bg/10 rounded-lg px-3 py-2",
99
+ children: K
101
100
  }),
102
- /* @__PURE__ */ b("div", {
101
+ /* @__PURE__ */ S("div", {
103
102
  className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
104
- children: [/* @__PURE__ */ b("div", {
103
+ children: [/* @__PURE__ */ S("div", {
105
104
  className: "space-y-1",
106
- children: [/* @__PURE__ */ b("label", {
105
+ children: [/* @__PURE__ */ S("label", {
107
106
  className: "text-sm font-medium",
108
- children: [E("export.templates.form.fields.name", "Name"), " *"]
109
- }), /* @__PURE__ */ y("input", {
107
+ children: [O("export.templates.form.fields.name", "Name"), " *"]
108
+ }), /* @__PURE__ */ x("input", {
110
109
  type: "text",
111
- "aria-label": E("export.templates.form.fields.name", "Name"),
112
- placeholder: E("export.templates.form.fields.namePlaceholder", "e.g. Weekly Tags Export"),
113
- value: L,
114
- onChange: (e) => R(e.target.value),
115
- className: "w-full px-3 py-2 border-2 border-border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all"
110
+ "aria-label": O("export.templates.form.fields.name", "Name"),
111
+ placeholder: O("export.templates.form.fields.namePlaceholder", "e.g. Weekly Tags Export"),
112
+ value: R,
113
+ onChange: (e) => z(e.target.value),
114
+ className: "w-full px-3 py-2 border-2 border-border-subtle rounded-lg bg-bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all"
116
115
  })]
117
- }), /* @__PURE__ */ b("div", {
116
+ }), /* @__PURE__ */ S("div", {
118
117
  className: "space-y-1",
119
- children: [/* @__PURE__ */ b("label", {
118
+ children: [/* @__PURE__ */ S("label", {
120
119
  className: "text-sm font-medium",
121
- children: [E("export.templates.form.fields.format", "Format"), " *"]
122
- }), /* @__PURE__ */ b("select", {
123
- value: U,
124
- onChange: (e) => W(e.target.value),
125
- className: "w-full px-3 py-2 border-2 border-border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all",
126
- children: [/* @__PURE__ */ y("option", {
120
+ children: [O("export.templates.form.fields.format", "Format"), " *"]
121
+ }), /* @__PURE__ */ S("select", {
122
+ value: W,
123
+ onChange: (e) => G(e.target.value),
124
+ className: "w-full px-3 py-2 border-2 border-border-subtle rounded-lg bg-bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all",
125
+ children: [/* @__PURE__ */ x("option", {
127
126
  value: "CSV",
128
127
  children: "CSV"
129
- }), /* @__PURE__ */ y("option", {
128
+ }), /* @__PURE__ */ x("option", {
130
129
  value: "JSON",
131
130
  children: "JSON"
132
131
  })]
133
132
  })]
134
133
  })]
135
134
  }),
136
- /* @__PURE__ */ b("div", {
135
+ /* @__PURE__ */ S("div", {
137
136
  className: "space-y-1",
138
- children: [/* @__PURE__ */ y("label", {
137
+ children: [/* @__PURE__ */ x("label", {
139
138
  className: "text-sm font-medium",
140
- children: E("export.templates.form.fields.description", "Description")
141
- }), /* @__PURE__ */ y("input", {
139
+ children: O("export.templates.form.fields.description", "Description")
140
+ }), /* @__PURE__ */ x("input", {
142
141
  type: "text",
143
- "aria-label": E("export.templates.form.fields.description", "Description"),
144
- placeholder: E("export.templates.form.fields.descriptionPlaceholder", "Optional description"),
145
- value: z,
146
- onChange: (e) => B(e.target.value),
147
- className: "w-full px-3 py-2 border-2 border-border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all"
142
+ "aria-label": O("export.templates.form.fields.description", "Description"),
143
+ placeholder: O("export.templates.form.fields.descriptionPlaceholder", "Optional description"),
144
+ value: B,
145
+ onChange: (e) => V(e.target.value),
146
+ className: "w-full px-3 py-2 border-2 border-border-subtle rounded-lg bg-bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all"
148
147
  })]
149
148
  }),
150
- /* @__PURE__ */ b("div", {
149
+ /* @__PURE__ */ S("div", {
151
150
  className: "space-y-2",
152
- children: [/* @__PURE__ */ b("label", {
151
+ children: [/* @__PURE__ */ S("label", {
153
152
  className: "text-sm font-medium",
154
153
  children: [
155
- E("export.templates.form.fields.entityTypes", "Entity Types"),
154
+ O("export.templates.form.fields.entityTypes", "Entity Types"),
156
155
  " *",
157
156
  " ",
158
- /* @__PURE__ */ y("span", {
159
- className: "text-muted-foreground font-normal",
160
- children: E("export.templates.form.fields.entityTypesHint", "(select at least one)")
157
+ /* @__PURE__ */ x("span", {
158
+ className: "text-text-secondary font-normal",
159
+ children: O("export.templates.form.fields.entityTypesHint", "(select at least one)")
161
160
  })
162
161
  ]
163
- }), /* @__PURE__ */ y("div", {
162
+ }), /* @__PURE__ */ x("div", {
164
163
  className: "flex flex-wrap gap-2",
165
- children: M.map((e) => /* @__PURE__ */ y("button", {
164
+ children: P.map((e) => /* @__PURE__ */ x("button", {
166
165
  type: "button",
167
- onClick: () => Z(e.entityType),
168
- className: i("px-3 py-1.5 rounded-lg text-sm font-medium border-2 transition-all", V.includes(e.entityType) ? "border-primary bg-primary/10 text-primary" : "border-border bg-background hover:border-primary/50"),
166
+ onClick: () => ne(e.entityType),
167
+ className: a("px-3 py-1.5 rounded-lg text-sm font-medium border-2 transition-all", H.includes(e.entityType) ? "border-primary bg-action-primary-bg/10 text-primary" : "border-border-subtle bg-bg-surface hover:border-primary/50"),
169
168
  children: e.displayName
170
169
  }, e.entityType))
171
170
  })]
172
171
  }),
173
- /* @__PURE__ */ b("div", {
172
+ /* @__PURE__ */ S("div", {
174
173
  className: "flex gap-3 pt-2",
175
- children: [/* @__PURE__ */ b("button", {
174
+ children: [/* @__PURE__ */ S("button", {
176
175
  type: "button",
177
- onClick: X,
178
- disabled: j,
179
- className: "inline-flex items-center gap-2 px-5 py-2.5 bg-primary text-primary-foreground rounded-lg hover:bg-primary/90 transition-colors font-medium disabled:opacity-50",
180
- children: [j ? /* @__PURE__ */ y(m, {
176
+ onClick: Z,
177
+ disabled: N,
178
+ className: "inline-flex items-center gap-2 px-5 py-2.5 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-colors font-medium disabled:opacity-50",
179
+ children: [N ? /* @__PURE__ */ x(g, {
181
180
  size: 16,
182
181
  className: "animate-spin"
183
- }) : /* @__PURE__ */ y(h, { size: 16 }), E("export.templates.form.actions.create", "Create Template")]
184
- }), /* @__PURE__ */ y("button", {
182
+ }) : /* @__PURE__ */ x(_, { size: 16 }), O("export.templates.form.actions.create", "Create Template")]
183
+ }), /* @__PURE__ */ x("button", {
185
184
  type: "button",
186
- onClick: () => I(!1),
187
- className: "px-5 py-2.5 border-2 border-border rounded-lg hover:bg-accent transition-colors font-medium",
188
- children: E("export.templates.form.actions.cancel", "Cancel")
185
+ onClick: () => L(!1),
186
+ className: "px-5 py-2.5 border-2 border-border-subtle rounded-lg hover:bg-accent transition-colors font-medium",
187
+ children: O("export.templates.form.actions.cancel", "Cancel")
189
188
  })]
190
189
  })
191
190
  ]
192
191
  }),
193
- /* @__PURE__ */ b("div", {
192
+ /* @__PURE__ */ S("div", {
194
193
  className: "relative group",
195
194
  children: [
196
- /* @__PURE__ */ y(g, {
195
+ /* @__PURE__ */ x(v, {
197
196
  size: 18,
198
- className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground group-focus-within:text-primary transition-colors"
197
+ className: "absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary group-focus-within:text-primary transition-colors"
199
198
  }),
200
- /* @__PURE__ */ y("input", {
199
+ /* @__PURE__ */ x("input", {
201
200
  type: "text",
202
- "aria-label": E("export.templates.search.placeholder", "Search templates"),
203
- placeholder: E("export.templates.search.placeholder", "Search templates..."),
204
- value: N,
205
- onChange: (e) => P(e.target.value),
206
- className: "w-full pl-[3.25rem] pr-4 py-2.5 border-2 border-border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all duration-200"
201
+ "aria-label": O("export.templates.search.placeholder", "Search templates"),
202
+ placeholder: O("export.templates.search.placeholder", "Search templates..."),
203
+ value: F,
204
+ onChange: (e) => I(e.target.value),
205
+ className: "w-full pl-[3.25rem] pr-4 py-2.5 border-2 border-border-subtle rounded-lg bg-bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all duration-200"
207
206
  }),
208
- N && /* @__PURE__ */ y("button", {
207
+ F && /* @__PURE__ */ x("button", {
209
208
  type: "button",
210
- onClick: () => P(""),
211
- className: "absolute right-3 top-1/2 -translate-y-1/2 p-1 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent",
212
- children: /* @__PURE__ */ y(v, { size: 16 })
209
+ onClick: () => I(""),
210
+ className: "absolute right-3 top-1/2 -translate-y-1/2 p-1 rounded-md text-text-secondary hover:text-text-primary hover:bg-accent",
211
+ children: /* @__PURE__ */ x(b, { size: 16 })
213
212
  })
214
213
  ]
215
214
  }),
216
- O && /* @__PURE__ */ y("div", {
215
+ A && /* @__PURE__ */ x("div", {
217
216
  className: "grid grid-cols-1 lg:grid-cols-2 gap-4",
218
217
  children: [...[
219
218
  ,
220
219
  ,
221
220
  ,
222
221
  ,
223
- ]].map((e, t) => /* @__PURE__ */ b("div", {
224
- className: "border-2 border-border/50 rounded-xl p-5 animate-pulse",
222
+ ]].map((e, t) => /* @__PURE__ */ S("div", {
223
+ className: "border border-border-seam rounded-xl p-5 animate-pulse",
225
224
  children: [
226
- /* @__PURE__ */ y("div", { className: "h-5 w-40 bg-muted rounded mb-3" }),
227
- /* @__PURE__ */ y("div", { className: "h-3 w-full bg-muted rounded mb-2" }),
228
- /* @__PURE__ */ b("div", {
225
+ /* @__PURE__ */ x("div", { className: "h-5 w-40 bg-bg-sunken rounded mb-3" }),
226
+ /* @__PURE__ */ x("div", { className: "h-3 w-full bg-bg-sunken rounded mb-2" }),
227
+ /* @__PURE__ */ S("div", {
229
228
  className: "flex gap-2 mt-4",
230
- children: [/* @__PURE__ */ y("div", { className: "h-5 w-16 bg-muted rounded-full" }), /* @__PURE__ */ y("div", { className: "h-5 w-16 bg-muted rounded-full" })]
229
+ children: [/* @__PURE__ */ x("div", { className: "h-5 w-16 bg-bg-sunken rounded-full" }), /* @__PURE__ */ x("div", { className: "h-5 w-16 bg-bg-sunken rounded-full" })]
231
230
  })
232
231
  ]
233
232
  }, t))
234
233
  }),
235
- O ? null : Q.length > 0 ? /* @__PURE__ */ y("div", {
234
+ A ? null : Q.length > 0 ? /* @__PURE__ */ x("div", {
236
235
  className: "grid grid-cols-1 lg:grid-cols-2 gap-4",
237
- children: Q.map((e, t) => /* @__PURE__ */ b("div", {
236
+ children: Q.map((e, t) => /* @__PURE__ */ S("div", {
238
237
  role: "button",
239
238
  tabIndex: 0,
240
239
  onClick: () => $(e.id),
241
240
  onKeyDown: (t) => {
242
241
  (t.key === "Enter" || t.key === " ") && (t.preventDefault(), $(e.id));
243
242
  },
244
- className: i("text-left group cursor-pointer border-2 border-border/50 rounded-xl overflow-hidden", "hover:shadow-md hover:border-primary/30 transition-all duration-200", "animate-in fade-in-0 slide-in-from-bottom-2"),
243
+ className: a("text-left group cursor-pointer border border-border-seam rounded-xl overflow-hidden bg-bg-surface", "hover:border-primary/40 shadow-[var(--shadow-pop)] transition-colors duration-200", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40", "animate-in fade-in-0"),
245
244
  style: { animationDelay: `${t * 50}ms` },
246
- children: [/* @__PURE__ */ y("div", {
247
- className: "p-4 border-b bg-muted/30",
248
- children: /* @__PURE__ */ b("div", {
245
+ children: [/* @__PURE__ */ x("div", {
246
+ className: "p-4 border-b bg-bg-sunken/30",
247
+ children: /* @__PURE__ */ S("div", {
249
248
  className: "flex items-start justify-between",
250
- children: [/* @__PURE__ */ b("div", {
249
+ children: [/* @__PURE__ */ S("div", {
251
250
  className: "flex items-center gap-3",
252
- children: [/* @__PURE__ */ y("div", {
253
- className: "p-2 rounded-lg bg-primary/10",
254
- children: /* @__PURE__ */ y(p, {
251
+ children: [/* @__PURE__ */ x("div", {
252
+ className: "p-2 rounded-lg bg-action-primary-bg/10",
253
+ children: /* @__PURE__ */ x(h, {
255
254
  size: 20,
256
255
  className: "text-primary"
257
256
  })
258
- }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h3", {
257
+ }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h3", {
259
258
  className: "font-semibold",
260
259
  children: e.name
261
- }), /* @__PURE__ */ b("p", {
262
- className: "text-xs text-muted-foreground",
263
- children: [a(e.format), e.isDefault && /* @__PURE__ */ y("span", {
264
- className: "ml-1.5 inline-flex items-center px-1.5 py-0.5 rounded text-xs bg-primary/10 text-primary font-medium",
265
- children: E("export.templates.card.default", "Default")
260
+ }), /* @__PURE__ */ S("p", {
261
+ className: "text-xs text-text-secondary",
262
+ children: [o(e.format), e.isDefault && /* @__PURE__ */ x("span", {
263
+ className: "ml-1.5 inline-flex items-center px-1.5 py-0.5 rounded text-xs bg-action-primary-bg/10 text-primary font-medium",
264
+ children: O("export.templates.card.default", "Default")
266
265
  })]
267
266
  })] })]
268
- }), /* @__PURE__ */ b("div", {
267
+ }), /* @__PURE__ */ S("div", {
269
268
  className: "flex items-center gap-2",
270
- children: [/* @__PURE__ */ y("button", {
269
+ children: [/* @__PURE__ */ x("button", {
271
270
  type: "button",
272
- onClick: (t) => ne(t, e.id),
273
- className: "p-1.5 rounded-md text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors",
274
- "aria-label": E("export.templates.card.deleteAriaLabel", "Delete {name}", { name: e.name }),
275
- children: /* @__PURE__ */ y(v, { size: 14 })
276
- }), /* @__PURE__ */ y(te, {
271
+ onClick: (t) => re(t, e.id),
272
+ className: "p-1.5 rounded-md text-text-secondary hover:text-status-error-text hover:bg-status-error-bg/10 transition-colors",
273
+ "aria-label": O("export.templates.card.deleteAriaLabel", "Delete {name}", { name: e.name }),
274
+ children: /* @__PURE__ */ x(b, { size: 14 })
275
+ }), /* @__PURE__ */ x(m, {
277
276
  size: 18,
278
- className: "text-muted-foreground group-hover:text-primary transition-colors mt-1"
277
+ className: "text-text-secondary group-hover:text-primary transition-colors mt-1"
279
278
  })]
280
279
  })]
281
280
  })
282
- }), /* @__PURE__ */ b("div", {
281
+ }), /* @__PURE__ */ S("div", {
283
282
  className: "p-4",
284
- children: [e.description && /* @__PURE__ */ y("p", {
285
- className: "text-sm text-muted-foreground mb-3 line-clamp-2",
283
+ children: [e.description && /* @__PURE__ */ x("p", {
284
+ className: "text-sm text-text-secondary mb-3 line-clamp-2",
286
285
  children: e.description
287
- }), /* @__PURE__ */ b("div", {
286
+ }), /* @__PURE__ */ S("div", {
288
287
  className: "flex flex-wrap gap-1.5 overflow-hidden",
289
- children: [e.entityTypes.slice(0, 6).map((e) => /* @__PURE__ */ y("span", {
290
- className: "inline-flex px-2 py-0.5 rounded text-xs font-medium bg-muted text-muted-foreground max-w-full truncate",
288
+ children: [e.entityTypes.slice(0, 6).map((e) => /* @__PURE__ */ x("span", {
289
+ className: "inline-flex px-2 py-0.5 rounded text-xs font-medium bg-bg-sunken text-text-secondary max-w-full truncate",
291
290
  children: e
292
- }, e)), e.entityTypes.length > 6 && /* @__PURE__ */ y("span", {
293
- className: "inline-flex px-2 py-0.5 rounded text-xs font-medium bg-muted text-muted-foreground",
294
- children: E("export.templates.card.moreEntities", "+{count} more", { count: e.entityTypes.length - 6 })
291
+ }, e)), e.entityTypes.length > 6 && /* @__PURE__ */ x("span", {
292
+ className: "inline-flex px-2 py-0.5 rounded text-xs font-medium bg-bg-sunken text-text-secondary",
293
+ children: O("export.templates.card.moreEntities", "+{count} more", { count: e.entityTypes.length - 6 })
295
294
  })]
296
295
  })]
297
296
  })]
298
297
  }, e.id))
299
- }) : /* @__PURE__ */ y(s, {
300
- icon: y(N ? g : p, { size: 48 }),
301
- title: N ? E("export.templates.empty.filtered.title", "No matching templates") : E("export.templates.empty.title", "No templates yet"),
302
- description: N ? E("export.templates.empty.filtered.description", "Try adjusting your search to find what you are looking for.") : E("export.templates.empty.description", "Create a template to save reusable export configurations."),
303
- action: N ? /* @__PURE__ */ b("button", {
298
+ }) : /* @__PURE__ */ x(c, {
299
+ icon: x(F ? v : h, { size: 48 }),
300
+ title: F ? O("export.templates.empty.filtered.title", "No matching templates") : O("export.templates.empty.title", "No templates yet"),
301
+ description: F ? O("export.templates.empty.filtered.description", "Try adjusting your search to find what you are looking for.") : O("export.templates.empty.description", "Create a template to save reusable export configurations."),
302
+ action: F ? /* @__PURE__ */ S("button", {
304
303
  type: "button",
305
- onClick: () => P(""),
306
- className: "inline-flex items-center gap-2 px-4 py-2 border-2 border-border rounded-lg hover:bg-accent transition-colors font-medium",
307
- children: [/* @__PURE__ */ y(v, { size: 16 }), E("export.templates.empty.filtered.actions.clear", "Clear Search")]
308
- }) : /* @__PURE__ */ b("button", {
304
+ onClick: () => I(""),
305
+ className: "inline-flex items-center gap-2 px-4 py-2 border-2 border-border-subtle rounded-lg hover:bg-accent transition-colors font-medium",
306
+ children: [/* @__PURE__ */ x(b, { size: 16 }), O("export.templates.empty.filtered.actions.clear", "Clear Search")]
307
+ }) : /* @__PURE__ */ S("button", {
309
308
  type: "button",
310
- onClick: Y,
311
- className: "inline-flex items-center gap-2 px-4 py-2 bg-primary text-primary-foreground rounded-lg hover:bg-primary/90 transition-colors font-medium",
312
- children: [/* @__PURE__ */ y(h, { size: 16 }), E("export.templates.empty.actions.newTemplate", "New Template")]
309
+ onClick: X,
310
+ className: "inline-flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-colors font-medium",
311
+ children: [/* @__PURE__ */ x(_, { size: 16 }), O("export.templates.empty.actions.newTemplate", "New Template")]
313
312
  })
314
313
  }),
315
- q && /* @__PURE__ */ y("div", {
314
+ J && /* @__PURE__ */ x("div", {
316
315
  role: "dialog",
317
316
  "aria-modal": "true",
318
317
  "aria-labelledby": "template-list-delete-title",
319
- className: "fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm p-4",
320
- children: /* @__PURE__ */ b("div", {
321
- className: "w-full max-w-md rounded-xl border-2 border-border bg-card p-6 shadow-xl",
318
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-bg-surface/80 backdrop-blur-sm p-4",
319
+ children: /* @__PURE__ */ S("div", {
320
+ className: "w-full max-w-md rounded-xl border-2 border-border-subtle bg-bg-surface p-6 shadow-xl",
322
321
  children: [
323
- /* @__PURE__ */ y("h2", {
322
+ /* @__PURE__ */ x("h2", {
324
323
  id: "template-list-delete-title",
325
324
  className: "text-lg font-bold",
326
- children: E("export.templates.delete.title", "Delete template?")
325
+ children: O("export.templates.delete.title", "Delete template?")
327
326
  }),
328
- /* @__PURE__ */ y("p", {
329
- className: "mt-2 text-sm text-muted-foreground",
330
- children: E("export.templates.delete.description", "This removes the saved export configuration. Existing export jobs are not deleted.")
327
+ /* @__PURE__ */ x("p", {
328
+ className: "mt-2 text-sm text-text-secondary",
329
+ children: O("export.templates.delete.description", "This removes the saved export configuration. Existing export jobs are not deleted.")
331
330
  }),
332
- /* @__PURE__ */ b("div", {
331
+ /* @__PURE__ */ S("div", {
333
332
  className: "mt-6 flex flex-col-reverse sm:flex-row sm:justify-end gap-3",
334
- children: [/* @__PURE__ */ y("button", {
333
+ children: [/* @__PURE__ */ x("button", {
335
334
  type: "button",
336
- onClick: () => J(null),
337
- className: "px-4 py-2 rounded-lg border-2 border-border hover:bg-accent transition-colors font-medium",
338
- children: E("export.templates.delete.cancel", "Keep Template")
339
- }), /* @__PURE__ */ y("button", {
335
+ onClick: () => Y(null),
336
+ className: "px-4 py-2 rounded-lg border-2 border-border-subtle hover:bg-accent transition-colors font-medium",
337
+ children: O("export.templates.delete.cancel", "Keep Template")
338
+ }), /* @__PURE__ */ x("button", {
340
339
  type: "button",
341
- onClick: re,
342
- className: "px-4 py-2 rounded-lg bg-destructive text-destructive-foreground hover:bg-destructive/90 transition-colors font-medium",
343
- children: E("export.templates.delete.confirmAction", "Delete Template")
340
+ onClick: ie,
341
+ className: "px-4 py-2 rounded-lg bg-status-error-bg text-status-error-text hover:bg-status-error-bg/90 transition-colors font-medium",
342
+ children: O("export.templates.delete.confirmAction", "Delete Template")
344
343
  })]
345
344
  })
346
345
  ]
@@ -350,6 +349,6 @@ function C() {
350
349
  });
351
350
  }
352
351
  //#endregion
353
- export { C as ExportTemplatesPage };
352
+ export { T as ExportTemplatesPage };
354
353
 
355
354
  //# sourceMappingURL=ExportTemplatesPage.js.map