@burdenoff/microfe-export 2026.801.1 → 2026.830.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/ExportRoot.d.ts.map +1 -1
- package/dist/export/ExportRoot.js +41 -36
- package/dist/export/ExportRoot.js.map +1 -1
- package/dist/export/ExportRoutes.d.ts.map +1 -1
- package/dist/export/ExportRoutes.js +75 -66
- package/dist/export/ExportRoutes.js.map +1 -1
- package/dist/export/components/ExportProgressBar.d.ts.map +1 -1
- package/dist/export/components/ExportProgressBar.js +19 -18
- package/dist/export/components/ExportProgressBar.js.map +1 -1
- package/dist/export/components/ExportStatusBadge.d.ts.map +1 -1
- package/dist/export/components/ExportStatusBadge.js +19 -20
- package/dist/export/components/ExportStatusBadge.js.map +1 -1
- package/dist/export/hooks/useTr.d.ts +19 -0
- package/dist/export/hooks/useTr.d.ts.map +1 -0
- package/dist/export/hooks/useTr.js +15 -0
- package/dist/export/hooks/useTr.js.map +1 -0
- package/dist/export/index.d.ts +1 -0
- package/dist/export/index.d.ts.map +1 -1
- package/dist/export/index.js +1 -0
- package/dist/export/pages/CreateExportPage.d.ts +4 -0
- package/dist/export/pages/CreateExportPage.d.ts.map +1 -1
- package/dist/export/pages/CreateExportPage.js +271 -283
- package/dist/export/pages/CreateExportPage.js.map +1 -1
- package/dist/export/pages/ExportDashboardPage.d.ts.map +1 -1
- package/dist/export/pages/ExportDashboardPage.js +71 -72
- package/dist/export/pages/ExportDashboardPage.js.map +1 -1
- package/dist/export/pages/ExportDetailPage.d.ts.map +1 -1
- package/dist/export/pages/ExportDetailPage.js +171 -173
- package/dist/export/pages/ExportDetailPage.js.map +1 -1
- package/dist/export/pages/ExportHistoryPage.d.ts.map +1 -1
- package/dist/export/pages/ExportHistoryPage.js +110 -111
- package/dist/export/pages/ExportHistoryPage.js.map +1 -1
- package/dist/export/pages/ExportLandingPage.d.ts.map +1 -1
- package/dist/export/pages/ExportLandingPage.js +28 -27
- package/dist/export/pages/ExportLandingPage.js.map +1 -1
- package/dist/export/pages/ExportTemplatesPage.d.ts.map +1 -1
- package/dist/export/pages/ExportTemplatesPage.js +115 -116
- package/dist/export/pages/ExportTemplatesPage.js.map +1 -1
- package/dist/export/pages/TemplateDetailPage.d.ts.map +1 -1
- package/dist/export/pages/TemplateDetailPage.js +122 -118
- package/dist/export/pages/TemplateDetailPage.js.map +1 -1
- package/dist/export/utils/i18n.d.ts +18 -2
- package/dist/export/utils/i18n.d.ts.map +1 -1
- package/dist/export/utils/i18n.js +2 -9
- package/dist/export/utils/i18n.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/translations/en.d.ts +454 -0
- package/dist/translations/en.d.ts.map +1 -0
- package/dist/translations/en.js +417 -0
- package/dist/translations/en.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { useExport as e } from "../providers/ExportProvider.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
2
|
+
import { useTr as t } from "../hooks/useTr.js";
|
|
3
|
+
import { useCancelExportJob as n, useDeleteExportJob as r, useExportJob as ee, useExportJobProgress as i, useRetryExportJob as a } from "../hooks/useExportQueries.js";
|
|
4
|
+
import { cn as o } from "../utils/cn.js";
|
|
5
|
+
import { getArchiveFormatDisplayName as s, getFormatDisplayName as c } from "../constants/enums.js";
|
|
6
|
+
import { ExportStatusBadge as te } from "../components/ExportStatusBadge.js";
|
|
7
|
+
import { ExportProgressBar as ne } from "../components/ExportProgressBar.js";
|
|
8
|
+
import { PageLayout as l, PageSection as re } from "../components/PageLayout.js";
|
|
9
|
+
import { nativeImpact as ie, nativeNotify as u } from "../../utils/nativeBridge.js";
|
|
10
|
+
import { useState as ae } from "react";
|
|
11
|
+
import { AlertCircle as oe, ArrowLeft as d, CheckCircle2 as f, Clock as p, Download as m, FileDown as h, FileText as g, HardDrive as se, Loader2 as _, RotateCcw as v, Trash2 as y, XCircle as ce } from "lucide-react";
|
|
12
|
+
import { useNavigate as le, useParams as ue } from "react-router";
|
|
13
|
+
import { jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
14
|
+
import { CTAOverflowMenu as S, GlassCard as C, IllustratedEmptyState as w, NextSteps as T } from "@burdenoff/fe-libs/ui";
|
|
14
15
|
//#region src/export/pages/ExportDetailPage.tsx
|
|
15
|
-
function
|
|
16
|
+
function E(e) {
|
|
16
17
|
if (e === 0) return "0 B";
|
|
17
18
|
let t = 1024, n = [
|
|
18
19
|
"B",
|
|
@@ -23,170 +24,170 @@ function k(e) {
|
|
|
23
24
|
], r = Math.floor(Math.log(e) / Math.log(t));
|
|
24
25
|
return `${parseFloat((e / t ** +r).toFixed(2))} ${n[r]}`;
|
|
25
26
|
}
|
|
26
|
-
var
|
|
27
|
-
function
|
|
28
|
-
let { jobId:
|
|
29
|
-
window.history.length > 1 ?
|
|
30
|
-
}, { data:
|
|
31
|
-
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
if (!(!
|
|
27
|
+
var D = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
|
|
28
|
+
function O() {
|
|
29
|
+
let { jobId: O } = ue(), { basePath: k = "/", navigate: A } = e(), j = le(), M = t(), N = () => {
|
|
30
|
+
window.history.length > 1 ? j(-1) : A?.(k);
|
|
31
|
+
}, { data: P, isLoading: F } = ee(O), { data: I } = i(O), [L, R] = ae(null), { cancelJob: z, isPending: B } = n(), { deleteJob: V, isPending: H } = r(), { retryJob: U, isPending: W } = a(), G = I ?? P ?? null, K = G?.status === "CREATED" || G?.status === "QUEUED" || G?.status === "RUNNING", q = G?.status === "COMPLETED", J = G?.status === "FAILED", Y = G?.status === "FAILED" || G?.status === "CANCELLED" || G?.status === "EXPIRED", de = async () => {
|
|
32
|
+
O && R("cancel");
|
|
33
|
+
}, fe = async () => {
|
|
34
|
+
O && (ie("medium"), R("delete"));
|
|
35
|
+
}, pe = async () => {
|
|
36
|
+
if (!(!O || !L)) {
|
|
36
37
|
try {
|
|
37
|
-
|
|
38
|
+
L === "cancel" ? await z(O) : (await V(O), A?.(k)), u("success");
|
|
38
39
|
} catch {
|
|
39
40
|
u("error");
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
+
R(null);
|
|
42
43
|
}
|
|
43
44
|
}, X = async () => {
|
|
44
|
-
if (!
|
|
45
|
-
let e = await
|
|
46
|
-
e?.id &&
|
|
47
|
-
}, Z =
|
|
48
|
-
if (
|
|
45
|
+
if (!O) return;
|
|
46
|
+
let e = await U(O);
|
|
47
|
+
e?.id && A?.(D(k, e.id));
|
|
48
|
+
}, Z = G?.parts.find((e) => e.downloadUrl);
|
|
49
|
+
if (F) return /* @__PURE__ */ x("div", {
|
|
49
50
|
className: "flex flex-col items-center justify-center py-20",
|
|
50
|
-
children: [/* @__PURE__ */
|
|
51
|
+
children: [/* @__PURE__ */ b(_, {
|
|
51
52
|
size: 48,
|
|
52
53
|
className: "animate-spin text-primary"
|
|
53
|
-
}), /* @__PURE__ */
|
|
54
|
+
}), /* @__PURE__ */ b("span", {
|
|
54
55
|
className: "mt-6 text-sm font-medium text-text-secondary",
|
|
55
|
-
children: "Loading export details…"
|
|
56
|
+
children: M("export.detail.loading", "Loading export details…")
|
|
56
57
|
})]
|
|
57
58
|
});
|
|
58
|
-
if (!
|
|
59
|
+
if (!G) return /* @__PURE__ */ x(l, {
|
|
59
60
|
showHeader: !1,
|
|
60
|
-
children: [/* @__PURE__ */
|
|
61
|
+
children: [/* @__PURE__ */ x("div", {
|
|
61
62
|
className: "flex items-center gap-3 mb-6",
|
|
62
|
-
children: [/* @__PURE__ */
|
|
63
|
+
children: [/* @__PURE__ */ b("button", {
|
|
63
64
|
type: "button",
|
|
64
|
-
onClick:
|
|
65
|
-
"aria-label": "Go back",
|
|
65
|
+
onClick: N,
|
|
66
|
+
"aria-label": M("export.detail.actions.back", "Go back"),
|
|
66
67
|
className: "p-2.5 hover:bg-accent rounded-lg transition-all duration-200",
|
|
67
|
-
children: /* @__PURE__ */
|
|
68
|
-
}), /* @__PURE__ */
|
|
68
|
+
children: /* @__PURE__ */ b(d, { size: 20 })
|
|
69
|
+
}), /* @__PURE__ */ b("h1", {
|
|
69
70
|
className: "text-xl font-bold",
|
|
70
|
-
children: "Export Not Found"
|
|
71
|
+
children: M("export.detail.notFound.title", "Export Not Found")
|
|
71
72
|
})]
|
|
72
|
-
}), /* @__PURE__ */
|
|
73
|
+
}), /* @__PURE__ */ b(w, {
|
|
73
74
|
illustration: "empty-data",
|
|
74
|
-
title: "Export not found",
|
|
75
|
-
description: "The export job you are looking for does not exist or has been deleted.",
|
|
76
|
-
action: /* @__PURE__ */
|
|
75
|
+
title: M("export.detail.notFound.heading", "Export not found"),
|
|
76
|
+
description: M("export.detail.notFound.description", "The export job you are looking for does not exist or has been deleted."),
|
|
77
|
+
action: /* @__PURE__ */ x("button", {
|
|
77
78
|
type: "button",
|
|
78
|
-
onClick:
|
|
79
|
+
onClick: N,
|
|
79
80
|
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",
|
|
80
|
-
children: [/* @__PURE__ */
|
|
81
|
+
children: [/* @__PURE__ */ b(d, { size: 18 }), M("export.detail.actions.backToDashboard", "Back to Dashboard")]
|
|
81
82
|
})
|
|
82
83
|
})]
|
|
83
84
|
});
|
|
84
85
|
let Q = Z ? {
|
|
85
|
-
label: "Download",
|
|
86
|
-
icon: /* @__PURE__ */
|
|
86
|
+
label: M("export.detail.actions.download", "Download"),
|
|
87
|
+
icon: /* @__PURE__ */ b(m, { size: 16 }),
|
|
87
88
|
onSelect: () => {
|
|
88
89
|
Z.downloadUrl && window.location.assign(Z.downloadUrl);
|
|
89
90
|
}
|
|
90
91
|
} : Y ? {
|
|
91
|
-
label: "Retry Export",
|
|
92
|
-
icon: /* @__PURE__ */
|
|
93
|
-
disabled:
|
|
92
|
+
label: M("export.detail.actions.retry", "Retry Export"),
|
|
93
|
+
icon: /* @__PURE__ */ b(v, { size: 16 }),
|
|
94
|
+
disabled: W,
|
|
94
95
|
onSelect: () => {
|
|
95
96
|
X();
|
|
96
97
|
}
|
|
97
98
|
} : void 0, $ = [];
|
|
98
99
|
Y && Z && $.push({
|
|
99
|
-
label: "Retry Export",
|
|
100
|
-
icon: /* @__PURE__ */
|
|
101
|
-
disabled:
|
|
100
|
+
label: M("export.detail.actions.retry", "Retry Export"),
|
|
101
|
+
icon: /* @__PURE__ */ b(v, { size: 16 }),
|
|
102
|
+
disabled: W,
|
|
102
103
|
onSelect: () => {
|
|
103
104
|
X();
|
|
104
105
|
}
|
|
105
|
-
}),
|
|
106
|
-
label: "Cancel Export",
|
|
107
|
-
icon: /* @__PURE__ */
|
|
108
|
-
disabled:
|
|
106
|
+
}), K && $.push({
|
|
107
|
+
label: M("export.detail.actions.cancel", "Cancel Export"),
|
|
108
|
+
icon: /* @__PURE__ */ b(ce, { size: 16 }),
|
|
109
|
+
disabled: B,
|
|
109
110
|
onSelect: () => {
|
|
110
|
-
|
|
111
|
+
de();
|
|
111
112
|
}
|
|
112
|
-
}),
|
|
113
|
-
label: "Delete Export",
|
|
114
|
-
icon: /* @__PURE__ */
|
|
113
|
+
}), K || $.push({
|
|
114
|
+
label: M("export.detail.actions.delete", "Delete Export"),
|
|
115
|
+
icon: /* @__PURE__ */ b(y, { size: 16 }),
|
|
115
116
|
intent: "destructive",
|
|
116
|
-
disabled:
|
|
117
|
+
disabled: H,
|
|
117
118
|
onSelect: () => {
|
|
118
|
-
|
|
119
|
+
fe();
|
|
119
120
|
}
|
|
120
121
|
});
|
|
121
|
-
let
|
|
122
|
+
let me = [
|
|
122
123
|
{
|
|
123
124
|
id: "download",
|
|
124
|
-
label: "Download your export",
|
|
125
|
-
description: "Grab the generated files below before their download links expire.",
|
|
126
|
-
icon: /* @__PURE__ */
|
|
125
|
+
label: M("export.detail.nextSteps.download.label", "Download your export"),
|
|
126
|
+
description: M("export.detail.nextSteps.download.description", "Grab the generated files below before their download links expire."),
|
|
127
|
+
icon: /* @__PURE__ */ b(m, { size: 16 }),
|
|
127
128
|
onClick: () => {
|
|
128
129
|
Z?.downloadUrl && window.location.assign(Z.downloadUrl);
|
|
129
130
|
},
|
|
130
|
-
done:
|
|
131
|
+
done: q
|
|
131
132
|
},
|
|
132
133
|
...Y ? [{
|
|
133
134
|
id: "retry",
|
|
134
|
-
label: "Retry this export",
|
|
135
|
-
description: "This export didn't finish — start a fresh run with the same settings.",
|
|
136
|
-
icon: /* @__PURE__ */
|
|
135
|
+
label: M("export.detail.nextSteps.retry.label", "Retry this export"),
|
|
136
|
+
description: M("export.detail.nextSteps.retry.description", "This export didn't finish — start a fresh run with the same settings."),
|
|
137
|
+
icon: /* @__PURE__ */ b(v, { size: 16 }),
|
|
137
138
|
onClick: () => {
|
|
138
139
|
X();
|
|
139
140
|
}
|
|
140
141
|
}] : [],
|
|
141
142
|
{
|
|
142
143
|
id: "history",
|
|
143
|
-
label: "Back to History",
|
|
144
|
-
description: "See all your exports and track other jobs in progress.",
|
|
145
|
-
icon: /* @__PURE__ */
|
|
146
|
-
onClick: () =>
|
|
144
|
+
label: M("export.detail.nextSteps.history.label", "Back to History"),
|
|
145
|
+
description: M("export.detail.nextSteps.history.description", "See all your exports and track other jobs in progress."),
|
|
146
|
+
icon: /* @__PURE__ */ b(p, { size: 16 }),
|
|
147
|
+
onClick: () => A?.(k)
|
|
147
148
|
}
|
|
148
149
|
];
|
|
149
|
-
return /* @__PURE__ */
|
|
150
|
+
return /* @__PURE__ */ x(l, {
|
|
150
151
|
showHeader: !1,
|
|
151
152
|
children: [
|
|
152
|
-
/* @__PURE__ */
|
|
153
|
+
/* @__PURE__ */ b("div", {
|
|
153
154
|
className: "relative overflow-hidden rounded-xl bg-accent-wash border border-border-seam p-6 shadow-[var(--shadow-pop)]",
|
|
154
|
-
children: /* @__PURE__ */
|
|
155
|
+
children: /* @__PURE__ */ x("div", {
|
|
155
156
|
className: "relative z-10 flex flex-col sm:flex-row sm:items-center gap-4",
|
|
156
157
|
children: [
|
|
157
|
-
/* @__PURE__ */
|
|
158
|
+
/* @__PURE__ */ b("button", {
|
|
158
159
|
type: "button",
|
|
159
|
-
onClick:
|
|
160
|
-
"aria-label": "Go back",
|
|
160
|
+
onClick: N,
|
|
161
|
+
"aria-label": M("export.detail.actions.back", "Go back"),
|
|
161
162
|
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",
|
|
162
|
-
children: /* @__PURE__ */
|
|
163
|
+
children: /* @__PURE__ */ b(d, { size: 20 })
|
|
163
164
|
}),
|
|
164
|
-
/* @__PURE__ */
|
|
165
|
+
/* @__PURE__ */ x("div", {
|
|
165
166
|
className: "flex items-center gap-3 flex-1 min-w-0",
|
|
166
167
|
children: [
|
|
167
|
-
/* @__PURE__ */
|
|
168
|
+
/* @__PURE__ */ b("div", {
|
|
168
169
|
className: "p-2.5 rounded-lg bg-action-primary-bg/10",
|
|
169
|
-
children: /* @__PURE__ */
|
|
170
|
+
children: /* @__PURE__ */ b(m, {
|
|
170
171
|
size: 24,
|
|
171
172
|
className: "text-primary"
|
|
172
173
|
})
|
|
173
174
|
}),
|
|
174
|
-
/* @__PURE__ */
|
|
175
|
+
/* @__PURE__ */ x("div", {
|
|
175
176
|
className: "flex-1 min-w-0",
|
|
176
|
-
children: [/* @__PURE__ */
|
|
177
|
+
children: [/* @__PURE__ */ b("h1", {
|
|
177
178
|
className: "text-xl sm:text-2xl font-bold truncate",
|
|
178
|
-
children:
|
|
179
|
-
}), /* @__PURE__ */
|
|
179
|
+
children: G.name
|
|
180
|
+
}), /* @__PURE__ */ b("p", {
|
|
180
181
|
className: "text-sm text-text-secondary mt-1",
|
|
181
|
-
children:
|
|
182
|
+
children: G.entityTypes.join(", ")
|
|
182
183
|
})]
|
|
183
184
|
}),
|
|
184
|
-
/* @__PURE__ */
|
|
185
|
+
/* @__PURE__ */ b(te, { status: G.status })
|
|
185
186
|
]
|
|
186
187
|
}),
|
|
187
|
-
(Q || $.length > 0) && /* @__PURE__ */
|
|
188
|
+
(Q || $.length > 0) && /* @__PURE__ */ b("div", {
|
|
188
189
|
className: "flex-shrink-0",
|
|
189
|
-
children: /* @__PURE__ */
|
|
190
|
+
children: /* @__PURE__ */ b(S, {
|
|
190
191
|
primary: Q,
|
|
191
192
|
actions: $
|
|
192
193
|
})
|
|
@@ -194,170 +195,167 @@ function j() {
|
|
|
194
195
|
]
|
|
195
196
|
})
|
|
196
197
|
}),
|
|
197
|
-
(
|
|
198
|
+
(G.status === "RUNNING" || G.status === "QUEUED") && /* @__PURE__ */ x("div", {
|
|
198
199
|
className: "border border-border-seam rounded-xl bg-status-info-bg-subtle p-6",
|
|
199
|
-
children: [/* @__PURE__ */
|
|
200
|
-
progress:
|
|
200
|
+
children: [/* @__PURE__ */ b(ne, {
|
|
201
|
+
progress: G.progress,
|
|
201
202
|
size: "lg"
|
|
202
|
-
}),
|
|
203
|
+
}), G.processedEntities != null && G.totalEntities != null && /* @__PURE__ */ b("p", {
|
|
203
204
|
className: "text-sm text-text-secondary mt-2",
|
|
204
|
-
children:
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
K.totalEntities.toLocaleString(),
|
|
209
|
-
" entities processed"
|
|
210
|
-
]
|
|
205
|
+
children: M("export.detail.progress.entitiesProcessed", "{{processed}} / {{total}} entities processed", {
|
|
206
|
+
processed: G.processedEntities.toLocaleString(),
|
|
207
|
+
total: G.totalEntities.toLocaleString()
|
|
208
|
+
})
|
|
211
209
|
})]
|
|
212
210
|
}),
|
|
213
|
-
|
|
211
|
+
J && G.errorMessage && /* @__PURE__ */ x("div", {
|
|
214
212
|
className: "border-2 border-border-default rounded-xl bg-status-error-bg-subtle p-6 flex items-start gap-4",
|
|
215
|
-
children: [/* @__PURE__ */
|
|
213
|
+
children: [/* @__PURE__ */ b(oe, {
|
|
216
214
|
size: 24,
|
|
217
215
|
className: "text-status-error-text flex-shrink-0 mt-0.5"
|
|
218
|
-
}), /* @__PURE__ */
|
|
216
|
+
}), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("h3", {
|
|
219
217
|
className: "font-semibold text-status-error-text mb-1",
|
|
220
|
-
children: "Export Failed"
|
|
221
|
-
}), /* @__PURE__ */
|
|
218
|
+
children: M("export.detail.error.title", "Export Failed")
|
|
219
|
+
}), /* @__PURE__ */ b("p", {
|
|
222
220
|
className: "text-sm text-status-error-text",
|
|
223
|
-
children:
|
|
221
|
+
children: G.errorMessage
|
|
224
222
|
})] })]
|
|
225
223
|
}),
|
|
226
|
-
/* @__PURE__ */
|
|
224
|
+
/* @__PURE__ */ b("div", {
|
|
227
225
|
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",
|
|
228
226
|
children: [
|
|
229
227
|
{
|
|
230
|
-
icon: /* @__PURE__ */
|
|
231
|
-
label: "Format",
|
|
232
|
-
value:
|
|
228
|
+
icon: /* @__PURE__ */ b(g, { size: 18 }),
|
|
229
|
+
label: M("export.detail.info.format", "Format"),
|
|
230
|
+
value: c(G.format)
|
|
233
231
|
},
|
|
234
232
|
{
|
|
235
|
-
icon: /* @__PURE__ */
|
|
236
|
-
label: "Archive",
|
|
237
|
-
value:
|
|
233
|
+
icon: /* @__PURE__ */ b(se, { size: 18 }),
|
|
234
|
+
label: M("export.detail.info.archive", "Archive"),
|
|
235
|
+
value: s(G.archiveFormat)
|
|
238
236
|
},
|
|
239
237
|
{
|
|
240
|
-
icon: /* @__PURE__ */
|
|
241
|
-
label: "Total Size",
|
|
242
|
-
value:
|
|
238
|
+
icon: /* @__PURE__ */ b(m, { size: 18 }),
|
|
239
|
+
label: M("export.detail.info.totalSize", "Total Size"),
|
|
240
|
+
value: G.totalSizeBytes == null ? "-" : E(G.totalSizeBytes)
|
|
243
241
|
},
|
|
244
242
|
{
|
|
245
|
-
icon: /* @__PURE__ */
|
|
246
|
-
label: "Created",
|
|
247
|
-
value: new Date(
|
|
243
|
+
icon: /* @__PURE__ */ b(p, { size: 18 }),
|
|
244
|
+
label: M("export.detail.info.created", "Created"),
|
|
245
|
+
value: new Date(G.createdAt).toLocaleDateString()
|
|
248
246
|
}
|
|
249
|
-
].map((e) => /* @__PURE__ */
|
|
247
|
+
].map((e) => /* @__PURE__ */ x(C, {
|
|
250
248
|
treatment: "metric",
|
|
251
249
|
className: "p-4 border-border-seam",
|
|
252
|
-
children: [/* @__PURE__ */
|
|
250
|
+
children: [/* @__PURE__ */ x("div", {
|
|
253
251
|
className: "flex items-center gap-2 text-text-secondary mb-1",
|
|
254
|
-
children: [e.icon, /* @__PURE__ */
|
|
252
|
+
children: [e.icon, /* @__PURE__ */ b("span", {
|
|
255
253
|
className: "text-xs font-medium",
|
|
256
254
|
children: e.label
|
|
257
255
|
})]
|
|
258
|
-
}), /* @__PURE__ */
|
|
256
|
+
}), /* @__PURE__ */ b("p", {
|
|
259
257
|
className: "font-bold text-lg tabular-nums",
|
|
260
258
|
children: e.value
|
|
261
259
|
})]
|
|
262
260
|
}, e.label))
|
|
263
261
|
}),
|
|
264
|
-
/* @__PURE__ */
|
|
265
|
-
storageKey: `export-detail-${
|
|
266
|
-
title: "What's next",
|
|
267
|
-
steps:
|
|
262
|
+
/* @__PURE__ */ b(T, {
|
|
263
|
+
storageKey: `export-detail-${G.id}`,
|
|
264
|
+
title: M("export.detail.nextSteps.title", "What's next"),
|
|
265
|
+
steps: me
|
|
268
266
|
}),
|
|
269
|
-
|
|
270
|
-
title: "Export Parts",
|
|
271
|
-
description:
|
|
272
|
-
children: /* @__PURE__ */
|
|
267
|
+
G.parts.length > 0 && /* @__PURE__ */ b(re, {
|
|
268
|
+
title: M("export.detail.parts.title", "Export Parts"),
|
|
269
|
+
description: M("export.detail.parts.description", "{{count}} file(s) generated", { count: G.parts.length }),
|
|
270
|
+
children: /* @__PURE__ */ b("div", {
|
|
273
271
|
className: "space-y-2",
|
|
274
|
-
children:
|
|
275
|
-
className:
|
|
276
|
-
children: [/* @__PURE__ */
|
|
272
|
+
children: G.parts.map((e) => /* @__PURE__ */ x("div", {
|
|
273
|
+
className: o("border border-border-seam rounded-xl p-4 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 bg-bg-surface", "hover:border-primary/40 transition-colors duration-200"),
|
|
274
|
+
children: [/* @__PURE__ */ x("div", {
|
|
277
275
|
className: "flex items-center gap-3 min-w-0",
|
|
278
|
-
children: [/* @__PURE__ */
|
|
276
|
+
children: [/* @__PURE__ */ b(h, {
|
|
279
277
|
size: 20,
|
|
280
278
|
className: "text-primary flex-shrink-0"
|
|
281
|
-
}), /* @__PURE__ */
|
|
279
|
+
}), /* @__PURE__ */ x("div", {
|
|
282
280
|
className: "min-w-0",
|
|
283
|
-
children: [/* @__PURE__ */
|
|
281
|
+
children: [/* @__PURE__ */ b("p", {
|
|
284
282
|
className: "font-medium truncate",
|
|
285
283
|
children: e.fileName
|
|
286
|
-
}), /* @__PURE__ */
|
|
284
|
+
}), /* @__PURE__ */ x("p", {
|
|
287
285
|
className: "text-sm text-text-secondary",
|
|
288
286
|
children: [
|
|
289
287
|
e.entityTypes.join(", "),
|
|
290
288
|
" ·",
|
|
291
289
|
" ",
|
|
292
|
-
|
|
293
|
-
e.downloadExpiresAt && ` · expires
|
|
290
|
+
E(e.sizeBytes),
|
|
291
|
+
e.downloadExpiresAt && ` · ${M("export.detail.parts.expires", "expires {{date}}", { date: new Date(e.downloadExpiresAt).toLocaleDateString() })}`
|
|
294
292
|
]
|
|
295
293
|
})]
|
|
296
294
|
})]
|
|
297
|
-
}), /* @__PURE__ */
|
|
295
|
+
}), /* @__PURE__ */ b("div", {
|
|
298
296
|
className: "flex items-center gap-2 flex-shrink-0",
|
|
299
|
-
children: e.downloadUrl ? /* @__PURE__ */
|
|
297
|
+
children: e.downloadUrl ? /* @__PURE__ */ x("a", {
|
|
300
298
|
href: e.downloadUrl,
|
|
301
299
|
className: "inline-flex items-center gap-2 px-3 py-1.5 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-colors text-sm font-medium",
|
|
302
|
-
children: [/* @__PURE__ */
|
|
303
|
-
}) : /* @__PURE__ */
|
|
300
|
+
children: [/* @__PURE__ */ b(m, { size: 14 }), M("export.detail.parts.download", "Download")]
|
|
301
|
+
}) : /* @__PURE__ */ x("span", {
|
|
304
302
|
className: "inline-flex items-center gap-1.5 text-sm text-text-secondary",
|
|
305
|
-
children: [/* @__PURE__ */
|
|
303
|
+
children: [/* @__PURE__ */ b(p, { size: 14 }), M("export.detail.parts.pending", "Pending")]
|
|
306
304
|
})
|
|
307
305
|
})]
|
|
308
306
|
}, e.id))
|
|
309
307
|
})
|
|
310
308
|
}),
|
|
311
|
-
|
|
309
|
+
q && G.parts.length === 0 && /* @__PURE__ */ x("div", {
|
|
312
310
|
className: "border-2 border-border-default rounded-xl bg-status-success-bg-subtle p-6 text-center",
|
|
313
311
|
children: [
|
|
314
|
-
/* @__PURE__ */
|
|
312
|
+
/* @__PURE__ */ b(f, {
|
|
315
313
|
size: 48,
|
|
316
314
|
className: "text-status-success-text mx-auto mb-3"
|
|
317
315
|
}),
|
|
318
|
-
/* @__PURE__ */
|
|
316
|
+
/* @__PURE__ */ b("h3", {
|
|
319
317
|
className: "text-lg font-bold text-status-success-text mb-1",
|
|
320
|
-
children: "Export Complete"
|
|
318
|
+
children: M("export.detail.complete.title", "Export Complete")
|
|
321
319
|
}),
|
|
322
|
-
/* @__PURE__ */
|
|
320
|
+
/* @__PURE__ */ b("p", {
|
|
323
321
|
className: "text-sm text-status-success-text",
|
|
324
|
-
children: "Your export has completed but no download parts are available yet."
|
|
322
|
+
children: M("export.detail.complete.noParts", "Your export has completed but no download parts are available yet.")
|
|
325
323
|
})
|
|
326
324
|
]
|
|
327
325
|
}),
|
|
328
|
-
|
|
326
|
+
L && /* @__PURE__ */ b("div", {
|
|
329
327
|
role: "dialog",
|
|
330
328
|
"aria-modal": "true",
|
|
331
329
|
"aria-labelledby": "export-confirm-title",
|
|
332
330
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-bg-surface/80 backdrop-blur-sm p-4",
|
|
333
|
-
children: /* @__PURE__ */
|
|
331
|
+
children: /* @__PURE__ */ x("div", {
|
|
334
332
|
className: "w-full max-w-md rounded-xl border-2 border-border-subtle bg-bg-surface p-6 shadow-xl",
|
|
335
333
|
children: [
|
|
336
|
-
/* @__PURE__ */
|
|
334
|
+
/* @__PURE__ */ b("h2", {
|
|
337
335
|
id: "export-confirm-title",
|
|
338
336
|
className: "text-lg font-bold",
|
|
339
|
-
children:
|
|
337
|
+
children: L === "cancel" ? M("export.detail.confirm.cancel.title", "Cancel export?") : M("export.detail.confirm.delete.title", "Delete export?")
|
|
340
338
|
}),
|
|
341
|
-
/* @__PURE__ */
|
|
339
|
+
/* @__PURE__ */ b("p", {
|
|
342
340
|
className: "mt-2 text-sm text-text-secondary",
|
|
343
|
-
children:
|
|
341
|
+
children: L === "cancel" ? M("export.detail.confirm.cancel.description", "This stops the running export job. You can retry it later if needed.") : M("export.detail.confirm.delete.description", "This removes the export job from history. This action cannot be undone.")
|
|
344
342
|
}),
|
|
345
|
-
/* @__PURE__ */
|
|
343
|
+
/* @__PURE__ */ x("div", {
|
|
346
344
|
className: "mt-6 flex flex-col-reverse sm:flex-row sm:justify-end gap-3",
|
|
347
|
-
children: [/* @__PURE__ */
|
|
345
|
+
children: [/* @__PURE__ */ b("button", {
|
|
348
346
|
type: "button",
|
|
349
|
-
onClick: () =>
|
|
347
|
+
onClick: () => R(null),
|
|
350
348
|
className: "px-4 py-2 rounded-lg border-2 border-border-subtle hover:bg-accent transition-colors font-medium",
|
|
351
|
-
children: "Keep Export"
|
|
352
|
-
}), /* @__PURE__ */
|
|
349
|
+
children: M("export.detail.confirm.keep", "Keep Export")
|
|
350
|
+
}), /* @__PURE__ */ x("button", {
|
|
353
351
|
type: "button",
|
|
354
|
-
onClick:
|
|
355
|
-
disabled:
|
|
352
|
+
onClick: pe,
|
|
353
|
+
disabled: B || H,
|
|
356
354
|
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",
|
|
357
|
-
children: [
|
|
355
|
+
children: [B || H ? /* @__PURE__ */ b(_, {
|
|
358
356
|
size: 16,
|
|
359
357
|
className: "animate-spin"
|
|
360
|
-
}) : null,
|
|
358
|
+
}) : null, L === "cancel" ? M("export.detail.actions.cancel", "Cancel Export") : M("export.detail.actions.delete", "Delete Export")]
|
|
361
359
|
})]
|
|
362
360
|
})
|
|
363
361
|
]
|
|
@@ -367,6 +365,6 @@ function j() {
|
|
|
367
365
|
});
|
|
368
366
|
}
|
|
369
367
|
//#endregion
|
|
370
|
-
export {
|
|
368
|
+
export { O as ExportDetailPage };
|
|
371
369
|
|
|
372
370
|
//# sourceMappingURL=ExportDetailPage.js.map
|