@burdenoff/microfe-export 2026.624.1 → 2026.625.2
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.
- package/dist/export/components/ExportStatusBadge.js +1 -1
- package/dist/export/components/ExportStatusBadge.js.map +1 -1
- package/dist/export/components/PageLayout.js +7 -18
- package/dist/export/components/PageLayout.js.map +1 -1
- package/dist/export/pages/CreateExportPage.js +256 -249
- package/dist/export/pages/CreateExportPage.js.map +1 -1
- package/dist/export/pages/ExportDashboardPage.js +119 -53
- package/dist/export/pages/ExportDashboardPage.js.map +1 -1
- package/dist/export/pages/ExportDetailPage.js +214 -198
- package/dist/export/pages/ExportDetailPage.js.map +1 -1
- package/dist/export/pages/ExportHistoryPage.js +28 -27
- package/dist/export/pages/ExportHistoryPage.js.map +1 -1
- package/dist/export/pages/ExportTemplatesPage.js +122 -123
- package/dist/export/pages/ExportTemplatesPage.js.map +1 -1
- package/dist/export/pages/TemplateDetailPage.js +127 -116
- package/dist/export/pages/TemplateDetailPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -7,11 +7,12 @@ import { useState as l } from "react";
|
|
|
7
7
|
import { AlertCircle as u, ArrowLeft as d, Clock as f, Download as p, FileBox as m, FileText as h, HardDrive as g, Loader2 as _, Play as v, Trash2 as y } from "lucide-react";
|
|
8
8
|
import { useParams as b } from "react-router-dom";
|
|
9
9
|
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
10
|
+
import { CTAOverflowMenu as C, GlassCard as w, ShowMore as T } from "@burdenoff/fe-libs/ui";
|
|
10
11
|
//#region src/export/pages/TemplateDetailPage.tsx
|
|
11
|
-
var
|
|
12
|
-
function
|
|
13
|
-
let { templateId:
|
|
14
|
-
|
|
12
|
+
var E = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
|
|
13
|
+
function D() {
|
|
14
|
+
let { templateId: D } = b(), { basePath: O = "/", navigate: k } = e(), [A, j] = l(!1), { data: M, isLoading: N } = n(D), { deleteTemplate: P, isPending: F } = t();
|
|
15
|
+
if (N) return /* @__PURE__ */ S("div", {
|
|
15
16
|
className: "flex flex-col items-center justify-center py-20",
|
|
16
17
|
children: [/* @__PURE__ */ x(_, {
|
|
17
18
|
size: 48,
|
|
@@ -20,44 +21,115 @@ function w() {
|
|
|
20
21
|
className: "mt-6 text-sm font-medium text-text-secondary",
|
|
21
22
|
children: "Loading template details…"
|
|
22
23
|
})]
|
|
23
|
-
})
|
|
24
|
+
});
|
|
25
|
+
if (!M) return /* @__PURE__ */ S(a, {
|
|
26
|
+
showHeader: !1,
|
|
27
|
+
children: [/* @__PURE__ */ S("div", {
|
|
28
|
+
className: "flex items-center gap-3 mb-6",
|
|
29
|
+
children: [/* @__PURE__ */ x("button", {
|
|
30
|
+
type: "button",
|
|
31
|
+
onClick: () => k?.(E(O, "templates")),
|
|
32
|
+
className: "p-2.5 hover:bg-accent rounded-lg transition-all duration-200",
|
|
33
|
+
children: /* @__PURE__ */ x(d, { size: 20 })
|
|
34
|
+
}), /* @__PURE__ */ x("h1", {
|
|
35
|
+
className: "text-xl font-bold",
|
|
36
|
+
children: "Template Not Found"
|
|
37
|
+
})]
|
|
38
|
+
}), /* @__PURE__ */ S("div", {
|
|
39
|
+
className: "border-2 border-border-default rounded-xl bg-status-error-bg-subtle p-12 text-center",
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ x(u, {
|
|
42
|
+
size: 48,
|
|
43
|
+
className: "text-status-error-text mx-auto mb-4"
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ x("h3", {
|
|
46
|
+
className: "text-lg font-bold text-status-error-text mb-2",
|
|
47
|
+
children: "Template Not Found"
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ x("p", {
|
|
50
|
+
className: "text-status-error-text mb-6",
|
|
51
|
+
children: "The template you are looking for does not exist."
|
|
52
|
+
}),
|
|
53
|
+
/* @__PURE__ */ S("button", {
|
|
54
|
+
type: "button",
|
|
55
|
+
onClick: () => k?.(E(O, "templates")),
|
|
56
|
+
className: "inline-flex items-center gap-2 px-6 py-3 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-colors font-medium",
|
|
57
|
+
children: [/* @__PURE__ */ x(d, { size: 18 }), "Back to Templates"]
|
|
58
|
+
})
|
|
59
|
+
]
|
|
60
|
+
})]
|
|
61
|
+
});
|
|
62
|
+
let I = () => {
|
|
63
|
+
k?.(E(O, `new?templateId=${D}`));
|
|
64
|
+
}, L = async () => {
|
|
65
|
+
if (D) {
|
|
66
|
+
s("medium");
|
|
67
|
+
try {
|
|
68
|
+
await P(D), c("success"), k?.(E(O, "templates"));
|
|
69
|
+
} catch {
|
|
70
|
+
c("error");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}, R = M.isDefault ? [] : [{
|
|
74
|
+
label: "Delete Template",
|
|
75
|
+
icon: /* @__PURE__ */ x(y, { size: 16 }),
|
|
76
|
+
intent: "destructive",
|
|
77
|
+
disabled: F,
|
|
78
|
+
onSelect: () => j(!0)
|
|
79
|
+
}];
|
|
80
|
+
return /* @__PURE__ */ S(a, {
|
|
24
81
|
showHeader: !1,
|
|
25
82
|
children: [
|
|
26
83
|
/* @__PURE__ */ x("div", {
|
|
27
|
-
className: "relative overflow-hidden rounded-xl bg-
|
|
84
|
+
className: "relative overflow-hidden rounded-xl bg-accent-wash border border-border-seam p-6 shadow-[var(--shadow-pop)]",
|
|
28
85
|
children: /* @__PURE__ */ S("div", {
|
|
29
|
-
className: "relative z-10 flex items-center gap-4",
|
|
30
|
-
children: [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
className: "
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
86
|
+
className: "relative z-10 flex flex-col sm:flex-row sm:items-center gap-4",
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ x("button", {
|
|
89
|
+
type: "button",
|
|
90
|
+
onClick: () => k?.(E(O, "templates")),
|
|
91
|
+
"aria-label": "Back to templates",
|
|
92
|
+
className: "p-2.5 hover:bg-accent rounded-lg transition-colors duration-200 self-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",
|
|
93
|
+
children: /* @__PURE__ */ x(d, { size: 20 })
|
|
94
|
+
}),
|
|
95
|
+
/* @__PURE__ */ S("div", {
|
|
96
|
+
className: "flex items-center gap-3 flex-1 min-w-0",
|
|
97
|
+
children: [/* @__PURE__ */ x("div", {
|
|
98
|
+
className: "p-2.5 rounded-lg bg-action-primary-bg/10",
|
|
99
|
+
children: /* @__PURE__ */ x(m, {
|
|
100
|
+
size: 24,
|
|
101
|
+
className: "text-primary"
|
|
102
|
+
})
|
|
103
|
+
}), /* @__PURE__ */ S("div", {
|
|
104
|
+
className: "flex-1 min-w-0",
|
|
105
|
+
children: [/* @__PURE__ */ x("h1", {
|
|
106
|
+
className: "text-xl sm:text-2xl font-bold truncate",
|
|
107
|
+
children: M.name
|
|
108
|
+
}), /* @__PURE__ */ x("p", {
|
|
109
|
+
className: "text-sm text-text-secondary mt-1",
|
|
110
|
+
children: M.isDefault ? "Default template" : "Custom template"
|
|
111
|
+
})]
|
|
51
112
|
})]
|
|
52
|
-
})
|
|
53
|
-
|
|
113
|
+
}),
|
|
114
|
+
/* @__PURE__ */ x("div", {
|
|
115
|
+
className: "flex-shrink-0",
|
|
116
|
+
children: /* @__PURE__ */ x(C, {
|
|
117
|
+
primary: {
|
|
118
|
+
label: "Use Template",
|
|
119
|
+
icon: /* @__PURE__ */ x(v, { size: 16 }),
|
|
120
|
+
onSelect: I
|
|
121
|
+
},
|
|
122
|
+
actions: R
|
|
123
|
+
})
|
|
124
|
+
})
|
|
125
|
+
]
|
|
54
126
|
})
|
|
55
127
|
}),
|
|
56
|
-
|
|
57
|
-
className: "border
|
|
128
|
+
M.description && /* @__PURE__ */ x("div", {
|
|
129
|
+
className: "border border-border-seam rounded-xl p-5 bg-bg-surface",
|
|
58
130
|
children: /* @__PURE__ */ x("p", {
|
|
59
131
|
className: "text-sm text-text-secondary",
|
|
60
|
-
children:
|
|
132
|
+
children: M.description
|
|
61
133
|
})
|
|
62
134
|
}),
|
|
63
135
|
/* @__PURE__ */ x("div", {
|
|
@@ -66,7 +138,7 @@ function w() {
|
|
|
66
138
|
{
|
|
67
139
|
icon: /* @__PURE__ */ x(h, { size: 18 }),
|
|
68
140
|
label: "Format",
|
|
69
|
-
value: i(
|
|
141
|
+
value: i(M.format)
|
|
70
142
|
},
|
|
71
143
|
{
|
|
72
144
|
icon: /* @__PURE__ */ x(g, { size: 18 }),
|
|
@@ -76,15 +148,16 @@ function w() {
|
|
|
76
148
|
{
|
|
77
149
|
icon: /* @__PURE__ */ x(p, { size: 18 }),
|
|
78
150
|
label: "Entity Types",
|
|
79
|
-
value: `${
|
|
151
|
+
value: `${M.entityTypes.length} type${M.entityTypes.length === 1 ? "" : "s"}`
|
|
80
152
|
},
|
|
81
153
|
{
|
|
82
154
|
icon: /* @__PURE__ */ x(f, { size: 18 }),
|
|
83
155
|
label: "Last Updated",
|
|
84
|
-
value: new Date(
|
|
156
|
+
value: new Date(M.updatedAt).toLocaleDateString()
|
|
85
157
|
}
|
|
86
|
-
].map((e) => /* @__PURE__ */ S(
|
|
87
|
-
|
|
158
|
+
].map((e) => /* @__PURE__ */ S(w, {
|
|
159
|
+
treatment: "metric",
|
|
160
|
+
className: "p-4 border-border-seam",
|
|
88
161
|
children: [/* @__PURE__ */ S("div", {
|
|
89
162
|
className: "flex items-center gap-2 text-text-secondary mb-1",
|
|
90
163
|
children: [e.icon, /* @__PURE__ */ x("span", {
|
|
@@ -92,7 +165,7 @@ function w() {
|
|
|
92
165
|
children: e.label
|
|
93
166
|
})]
|
|
94
167
|
}), /* @__PURE__ */ x("p", {
|
|
95
|
-
className: "font-bold text-lg",
|
|
168
|
+
className: "font-bold text-lg tabular-nums",
|
|
96
169
|
children: e.value
|
|
97
170
|
})]
|
|
98
171
|
}, e.label))
|
|
@@ -100,35 +173,18 @@ function w() {
|
|
|
100
173
|
/* @__PURE__ */ x(o, {
|
|
101
174
|
title: "Included Entity Types",
|
|
102
175
|
description: "Data types that will be exported",
|
|
103
|
-
children: /* @__PURE__ */ x(
|
|
104
|
-
|
|
105
|
-
children:
|
|
106
|
-
className: "
|
|
107
|
-
children: e
|
|
108
|
-
|
|
176
|
+
children: /* @__PURE__ */ x(T, {
|
|
177
|
+
collapsedHeight: 96,
|
|
178
|
+
children: /* @__PURE__ */ x("div", {
|
|
179
|
+
className: "flex flex-wrap gap-2",
|
|
180
|
+
children: M.entityTypes.map((e) => /* @__PURE__ */ x("span", {
|
|
181
|
+
className: "inline-flex items-center gap-2 px-3 py-2 rounded-lg text-sm font-medium border border-border-seam bg-bg-sunken/30",
|
|
182
|
+
children: e
|
|
183
|
+
}, e))
|
|
184
|
+
})
|
|
109
185
|
})
|
|
110
186
|
}),
|
|
111
|
-
/* @__PURE__ */
|
|
112
|
-
className: "flex flex-col sm:flex-row gap-3 pt-2",
|
|
113
|
-
children: [/* @__PURE__ */ S("button", {
|
|
114
|
-
type: "button",
|
|
115
|
-
onClick: () => {
|
|
116
|
-
E?.(C(T, `new?templateId=${w}`));
|
|
117
|
-
},
|
|
118
|
-
className: "flex-1 inline-flex items-center justify-center gap-2 px-6 py-3 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-all duration-200 font-bold shadow-lg",
|
|
119
|
-
children: [/* @__PURE__ */ x(v, { size: 18 }), "Use Template"]
|
|
120
|
-
}), !k.isDefault && /* @__PURE__ */ S("button", {
|
|
121
|
-
type: "button",
|
|
122
|
-
onClick: () => O(!0),
|
|
123
|
-
disabled: M,
|
|
124
|
-
className: "inline-flex items-center justify-center gap-2 px-6 py-3 border-2 border-status-error-bg/50 text-status-error-text rounded-lg hover:bg-status-error-bg-subtle transition-all duration-200 font-medium disabled:opacity-50",
|
|
125
|
-
children: [M ? /* @__PURE__ */ x(_, {
|
|
126
|
-
size: 18,
|
|
127
|
-
className: "animate-spin"
|
|
128
|
-
}) : /* @__PURE__ */ x(y, { size: 18 }), "Delete Template"]
|
|
129
|
-
})]
|
|
130
|
-
}),
|
|
131
|
-
D && /* @__PURE__ */ x("div", {
|
|
187
|
+
A && /* @__PURE__ */ x("div", {
|
|
132
188
|
role: "dialog",
|
|
133
189
|
"aria-modal": "true",
|
|
134
190
|
"aria-labelledby": "template-delete-title",
|
|
@@ -149,24 +205,15 @@ function w() {
|
|
|
149
205
|
className: "mt-6 flex flex-col-reverse sm:flex-row sm:justify-end gap-3",
|
|
150
206
|
children: [/* @__PURE__ */ x("button", {
|
|
151
207
|
type: "button",
|
|
152
|
-
onClick: () =>
|
|
208
|
+
onClick: () => j(!1),
|
|
153
209
|
className: "px-4 py-2 rounded-lg border-2 border-border-subtle hover:bg-accent transition-colors font-medium",
|
|
154
210
|
children: "Keep Template"
|
|
155
211
|
}), /* @__PURE__ */ S("button", {
|
|
156
212
|
type: "button",
|
|
157
|
-
onClick:
|
|
158
|
-
|
|
159
|
-
s("medium");
|
|
160
|
-
try {
|
|
161
|
-
await j(w), c("success"), E?.(C(T, "templates"));
|
|
162
|
-
} catch {
|
|
163
|
-
c("error");
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
disabled: M,
|
|
213
|
+
onClick: L,
|
|
214
|
+
disabled: F,
|
|
168
215
|
className: "inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg bg-status-error-bg text-status-error-text hover:bg-status-error-bg/90 transition-colors font-medium disabled:opacity-50",
|
|
169
|
-
children: [
|
|
216
|
+
children: [F ? /* @__PURE__ */ x(_, {
|
|
170
217
|
size: 16,
|
|
171
218
|
className: "animate-spin"
|
|
172
219
|
}) : null, "Delete Template"]
|
|
@@ -176,45 +223,9 @@ function w() {
|
|
|
176
223
|
})
|
|
177
224
|
})
|
|
178
225
|
]
|
|
179
|
-
}) : /* @__PURE__ */ S(a, {
|
|
180
|
-
showHeader: !1,
|
|
181
|
-
children: [/* @__PURE__ */ S("div", {
|
|
182
|
-
className: "flex items-center gap-3 mb-6",
|
|
183
|
-
children: [/* @__PURE__ */ x("button", {
|
|
184
|
-
type: "button",
|
|
185
|
-
onClick: () => E?.(C(T, "templates")),
|
|
186
|
-
className: "p-2.5 hover:bg-accent rounded-lg transition-all duration-200",
|
|
187
|
-
children: /* @__PURE__ */ x(d, { size: 20 })
|
|
188
|
-
}), /* @__PURE__ */ x("h1", {
|
|
189
|
-
className: "text-xl font-bold",
|
|
190
|
-
children: "Template Not Found"
|
|
191
|
-
})]
|
|
192
|
-
}), /* @__PURE__ */ S("div", {
|
|
193
|
-
className: "border-2 border-border-default rounded-xl bg-status-error-bg-subtle p-12 text-center",
|
|
194
|
-
children: [
|
|
195
|
-
/* @__PURE__ */ x(u, {
|
|
196
|
-
size: 48,
|
|
197
|
-
className: "text-status-error-text mx-auto mb-4"
|
|
198
|
-
}),
|
|
199
|
-
/* @__PURE__ */ x("h3", {
|
|
200
|
-
className: "text-lg font-bold text-status-error-text mb-2",
|
|
201
|
-
children: "Template Not Found"
|
|
202
|
-
}),
|
|
203
|
-
/* @__PURE__ */ x("p", {
|
|
204
|
-
className: "text-status-error-text mb-6",
|
|
205
|
-
children: "The template you are looking for does not exist."
|
|
206
|
-
}),
|
|
207
|
-
/* @__PURE__ */ S("button", {
|
|
208
|
-
type: "button",
|
|
209
|
-
onClick: () => E?.(C(T, "templates")),
|
|
210
|
-
className: "inline-flex items-center gap-2 px-6 py-3 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-colors font-medium",
|
|
211
|
-
children: [/* @__PURE__ */ x(d, { size: 18 }), "Back to Templates"]
|
|
212
|
-
})
|
|
213
|
-
]
|
|
214
|
-
})]
|
|
215
226
|
});
|
|
216
227
|
}
|
|
217
228
|
//#endregion
|
|
218
|
-
export {
|
|
229
|
+
export { D as TemplateDetailPage };
|
|
219
230
|
|
|
220
231
|
//# sourceMappingURL=TemplateDetailPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateDetailPage.js","names":[],"sources":["../../../src/export/pages/TemplateDetailPage.tsx"],"sourcesContent":["import { useParams } from \"react-router-dom\";\nimport { useState } from \"react\";\nimport {\n ArrowLeft,\n FileBox,\n Download,\n Play,\n Trash2,\n AlertCircle,\n Clock,\n FileText,\n HardDrive,\n Loader2,\n} from \"lucide-react\";\nimport { useExport } from \"../providers/ExportProvider\";\nimport {\n useExportTemplate,\n useDeleteExportTemplate,\n} from \"../hooks/useExportQueries\";\nimport {\n getFormatDisplayName,\n getArchiveFormatDisplayName,\n} from \"../constants/enums\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { nativeImpact, nativeNotify } from \"../../utils/nativeBridge\";\n\n/**\n * Helper to join paths correctly\n */\nconst joinPath = (base: string, path: string): string => {\n const cleanBase = base.endsWith(\"/\") ? base.slice(0, -1) : base;\n const cleanPath = path.startsWith(\"/\") ? path : `/${path}`;\n return cleanBase + cleanPath;\n};\n\n/**\n * Template Detail Page\n * View template details and use it to create a new export.\n * Fetches template from the backend via useExportTemplate hook.\n */\nexport function TemplateDetailPage() {\n const { templateId } = useParams<{ templateId: string }>();\n const { basePath = \"/\", navigate } = useExport();\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n const { data: template, isLoading } = useExportTemplate(templateId);\n const { deleteTemplate, isPending: deleting } = useDeleteExportTemplate();\n\n // Loading\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-20\">\n <Loader2 size={48} className=\"animate-spin text-primary\" />\n <span className=\"mt-6 text-sm font-medium text-text-secondary\">\n Loading template details…\n </span>\n </div>\n );\n }\n\n if (!template) {\n return (\n <PageLayout showHeader={false}>\n <div className=\"flex items-center gap-3 mb-6\">\n <button\n type=\"button\"\n onClick={() => navigate?.(joinPath(basePath, \"templates\"))}\n className=\"p-2.5 hover:bg-accent rounded-lg transition-all duration-200\"\n >\n <ArrowLeft size={20} />\n </button>\n <h1 className=\"text-xl font-bold\">Template Not Found</h1>\n </div>\n <div className=\"border-2 border-border-default rounded-xl bg-status-error-bg-subtle p-12 text-center\">\n <AlertCircle\n size={48}\n className=\"text-status-error-text mx-auto mb-4\"\n />\n <h3 className=\"text-lg font-bold text-status-error-text mb-2\">\n Template Not Found\n </h3>\n <p className=\"text-status-error-text mb-6\">\n The template you are looking for does not exist.\n </p>\n <button\n type=\"button\"\n onClick={() => navigate?.(joinPath(basePath, \"templates\"))}\n className=\"inline-flex items-center gap-2 px-6 py-3 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-colors font-medium\"\n >\n <ArrowLeft size={18} />\n Back to Templates\n </button>\n </div>\n </PageLayout>\n );\n }\n\n const handleUseTemplate = () => {\n // Navigate to new export page pre-selected with this template\n navigate?.(joinPath(basePath, `new?templateId=${templateId}`));\n };\n\n const handleDelete = async () => {\n if (!templateId) return;\n nativeImpact(\"medium\");\n try {\n await deleteTemplate(templateId);\n nativeNotify(\"success\");\n navigate?.(joinPath(basePath, \"templates\"));\n } catch {\n nativeNotify(\"error\");\n }\n };\n\n return (\n <PageLayout showHeader={false}>\n {/* Header */}\n <div className=\"relative overflow-hidden rounded-xl bg-gradient-to-br from-primary/5 via-primary/3 to-background border border-border-subtle/50 p-6 shadow-sm\">\n <div className=\"relative z-10 flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={() => navigate?.(joinPath(basePath, \"templates\"))}\n className=\"p-2.5 hover:bg-accent rounded-lg transition-all duration-200\"\n >\n <ArrowLeft size={20} />\n </button>\n <div className=\"flex items-center gap-3 flex-1\">\n <div className=\"p-2.5 rounded-lg bg-action-primary-bg/10\">\n <FileBox size={24} className=\"text-primary\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <h1 className=\"text-xl sm:text-2xl font-bold truncate\">\n {template.name}\n </h1>\n <p className=\"text-sm text-text-secondary mt-1\">\n {template.isDefault ? \"Default template\" : \"Custom template\"}\n </p>\n </div>\n </div>\n </div>\n </div>\n\n {/* Description */}\n {template.description && (\n <div className=\"border-2 border-border-subtle/50 rounded-xl p-5\">\n <p className=\"text-sm text-text-secondary\">\n {template.description}\n </p>\n </div>\n )}\n\n {/* Info Grid */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4\">\n {[\n {\n icon: <FileText size={18} />,\n label: \"Format\",\n value: getFormatDisplayName(template.format),\n },\n {\n icon: <HardDrive size={18} />,\n label: \"Archive\",\n // Backend template doesn't carry archiveFormat, default to ZIP\n value: getArchiveFormatDisplayName(\"ZIP\"),\n },\n {\n icon: <Download size={18} />,\n label: \"Entity Types\",\n value: `${template.entityTypes.length} type${template.entityTypes.length !== 1 ? \"s\" : \"\"}`,\n },\n {\n icon: <Clock size={18} />,\n label: \"Last Updated\",\n value: new Date(template.updatedAt).toLocaleDateString(),\n },\n ].map((item) => (\n <div\n key={item.label}\n className=\"border-2 border-border-subtle/50 rounded-xl p-4 bg-gradient-to-br from-card/50 to-background\"\n >\n <div className=\"flex items-center gap-2 text-text-secondary mb-1\">\n {item.icon}\n <span className=\"text-xs font-medium\">{item.label}</span>\n </div>\n <p className=\"font-bold text-lg\">{item.value}</p>\n </div>\n ))}\n </div>\n\n {/* Entity Types */}\n <PageSection\n title=\"Included Entity Types\"\n description=\"Data types that will be exported\"\n >\n <div className=\"flex flex-wrap gap-2\">\n {template.entityTypes.map((entity) => (\n <span\n key={entity}\n className=\"inline-flex items-center gap-2 px-3 py-2 rounded-lg text-sm font-medium border-2 border-border-subtle/50 bg-bg-sunken/30\"\n >\n {entity}\n </span>\n ))}\n </div>\n </PageSection>\n\n {/* Actions */}\n <div className=\"flex flex-col sm:flex-row gap-3 pt-2\">\n <button\n type=\"button\"\n onClick={handleUseTemplate}\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-6 py-3 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-all duration-200 font-bold shadow-lg\"\n >\n <Play size={18} />\n Use Template\n </button>\n {!template.isDefault && (\n <button\n type=\"button\"\n onClick={() => setShowDeleteConfirm(true)}\n disabled={deleting}\n className=\"inline-flex items-center justify-center gap-2 px-6 py-3 border-2 border-status-error-bg/50 text-status-error-text rounded-lg hover:bg-status-error-bg-subtle transition-all duration-200 font-medium disabled:opacity-50\"\n >\n {deleting ? (\n <Loader2 size={18} className=\"animate-spin\" />\n ) : (\n <Trash2 size={18} />\n )}\n Delete Template\n </button>\n )}\n </div>\n\n {showDeleteConfirm && (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"template-delete-title\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-bg-surface/80 backdrop-blur-sm p-4\"\n >\n <div className=\"w-full max-w-md rounded-xl border-2 border-border-subtle bg-bg-surface p-6 shadow-xl\">\n <h2 id=\"template-delete-title\" className=\"text-lg font-bold\">\n Delete template?\n </h2>\n <p className=\"mt-2 text-sm text-text-secondary\">\n This removes the saved export configuration. Existing export jobs\n are not deleted.\n </p>\n <div className=\"mt-6 flex flex-col-reverse sm:flex-row sm:justify-end gap-3\">\n <button\n type=\"button\"\n onClick={() => setShowDeleteConfirm(false)}\n className=\"px-4 py-2 rounded-lg border-2 border-border-subtle hover:bg-accent transition-colors font-medium\"\n >\n Keep Template\n </button>\n <button\n type=\"button\"\n onClick={handleDelete}\n disabled={deleting}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg bg-status-error-bg text-status-error-text hover:bg-status-error-bg/90 transition-colors font-medium disabled:opacity-50\"\n >\n {deleting ? (\n <Loader2 size={16} className=\"animate-spin\" />\n ) : null}\n Delete Template\n </button>\n </div>\n </div>\n </div>\n )}\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TemplateDetailPage.js","names":[],"sources":["../../../src/export/pages/TemplateDetailPage.tsx"],"sourcesContent":["import { useParams } from \"react-router-dom\";\nimport { useState } from \"react\";\nimport {\n ArrowLeft,\n FileBox,\n Download,\n Play,\n Trash2,\n AlertCircle,\n Clock,\n FileText,\n HardDrive,\n Loader2,\n} from \"lucide-react\";\nimport { GlassCard, CTAOverflowMenu, ShowMore } from \"@burdenoff/fe-libs/ui\";\nimport type { CTAAction } from \"@burdenoff/fe-libs/ui\";\nimport { useExport } from \"../providers/ExportProvider\";\nimport {\n useExportTemplate,\n useDeleteExportTemplate,\n} from \"../hooks/useExportQueries\";\nimport {\n getFormatDisplayName,\n getArchiveFormatDisplayName,\n} from \"../constants/enums\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { nativeImpact, nativeNotify } from \"../../utils/nativeBridge\";\n\n/**\n * Helper to join paths correctly\n */\nconst joinPath = (base: string, path: string): string => {\n const cleanBase = base.endsWith(\"/\") ? base.slice(0, -1) : base;\n const cleanPath = path.startsWith(\"/\") ? path : `/${path}`;\n return cleanBase + cleanPath;\n};\n\n/**\n * Template Detail Page\n * View template details and use it to create a new export.\n * Fetches template from the backend via useExportTemplate hook.\n */\nexport function TemplateDetailPage() {\n const { templateId } = useParams<{ templateId: string }>();\n const { basePath = \"/\", navigate } = useExport();\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n const { data: template, isLoading } = useExportTemplate(templateId);\n const { deleteTemplate, isPending: deleting } = useDeleteExportTemplate();\n\n // Loading\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-20\">\n <Loader2 size={48} className=\"animate-spin text-primary\" />\n <span className=\"mt-6 text-sm font-medium text-text-secondary\">\n Loading template details…\n </span>\n </div>\n );\n }\n\n if (!template) {\n return (\n <PageLayout showHeader={false}>\n <div className=\"flex items-center gap-3 mb-6\">\n <button\n type=\"button\"\n onClick={() => navigate?.(joinPath(basePath, \"templates\"))}\n className=\"p-2.5 hover:bg-accent rounded-lg transition-all duration-200\"\n >\n <ArrowLeft size={20} />\n </button>\n <h1 className=\"text-xl font-bold\">Template Not Found</h1>\n </div>\n <div className=\"border-2 border-border-default rounded-xl bg-status-error-bg-subtle p-12 text-center\">\n <AlertCircle\n size={48}\n className=\"text-status-error-text mx-auto mb-4\"\n />\n <h3 className=\"text-lg font-bold text-status-error-text mb-2\">\n Template Not Found\n </h3>\n <p className=\"text-status-error-text mb-6\">\n The template you are looking for does not exist.\n </p>\n <button\n type=\"button\"\n onClick={() => navigate?.(joinPath(basePath, \"templates\"))}\n className=\"inline-flex items-center gap-2 px-6 py-3 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-colors font-medium\"\n >\n <ArrowLeft size={18} />\n Back to Templates\n </button>\n </div>\n </PageLayout>\n );\n }\n\n const handleUseTemplate = () => {\n // Navigate to new export page pre-selected with this template\n navigate?.(joinPath(basePath, `new?templateId=${templateId}`));\n };\n\n const handleDelete = async () => {\n if (!templateId) return;\n nativeImpact(\"medium\");\n try {\n await deleteTemplate(templateId);\n nativeNotify(\"success\");\n navigate?.(joinPath(basePath, \"templates\"));\n } catch {\n nativeNotify(\"error\");\n }\n };\n\n const overflowActions: CTAAction[] = template.isDefault\n ? []\n : [\n {\n label: \"Delete Template\",\n icon: <Trash2 size={16} />,\n intent: \"destructive\",\n disabled: deleting,\n onSelect: () => setShowDeleteConfirm(true),\n },\n ];\n\n return (\n <PageLayout showHeader={false}>\n {/* Header */}\n <div className=\"relative overflow-hidden rounded-xl bg-accent-wash border border-border-seam p-6 shadow-[var(--shadow-pop)]\">\n <div className=\"relative z-10 flex flex-col sm:flex-row sm:items-center gap-4\">\n <button\n type=\"button\"\n onClick={() => navigate?.(joinPath(basePath, \"templates\"))}\n aria-label=\"Back to templates\"\n className=\"p-2.5 hover:bg-accent rounded-lg transition-colors duration-200 self-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40\"\n >\n <ArrowLeft size={20} />\n </button>\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <div className=\"p-2.5 rounded-lg bg-action-primary-bg/10\">\n <FileBox size={24} className=\"text-primary\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <h1 className=\"text-xl sm:text-2xl font-bold truncate\">\n {template.name}\n </h1>\n <p className=\"text-sm text-text-secondary mt-1\">\n {template.isDefault ? \"Default template\" : \"Custom template\"}\n </p>\n </div>\n </div>\n <div className=\"flex-shrink-0\">\n <CTAOverflowMenu\n primary={{\n label: \"Use Template\",\n icon: <Play size={16} />,\n onSelect: handleUseTemplate,\n }}\n actions={overflowActions}\n />\n </div>\n </div>\n </div>\n\n {/* Description */}\n {template.description && (\n <div className=\"border border-border-seam rounded-xl p-5 bg-bg-surface\">\n <p className=\"text-sm text-text-secondary\">\n {template.description}\n </p>\n </div>\n )}\n\n {/* Info Grid */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4\">\n {[\n {\n icon: <FileText size={18} />,\n label: \"Format\",\n value: getFormatDisplayName(template.format),\n },\n {\n icon: <HardDrive size={18} />,\n label: \"Archive\",\n // Backend template doesn't carry archiveFormat, default to ZIP\n value: getArchiveFormatDisplayName(\"ZIP\"),\n },\n {\n icon: <Download size={18} />,\n label: \"Entity Types\",\n value: `${template.entityTypes.length} type${template.entityTypes.length !== 1 ? \"s\" : \"\"}`,\n },\n {\n icon: <Clock size={18} />,\n label: \"Last Updated\",\n value: new Date(template.updatedAt).toLocaleDateString(),\n },\n ].map((item) => (\n <GlassCard\n key={item.label}\n treatment=\"metric\"\n className=\"p-4 border-border-seam\"\n >\n <div className=\"flex items-center gap-2 text-text-secondary mb-1\">\n {item.icon}\n <span className=\"text-xs font-medium\">{item.label}</span>\n </div>\n <p className=\"font-bold text-lg tabular-nums\">{item.value}</p>\n </GlassCard>\n ))}\n </div>\n\n {/* Entity Types */}\n <PageSection\n title=\"Included Entity Types\"\n description=\"Data types that will be exported\"\n >\n <ShowMore collapsedHeight={96}>\n <div className=\"flex flex-wrap gap-2\">\n {template.entityTypes.map((entity) => (\n <span\n key={entity}\n className=\"inline-flex items-center gap-2 px-3 py-2 rounded-lg text-sm font-medium border border-border-seam bg-bg-sunken/30\"\n >\n {entity}\n </span>\n ))}\n </div>\n </ShowMore>\n </PageSection>\n\n {showDeleteConfirm && (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"template-delete-title\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-bg-surface/80 backdrop-blur-sm p-4\"\n >\n <div className=\"w-full max-w-md rounded-xl border-2 border-border-subtle bg-bg-surface p-6 shadow-xl\">\n <h2 id=\"template-delete-title\" className=\"text-lg font-bold\">\n Delete template?\n </h2>\n <p className=\"mt-2 text-sm text-text-secondary\">\n This removes the saved export configuration. Existing export jobs\n are not deleted.\n </p>\n <div className=\"mt-6 flex flex-col-reverse sm:flex-row sm:justify-end gap-3\">\n <button\n type=\"button\"\n onClick={() => setShowDeleteConfirm(false)}\n className=\"px-4 py-2 rounded-lg border-2 border-border-subtle hover:bg-accent transition-colors font-medium\"\n >\n Keep Template\n </button>\n <button\n type=\"button\"\n onClick={handleDelete}\n disabled={deleting}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg bg-status-error-bg text-status-error-text hover:bg-status-error-bg/90 transition-colors font-medium disabled:opacity-50\"\n >\n {deleting ? (\n <Loader2 size={16} className=\"animate-spin\" />\n ) : null}\n Delete Template\n </button>\n </div>\n </div>\n </div>\n )}\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/microfe-export",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.625.2",
|
|
4
4
|
"description": "Burdenoff Export Microfrontend - Data export management interface",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@apollo/client": "^4.0.11",
|
|
43
|
-
"@burdenoff/fe-libs": "2026.
|
|
43
|
+
"@burdenoff/fe-libs": "2026.625.3",
|
|
44
44
|
"@tanstack/react-query": "^5.90.16",
|
|
45
45
|
"clsx": "^2.1.1",
|
|
46
46
|
"graphql": "^16.10.0",
|