sa2kit 1.6.70 → 1.6.72
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/festivalCard/core/index.d.mts +1 -1
- package/dist/festivalCard/core/index.d.ts +1 -1
- package/dist/festivalCard/core/index.js +4 -2
- package/dist/festivalCard/core/index.js.map +1 -1
- package/dist/festivalCard/core/index.mjs +4 -2
- package/dist/festivalCard/core/index.mjs.map +1 -1
- package/dist/festivalCard/index.d.mts +2 -2
- package/dist/festivalCard/index.d.ts +2 -2
- package/dist/festivalCard/index.js +79 -139
- package/dist/festivalCard/index.js.map +1 -1
- package/dist/festivalCard/index.mjs +79 -139
- package/dist/festivalCard/index.mjs.map +1 -1
- package/dist/festivalCard/miniapp/index.d.mts +3 -3
- package/dist/festivalCard/miniapp/index.d.ts +3 -3
- package/dist/festivalCard/miniapp/index.js +21 -15
- package/dist/festivalCard/miniapp/index.js.map +1 -1
- package/dist/festivalCard/miniapp/index.mjs +21 -15
- package/dist/festivalCard/miniapp/index.mjs.map +1 -1
- package/dist/festivalCard/routes/index.d.mts +1 -1
- package/dist/festivalCard/routes/index.d.ts +1 -1
- package/dist/festivalCard/routes/index.js +4 -2
- package/dist/festivalCard/routes/index.js.map +1 -1
- package/dist/festivalCard/routes/index.mjs +4 -2
- package/dist/festivalCard/routes/index.mjs.map +1 -1
- package/dist/festivalCard/server/index.d.mts +1 -1
- package/dist/festivalCard/server/index.d.ts +1 -1
- package/dist/festivalCard/web/index.d.mts +3 -3
- package/dist/festivalCard/web/index.d.ts +3 -3
- package/dist/festivalCard/web/index.js +79 -139
- package/dist/festivalCard/web/index.js.map +1 -1
- package/dist/festivalCard/web/index.mjs +79 -139
- package/dist/festivalCard/web/index.mjs.map +1 -1
- package/dist/{festivalCardService-CgNBOjjO.d.mts → festivalCardService-CqBTVC6x.d.mts} +1 -1
- package/dist/{festivalCardService-ClJiAP6P.d.ts → festivalCardService-iFKu0k9q.d.ts} +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +79 -139
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +79 -139
- package/dist/index.mjs.map +1 -1
- package/dist/{types-COyg0XDw.d.mts → types-D2WetAPc.d.mts} +1 -0
- package/dist/{types-COyg0XDw.d.ts → types-D2WetAPc.d.ts} +1 -0
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -7185,7 +7185,8 @@ var DEFAULT_FESTIVAL_CARD_CONFIG = {
|
|
|
7185
7185
|
src: "https://images.unsplash.com/photo-1512389142860-9c449e58a543?auto=format&fit=crop&w=1200&q=80",
|
|
7186
7186
|
fit: "cover",
|
|
7187
7187
|
borderRadius: 16,
|
|
7188
|
-
alt: "holiday"
|
|
7188
|
+
alt: "holiday",
|
|
7189
|
+
isBackground: false
|
|
7189
7190
|
}
|
|
7190
7191
|
]
|
|
7191
7192
|
},
|
|
@@ -7244,7 +7245,8 @@ var DEFAULT_FESTIVAL_CARD_CONFIG = {
|
|
|
7244
7245
|
src: "https://images.unsplash.com/photo-1456324504439-367cee3b3c32?auto=format&fit=crop&w=1200&q=80",
|
|
7245
7246
|
fit: "cover",
|
|
7246
7247
|
borderRadius: 14,
|
|
7247
|
-
alt: "gift"
|
|
7248
|
+
alt: "gift",
|
|
7249
|
+
isBackground: false
|
|
7248
7250
|
},
|
|
7249
7251
|
{
|
|
7250
7252
|
id: "p3-text-1",
|
|
@@ -7310,9 +7312,10 @@ var useFestivalCardConfig = (options) => {
|
|
|
7310
7312
|
const [loading, setLoading] = useState(Boolean(options?.fetchConfig));
|
|
7311
7313
|
const [saving, setSaving] = useState(false);
|
|
7312
7314
|
useEffect(() => {
|
|
7313
|
-
|
|
7315
|
+
const fetchConfig = options?.fetchConfig;
|
|
7316
|
+
if (!fetchConfig) return;
|
|
7314
7317
|
let active = true;
|
|
7315
|
-
void
|
|
7318
|
+
void fetchConfig().then((value) => {
|
|
7316
7319
|
if (!active) return;
|
|
7317
7320
|
setConfig(normalizeFestivalCardConfig(value));
|
|
7318
7321
|
}).finally(() => {
|
|
@@ -7321,16 +7324,17 @@ var useFestivalCardConfig = (options) => {
|
|
|
7321
7324
|
return () => {
|
|
7322
7325
|
active = false;
|
|
7323
7326
|
};
|
|
7324
|
-
}, [options]);
|
|
7327
|
+
}, [options?.fetchConfig]);
|
|
7325
7328
|
const save = useCallback(async () => {
|
|
7326
|
-
|
|
7329
|
+
const onSave = options?.onSave;
|
|
7330
|
+
if (!onSave) return;
|
|
7327
7331
|
setSaving(true);
|
|
7328
7332
|
try {
|
|
7329
|
-
await
|
|
7333
|
+
await onSave(config);
|
|
7330
7334
|
} finally {
|
|
7331
7335
|
setSaving(false);
|
|
7332
7336
|
}
|
|
7333
|
-
}, [config, options]);
|
|
7337
|
+
}, [config, options?.onSave]);
|
|
7334
7338
|
return useMemo(
|
|
7335
7339
|
() => ({
|
|
7336
7340
|
config,
|
|
@@ -7344,6 +7348,7 @@ var useFestivalCardConfig = (options) => {
|
|
|
7344
7348
|
};
|
|
7345
7349
|
var elementStyle = (element) => ({
|
|
7346
7350
|
position: "absolute",
|
|
7351
|
+
zIndex: 2,
|
|
7347
7352
|
left: `${element.x}%`,
|
|
7348
7353
|
top: `${element.y}%`,
|
|
7349
7354
|
width: `${element.width ?? 70}%`,
|
|
@@ -7386,22 +7391,23 @@ var renderElement = (element) => {
|
|
|
7386
7391
|
);
|
|
7387
7392
|
};
|
|
7388
7393
|
var FestivalCardPageRenderer = ({ page }) => {
|
|
7394
|
+
const backgroundElement = page.elements.find(
|
|
7395
|
+
(element) => element.type === "image" && Boolean(element.isBackground)
|
|
7396
|
+
);
|
|
7397
|
+
const foregroundElements = page.elements.filter((element) => !(element.type === "image" && element.isBackground));
|
|
7389
7398
|
return /* @__PURE__ */ React42__default.createElement(
|
|
7390
7399
|
"div",
|
|
7391
7400
|
{
|
|
7401
|
+
className: "relative h-full w-full overflow-hidden rounded-2xl",
|
|
7392
7402
|
style: {
|
|
7393
|
-
position: "relative",
|
|
7394
|
-
width: "100%",
|
|
7395
|
-
height: "100%",
|
|
7396
|
-
overflow: "hidden",
|
|
7397
|
-
borderRadius: 16,
|
|
7398
7403
|
backgroundColor: page.background?.color || "#0f172a",
|
|
7399
|
-
backgroundImage: page.background?.image ? `url(${page.background.image})` : void 0,
|
|
7404
|
+
backgroundImage: backgroundElement ? `url(${backgroundElement.src})` : page.background?.image ? `url(${page.background.image})` : void 0,
|
|
7400
7405
|
backgroundSize: "cover",
|
|
7401
7406
|
backgroundPosition: "center"
|
|
7402
7407
|
}
|
|
7403
7408
|
},
|
|
7404
|
-
|
|
7409
|
+
/* @__PURE__ */ React42__default.createElement("div", { className: "absolute inset-0 bg-slate-950/20" }),
|
|
7410
|
+
foregroundElements.map(renderElement)
|
|
7405
7411
|
);
|
|
7406
7412
|
};
|
|
7407
7413
|
|
|
@@ -7415,100 +7421,31 @@ var FestivalCardBook3D = ({ config, className }) => {
|
|
|
7415
7421
|
return /* @__PURE__ */ React42__default.createElement("div", { className }, /* @__PURE__ */ React42__default.createElement(
|
|
7416
7422
|
"div",
|
|
7417
7423
|
{
|
|
7424
|
+
className: "w-full min-h-[560px] rounded-3xl p-6 shadow-2xl shadow-slate-900/50",
|
|
7418
7425
|
style: {
|
|
7419
|
-
|
|
7420
|
-
minHeight: 560,
|
|
7421
|
-
borderRadius: 24,
|
|
7422
|
-
padding: 24,
|
|
7423
|
-
background: `linear-gradient(145deg, ${normalized.background?.colorA || "#0c1a34"} 0%, ${normalized.background?.colorB || "#1f4f8a"} 100%)`,
|
|
7424
|
-
boxShadow: "0 26px 70px rgba(2, 6, 23, 0.45)"
|
|
7426
|
+
background: `linear-gradient(145deg, ${normalized.background?.colorA || "#0c1a34"} 0%, ${normalized.background?.colorB || "#1f4f8a"} 100%)`
|
|
7425
7427
|
}
|
|
7426
7428
|
},
|
|
7427
|
-
/* @__PURE__ */ React42__default.createElement(
|
|
7428
|
-
|
|
7429
|
-
{
|
|
7430
|
-
style: {
|
|
7431
|
-
marginBottom: 14,
|
|
7432
|
-
color: "#f8fafc",
|
|
7433
|
-
fontSize: 14,
|
|
7434
|
-
opacity: 0.9,
|
|
7435
|
-
textAlign: "center"
|
|
7436
|
-
}
|
|
7437
|
-
},
|
|
7438
|
-
normalized.coverTitle || "Festival Card",
|
|
7439
|
-
" \xB7 \u7B2C ",
|
|
7440
|
-
currentPage + 1,
|
|
7441
|
-
" / ",
|
|
7442
|
-
pages.length,
|
|
7443
|
-
" \u9875"
|
|
7444
|
-
),
|
|
7445
|
-
/* @__PURE__ */ React42__default.createElement("div", { style: { perspective: 1400, width: "100%", maxWidth: 920, margin: "0 auto" } }, /* @__PURE__ */ React42__default.createElement(
|
|
7429
|
+
/* @__PURE__ */ React42__default.createElement("div", { className: "mx-auto w-full max-w-5xl text-center text-slate-100" }, /* @__PURE__ */ React42__default.createElement("h3", { className: "mb-4 text-lg font-semibold" }, normalized.coverTitle || "Festival Card")),
|
|
7430
|
+
/* @__PURE__ */ React42__default.createElement("div", { className: "mx-auto w-full max-w-5xl" }, /* @__PURE__ */ React42__default.createElement("div", { className: "relative h-[460px]" }, pages.map((page, index) => /* @__PURE__ */ React42__default.createElement(
|
|
7446
7431
|
"div",
|
|
7447
7432
|
{
|
|
7433
|
+
key: page.id,
|
|
7434
|
+
className: "absolute inset-0 transition-opacity duration-500 ease-out",
|
|
7448
7435
|
style: {
|
|
7449
|
-
|
|
7450
|
-
|
|
7451
|
-
transformStyle: "preserve-3d"
|
|
7436
|
+
opacity: index === currentPage ? 1 : 0,
|
|
7437
|
+
pointerEvents: index === currentPage ? "auto" : "none"
|
|
7452
7438
|
}
|
|
7453
7439
|
},
|
|
7454
|
-
|
|
7455
|
-
|
|
7456
|
-
|
|
7457
|
-
return /* @__PURE__ */ React42__default.createElement(
|
|
7458
|
-
"div",
|
|
7459
|
-
{
|
|
7460
|
-
key: page.id,
|
|
7461
|
-
style: {
|
|
7462
|
-
position: "absolute",
|
|
7463
|
-
inset: 0,
|
|
7464
|
-
transformStyle: "preserve-3d",
|
|
7465
|
-
transformOrigin: "left center",
|
|
7466
|
-
transform: `rotateY(${isFlipped ? -170 : 0}deg)`,
|
|
7467
|
-
transition: "transform 600ms cubic-bezier(0.2, 0.8, 0.2, 1)",
|
|
7468
|
-
zIndex
|
|
7469
|
-
}
|
|
7470
|
-
},
|
|
7471
|
-
/* @__PURE__ */ React42__default.createElement(
|
|
7472
|
-
"div",
|
|
7473
|
-
{
|
|
7474
|
-
style: {
|
|
7475
|
-
position: "absolute",
|
|
7476
|
-
inset: 0,
|
|
7477
|
-
backfaceVisibility: "hidden"
|
|
7478
|
-
}
|
|
7479
|
-
},
|
|
7480
|
-
/* @__PURE__ */ React42__default.createElement(FestivalCardPageRenderer, { page })
|
|
7481
|
-
),
|
|
7482
|
-
/* @__PURE__ */ React42__default.createElement(
|
|
7483
|
-
"div",
|
|
7484
|
-
{
|
|
7485
|
-
style: {
|
|
7486
|
-
position: "absolute",
|
|
7487
|
-
inset: 0,
|
|
7488
|
-
transform: "rotateY(180deg)",
|
|
7489
|
-
backfaceVisibility: "hidden",
|
|
7490
|
-
borderRadius: 16,
|
|
7491
|
-
background: "#0f172a"
|
|
7492
|
-
}
|
|
7493
|
-
}
|
|
7494
|
-
)
|
|
7495
|
-
);
|
|
7496
|
-
})
|
|
7497
|
-
)),
|
|
7498
|
-
/* @__PURE__ */ React42__default.createElement("div", { style: { display: "flex", justifyContent: "center", gap: 12, marginTop: 18 } }, /* @__PURE__ */ React42__default.createElement(
|
|
7440
|
+
/* @__PURE__ */ React42__default.createElement(FestivalCardPageRenderer, { page })
|
|
7441
|
+
)))),
|
|
7442
|
+
/* @__PURE__ */ React42__default.createElement("div", { className: "mt-5 flex justify-center gap-3" }, /* @__PURE__ */ React42__default.createElement(
|
|
7499
7443
|
"button",
|
|
7500
7444
|
{
|
|
7501
7445
|
type: "button",
|
|
7502
7446
|
disabled: !canPrev,
|
|
7503
7447
|
onClick: () => setCurrentPage((p) => Math.max(0, p - 1)),
|
|
7504
|
-
|
|
7505
|
-
border: "none",
|
|
7506
|
-
borderRadius: 999,
|
|
7507
|
-
padding: "9px 16px",
|
|
7508
|
-
fontSize: 14,
|
|
7509
|
-
cursor: canPrev ? "pointer" : "not-allowed",
|
|
7510
|
-
opacity: canPrev ? 1 : 0.4
|
|
7511
|
-
}
|
|
7448
|
+
className: "rounded-full bg-white px-5 py-2 text-sm font-medium text-slate-900 disabled:cursor-not-allowed disabled:opacity-45"
|
|
7512
7449
|
},
|
|
7513
7450
|
"\u4E0A\u4E00\u9875"
|
|
7514
7451
|
), /* @__PURE__ */ React42__default.createElement(
|
|
@@ -7517,14 +7454,7 @@ var FestivalCardBook3D = ({ config, className }) => {
|
|
|
7517
7454
|
type: "button",
|
|
7518
7455
|
disabled: !canNext,
|
|
7519
7456
|
onClick: () => setCurrentPage((p) => Math.min(pages.length - 1, p + 1)),
|
|
7520
|
-
|
|
7521
|
-
border: "none",
|
|
7522
|
-
borderRadius: 999,
|
|
7523
|
-
padding: "9px 16px",
|
|
7524
|
-
fontSize: 14,
|
|
7525
|
-
cursor: canNext ? "pointer" : "not-allowed",
|
|
7526
|
-
opacity: canNext ? 1 : 0.4
|
|
7527
|
-
}
|
|
7457
|
+
className: "rounded-full bg-sky-300 px-5 py-2 text-sm font-medium text-slate-900 disabled:cursor-not-allowed disabled:opacity-45"
|
|
7528
7458
|
},
|
|
7529
7459
|
"\u4E0B\u4E00\u9875"
|
|
7530
7460
|
))
|
|
@@ -7535,7 +7465,7 @@ var FestivalCardBook3D = ({ config, className }) => {
|
|
|
7535
7465
|
autoPlay: normalized.backgroundMusic.autoPlay,
|
|
7536
7466
|
loop: normalized.backgroundMusic.loop,
|
|
7537
7467
|
controls: true,
|
|
7538
|
-
|
|
7468
|
+
className: "mt-3 w-full"
|
|
7539
7469
|
}
|
|
7540
7470
|
) : null);
|
|
7541
7471
|
};
|
|
@@ -7577,16 +7507,17 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
7577
7507
|
)
|
|
7578
7508
|
});
|
|
7579
7509
|
};
|
|
7580
|
-
return /* @__PURE__ */ React42__default.createElement("div", {
|
|
7510
|
+
return /* @__PURE__ */ React42__default.createElement("div", { className: "rounded-2xl border border-slate-200 bg-white p-4 text-slate-900 shadow-sm" }, /* @__PURE__ */ React42__default.createElement("div", { className: "grid gap-3" }, /* @__PURE__ */ React42__default.createElement("label", { className: "grid gap-1.5" }, /* @__PURE__ */ React42__default.createElement("span", { className: "text-sm font-medium text-slate-700" }, "\u9875\u9762\u6570\u91CF"), /* @__PURE__ */ React42__default.createElement(
|
|
7581
7511
|
"input",
|
|
7582
7512
|
{
|
|
7583
7513
|
type: "number",
|
|
7584
7514
|
min: 1,
|
|
7585
7515
|
max: 12,
|
|
7586
7516
|
value: value.pages.length,
|
|
7587
|
-
onChange: (event) => onChange(resizeFestivalCardPages(value, Number(event.target.value)))
|
|
7517
|
+
onChange: (event) => onChange(resizeFestivalCardPages(value, Number(event.target.value))),
|
|
7518
|
+
className: "rounded-lg border border-slate-300 bg-white px-3 py-2 text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
7588
7519
|
}
|
|
7589
|
-
)), /* @__PURE__ */ React42__default.createElement("label", {
|
|
7520
|
+
)), /* @__PURE__ */ React42__default.createElement("label", { className: "grid gap-1.5" }, /* @__PURE__ */ React42__default.createElement("span", { className: "text-sm font-medium text-slate-700" }, "\u80CC\u666F\u97F3\u4E50 URL"), /* @__PURE__ */ React42__default.createElement(
|
|
7590
7521
|
"input",
|
|
7591
7522
|
{
|
|
7592
7523
|
type: "url",
|
|
@@ -7597,9 +7528,18 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
7597
7528
|
...value.backgroundMusic,
|
|
7598
7529
|
src: event.target.value
|
|
7599
7530
|
}
|
|
7600
|
-
})
|
|
7531
|
+
}),
|
|
7532
|
+
className: "rounded-lg border border-slate-300 bg-white px-3 py-2 text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
7601
7533
|
}
|
|
7602
|
-
)), /* @__PURE__ */ React42__default.createElement("label", {
|
|
7534
|
+
)), /* @__PURE__ */ React42__default.createElement("label", { className: "grid gap-1.5" }, /* @__PURE__ */ React42__default.createElement("span", { className: "text-sm font-medium text-slate-700" }, "\u7F16\u8F91\u9875\u9762"), /* @__PURE__ */ React42__default.createElement(
|
|
7535
|
+
"select",
|
|
7536
|
+
{
|
|
7537
|
+
value: activePageIndex,
|
|
7538
|
+
onChange: (event) => setActivePageIndex(Number(event.target.value)),
|
|
7539
|
+
className: "rounded-lg border border-slate-300 bg-white px-3 py-2 text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
7540
|
+
},
|
|
7541
|
+
pageOptions.map((index) => /* @__PURE__ */ React42__default.createElement("option", { key: index, value: index }, "\u7B2C ", index + 1, " \u9875"))
|
|
7542
|
+
))), canEditPage ? /* @__PURE__ */ React42__default.createElement("div", { className: "mt-4" }, /* @__PURE__ */ React42__default.createElement("div", { className: "mb-3 flex gap-2" }, /* @__PURE__ */ React42__default.createElement(
|
|
7603
7543
|
"button",
|
|
7604
7544
|
{
|
|
7605
7545
|
type: "button",
|
|
@@ -7608,7 +7548,8 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
7608
7548
|
pages: value.pages.map(
|
|
7609
7549
|
(p, index) => index === activePageIndex ? { ...p, elements: [...p.elements, createTextElement(index)] } : p
|
|
7610
7550
|
)
|
|
7611
|
-
})
|
|
7551
|
+
}),
|
|
7552
|
+
className: "rounded-lg bg-slate-900 px-3 py-2 text-sm font-medium text-white"
|
|
7612
7553
|
},
|
|
7613
7554
|
"+ \u6587\u5B57"
|
|
7614
7555
|
), /* @__PURE__ */ React42__default.createElement(
|
|
@@ -7620,26 +7561,35 @@ var FestivalCardConfigEditor = ({ value, onChange }) => {
|
|
|
7620
7561
|
pages: value.pages.map(
|
|
7621
7562
|
(p, index) => index === activePageIndex ? { ...p, elements: [...p.elements, createImageElement(index)] } : p
|
|
7622
7563
|
)
|
|
7623
|
-
})
|
|
7564
|
+
}),
|
|
7565
|
+
className: "rounded-lg bg-sky-600 px-3 py-2 text-sm font-medium text-white"
|
|
7624
7566
|
},
|
|
7625
7567
|
"+ \u56FE\u7247"
|
|
7626
|
-
)), /* @__PURE__ */ React42__default.createElement("div", {
|
|
7568
|
+
)), /* @__PURE__ */ React42__default.createElement("div", { className: "grid max-h-[340px] gap-2.5 overflow-auto pr-1" }, (page?.elements ?? []).map((element) => /* @__PURE__ */ React42__default.createElement("div", { key: element.id, className: "rounded-xl border border-slate-200 bg-slate-50 p-3" }, /* @__PURE__ */ React42__default.createElement("div", { className: "mb-2 text-xs font-semibold tracking-wide text-slate-500" }, element.type.toUpperCase()), element.type === "text" ? /* @__PURE__ */ React42__default.createElement(
|
|
7627
7569
|
"textarea",
|
|
7628
7570
|
{
|
|
7629
7571
|
value: element.content,
|
|
7630
7572
|
onChange: (event) => updateElement(element.id, { content: event.target.value }),
|
|
7631
7573
|
rows: 3,
|
|
7632
|
-
|
|
7574
|
+
className: "w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
7633
7575
|
}
|
|
7634
|
-
) : /* @__PURE__ */ React42__default.createElement(
|
|
7576
|
+
) : /* @__PURE__ */ React42__default.createElement("div", { className: "grid gap-2" }, /* @__PURE__ */ React42__default.createElement(
|
|
7635
7577
|
"input",
|
|
7636
7578
|
{
|
|
7637
7579
|
type: "url",
|
|
7638
7580
|
value: element.src,
|
|
7639
7581
|
onChange: (event) => updateElement(element.id, { src: event.target.value }),
|
|
7640
|
-
|
|
7582
|
+
className: "w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
7583
|
+
}
|
|
7584
|
+
), /* @__PURE__ */ React42__default.createElement("label", { className: "inline-flex items-center gap-2 text-sm text-slate-700" }, /* @__PURE__ */ React42__default.createElement(
|
|
7585
|
+
"input",
|
|
7586
|
+
{
|
|
7587
|
+
type: "checkbox",
|
|
7588
|
+
checked: Boolean(element.isBackground),
|
|
7589
|
+
onChange: (event) => updateElement(element.id, { isBackground: event.target.checked }),
|
|
7590
|
+
className: "h-4 w-4 rounded border-slate-300 text-sky-600"
|
|
7641
7591
|
}
|
|
7642
|
-
))))) : null);
|
|
7592
|
+
), "\u4F5C\u4E3A\u672C\u9875\u80CC\u666F\u56FE")))))) : null);
|
|
7643
7593
|
};
|
|
7644
7594
|
|
|
7645
7595
|
// src/festivalCard/components/FestivalCardStudio.tsx
|
|
@@ -7650,13 +7600,13 @@ var FestivalCardStudio = ({ initialConfig, fetchConfig, onSave }) => {
|
|
|
7650
7600
|
onSave
|
|
7651
7601
|
});
|
|
7652
7602
|
if (loading) return /* @__PURE__ */ React42__default.createElement("div", null, "\u52A0\u8F7D\u4E2D...");
|
|
7653
|
-
return /* @__PURE__ */ React42__default.createElement("div", {
|
|
7603
|
+
return /* @__PURE__ */ React42__default.createElement("div", { className: "grid gap-4 lg:grid-cols-[1.45fr_1fr]" }, /* @__PURE__ */ React42__default.createElement(FestivalCardBook3D, { config, className: "h-full" }), /* @__PURE__ */ React42__default.createElement("div", null, /* @__PURE__ */ React42__default.createElement(FestivalCardConfigEditor, { value: config, onChange: setConfig }), onSave ? /* @__PURE__ */ React42__default.createElement(
|
|
7654
7604
|
"button",
|
|
7655
7605
|
{
|
|
7656
7606
|
type: "button",
|
|
7657
7607
|
onClick: () => void save(),
|
|
7658
7608
|
disabled: saving,
|
|
7659
|
-
|
|
7609
|
+
className: "mt-3 w-full rounded-lg bg-slate-900 px-4 py-2.5 text-sm font-medium text-white disabled:opacity-60"
|
|
7660
7610
|
},
|
|
7661
7611
|
saving ? "\u4FDD\u5B58\u4E2D..." : "\u4FDD\u5B58\u914D\u7F6E"
|
|
7662
7612
|
) : null));
|
|
@@ -7720,7 +7670,15 @@ var FestivalCardConfigPage = ({
|
|
|
7720
7670
|
await reloadList();
|
|
7721
7671
|
};
|
|
7722
7672
|
const mainLink = useMemo(() => `${mainPagePath}?cardId=${encodeURIComponent(selectedId)}`, [mainPagePath, selectedId]);
|
|
7723
|
-
return /* @__PURE__ */ React42__default.createElement("div", {
|
|
7673
|
+
return /* @__PURE__ */ React42__default.createElement("div", { className: "grid gap-3" }, /* @__PURE__ */ React42__default.createElement("div", { className: "flex flex-wrap items-center gap-2" }, /* @__PURE__ */ React42__default.createElement(
|
|
7674
|
+
"select",
|
|
7675
|
+
{
|
|
7676
|
+
value: selectedId,
|
|
7677
|
+
onChange: (event) => setSelectedId(event.target.value),
|
|
7678
|
+
className: "min-w-[200px] rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm text-slate-900 outline-none focus:border-sky-400 focus:ring-2 focus:ring-sky-100"
|
|
7679
|
+
},
|
|
7680
|
+
list.map((item) => /* @__PURE__ */ React42__default.createElement("option", { key: item.id, value: item.id }, item.name || item.id))
|
|
7681
|
+
), /* @__PURE__ */ React42__default.createElement("button", { type: "button", onClick: () => void createNew(), className: "rounded-lg bg-slate-900 px-3 py-2 text-sm font-medium text-white" }, "\u65B0\u5EFA\u5361\u7247"), /* @__PURE__ */ React42__default.createElement("a", { href: mainLink, className: "rounded-lg border border-sky-200 bg-sky-50 px-3 py-2 text-sm text-sky-700" }, "\u6253\u5F00\u4E3B\u9875\u9762")), /* @__PURE__ */ React42__default.createElement(FestivalCardStudio, { fetchConfig, onSave: saveConfig }));
|
|
7724
7682
|
};
|
|
7725
7683
|
var isSummary = (value) => {
|
|
7726
7684
|
if (!value || typeof value !== "object") return false;
|
|
@@ -7744,7 +7702,6 @@ var FestivalCardManagedPage = ({
|
|
|
7744
7702
|
cardId,
|
|
7745
7703
|
configPagePath = "/festivalCard/config"
|
|
7746
7704
|
}) => {
|
|
7747
|
-
const [list, setList] = useState([]);
|
|
7748
7705
|
const [currentCardId, setCurrentCardId] = useState(cardId || "");
|
|
7749
7706
|
const [config, setConfig] = useState(null);
|
|
7750
7707
|
const [loading, setLoading] = useState(true);
|
|
@@ -7753,7 +7710,6 @@ var FestivalCardManagedPage = ({
|
|
|
7753
7710
|
const response = await fetch(apiBase, { cache: "no-store" });
|
|
7754
7711
|
const data = await response.json();
|
|
7755
7712
|
const items = parseListResponse(data);
|
|
7756
|
-
setList(items);
|
|
7757
7713
|
const first = items[0];
|
|
7758
7714
|
if (!currentCardId && first) {
|
|
7759
7715
|
setCurrentCardId(first.id);
|
|
@@ -7770,23 +7726,7 @@ var FestivalCardManagedPage = ({
|
|
|
7770
7726
|
if (!currentCardId) return configPagePath;
|
|
7771
7727
|
return `${configPagePath}?cardId=${encodeURIComponent(currentCardId)}`;
|
|
7772
7728
|
}, [configPagePath, currentCardId]);
|
|
7773
|
-
return /* @__PURE__ */ React42__default.createElement("div", {
|
|
7774
|
-
"button",
|
|
7775
|
-
{
|
|
7776
|
-
key: item.id,
|
|
7777
|
-
type: "button",
|
|
7778
|
-
onClick: () => setCurrentCardId(item.id),
|
|
7779
|
-
style: {
|
|
7780
|
-
borderRadius: 8,
|
|
7781
|
-
border: "1px solid #334155",
|
|
7782
|
-
padding: "8px 10px",
|
|
7783
|
-
textAlign: "left",
|
|
7784
|
-
background: currentCardId === item.id ? "#1e293b" : "#0b1220",
|
|
7785
|
-
color: "#e2e8f0"
|
|
7786
|
-
}
|
|
7787
|
-
},
|
|
7788
|
-
item.name || item.id
|
|
7789
|
-
))), /* @__PURE__ */ React42__default.createElement("a", { href: configLink, style: { display: "inline-block", marginTop: 12, color: "#93c5fd", fontSize: 13 } }, "\u8FDB\u5165\u914D\u7F6E\u9875")), /* @__PURE__ */ React42__default.createElement("div", null, loading || !config ? /* @__PURE__ */ React42__default.createElement("div", null, "\u52A0\u8F7D\u4E2D...") : /* @__PURE__ */ React42__default.createElement(FestivalCardBook3D, { config })));
|
|
7729
|
+
return /* @__PURE__ */ React42__default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React42__default.createElement("div", { className: "flex justify-end" }, /* @__PURE__ */ React42__default.createElement("a", { href: configLink, className: "rounded-lg border border-slate-700 bg-slate-900 px-3 py-1.5 text-sm text-sky-300" }, "\u8FDB\u5165\u914D\u7F6E\u9875")), /* @__PURE__ */ React42__default.createElement("div", null, loading || !config ? /* @__PURE__ */ React42__default.createElement("div", { className: "py-12 text-center text-slate-400" }, "\u52A0\u8F7D\u4E2D...") : /* @__PURE__ */ React42__default.createElement(FestivalCardBook3D, { config })));
|
|
7790
7730
|
};
|
|
7791
7731
|
|
|
7792
7732
|
// src/festivalCard/server/db.ts
|