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