@infuro/cms-core 1.0.53 → 1.0.54
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/admin.cjs +86 -21
- package/dist/admin.js +86 -21
- package/dist/api.cjs +32 -32
- package/dist/api.js +1 -1
- package/dist/{chunk-3BPD5NGU.cjs → chunk-CJ2YAVCO.cjs} +127 -6
- package/dist/{chunk-UO5Q5RXB.js → chunk-PDA4L2LS.js} +127 -6
- package/dist/index.cjs +346 -223
- package/dist/index.js +135 -12
- package/package.json +1 -1
package/dist/admin.cjs
CHANGED
|
@@ -887,7 +887,7 @@ var init_admin_config_context = __esm({
|
|
|
887
887
|
var CMS_VERSION;
|
|
888
888
|
var init_cms_version = __esm({
|
|
889
889
|
"src/lib/cms-version.ts"() {
|
|
890
|
-
CMS_VERSION = "1.0.
|
|
890
|
+
CMS_VERSION = "1.0.54" ;
|
|
891
891
|
}
|
|
892
892
|
});
|
|
893
893
|
function useCatalogCategories(enabled = true) {
|
|
@@ -2223,7 +2223,11 @@ function FileUpload({ onUploadSuccess }) {
|
|
|
2223
2223
|
setProgress(100);
|
|
2224
2224
|
onUploadSuccess(data.url);
|
|
2225
2225
|
} else {
|
|
2226
|
-
console.error("
|
|
2226
|
+
console.error("[upload] API error", {
|
|
2227
|
+
status: response.status,
|
|
2228
|
+
error: data.error,
|
|
2229
|
+
details: data.details
|
|
2230
|
+
});
|
|
2227
2231
|
}
|
|
2228
2232
|
} catch (error) {
|
|
2229
2233
|
console.error("Upload error:", error);
|
|
@@ -2270,6 +2274,20 @@ function isVideoUploadMime(mime) {
|
|
|
2270
2274
|
const t = String(mime ?? "").trim().toLowerCase();
|
|
2271
2275
|
return VIDEO_UPLOAD_MIME_TYPES.includes(t);
|
|
2272
2276
|
}
|
|
2277
|
+
function logMediaLoadError(source, url, extra) {
|
|
2278
|
+
let host = null;
|
|
2279
|
+
try {
|
|
2280
|
+
host = new URL(url, typeof window !== "undefined" ? window.location.origin : "http://localhost").host;
|
|
2281
|
+
} catch {
|
|
2282
|
+
host = null;
|
|
2283
|
+
}
|
|
2284
|
+
console.error("[cms-media] image failed to load", {
|
|
2285
|
+
source,
|
|
2286
|
+
url,
|
|
2287
|
+
host,
|
|
2288
|
+
...extra
|
|
2289
|
+
});
|
|
2290
|
+
}
|
|
2273
2291
|
function isVideoMediaUrl(url) {
|
|
2274
2292
|
if (!url || typeof url !== "string") return false;
|
|
2275
2293
|
const trimmed = url.trim();
|
|
@@ -2304,6 +2322,7 @@ var init_media_url = __esm({
|
|
|
2304
2322
|
];
|
|
2305
2323
|
VIDEO_UPLOAD_MAX_BYTES = 100 * 1024 * 1024;
|
|
2306
2324
|
__name(isVideoUploadMime, "isVideoUploadMime");
|
|
2325
|
+
__name(logMediaLoadError, "logMediaLoadError");
|
|
2307
2326
|
__name(isVideoMediaUrl, "isVideoMediaUrl");
|
|
2308
2327
|
}
|
|
2309
2328
|
});
|
|
@@ -2350,12 +2369,21 @@ function ImageOrUrlField({ label, value, onChange, placeholder = "https://\u2026
|
|
|
2350
2369
|
method: "POST",
|
|
2351
2370
|
body: formData
|
|
2352
2371
|
});
|
|
2353
|
-
const data = await response.json();
|
|
2372
|
+
const data = await response.json().catch(() => ({}));
|
|
2354
2373
|
if (!response.ok) {
|
|
2355
|
-
|
|
2374
|
+
console.error("[upload] API error", {
|
|
2375
|
+
status: response.status,
|
|
2376
|
+
error: data.error,
|
|
2377
|
+
details: data.details
|
|
2378
|
+
});
|
|
2379
|
+
throw new Error(data.details || data.error || "Upload failed");
|
|
2356
2380
|
}
|
|
2381
|
+
console.info("[upload] API ok", {
|
|
2382
|
+
filePath: data.filePath
|
|
2383
|
+
});
|
|
2357
2384
|
onChange(data.filePath ?? "");
|
|
2358
2385
|
} catch (err) {
|
|
2386
|
+
console.error("[upload] client failed", err);
|
|
2359
2387
|
setError(err instanceof Error ? err.message : "Upload failed");
|
|
2360
2388
|
} finally {
|
|
2361
2389
|
setIsUploading(false);
|
|
@@ -2407,6 +2435,9 @@ function ImageOrUrlField({ label, value, onChange, placeholder = "https://\u2026
|
|
|
2407
2435
|
}
|
|
2408
2436
|
}, "onKeyDown"),
|
|
2409
2437
|
onError: /* @__PURE__ */ __name((e) => {
|
|
2438
|
+
logMediaLoadError("image-or-url-field", trimmed, {
|
|
2439
|
+
label
|
|
2440
|
+
});
|
|
2410
2441
|
e.currentTarget.style.display = "none";
|
|
2411
2442
|
}, "onError")
|
|
2412
2443
|
})
|
|
@@ -2470,7 +2501,10 @@ function ImageOrUrlField({ label, value, onChange, placeholder = "https://\u2026
|
|
|
2470
2501
|
src: trimmed,
|
|
2471
2502
|
alt: label,
|
|
2472
2503
|
className: "max-h-[90vh] max-w-[90vw] rounded-md object-contain shadow-lg",
|
|
2473
|
-
onClick: /* @__PURE__ */ __name((e) => e.stopPropagation(), "onClick")
|
|
2504
|
+
onClick: /* @__PURE__ */ __name((e) => e.stopPropagation(), "onClick"),
|
|
2505
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("image-or-url-lightbox", trimmed, {
|
|
2506
|
+
label
|
|
2507
|
+
}), "onError")
|
|
2474
2508
|
})
|
|
2475
2509
|
)) : null);
|
|
2476
2510
|
}
|
|
@@ -6829,7 +6863,12 @@ function ImageUpload({ value, onChange, onRemove, label, required = false, class
|
|
|
6829
6863
|
});
|
|
6830
6864
|
const data = await response.json();
|
|
6831
6865
|
if (!response.ok) {
|
|
6832
|
-
|
|
6866
|
+
console.error("[upload] API error", {
|
|
6867
|
+
status: response.status,
|
|
6868
|
+
error: data.error,
|
|
6869
|
+
details: data.details
|
|
6870
|
+
});
|
|
6871
|
+
throw new Error(data.details || data.error || "Upload failed");
|
|
6833
6872
|
}
|
|
6834
6873
|
onChange(data.filePath);
|
|
6835
6874
|
setUploadProgress(100);
|
|
@@ -6958,7 +6997,10 @@ function ImageUpload({ value, onChange, onRemove, label, required = false, class
|
|
|
6958
6997
|
height: 450,
|
|
6959
6998
|
className: "w-full h-full object-cover",
|
|
6960
6999
|
onError: /* @__PURE__ */ __name((e) => {
|
|
6961
|
-
console.error("
|
|
7000
|
+
console.error("[cms-media] image failed to load", {
|
|
7001
|
+
source: "image-upload",
|
|
7002
|
+
url: value
|
|
7003
|
+
});
|
|
6962
7004
|
e.currentTarget.style.display = "none";
|
|
6963
7005
|
}, "onError")
|
|
6964
7006
|
})), /* @__PURE__ */ React25__namespace.default.createElement("div", {
|
|
@@ -12104,7 +12146,8 @@ function renderListThumbnail(url) {
|
|
|
12104
12146
|
return React25.createElement("img", {
|
|
12105
12147
|
src: trimmed,
|
|
12106
12148
|
alt: "",
|
|
12107
|
-
className: "h-10 w-10 rounded border border-gray-200 bg-white object-contain"
|
|
12149
|
+
className: "h-10 w-10 rounded border border-gray-200 bg-white object-contain",
|
|
12150
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("crud-list-thumbnail", trimmed), "onError")
|
|
12108
12151
|
});
|
|
12109
12152
|
}
|
|
12110
12153
|
function productListImageUrl(item) {
|
|
@@ -13157,7 +13200,8 @@ var init_store_crud_configs = __esm({
|
|
|
13157
13200
|
return React25.createElement("img", {
|
|
13158
13201
|
src: url,
|
|
13159
13202
|
alt: "",
|
|
13160
|
-
className: "h-10 w-10 rounded border border-gray-200 bg-white object-contain"
|
|
13203
|
+
className: "h-10 w-10 rounded border border-gray-200 bg-white object-contain",
|
|
13204
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("brand-logo-thumbnail", url), "onError")
|
|
13161
13205
|
});
|
|
13162
13206
|
}, "render")
|
|
13163
13207
|
},
|
|
@@ -26632,7 +26676,11 @@ function MediaPreviewBody({ item, absoluteUrl }) {
|
|
|
26632
26676
|
/* @__PURE__ */ React25__namespace.default.createElement("img", {
|
|
26633
26677
|
src: absoluteUrl,
|
|
26634
26678
|
alt: item.alt || item.filename,
|
|
26635
|
-
className: "max-h-[min(75vh,720px)] w-full object-contain rounded-md mx-auto"
|
|
26679
|
+
className: "max-h-[min(75vh,720px)] w-full object-contain rounded-md mx-auto",
|
|
26680
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("media-library-preview", absoluteUrl, {
|
|
26681
|
+
id: item.id,
|
|
26682
|
+
filename: item.filename
|
|
26683
|
+
}), "onError")
|
|
26636
26684
|
})
|
|
26637
26685
|
);
|
|
26638
26686
|
}
|
|
@@ -27108,7 +27156,14 @@ function MediaLibraryPage() {
|
|
|
27108
27156
|
body: formData
|
|
27109
27157
|
});
|
|
27110
27158
|
const uploadJson = await uploadRes.json();
|
|
27111
|
-
if (!uploadRes.ok)
|
|
27159
|
+
if (!uploadRes.ok) {
|
|
27160
|
+
console.error("[upload] API error", {
|
|
27161
|
+
status: uploadRes.status,
|
|
27162
|
+
error: uploadJson.error,
|
|
27163
|
+
details: uploadJson.details
|
|
27164
|
+
});
|
|
27165
|
+
throw new Error(uploadJson.details || uploadJson.error || "Upload failed");
|
|
27166
|
+
}
|
|
27112
27167
|
const filePath = uploadJson.filePath ?? uploadJson.url;
|
|
27113
27168
|
if (!filePath) throw new Error("No file path returned");
|
|
27114
27169
|
const createRes = await fetch("/api/media", {
|
|
@@ -27750,6 +27805,7 @@ var init_MediaLibraryPage = __esm({
|
|
|
27750
27805
|
init_dialog();
|
|
27751
27806
|
init_utils();
|
|
27752
27807
|
init_media_zip_extract();
|
|
27808
|
+
init_media_url();
|
|
27753
27809
|
init_checkbox();
|
|
27754
27810
|
__name(getTypeCategory, "getTypeCategory");
|
|
27755
27811
|
__name(formatMediaBytes, "formatMediaBytes");
|
|
@@ -27855,7 +27911,11 @@ var init_MediaLibraryPage = __esm({
|
|
|
27855
27911
|
alt: item.alt || item.filename,
|
|
27856
27912
|
className: "pointer-events-none h-full w-full object-cover",
|
|
27857
27913
|
loading: "lazy",
|
|
27858
|
-
decoding: "async"
|
|
27914
|
+
decoding: "async",
|
|
27915
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("media-library-thumb", item.url, {
|
|
27916
|
+
id: item.id,
|
|
27917
|
+
filename: item.filename
|
|
27918
|
+
}), "onError")
|
|
27859
27919
|
})
|
|
27860
27920
|
) : showVideoThumb ? /* @__PURE__ */ React25__namespace.default.createElement("div", {
|
|
27861
27921
|
className: "pointer-events-none absolute inset-0"
|
|
@@ -33948,7 +34008,8 @@ function EventEditPage({ eventId }) {
|
|
|
33948
34008
|
}, /* @__PURE__ */ React.createElement("img", {
|
|
33949
34009
|
src: logoUrl.trim(),
|
|
33950
34010
|
alt: "",
|
|
33951
|
-
className: "h-12 w-12 rounded border border-gray-200 bg-white object-contain shrink-0"
|
|
34011
|
+
className: "h-12 w-12 rounded border border-gray-200 bg-white object-contain shrink-0",
|
|
34012
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("event-edit-logo", logoUrl.trim()), "onError")
|
|
33952
34013
|
}), /* @__PURE__ */ React.createElement("div", {
|
|
33953
34014
|
className: "min-w-0"
|
|
33954
34015
|
}, /* @__PURE__ */ React.createElement("p", {
|
|
@@ -34318,6 +34379,7 @@ var init_EventEditPage = __esm({
|
|
|
34318
34379
|
init_DetailPageLayout();
|
|
34319
34380
|
init_DetailPageHeader();
|
|
34320
34381
|
init_ImageOrUrlField();
|
|
34382
|
+
init_media_url();
|
|
34321
34383
|
init_JoditRichText();
|
|
34322
34384
|
init_EventProductsSection();
|
|
34323
34385
|
init_admin_config_context();
|
|
@@ -35274,10 +35336,12 @@ function VendorEditPage({ vendorId }) {
|
|
|
35274
35336
|
const handleCreate = /* @__PURE__ */ __name(async () => {
|
|
35275
35337
|
setSaving(true);
|
|
35276
35338
|
setErrors([]);
|
|
35277
|
-
|
|
35278
|
-
|
|
35279
|
-
|
|
35280
|
-
|
|
35339
|
+
const createMissing = [];
|
|
35340
|
+
if (!name.trim()) createMissing.push("Store name is required");
|
|
35341
|
+
if (!ownerName.trim()) createMissing.push("Owner name is required");
|
|
35342
|
+
if (!ownerEmail.trim()) createMissing.push("Owner email is required");
|
|
35343
|
+
if (createMissing.length) {
|
|
35344
|
+
setErrors(createMissing);
|
|
35281
35345
|
setSaving(false);
|
|
35282
35346
|
return;
|
|
35283
35347
|
}
|
|
@@ -35390,10 +35454,11 @@ function VendorEditPage({ vendorId }) {
|
|
|
35390
35454
|
setSaving(false);
|
|
35391
35455
|
return;
|
|
35392
35456
|
}
|
|
35393
|
-
|
|
35394
|
-
|
|
35395
|
-
|
|
35396
|
-
|
|
35457
|
+
const saveMissing = [];
|
|
35458
|
+
if (!ownerName.trim()) saveMissing.push("Owner name is required");
|
|
35459
|
+
if (!ownerEmail.trim()) saveMissing.push("Owner email is required");
|
|
35460
|
+
if (saveMissing.length) {
|
|
35461
|
+
setErrors(saveMissing);
|
|
35397
35462
|
setSaving(false);
|
|
35398
35463
|
return;
|
|
35399
35464
|
}
|
package/dist/admin.js
CHANGED
|
@@ -853,7 +853,7 @@ var init_admin_config_context = __esm({
|
|
|
853
853
|
var CMS_VERSION;
|
|
854
854
|
var init_cms_version = __esm({
|
|
855
855
|
"src/lib/cms-version.ts"() {
|
|
856
|
-
CMS_VERSION = "1.0.
|
|
856
|
+
CMS_VERSION = "1.0.54" ;
|
|
857
857
|
}
|
|
858
858
|
});
|
|
859
859
|
function useCatalogCategories(enabled = true) {
|
|
@@ -2189,7 +2189,11 @@ function FileUpload({ onUploadSuccess }) {
|
|
|
2189
2189
|
setProgress(100);
|
|
2190
2190
|
onUploadSuccess(data.url);
|
|
2191
2191
|
} else {
|
|
2192
|
-
console.error("
|
|
2192
|
+
console.error("[upload] API error", {
|
|
2193
|
+
status: response.status,
|
|
2194
|
+
error: data.error,
|
|
2195
|
+
details: data.details
|
|
2196
|
+
});
|
|
2193
2197
|
}
|
|
2194
2198
|
} catch (error) {
|
|
2195
2199
|
console.error("Upload error:", error);
|
|
@@ -2236,6 +2240,20 @@ function isVideoUploadMime(mime) {
|
|
|
2236
2240
|
const t = String(mime ?? "").trim().toLowerCase();
|
|
2237
2241
|
return VIDEO_UPLOAD_MIME_TYPES.includes(t);
|
|
2238
2242
|
}
|
|
2243
|
+
function logMediaLoadError(source, url, extra) {
|
|
2244
|
+
let host = null;
|
|
2245
|
+
try {
|
|
2246
|
+
host = new URL(url, typeof window !== "undefined" ? window.location.origin : "http://localhost").host;
|
|
2247
|
+
} catch {
|
|
2248
|
+
host = null;
|
|
2249
|
+
}
|
|
2250
|
+
console.error("[cms-media] image failed to load", {
|
|
2251
|
+
source,
|
|
2252
|
+
url,
|
|
2253
|
+
host,
|
|
2254
|
+
...extra
|
|
2255
|
+
});
|
|
2256
|
+
}
|
|
2239
2257
|
function isVideoMediaUrl(url) {
|
|
2240
2258
|
if (!url || typeof url !== "string") return false;
|
|
2241
2259
|
const trimmed = url.trim();
|
|
@@ -2270,6 +2288,7 @@ var init_media_url = __esm({
|
|
|
2270
2288
|
];
|
|
2271
2289
|
VIDEO_UPLOAD_MAX_BYTES = 100 * 1024 * 1024;
|
|
2272
2290
|
__name(isVideoUploadMime, "isVideoUploadMime");
|
|
2291
|
+
__name(logMediaLoadError, "logMediaLoadError");
|
|
2273
2292
|
__name(isVideoMediaUrl, "isVideoMediaUrl");
|
|
2274
2293
|
}
|
|
2275
2294
|
});
|
|
@@ -2316,12 +2335,21 @@ function ImageOrUrlField({ label, value, onChange, placeholder = "https://\u2026
|
|
|
2316
2335
|
method: "POST",
|
|
2317
2336
|
body: formData
|
|
2318
2337
|
});
|
|
2319
|
-
const data = await response.json();
|
|
2338
|
+
const data = await response.json().catch(() => ({}));
|
|
2320
2339
|
if (!response.ok) {
|
|
2321
|
-
|
|
2340
|
+
console.error("[upload] API error", {
|
|
2341
|
+
status: response.status,
|
|
2342
|
+
error: data.error,
|
|
2343
|
+
details: data.details
|
|
2344
|
+
});
|
|
2345
|
+
throw new Error(data.details || data.error || "Upload failed");
|
|
2322
2346
|
}
|
|
2347
|
+
console.info("[upload] API ok", {
|
|
2348
|
+
filePath: data.filePath
|
|
2349
|
+
});
|
|
2323
2350
|
onChange(data.filePath ?? "");
|
|
2324
2351
|
} catch (err) {
|
|
2352
|
+
console.error("[upload] client failed", err);
|
|
2325
2353
|
setError(err instanceof Error ? err.message : "Upload failed");
|
|
2326
2354
|
} finally {
|
|
2327
2355
|
setIsUploading(false);
|
|
@@ -2373,6 +2401,9 @@ function ImageOrUrlField({ label, value, onChange, placeholder = "https://\u2026
|
|
|
2373
2401
|
}
|
|
2374
2402
|
}, "onKeyDown"),
|
|
2375
2403
|
onError: /* @__PURE__ */ __name((e) => {
|
|
2404
|
+
logMediaLoadError("image-or-url-field", trimmed, {
|
|
2405
|
+
label
|
|
2406
|
+
});
|
|
2376
2407
|
e.currentTarget.style.display = "none";
|
|
2377
2408
|
}, "onError")
|
|
2378
2409
|
})
|
|
@@ -2436,7 +2467,10 @@ function ImageOrUrlField({ label, value, onChange, placeholder = "https://\u2026
|
|
|
2436
2467
|
src: trimmed,
|
|
2437
2468
|
alt: label,
|
|
2438
2469
|
className: "max-h-[90vh] max-w-[90vw] rounded-md object-contain shadow-lg",
|
|
2439
|
-
onClick: /* @__PURE__ */ __name((e) => e.stopPropagation(), "onClick")
|
|
2470
|
+
onClick: /* @__PURE__ */ __name((e) => e.stopPropagation(), "onClick"),
|
|
2471
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("image-or-url-lightbox", trimmed, {
|
|
2472
|
+
label
|
|
2473
|
+
}), "onError")
|
|
2440
2474
|
})
|
|
2441
2475
|
)) : null);
|
|
2442
2476
|
}
|
|
@@ -6795,7 +6829,12 @@ function ImageUpload({ value, onChange, onRemove, label, required = false, class
|
|
|
6795
6829
|
});
|
|
6796
6830
|
const data = await response.json();
|
|
6797
6831
|
if (!response.ok) {
|
|
6798
|
-
|
|
6832
|
+
console.error("[upload] API error", {
|
|
6833
|
+
status: response.status,
|
|
6834
|
+
error: data.error,
|
|
6835
|
+
details: data.details
|
|
6836
|
+
});
|
|
6837
|
+
throw new Error(data.details || data.error || "Upload failed");
|
|
6799
6838
|
}
|
|
6800
6839
|
onChange(data.filePath);
|
|
6801
6840
|
setUploadProgress(100);
|
|
@@ -6924,7 +6963,10 @@ function ImageUpload({ value, onChange, onRemove, label, required = false, class
|
|
|
6924
6963
|
height: 450,
|
|
6925
6964
|
className: "w-full h-full object-cover",
|
|
6926
6965
|
onError: /* @__PURE__ */ __name((e) => {
|
|
6927
|
-
console.error("
|
|
6966
|
+
console.error("[cms-media] image failed to load", {
|
|
6967
|
+
source: "image-upload",
|
|
6968
|
+
url: value
|
|
6969
|
+
});
|
|
6928
6970
|
e.currentTarget.style.display = "none";
|
|
6929
6971
|
}, "onError")
|
|
6930
6972
|
})), /* @__PURE__ */ React25__default.createElement("div", {
|
|
@@ -12070,7 +12112,8 @@ function renderListThumbnail(url) {
|
|
|
12070
12112
|
return createElement("img", {
|
|
12071
12113
|
src: trimmed,
|
|
12072
12114
|
alt: "",
|
|
12073
|
-
className: "h-10 w-10 rounded border border-gray-200 bg-white object-contain"
|
|
12115
|
+
className: "h-10 w-10 rounded border border-gray-200 bg-white object-contain",
|
|
12116
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("crud-list-thumbnail", trimmed), "onError")
|
|
12074
12117
|
});
|
|
12075
12118
|
}
|
|
12076
12119
|
function productListImageUrl(item) {
|
|
@@ -13123,7 +13166,8 @@ var init_store_crud_configs = __esm({
|
|
|
13123
13166
|
return createElement("img", {
|
|
13124
13167
|
src: url,
|
|
13125
13168
|
alt: "",
|
|
13126
|
-
className: "h-10 w-10 rounded border border-gray-200 bg-white object-contain"
|
|
13169
|
+
className: "h-10 w-10 rounded border border-gray-200 bg-white object-contain",
|
|
13170
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("brand-logo-thumbnail", url), "onError")
|
|
13127
13171
|
});
|
|
13128
13172
|
}, "render")
|
|
13129
13173
|
},
|
|
@@ -26598,7 +26642,11 @@ function MediaPreviewBody({ item, absoluteUrl }) {
|
|
|
26598
26642
|
/* @__PURE__ */ React25__default.createElement("img", {
|
|
26599
26643
|
src: absoluteUrl,
|
|
26600
26644
|
alt: item.alt || item.filename,
|
|
26601
|
-
className: "max-h-[min(75vh,720px)] w-full object-contain rounded-md mx-auto"
|
|
26645
|
+
className: "max-h-[min(75vh,720px)] w-full object-contain rounded-md mx-auto",
|
|
26646
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("media-library-preview", absoluteUrl, {
|
|
26647
|
+
id: item.id,
|
|
26648
|
+
filename: item.filename
|
|
26649
|
+
}), "onError")
|
|
26602
26650
|
})
|
|
26603
26651
|
);
|
|
26604
26652
|
}
|
|
@@ -27074,7 +27122,14 @@ function MediaLibraryPage() {
|
|
|
27074
27122
|
body: formData
|
|
27075
27123
|
});
|
|
27076
27124
|
const uploadJson = await uploadRes.json();
|
|
27077
|
-
if (!uploadRes.ok)
|
|
27125
|
+
if (!uploadRes.ok) {
|
|
27126
|
+
console.error("[upload] API error", {
|
|
27127
|
+
status: uploadRes.status,
|
|
27128
|
+
error: uploadJson.error,
|
|
27129
|
+
details: uploadJson.details
|
|
27130
|
+
});
|
|
27131
|
+
throw new Error(uploadJson.details || uploadJson.error || "Upload failed");
|
|
27132
|
+
}
|
|
27078
27133
|
const filePath = uploadJson.filePath ?? uploadJson.url;
|
|
27079
27134
|
if (!filePath) throw new Error("No file path returned");
|
|
27080
27135
|
const createRes = await fetch("/api/media", {
|
|
@@ -27716,6 +27771,7 @@ var init_MediaLibraryPage = __esm({
|
|
|
27716
27771
|
init_dialog();
|
|
27717
27772
|
init_utils();
|
|
27718
27773
|
init_media_zip_extract();
|
|
27774
|
+
init_media_url();
|
|
27719
27775
|
init_checkbox();
|
|
27720
27776
|
__name(getTypeCategory, "getTypeCategory");
|
|
27721
27777
|
__name(formatMediaBytes, "formatMediaBytes");
|
|
@@ -27821,7 +27877,11 @@ var init_MediaLibraryPage = __esm({
|
|
|
27821
27877
|
alt: item.alt || item.filename,
|
|
27822
27878
|
className: "pointer-events-none h-full w-full object-cover",
|
|
27823
27879
|
loading: "lazy",
|
|
27824
|
-
decoding: "async"
|
|
27880
|
+
decoding: "async",
|
|
27881
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("media-library-thumb", item.url, {
|
|
27882
|
+
id: item.id,
|
|
27883
|
+
filename: item.filename
|
|
27884
|
+
}), "onError")
|
|
27825
27885
|
})
|
|
27826
27886
|
) : showVideoThumb ? /* @__PURE__ */ React25__default.createElement("div", {
|
|
27827
27887
|
className: "pointer-events-none absolute inset-0"
|
|
@@ -33914,7 +33974,8 @@ function EventEditPage({ eventId }) {
|
|
|
33914
33974
|
}, /* @__PURE__ */ React.createElement("img", {
|
|
33915
33975
|
src: logoUrl.trim(),
|
|
33916
33976
|
alt: "",
|
|
33917
|
-
className: "h-12 w-12 rounded border border-gray-200 bg-white object-contain shrink-0"
|
|
33977
|
+
className: "h-12 w-12 rounded border border-gray-200 bg-white object-contain shrink-0",
|
|
33978
|
+
onError: /* @__PURE__ */ __name(() => logMediaLoadError("event-edit-logo", logoUrl.trim()), "onError")
|
|
33918
33979
|
}), /* @__PURE__ */ React.createElement("div", {
|
|
33919
33980
|
className: "min-w-0"
|
|
33920
33981
|
}, /* @__PURE__ */ React.createElement("p", {
|
|
@@ -34284,6 +34345,7 @@ var init_EventEditPage = __esm({
|
|
|
34284
34345
|
init_DetailPageLayout();
|
|
34285
34346
|
init_DetailPageHeader();
|
|
34286
34347
|
init_ImageOrUrlField();
|
|
34348
|
+
init_media_url();
|
|
34287
34349
|
init_JoditRichText();
|
|
34288
34350
|
init_EventProductsSection();
|
|
34289
34351
|
init_admin_config_context();
|
|
@@ -35240,10 +35302,12 @@ function VendorEditPage({ vendorId }) {
|
|
|
35240
35302
|
const handleCreate = /* @__PURE__ */ __name(async () => {
|
|
35241
35303
|
setSaving(true);
|
|
35242
35304
|
setErrors([]);
|
|
35243
|
-
|
|
35244
|
-
|
|
35245
|
-
|
|
35246
|
-
|
|
35305
|
+
const createMissing = [];
|
|
35306
|
+
if (!name.trim()) createMissing.push("Store name is required");
|
|
35307
|
+
if (!ownerName.trim()) createMissing.push("Owner name is required");
|
|
35308
|
+
if (!ownerEmail.trim()) createMissing.push("Owner email is required");
|
|
35309
|
+
if (createMissing.length) {
|
|
35310
|
+
setErrors(createMissing);
|
|
35247
35311
|
setSaving(false);
|
|
35248
35312
|
return;
|
|
35249
35313
|
}
|
|
@@ -35356,10 +35420,11 @@ function VendorEditPage({ vendorId }) {
|
|
|
35356
35420
|
setSaving(false);
|
|
35357
35421
|
return;
|
|
35358
35422
|
}
|
|
35359
|
-
|
|
35360
|
-
|
|
35361
|
-
|
|
35362
|
-
|
|
35423
|
+
const saveMissing = [];
|
|
35424
|
+
if (!ownerName.trim()) saveMissing.push("Owner name is required");
|
|
35425
|
+
if (!ownerEmail.trim()) saveMissing.push("Owner email is required");
|
|
35426
|
+
if (saveMissing.length) {
|
|
35427
|
+
setErrors(saveMissing);
|
|
35363
35428
|
setSaving(false);
|
|
35364
35429
|
return;
|
|
35365
35430
|
}
|
package/dist/api.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkCJ2YAVCO_cjs = require('./chunk-CJ2YAVCO.cjs');
|
|
4
4
|
require('./chunk-XQ3QUHWR.cjs');
|
|
5
5
|
require('./chunk-HY3AXLOI.cjs');
|
|
6
6
|
require('./chunk-JN4AFHZ4.cjs');
|
|
@@ -22,127 +22,127 @@ require('./chunk-USNT2KNT.cjs');
|
|
|
22
22
|
|
|
23
23
|
Object.defineProperty(exports, "createAnalyticsHandlers", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkCJ2YAVCO_cjs.createAnalyticsHandlers; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "createBlogBySlugHandler", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunkCJ2YAVCO_cjs.createBlogBySlugHandler; }
|
|
30
30
|
});
|
|
31
31
|
Object.defineProperty(exports, "createChangePasswordHandler", {
|
|
32
32
|
enumerable: true,
|
|
33
|
-
get: function () { return
|
|
33
|
+
get: function () { return chunkCJ2YAVCO_cjs.createChangePasswordHandler; }
|
|
34
34
|
});
|
|
35
35
|
Object.defineProperty(exports, "createCmsApiHandler", {
|
|
36
36
|
enumerable: true,
|
|
37
|
-
get: function () { return
|
|
37
|
+
get: function () { return chunkCJ2YAVCO_cjs.createCmsApiHandler; }
|
|
38
38
|
});
|
|
39
39
|
Object.defineProperty(exports, "createCrudByIdHandler", {
|
|
40
40
|
enumerable: true,
|
|
41
|
-
get: function () { return
|
|
41
|
+
get: function () { return chunkCJ2YAVCO_cjs.createCrudByIdHandler; }
|
|
42
42
|
});
|
|
43
43
|
Object.defineProperty(exports, "createCrudHandler", {
|
|
44
44
|
enumerable: true,
|
|
45
|
-
get: function () { return
|
|
45
|
+
get: function () { return chunkCJ2YAVCO_cjs.createCrudHandler; }
|
|
46
46
|
});
|
|
47
47
|
Object.defineProperty(exports, "createDashboardStatsHandler", {
|
|
48
48
|
enumerable: true,
|
|
49
|
-
get: function () { return
|
|
49
|
+
get: function () { return chunkCJ2YAVCO_cjs.createDashboardStatsHandler; }
|
|
50
50
|
});
|
|
51
51
|
Object.defineProperty(exports, "createEcommerceAnalyticsHandler", {
|
|
52
52
|
enumerable: true,
|
|
53
|
-
get: function () { return
|
|
53
|
+
get: function () { return chunkCJ2YAVCO_cjs.createEcommerceAnalyticsHandler; }
|
|
54
54
|
});
|
|
55
55
|
Object.defineProperty(exports, "createForgotPasswordHandler", {
|
|
56
56
|
enumerable: true,
|
|
57
|
-
get: function () { return
|
|
57
|
+
get: function () { return chunkCJ2YAVCO_cjs.createForgotPasswordHandler; }
|
|
58
58
|
});
|
|
59
59
|
Object.defineProperty(exports, "createFormBySlugHandler", {
|
|
60
60
|
enumerable: true,
|
|
61
|
-
get: function () { return
|
|
61
|
+
get: function () { return chunkCJ2YAVCO_cjs.createFormBySlugHandler; }
|
|
62
62
|
});
|
|
63
63
|
Object.defineProperty(exports, "createInviteAcceptHandler", {
|
|
64
64
|
enumerable: true,
|
|
65
|
-
get: function () { return
|
|
65
|
+
get: function () { return chunkCJ2YAVCO_cjs.createInviteAcceptHandler; }
|
|
66
66
|
});
|
|
67
67
|
Object.defineProperty(exports, "createJobScheduleHandlers", {
|
|
68
68
|
enumerable: true,
|
|
69
|
-
get: function () { return
|
|
69
|
+
get: function () { return chunkCJ2YAVCO_cjs.createJobScheduleHandlers; }
|
|
70
70
|
});
|
|
71
71
|
Object.defineProperty(exports, "createLlmAgentKnowledgeHandlers", {
|
|
72
72
|
enumerable: true,
|
|
73
|
-
get: function () { return
|
|
73
|
+
get: function () { return chunkCJ2YAVCO_cjs.createLlmAgentKnowledgeHandlers; }
|
|
74
74
|
});
|
|
75
75
|
Object.defineProperty(exports, "createMediaZipExtractHandler", {
|
|
76
76
|
enumerable: true,
|
|
77
|
-
get: function () { return
|
|
77
|
+
get: function () { return chunkCJ2YAVCO_cjs.createMediaZipExtractHandler; }
|
|
78
78
|
});
|
|
79
79
|
Object.defineProperty(exports, "createSetPasswordHandler", {
|
|
80
80
|
enumerable: true,
|
|
81
|
-
get: function () { return
|
|
81
|
+
get: function () { return chunkCJ2YAVCO_cjs.createSetPasswordHandler; }
|
|
82
82
|
});
|
|
83
83
|
Object.defineProperty(exports, "createSettingsApiHandlers", {
|
|
84
84
|
enumerable: true,
|
|
85
|
-
get: function () { return
|
|
85
|
+
get: function () { return chunkCJ2YAVCO_cjs.createSettingsApiHandlers; }
|
|
86
86
|
});
|
|
87
87
|
Object.defineProperty(exports, "createStorefrontApiHandler", {
|
|
88
88
|
enumerable: true,
|
|
89
|
-
get: function () { return
|
|
89
|
+
get: function () { return chunkCJ2YAVCO_cjs.createStorefrontApiHandler; }
|
|
90
90
|
});
|
|
91
91
|
Object.defineProperty(exports, "createUploadHandler", {
|
|
92
92
|
enumerable: true,
|
|
93
|
-
get: function () { return
|
|
93
|
+
get: function () { return chunkCJ2YAVCO_cjs.createUploadHandler; }
|
|
94
94
|
});
|
|
95
95
|
Object.defineProperty(exports, "createUserAuthApiRouter", {
|
|
96
96
|
enumerable: true,
|
|
97
|
-
get: function () { return
|
|
97
|
+
get: function () { return chunkCJ2YAVCO_cjs.createUserAuthApiRouter; }
|
|
98
98
|
});
|
|
99
99
|
Object.defineProperty(exports, "createUserAvatarHandler", {
|
|
100
100
|
enumerable: true,
|
|
101
|
-
get: function () { return
|
|
101
|
+
get: function () { return chunkCJ2YAVCO_cjs.createUserAvatarHandler; }
|
|
102
102
|
});
|
|
103
103
|
Object.defineProperty(exports, "createUserProfileHandler", {
|
|
104
104
|
enumerable: true,
|
|
105
|
-
get: function () { return
|
|
105
|
+
get: function () { return chunkCJ2YAVCO_cjs.createUserProfileHandler; }
|
|
106
106
|
});
|
|
107
107
|
Object.defineProperty(exports, "createUsersApiHandlers", {
|
|
108
108
|
enumerable: true,
|
|
109
|
-
get: function () { return
|
|
109
|
+
get: function () { return chunkCJ2YAVCO_cjs.createUsersApiHandlers; }
|
|
110
110
|
});
|
|
111
111
|
Object.defineProperty(exports, "createVendorDashboardHandler", {
|
|
112
112
|
enumerable: true,
|
|
113
|
-
get: function () { return
|
|
113
|
+
get: function () { return chunkCJ2YAVCO_cjs.createVendorDashboardHandler; }
|
|
114
114
|
});
|
|
115
115
|
Object.defineProperty(exports, "createVendorOnboardHandlers", {
|
|
116
116
|
enumerable: true,
|
|
117
|
-
get: function () { return
|
|
117
|
+
get: function () { return chunkCJ2YAVCO_cjs.createVendorOnboardHandlers; }
|
|
118
118
|
});
|
|
119
119
|
Object.defineProperty(exports, "getPublicSettingsGroup", {
|
|
120
120
|
enumerable: true,
|
|
121
|
-
get: function () { return
|
|
121
|
+
get: function () { return chunkCJ2YAVCO_cjs.getPublicSettingsGroup; }
|
|
122
122
|
});
|
|
123
123
|
Object.defineProperty(exports, "mergeGuardrailsIntoSystemPrompt", {
|
|
124
124
|
enumerable: true,
|
|
125
|
-
get: function () { return
|
|
125
|
+
get: function () { return chunkCJ2YAVCO_cjs.mergeGuardrailsIntoSystemPrompt; }
|
|
126
126
|
});
|
|
127
127
|
Object.defineProperty(exports, "parseLlmAgentValidationRules", {
|
|
128
128
|
enumerable: true,
|
|
129
|
-
get: function () { return
|
|
129
|
+
get: function () { return chunkCJ2YAVCO_cjs.parseLlmAgentValidationRules; }
|
|
130
130
|
});
|
|
131
131
|
Object.defineProperty(exports, "simpleDecrypt", {
|
|
132
132
|
enumerable: true,
|
|
133
|
-
get: function () { return
|
|
133
|
+
get: function () { return chunkCJ2YAVCO_cjs.simpleDecrypt; }
|
|
134
134
|
});
|
|
135
135
|
Object.defineProperty(exports, "simpleEncrypt", {
|
|
136
136
|
enumerable: true,
|
|
137
|
-
get: function () { return
|
|
137
|
+
get: function () { return chunkCJ2YAVCO_cjs.simpleEncrypt; }
|
|
138
138
|
});
|
|
139
139
|
Object.defineProperty(exports, "validateUserMessageAgainstAgentRules", {
|
|
140
140
|
enumerable: true,
|
|
141
|
-
get: function () { return
|
|
141
|
+
get: function () { return chunkCJ2YAVCO_cjs.validateUserMessageAgainstAgentRules; }
|
|
142
142
|
});
|
|
143
143
|
Object.defineProperty(exports, "validateUserMessageAgainstStructuredRules", {
|
|
144
144
|
enumerable: true,
|
|
145
|
-
get: function () { return
|
|
145
|
+
get: function () { return chunkCJ2YAVCO_cjs.validateUserMessageAgainstStructuredRules; }
|
|
146
146
|
});
|
|
147
147
|
Object.defineProperty(exports, "createCmsAuthBundle", {
|
|
148
148
|
enumerable: true,
|
package/dist/api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-
|
|
1
|
+
export { createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-PDA4L2LS.js';
|
|
2
2
|
import './chunk-GO7PPYNU.js';
|
|
3
3
|
import './chunk-3K5AIEIZ.js';
|
|
4
4
|
import './chunk-CTXBYO2J.js';
|