pxengine 0.1.116 → 0.1.118
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/README.md +132 -132
- package/config/tailwind-preset.js +159 -159
- package/dist/index.cjs +260 -132
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.mjs +260 -132
- package/dist/index.mjs.map +1 -1
- package/dist/registry.json +151 -141
- package/package.json +124 -124
package/dist/index.mjs
CHANGED
|
@@ -15797,6 +15797,10 @@ var RefreshIcon = () => /* @__PURE__ */ jsxs108("svg", { width: "14", height: "1
|
|
|
15797
15797
|
/* @__PURE__ */ jsx147("polyline", { points: "23 4 23 10 17 10" }),
|
|
15798
15798
|
/* @__PURE__ */ jsx147("path", { d: "M20.49 15a9 9 0 1 1-2.12-9.36L23 10" })
|
|
15799
15799
|
] });
|
|
15800
|
+
var EditIcon = () => /* @__PURE__ */ jsxs108("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
15801
|
+
/* @__PURE__ */ jsx147("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }),
|
|
15802
|
+
/* @__PURE__ */ jsx147("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })
|
|
15803
|
+
] });
|
|
15800
15804
|
var SlideTypeIcon = () => /* @__PURE__ */ jsxs108("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
15801
15805
|
/* @__PURE__ */ jsx147("rect", { x: "3", y: "4", width: "18", height: "14", rx: "2" }),
|
|
15802
15806
|
/* @__PURE__ */ jsx147("line", { x1: "3", y1: "10", x2: "21", y2: "10" })
|
|
@@ -15834,7 +15838,7 @@ var FORMATS = [
|
|
|
15834
15838
|
ext: ".html",
|
|
15835
15839
|
emoji: "\u{1F310}",
|
|
15836
15840
|
desc: "Interactive web presentation \u2014 download and open in browser",
|
|
15837
|
-
accent: { text: "text-
|
|
15841
|
+
accent: { text: "text-sky-400", bg: "bg-sky-500/10 border-sky-500/20" }
|
|
15838
15842
|
}
|
|
15839
15843
|
];
|
|
15840
15844
|
var ExportModal = ({ formats, title, onClose }) => {
|
|
@@ -15951,7 +15955,7 @@ var FullscreenModal = ({ url, title, slideCount, initialSlide = 1, onClose }) =>
|
|
|
15951
15955
|
return /* @__PURE__ */ jsxs108("div", { className: "fixed inset-0 z-50 bg-black flex flex-col", children: [
|
|
15952
15956
|
/* @__PURE__ */ jsxs108("div", { className: "flex items-center justify-between gap-4 px-4 h-11 bg-zinc-950/90 border-b border-zinc-800/60 flex-shrink-0", children: [
|
|
15953
15957
|
/* @__PURE__ */ jsxs108("div", { className: "flex items-center gap-3 min-w-0", children: [
|
|
15954
|
-
/* @__PURE__ */ jsx147("span", { className: "text-
|
|
15958
|
+
/* @__PURE__ */ jsx147("span", { className: "text-[#DCC99B] flex-shrink-0", children: /* @__PURE__ */ jsx147(SlidesIcon, {}) }),
|
|
15955
15959
|
/* @__PURE__ */ jsx147("span", { className: "text-sm font-medium text-zinc-300 truncate", children: title }),
|
|
15956
15960
|
slideCount > 0 && /* @__PURE__ */ jsxs108("span", { className: "text-xs text-zinc-600 flex-shrink-0", children: [
|
|
15957
15961
|
currentSlide,
|
|
@@ -15965,7 +15969,7 @@ var FullscreenModal = ({ url, title, slideCount, initialSlide = 1, onClose }) =>
|
|
|
15965
15969
|
{
|
|
15966
15970
|
onClick: () => sendSlideCommand("prevSlide"),
|
|
15967
15971
|
disabled: !iframeReady,
|
|
15968
|
-
className: "w-7 h-7 rounded-full border border-zinc-700 bg-zinc-800 hover:border-
|
|
15972
|
+
className: "w-7 h-7 rounded-full border border-zinc-700 bg-zinc-800 hover:border-[#C0AE82] hover:text-[#DCC99B] text-zinc-400 flex items-center justify-center transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
15969
15973
|
"aria-label": "Previous slide",
|
|
15970
15974
|
children: /* @__PURE__ */ jsx147(ChevronLeft2, {})
|
|
15971
15975
|
}
|
|
@@ -15975,7 +15979,7 @@ var FullscreenModal = ({ url, title, slideCount, initialSlide = 1, onClose }) =>
|
|
|
15975
15979
|
{
|
|
15976
15980
|
onClick: () => sendSlideCommand("nextSlide"),
|
|
15977
15981
|
disabled: !iframeReady,
|
|
15978
|
-
className: "w-7 h-7 rounded-full border border-zinc-700 bg-zinc-800 hover:border-
|
|
15982
|
+
className: "w-7 h-7 rounded-full border border-zinc-700 bg-zinc-800 hover:border-[#C0AE82] hover:text-[#DCC99B] text-zinc-400 flex items-center justify-center transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
15979
15983
|
"aria-label": "Next slide",
|
|
15980
15984
|
children: /* @__PURE__ */ jsx147(ChevronRight2, {})
|
|
15981
15985
|
}
|
|
@@ -16030,6 +16034,8 @@ var PresentationJobCard = ({
|
|
|
16030
16034
|
approveOutlineUrl,
|
|
16031
16035
|
reorderSlidesUrl,
|
|
16032
16036
|
approveSlideUrl,
|
|
16037
|
+
setSlideTemplateUrl,
|
|
16038
|
+
templatesUrl,
|
|
16033
16039
|
regenerateUrl,
|
|
16034
16040
|
hideApproval = false,
|
|
16035
16041
|
className,
|
|
@@ -16052,6 +16058,7 @@ var PresentationJobCard = ({
|
|
|
16052
16058
|
const [, setTemplateVersionId] = useState10(initialTemplateVersionId || "");
|
|
16053
16059
|
const [reviewStatus, setReviewStatus] = useState10(initialReviewStatus || "");
|
|
16054
16060
|
const [outline, setOutline] = useState10(initialOutline);
|
|
16061
|
+
const [slideTemplateOptions, setSlideTemplateOptions] = useState10(null);
|
|
16055
16062
|
const [showExport, setShowExport] = useState10(false);
|
|
16056
16063
|
const [showFullscreen, setShowFullscreen] = useState10(false);
|
|
16057
16064
|
const [copied, setCopied] = useState10(false);
|
|
@@ -16106,6 +16113,33 @@ var PresentationJobCard = ({
|
|
|
16106
16113
|
useEffect7(() => {
|
|
16107
16114
|
if (initialOutline) setOutline(initialOutline);
|
|
16108
16115
|
}, [initialOutlineSlideCount]);
|
|
16116
|
+
useEffect7(() => {
|
|
16117
|
+
if (reviewStatus !== "pending_outline_approval" || slideTemplateOptions !== null) return;
|
|
16118
|
+
let cancelled = false;
|
|
16119
|
+
(async () => {
|
|
16120
|
+
try {
|
|
16121
|
+
const endpoint = templatesUrl || "/api/presentations/templates";
|
|
16122
|
+
const headers = {};
|
|
16123
|
+
if (authToken) headers.Authorization = `Bearer ${authToken}`;
|
|
16124
|
+
const res = await fetch(endpoint, { headers });
|
|
16125
|
+
if (!res.ok) throw new Error(`Templates fetch failed (${res.status})`);
|
|
16126
|
+
const list = await res.json();
|
|
16127
|
+
if (!cancelled && Array.isArray(list)) {
|
|
16128
|
+
setSlideTemplateOptions(
|
|
16129
|
+
list.map((t2) => ({
|
|
16130
|
+
id: t2.template_id || t2.id || "",
|
|
16131
|
+
name: t2.name || t2.template_id || t2.id || ""
|
|
16132
|
+
}))
|
|
16133
|
+
);
|
|
16134
|
+
}
|
|
16135
|
+
} catch {
|
|
16136
|
+
if (!cancelled) setSlideTemplateOptions([]);
|
|
16137
|
+
}
|
|
16138
|
+
})();
|
|
16139
|
+
return () => {
|
|
16140
|
+
cancelled = true;
|
|
16141
|
+
};
|
|
16142
|
+
}, [reviewStatus, slideTemplateOptions, templatesUrl, authToken]);
|
|
16109
16143
|
const updateScale = useCallback4(() => {
|
|
16110
16144
|
if (previewRef.current) setPreviewScale(previewRef.current.offsetWidth / 1280);
|
|
16111
16145
|
}, []);
|
|
@@ -16365,6 +16399,41 @@ var PresentationJobCard = ({
|
|
|
16365
16399
|
setRowBusyIndex(null);
|
|
16366
16400
|
}
|
|
16367
16401
|
};
|
|
16402
|
+
const setSlideTemplate = async (index, templateId2) => {
|
|
16403
|
+
if (!outline || !Array.isArray(outline.slides) || rowBusyIndex !== null) return;
|
|
16404
|
+
const slides = outline.slides;
|
|
16405
|
+
const previousOutline = outline;
|
|
16406
|
+
const updated = slides.map((s, i) => {
|
|
16407
|
+
if (i !== index) return s;
|
|
16408
|
+
if (!templateId2) {
|
|
16409
|
+
const { template_id: _drop, ...rest } = s;
|
|
16410
|
+
return rest;
|
|
16411
|
+
}
|
|
16412
|
+
return { ...s, template_id: templateId2 };
|
|
16413
|
+
});
|
|
16414
|
+
setOutline({ ...outline, slides: updated });
|
|
16415
|
+
setRowBusyIndex(index);
|
|
16416
|
+
setRowError(null);
|
|
16417
|
+
try {
|
|
16418
|
+
const endpoint = setSlideTemplateUrl || `/api/presentations/${_job_id}/outline/set-slide-template`;
|
|
16419
|
+
const headers = { "Content-Type": "application/json" };
|
|
16420
|
+
if (authToken) headers.Authorization = `Bearer ${authToken}`;
|
|
16421
|
+
const res = await fetch(endpoint, {
|
|
16422
|
+
method: "POST",
|
|
16423
|
+
headers,
|
|
16424
|
+
body: JSON.stringify({ slide_index: index, template_id: templateId2 || null })
|
|
16425
|
+
});
|
|
16426
|
+
if (!res.ok) {
|
|
16427
|
+
const err = await res.json().catch(() => ({}));
|
|
16428
|
+
throw new Error(err.detail || err.error || `Template update failed (${res.status})`);
|
|
16429
|
+
}
|
|
16430
|
+
} catch (e) {
|
|
16431
|
+
setOutline(previousOutline);
|
|
16432
|
+
setRowError(e instanceof Error ? e.message : "Could not update slide's template");
|
|
16433
|
+
} finally {
|
|
16434
|
+
setRowBusyIndex(null);
|
|
16435
|
+
}
|
|
16436
|
+
};
|
|
16368
16437
|
const handleApproveOutline = async () => {
|
|
16369
16438
|
if (!_job_id || approvingOutline) return;
|
|
16370
16439
|
const endpoint = approveOutlineUrl || `/api/presentations/${_job_id}/approve-outline`;
|
|
@@ -16486,11 +16555,11 @@ var PresentationJobCard = ({
|
|
|
16486
16555
|
/* @__PURE__ */ jsx147(
|
|
16487
16556
|
"div",
|
|
16488
16557
|
{
|
|
16489
|
-
className: "h-[3px]
|
|
16558
|
+
className: "h-[3px]",
|
|
16490
16559
|
style: {
|
|
16560
|
+
backgroundImage: accentGradient || "linear-gradient(90deg, #8B7D5E, #C0AE82, #DCC99B, #C0AE82, #8B7D5E)",
|
|
16491
16561
|
backgroundSize: "200% 100%",
|
|
16492
|
-
animation: "gradient-shift 2s ease-in-out infinite"
|
|
16493
|
-
...accentGradient ? { backgroundImage: accentGradient } : {}
|
|
16562
|
+
animation: "gradient-shift 2s ease-in-out infinite"
|
|
16494
16563
|
}
|
|
16495
16564
|
}
|
|
16496
16565
|
),
|
|
@@ -16499,7 +16568,7 @@ var PresentationJobCard = ({
|
|
|
16499
16568
|
/* @__PURE__ */ jsx147(
|
|
16500
16569
|
"div",
|
|
16501
16570
|
{
|
|
16502
|
-
className: "w-10 h-10 rounded-xl bg-
|
|
16571
|
+
className: "w-10 h-10 rounded-xl bg-[#C0AE82]/10 border border-[#C0AE82]/25 flex items-center justify-center flex-shrink-0",
|
|
16503
16572
|
style: { ...t.accentSubtle(0.1), ...t.accentBorder },
|
|
16504
16573
|
children: /* @__PURE__ */ jsx147("span", { className: "text-lg", children: getPhaseIcon() })
|
|
16505
16574
|
}
|
|
@@ -16517,10 +16586,11 @@ var PresentationJobCard = ({
|
|
|
16517
16586
|
/* @__PURE__ */ jsx147("div", { className: "h-2 bg-zinc-800 rounded-full overflow-hidden", children: /* @__PURE__ */ jsx147(
|
|
16518
16587
|
"div",
|
|
16519
16588
|
{
|
|
16520
|
-
className: "h-full
|
|
16589
|
+
className: "h-full rounded-full transition-all duration-500 ease-out",
|
|
16521
16590
|
style: {
|
|
16522
16591
|
width: `${Math.max(pct, 2)}%`,
|
|
16523
|
-
|
|
16592
|
+
backgroundImage: accentGradient || "linear-gradient(90deg, #8B7D5E, #C0AE82, #DCC99B)",
|
|
16593
|
+
...!accentGradient ? t.accentBg : {}
|
|
16524
16594
|
}
|
|
16525
16595
|
}
|
|
16526
16596
|
) }),
|
|
@@ -16530,7 +16600,7 @@ var PresentationJobCard = ({
|
|
|
16530
16600
|
] })
|
|
16531
16601
|
] }),
|
|
16532
16602
|
/* @__PURE__ */ jsxs108("div", { className: "flex items-center gap-2", children: [
|
|
16533
|
-
/* @__PURE__ */ jsx147("div", { className: "w-2 h-2 rounded-full bg-
|
|
16603
|
+
/* @__PURE__ */ jsx147("div", { className: "w-2 h-2 rounded-full bg-[#C0AE82] animate-pulse", style: t.accentBg }),
|
|
16534
16604
|
/* @__PURE__ */ jsx147("span", { className: "text-xs text-zinc-400", children: step })
|
|
16535
16605
|
] }),
|
|
16536
16606
|
phase === "ai_generation" && slidesTotal > 0 && /* @__PURE__ */ jsxs108("div", { className: "flex items-center gap-2 pt-1", children: [
|
|
@@ -16539,7 +16609,7 @@ var PresentationJobCard = ({
|
|
|
16539
16609
|
{
|
|
16540
16610
|
className: cn(
|
|
16541
16611
|
"w-6 h-1.5 rounded-full transition-all duration-300",
|
|
16542
|
-
i < slidesCompleted ? "bg-
|
|
16612
|
+
i < slidesCompleted ? "bg-[#C0AE82]" : i === slidesCompleted ? "bg-[#C0AE82]/50 animate-pulse" : "bg-zinc-700"
|
|
16543
16613
|
)
|
|
16544
16614
|
},
|
|
16545
16615
|
i
|
|
@@ -16587,7 +16657,7 @@ var PresentationJobCard = ({
|
|
|
16587
16657
|
/* @__PURE__ */ jsx147(
|
|
16588
16658
|
"div",
|
|
16589
16659
|
{
|
|
16590
|
-
className: "w-10 h-10 rounded-xl bg-
|
|
16660
|
+
className: "w-10 h-10 rounded-xl bg-[#C0AE82]/10 border border-[#C0AE82]/25 flex items-center justify-center flex-shrink-0 text-[#DCC99B]",
|
|
16591
16661
|
style: { ...t.accentSubtle(0.1), ...t.accentBorder, ...t.accent },
|
|
16592
16662
|
children: /* @__PURE__ */ jsx147(SlidesIcon, {})
|
|
16593
16663
|
}
|
|
@@ -16617,13 +16687,27 @@ var PresentationJobCard = ({
|
|
|
16617
16687
|
]
|
|
16618
16688
|
}
|
|
16619
16689
|
),
|
|
16690
|
+
slideTemplateOptions && slideTemplateOptions.length > 0 && /* @__PURE__ */ jsxs108(
|
|
16691
|
+
"select",
|
|
16692
|
+
{
|
|
16693
|
+
value: s.template_id || "",
|
|
16694
|
+
onChange: (e) => setSlideTemplate(i, e.target.value),
|
|
16695
|
+
disabled: rowBusy,
|
|
16696
|
+
title: "Design template for this slide only (default: deck's template)",
|
|
16697
|
+
className: "w-24 flex-shrink-0 bg-zinc-800/60 border border-zinc-700 rounded-lg px-1.5 h-8 text-[10px] text-zinc-300 focus:border-[#C0AE82] outline-none disabled:opacity-60",
|
|
16698
|
+
children: [
|
|
16699
|
+
/* @__PURE__ */ jsx147("option", { value: "", children: "Deck default" }),
|
|
16700
|
+
slideTemplateOptions.map((opt) => /* @__PURE__ */ jsx147("option", { value: opt.id, children: opt.name }, opt.id))
|
|
16701
|
+
]
|
|
16702
|
+
}
|
|
16703
|
+
),
|
|
16620
16704
|
/* @__PURE__ */ jsx147(
|
|
16621
16705
|
"input",
|
|
16622
16706
|
{
|
|
16623
16707
|
value: messageEdits[i] ?? s.message ?? "",
|
|
16624
16708
|
onChange: (e) => setMessageEdits((prev) => ({ ...prev, [i]: e.target.value })),
|
|
16625
16709
|
disabled: building,
|
|
16626
|
-
className: "flex-1 min-w-0 bg-zinc-800/60 border border-zinc-700 rounded-lg px-3 h-8 text-xs text-zinc-200 focus:border-
|
|
16710
|
+
className: "flex-1 min-w-0 bg-zinc-800/60 border border-zinc-700 rounded-lg px-3 h-8 text-xs text-zinc-200 focus:border-[#C0AE82] outline-none disabled:opacity-60"
|
|
16627
16711
|
}
|
|
16628
16712
|
),
|
|
16629
16713
|
/* @__PURE__ */ jsx147(
|
|
@@ -16698,7 +16782,7 @@ var PresentationJobCard = ({
|
|
|
16698
16782
|
/* @__PURE__ */ jsx147(
|
|
16699
16783
|
"div",
|
|
16700
16784
|
{
|
|
16701
|
-
className: "w-10 h-10 rounded-xl bg-
|
|
16785
|
+
className: "w-10 h-10 rounded-xl bg-[#C0AE82]/10 border border-[#C0AE82]/25 flex items-center justify-center flex-shrink-0 text-[#DCC99B]",
|
|
16702
16786
|
style: { ...t.accentSubtle(0.1), ...t.accentBorder, ...t.accent },
|
|
16703
16787
|
children: /* @__PURE__ */ jsx147(SlidesIcon, {})
|
|
16704
16788
|
}
|
|
@@ -16713,19 +16797,63 @@ var PresentationJobCard = ({
|
|
|
16713
16797
|
generationMode === "template" && /* @__PURE__ */ jsx147("p", { className: "text-xs mt-1", children: isApproved ? /* @__PURE__ */ jsx147("span", { className: "text-emerald-400/90", children: "Approved \u2014 future decks use this format" }) : reviewStatus === "pending_review" ? /* @__PURE__ */ jsx147("span", { className: "text-amber-400/90", children: "Review this deck, then approve to lock the format" }) : null })
|
|
16714
16798
|
] }),
|
|
16715
16799
|
/* @__PURE__ */ jsxs108("div", { className: "flex items-center gap-1.5 flex-shrink-0 flex-wrap justify-end", children: [
|
|
16716
|
-
|
|
16717
|
-
|
|
16718
|
-
|
|
16719
|
-
|
|
16720
|
-
|
|
16721
|
-
|
|
16722
|
-
|
|
16723
|
-
|
|
16724
|
-
|
|
16725
|
-
|
|
16726
|
-
|
|
16727
|
-
|
|
16728
|
-
|
|
16800
|
+
/* @__PURE__ */ jsxs108("div", { className: "flex items-center rounded-lg border border-zinc-700 bg-zinc-800 overflow-hidden divide-x divide-zinc-700", children: [
|
|
16801
|
+
/* @__PURE__ */ jsxs108(
|
|
16802
|
+
"a",
|
|
16803
|
+
{
|
|
16804
|
+
href: hasHtml ? `/presentations/${_job_id}/edit` : void 0,
|
|
16805
|
+
"aria-disabled": !hasHtml,
|
|
16806
|
+
title: "Edit presentation content",
|
|
16807
|
+
className: cn(
|
|
16808
|
+
"flex items-center gap-1.5 px-2.5 h-7 text-xs font-medium text-zinc-300 hover:text-zinc-100 hover:bg-zinc-700/60 transition-colors",
|
|
16809
|
+
!hasHtml && "pointer-events-none opacity-40"
|
|
16810
|
+
),
|
|
16811
|
+
children: [
|
|
16812
|
+
/* @__PURE__ */ jsx147(EditIcon, {}),
|
|
16813
|
+
/* @__PURE__ */ jsx147("span", { children: "Edit" })
|
|
16814
|
+
]
|
|
16815
|
+
}
|
|
16816
|
+
),
|
|
16817
|
+
/* @__PURE__ */ jsxs108(
|
|
16818
|
+
"button",
|
|
16819
|
+
{
|
|
16820
|
+
onClick: () => setShowFullscreen(true),
|
|
16821
|
+
disabled: !hasHtml,
|
|
16822
|
+
title: "Open fullscreen preview",
|
|
16823
|
+
className: "flex items-center gap-1.5 px-2.5 h-7 text-xs font-medium text-zinc-300 hover:text-zinc-100 hover:bg-zinc-700/60 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
|
|
16824
|
+
children: [
|
|
16825
|
+
/* @__PURE__ */ jsx147(ExpandIcon, {}),
|
|
16826
|
+
/* @__PURE__ */ jsx147("span", { children: "Preview" })
|
|
16827
|
+
]
|
|
16828
|
+
}
|
|
16829
|
+
),
|
|
16830
|
+
canRegenerate && /* @__PURE__ */ jsxs108(
|
|
16831
|
+
"button",
|
|
16832
|
+
{
|
|
16833
|
+
onClick: handleRegenerate,
|
|
16834
|
+
disabled: regenerating || approving,
|
|
16835
|
+
title: "Try another design template with the same content",
|
|
16836
|
+
className: "flex items-center gap-1.5 px-2.5 h-7 text-xs font-medium text-zinc-300 hover:text-zinc-100 hover:bg-zinc-700/60 transition-colors disabled:opacity-40",
|
|
16837
|
+
children: [
|
|
16838
|
+
/* @__PURE__ */ jsx147(RefreshIcon, {}),
|
|
16839
|
+
/* @__PURE__ */ jsx147("span", { children: regenerating ? "Switching\u2026" : "Regenerate" })
|
|
16840
|
+
]
|
|
16841
|
+
}
|
|
16842
|
+
),
|
|
16843
|
+
/* @__PURE__ */ jsx147(
|
|
16844
|
+
"button",
|
|
16845
|
+
{
|
|
16846
|
+
onClick: handleShare,
|
|
16847
|
+
disabled: !hasHtml,
|
|
16848
|
+
title: copied ? "Copied!" : "Copy shareable link",
|
|
16849
|
+
className: cn(
|
|
16850
|
+
"flex items-center justify-center w-7 h-7 transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
16851
|
+
copied ? "text-green-400" : "text-zinc-300 hover:text-zinc-100 hover:bg-zinc-700/60"
|
|
16852
|
+
),
|
|
16853
|
+
children: copied ? /* @__PURE__ */ jsx147(CheckIcon, {}) : /* @__PURE__ */ jsx147(ShareIcon, {})
|
|
16854
|
+
}
|
|
16855
|
+
)
|
|
16856
|
+
] }),
|
|
16729
16857
|
canApprove && /* @__PURE__ */ jsxs108(
|
|
16730
16858
|
"button",
|
|
16731
16859
|
{
|
|
@@ -16740,39 +16868,16 @@ var PresentationJobCard = ({
|
|
|
16740
16868
|
}
|
|
16741
16869
|
),
|
|
16742
16870
|
isApproved && /* @__PURE__ */ jsx147("span", { className: "flex items-center justify-center w-7 h-7 rounded-lg border border-emerald-500/40 bg-emerald-500/10 text-emerald-400", title: "Format saved", children: /* @__PURE__ */ jsx147(CheckIcon, {}) }),
|
|
16743
|
-
/* @__PURE__ */ jsx147(
|
|
16744
|
-
"button",
|
|
16745
|
-
{
|
|
16746
|
-
onClick: handleShare,
|
|
16747
|
-
disabled: !hasHtml,
|
|
16748
|
-
title: copied ? "Copied!" : "Copy shareable link",
|
|
16749
|
-
className: cn(
|
|
16750
|
-
"w-7 h-7 rounded-lg border flex items-center justify-center transition-all",
|
|
16751
|
-
copied ? "border-green-500/40 bg-green-500/10 text-green-400" : "border-zinc-700 bg-zinc-800 text-zinc-400 hover:border-zinc-500 hover:text-zinc-200",
|
|
16752
|
-
"disabled:opacity-30 disabled:cursor-not-allowed"
|
|
16753
|
-
),
|
|
16754
|
-
children: copied ? /* @__PURE__ */ jsx147(CheckIcon, {}) : /* @__PURE__ */ jsx147(ShareIcon, {})
|
|
16755
|
-
}
|
|
16756
|
-
),
|
|
16757
|
-
/* @__PURE__ */ jsxs108(
|
|
16758
|
-
"button",
|
|
16759
|
-
{
|
|
16760
|
-
onClick: () => setShowFullscreen(true),
|
|
16761
|
-
disabled: !hasHtml,
|
|
16762
|
-
title: "Open fullscreen preview",
|
|
16763
|
-
className: "flex items-center gap-1.5 px-2.5 h-7 rounded-lg border border-zinc-700 bg-zinc-800 hover:border-zinc-500 text-zinc-400 hover:text-zinc-200 text-xs font-medium transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
16764
|
-
children: [
|
|
16765
|
-
/* @__PURE__ */ jsx147(ExpandIcon, {}),
|
|
16766
|
-
/* @__PURE__ */ jsx147("span", { children: "Preview" })
|
|
16767
|
-
]
|
|
16768
|
-
}
|
|
16769
|
-
),
|
|
16770
16871
|
/* @__PURE__ */ jsxs108(
|
|
16771
16872
|
"button",
|
|
16772
16873
|
{
|
|
16773
16874
|
onClick: () => setShowExport(true),
|
|
16774
|
-
className: "flex items-center gap-1.5 px-
|
|
16775
|
-
style: {
|
|
16875
|
+
className: "flex items-center gap-1.5 px-3 h-7 text-xs font-semibold rounded-lg transition-colors",
|
|
16876
|
+
style: {
|
|
16877
|
+
backgroundImage: accentGradient || "linear-gradient(90deg, #8B7D5E, #C0AE82, #DCC99B)",
|
|
16878
|
+
color: "#0A0A0A",
|
|
16879
|
+
...accentGradient ? t.accentText : {}
|
|
16880
|
+
},
|
|
16776
16881
|
children: [
|
|
16777
16882
|
/* @__PURE__ */ jsx147(DownloadIcon, {}),
|
|
16778
16883
|
/* @__PURE__ */ jsx147("span", { children: "Export" })
|
|
@@ -16827,7 +16932,7 @@ var PresentationJobCard = ({
|
|
|
16827
16932
|
sendSlideCommand("prevSlide");
|
|
16828
16933
|
},
|
|
16829
16934
|
disabled: !hasHtml || !iframeReady,
|
|
16830
|
-
className: "w-7 h-7 rounded-full border border-zinc-700 bg-zinc-800 hover:border-
|
|
16935
|
+
className: "w-7 h-7 rounded-full border border-zinc-700 bg-zinc-800 hover:border-[#C0AE82] hover:text-[#DCC99B] text-zinc-400 flex items-center justify-center transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
16831
16936
|
"aria-label": "Previous slide",
|
|
16832
16937
|
children: /* @__PURE__ */ jsx147(ChevronLeft2, {})
|
|
16833
16938
|
}
|
|
@@ -16845,7 +16950,7 @@ var PresentationJobCard = ({
|
|
|
16845
16950
|
sendSlideCommand("nextSlide");
|
|
16846
16951
|
},
|
|
16847
16952
|
disabled: !hasHtml || !iframeReady,
|
|
16848
|
-
className: "w-7 h-7 rounded-full border border-zinc-700 bg-zinc-800 hover:border-
|
|
16953
|
+
className: "w-7 h-7 rounded-full border border-zinc-700 bg-zinc-800 hover:border-[#C0AE82] hover:text-[#DCC99B] text-zinc-400 flex items-center justify-center transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
16849
16954
|
"aria-label": "Next slide",
|
|
16850
16955
|
children: /* @__PURE__ */ jsx147(ChevronRight2, {})
|
|
16851
16956
|
}
|
|
@@ -16872,10 +16977,11 @@ var PresentationJobCard = ({
|
|
|
16872
16977
|
import { useCallback as useCallback5, useEffect as useEffect8, useRef as useRef7, useState as useState11 } from "react";
|
|
16873
16978
|
import { Fragment as Fragment6, jsx as jsx148, jsxs as jsxs109 } from "react/jsx-runtime";
|
|
16874
16979
|
var DEFAULT_THEME = {
|
|
16875
|
-
primary: "#
|
|
16876
|
-
secondary: "#
|
|
16877
|
-
accent: "#
|
|
16980
|
+
primary: "#C0AE82",
|
|
16981
|
+
secondary: "#C4AD7C",
|
|
16982
|
+
accent: "#DCC99B"
|
|
16878
16983
|
};
|
|
16984
|
+
var GOLD_GRADIENT = "linear-gradient(90deg, #8B7D5E, #C0AE82, #DCC99B)";
|
|
16879
16985
|
function readableOn(bg) {
|
|
16880
16986
|
if (!bg || typeof bg !== "string") return "#ffffff";
|
|
16881
16987
|
const hex = bg.replace("#", "");
|
|
@@ -16922,6 +17028,10 @@ var RefreshIcon2 = () => /* @__PURE__ */ jsxs109("svg", { width: "14", height: "
|
|
|
16922
17028
|
/* @__PURE__ */ jsx148("polyline", { points: "23 4 23 10 17 10" }),
|
|
16923
17029
|
/* @__PURE__ */ jsx148("path", { d: "M20.49 15a9 9 0 1 1-2.12-9.36L23 10" })
|
|
16924
17030
|
] });
|
|
17031
|
+
var EditIcon2 = () => /* @__PURE__ */ jsxs109("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
17032
|
+
/* @__PURE__ */ jsx148("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }),
|
|
17033
|
+
/* @__PURE__ */ jsx148("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })
|
|
17034
|
+
] });
|
|
16925
17035
|
function formatTemplateLabel2(templateId) {
|
|
16926
17036
|
if (!templateId) return null;
|
|
16927
17037
|
return templateId.split("-").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
|
|
@@ -16943,7 +17053,7 @@ var FullscreenPreviewModal = ({ url, title, onClose }) => {
|
|
|
16943
17053
|
return /* @__PURE__ */ jsxs109("div", { className: "fixed inset-0 z-50 bg-black flex flex-col", children: [
|
|
16944
17054
|
/* @__PURE__ */ jsxs109("div", { className: "flex items-center justify-between gap-4 px-4 h-11 bg-zinc-950/90 border-b border-zinc-800/60 flex-shrink-0", children: [
|
|
16945
17055
|
/* @__PURE__ */ jsxs109("div", { className: "flex items-center gap-3 min-w-0", children: [
|
|
16946
|
-
/* @__PURE__ */ jsx148("span", { className: "text-
|
|
17056
|
+
/* @__PURE__ */ jsx148("span", { className: "text-[#DCC99B] flex-shrink-0", children: /* @__PURE__ */ jsx148(DocumentIcon, {}) }),
|
|
16947
17057
|
/* @__PURE__ */ jsx148("span", { className: "text-sm font-medium text-zinc-300 truncate", children: title })
|
|
16948
17058
|
] }),
|
|
16949
17059
|
/* @__PURE__ */ jsxs109(
|
|
@@ -17424,8 +17534,9 @@ var ResearchReportJobCard = (props) => {
|
|
|
17424
17534
|
/* @__PURE__ */ jsx148(
|
|
17425
17535
|
"div",
|
|
17426
17536
|
{
|
|
17427
|
-
className: "h-[3px]
|
|
17537
|
+
className: "h-[3px]",
|
|
17428
17538
|
style: {
|
|
17539
|
+
backgroundImage: "linear-gradient(90deg, #8B7D5E, #C0AE82, #DCC99B, #C0AE82, #8B7D5E)",
|
|
17429
17540
|
backgroundSize: "200% 100%",
|
|
17430
17541
|
animation: "gradient-shift 2s ease-in-out infinite"
|
|
17431
17542
|
}
|
|
@@ -17433,7 +17544,7 @@ var ResearchReportJobCard = (props) => {
|
|
|
17433
17544
|
),
|
|
17434
17545
|
/* @__PURE__ */ jsxs109("div", { className: "p-5", children: [
|
|
17435
17546
|
/* @__PURE__ */ jsxs109("div", { className: "flex items-start gap-3", children: [
|
|
17436
|
-
/* @__PURE__ */ jsx148("div", { className: "w-10 h-10 rounded-xl bg-
|
|
17547
|
+
/* @__PURE__ */ jsx148("div", { className: "w-10 h-10 rounded-xl bg-[#C0AE82]/10 border border-[#C0AE82]/25 flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx148("span", { className: "text-lg", children: getPhaseIcon() }) }),
|
|
17437
17548
|
/* @__PURE__ */ jsxs109("div", { className: "flex-1 min-w-0", children: [
|
|
17438
17549
|
/* @__PURE__ */ jsx148("h3", { className: "text-sm font-semibold text-zinc-100 truncate leading-tight", children: title || "Generating Research Report" }),
|
|
17439
17550
|
/* @__PURE__ */ jsxs109("p", { className: "text-xs text-zinc-500 mt-0.5", children: [
|
|
@@ -17448,8 +17559,8 @@ var ResearchReportJobCard = (props) => {
|
|
|
17448
17559
|
/* @__PURE__ */ jsx148("div", { className: "h-2 bg-zinc-800 rounded-full overflow-hidden", children: /* @__PURE__ */ jsx148(
|
|
17449
17560
|
"div",
|
|
17450
17561
|
{
|
|
17451
|
-
className: "h-full
|
|
17452
|
-
style: { width: `${Math.max(pct, 2)}
|
|
17562
|
+
className: "h-full rounded-full transition-all duration-500 ease-out",
|
|
17563
|
+
style: { width: `${Math.max(pct, 2)}%`, backgroundImage: GOLD_GRADIENT }
|
|
17453
17564
|
}
|
|
17454
17565
|
) }),
|
|
17455
17566
|
/* @__PURE__ */ jsxs109("span", { className: "absolute right-0 -top-5 text-xs text-zinc-500 font-medium tabular-nums", children: [
|
|
@@ -17458,7 +17569,7 @@ var ResearchReportJobCard = (props) => {
|
|
|
17458
17569
|
] })
|
|
17459
17570
|
] }),
|
|
17460
17571
|
/* @__PURE__ */ jsxs109("div", { className: "flex items-center gap-2", children: [
|
|
17461
|
-
/* @__PURE__ */ jsx148("div", { className: "w-2 h-2 rounded-full bg-
|
|
17572
|
+
/* @__PURE__ */ jsx148("div", { className: "w-2 h-2 rounded-full bg-[#C0AE82] animate-pulse" }),
|
|
17462
17573
|
/* @__PURE__ */ jsx148("span", { className: "text-xs text-zinc-400", children: step })
|
|
17463
17574
|
] }),
|
|
17464
17575
|
phase === "ai_generation" && searchesTotal > 0 && /* @__PURE__ */ jsxs109("div", { className: "pt-1", children: [
|
|
@@ -17475,7 +17586,7 @@ var ResearchReportJobCard = (props) => {
|
|
|
17475
17586
|
{
|
|
17476
17587
|
className: cn(
|
|
17477
17588
|
"flex-1 h-1 rounded-full transition-all duration-300",
|
|
17478
|
-
i < searchesCompleted ? "bg-
|
|
17589
|
+
i < searchesCompleted ? "bg-[#C0AE82]" : i === searchesCompleted ? "bg-[#C0AE82]/50 animate-pulse" : "bg-zinc-700"
|
|
17479
17590
|
)
|
|
17480
17591
|
},
|
|
17481
17592
|
i
|
|
@@ -17509,12 +17620,12 @@ var ResearchReportJobCard = (props) => {
|
|
|
17509
17620
|
"div",
|
|
17510
17621
|
{
|
|
17511
17622
|
className: "h-[3px]",
|
|
17512
|
-
style: {
|
|
17623
|
+
style: { backgroundImage: GOLD_GRADIENT }
|
|
17513
17624
|
}
|
|
17514
17625
|
),
|
|
17515
17626
|
/* @__PURE__ */ jsxs109("div", { className: "p-5", children: [
|
|
17516
17627
|
/* @__PURE__ */ jsxs109("div", { className: "flex items-start gap-3", children: [
|
|
17517
|
-
/* @__PURE__ */ jsx148("div", { className: "w-10 h-10 rounded-xl bg-
|
|
17628
|
+
/* @__PURE__ */ jsx148("div", { className: "w-10 h-10 rounded-xl bg-[#C0AE82]/10 border border-[#C0AE82]/25 flex items-center justify-center flex-shrink-0 text-[#DCC99B]", children: /* @__PURE__ */ jsx148(DocumentIcon, {}) }),
|
|
17518
17629
|
/* @__PURE__ */ jsxs109("div", { className: "flex-1 min-w-0", children: [
|
|
17519
17630
|
/* @__PURE__ */ jsx148("h3", { className: "text-sm font-semibold text-zinc-100 truncate leading-tight", children: title || "Report outline" }),
|
|
17520
17631
|
/* @__PURE__ */ jsxs109("p", { className: "text-xs text-amber-400/90 mt-0.5", children: [
|
|
@@ -17535,7 +17646,7 @@ var ResearchReportJobCard = (props) => {
|
|
|
17535
17646
|
value: headingEdits[i] ?? s.heading ?? "",
|
|
17536
17647
|
onChange: (e) => setHeadingEdits((prev) => ({ ...prev, [i]: e.target.value })),
|
|
17537
17648
|
disabled: building,
|
|
17538
|
-
className: "flex-1 min-w-0 bg-zinc-800/60 border border-zinc-700 rounded-lg px-3 h-8 text-xs text-zinc-200 focus:border-
|
|
17649
|
+
className: "flex-1 min-w-0 bg-zinc-800/60 border border-zinc-700 rounded-lg px-3 h-8 text-xs text-zinc-200 focus:border-[#C0AE82] outline-none disabled:opacity-60"
|
|
17539
17650
|
}
|
|
17540
17651
|
),
|
|
17541
17652
|
/* @__PURE__ */ jsx148(
|
|
@@ -17797,19 +17908,75 @@ var ResearchReportJobCard = (props) => {
|
|
|
17797
17908
|
generationMode === "template" && /* @__PURE__ */ jsx148("p", { className: "text-xs mt-1", children: isApproved ? /* @__PURE__ */ jsx148("span", { className: "text-emerald-400/90", children: "Approved \u2014 future reports use this format" }) : reviewStatus === "pending_review" ? /* @__PURE__ */ jsx148("span", { className: "text-amber-400/90", children: "Review this report, then approve to lock the layout" }) : null })
|
|
17798
17909
|
] }),
|
|
17799
17910
|
/* @__PURE__ */ jsxs109("div", { className: "flex items-center gap-1.5 flex-shrink-0 flex-wrap justify-end", children: [
|
|
17800
|
-
|
|
17801
|
-
|
|
17802
|
-
|
|
17803
|
-
|
|
17804
|
-
|
|
17805
|
-
|
|
17806
|
-
|
|
17807
|
-
|
|
17808
|
-
|
|
17809
|
-
|
|
17810
|
-
|
|
17811
|
-
|
|
17812
|
-
|
|
17911
|
+
/* @__PURE__ */ jsxs109("div", { className: "flex items-center rounded-lg border border-zinc-700 bg-zinc-800 overflow-hidden divide-x divide-zinc-700", children: [
|
|
17912
|
+
/* @__PURE__ */ jsxs109(
|
|
17913
|
+
"a",
|
|
17914
|
+
{
|
|
17915
|
+
href: htmlUrl ? `/reports/${job_id}/edit` : void 0,
|
|
17916
|
+
"aria-disabled": !htmlUrl,
|
|
17917
|
+
title: "Edit report content",
|
|
17918
|
+
className: cn(
|
|
17919
|
+
"flex items-center gap-1.5 px-2.5 h-7 text-xs font-medium text-zinc-300 hover:text-zinc-100 hover:bg-zinc-700/60 transition-colors",
|
|
17920
|
+
!htmlUrl && "pointer-events-none opacity-40"
|
|
17921
|
+
),
|
|
17922
|
+
children: [
|
|
17923
|
+
/* @__PURE__ */ jsx148(EditIcon2, {}),
|
|
17924
|
+
/* @__PURE__ */ jsx148("span", { children: "Edit" })
|
|
17925
|
+
]
|
|
17926
|
+
}
|
|
17927
|
+
),
|
|
17928
|
+
/* @__PURE__ */ jsxs109(
|
|
17929
|
+
"button",
|
|
17930
|
+
{
|
|
17931
|
+
onClick: () => setShowPreview(true),
|
|
17932
|
+
disabled: !hasHTML,
|
|
17933
|
+
title: "Preview report",
|
|
17934
|
+
className: "flex items-center gap-1.5 px-2.5 h-7 text-xs font-medium text-zinc-300 hover:text-zinc-100 hover:bg-zinc-700/60 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",
|
|
17935
|
+
children: [
|
|
17936
|
+
/* @__PURE__ */ jsx148(ExpandIcon2, {}),
|
|
17937
|
+
/* @__PURE__ */ jsx148("span", { children: "Preview" })
|
|
17938
|
+
]
|
|
17939
|
+
}
|
|
17940
|
+
),
|
|
17941
|
+
canRegenerate && /* @__PURE__ */ jsxs109(
|
|
17942
|
+
"button",
|
|
17943
|
+
{
|
|
17944
|
+
onClick: handleRegenerate,
|
|
17945
|
+
disabled: regenerating || approving,
|
|
17946
|
+
title: "Try another report template with the same data",
|
|
17947
|
+
className: "flex items-center gap-1.5 px-2.5 h-7 text-xs font-medium text-zinc-300 hover:text-zinc-100 hover:bg-zinc-700/60 transition-colors disabled:opacity-40",
|
|
17948
|
+
children: [
|
|
17949
|
+
/* @__PURE__ */ jsx148(RefreshIcon2, {}),
|
|
17950
|
+
/* @__PURE__ */ jsx148("span", { children: regenerating ? "Switching\u2026" : "Regenerate" })
|
|
17951
|
+
]
|
|
17952
|
+
}
|
|
17953
|
+
),
|
|
17954
|
+
/* @__PURE__ */ jsx148(
|
|
17955
|
+
"button",
|
|
17956
|
+
{
|
|
17957
|
+
onClick: handleShare,
|
|
17958
|
+
disabled: !canShare,
|
|
17959
|
+
title: !canShare && reviewStatus === "pending_review" ? "Approve the report to enable sharing" : copied ? "Copied!" : "Copy shareable link",
|
|
17960
|
+
className: cn(
|
|
17961
|
+
"flex items-center justify-center w-7 h-7 transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
17962
|
+
copied ? "text-green-400" : "text-zinc-300 hover:text-zinc-100 hover:bg-zinc-700/60"
|
|
17963
|
+
),
|
|
17964
|
+
children: copied ? /* @__PURE__ */ jsx148(CheckIcon2, {}) : /* @__PURE__ */ jsx148(ShareIcon2, {})
|
|
17965
|
+
}
|
|
17966
|
+
),
|
|
17967
|
+
pdfUrl && /* @__PURE__ */ jsxs109(
|
|
17968
|
+
"button",
|
|
17969
|
+
{
|
|
17970
|
+
onClick: handleDownloadPdf,
|
|
17971
|
+
title: "Download PDF",
|
|
17972
|
+
className: "flex items-center gap-1.5 px-2.5 h-7 text-xs font-medium text-zinc-300 hover:text-zinc-100 hover:bg-zinc-700/60 transition-colors",
|
|
17973
|
+
children: [
|
|
17974
|
+
/* @__PURE__ */ jsx148(DownloadIcon2, {}),
|
|
17975
|
+
/* @__PURE__ */ jsx148("span", { children: "PDF" })
|
|
17976
|
+
]
|
|
17977
|
+
}
|
|
17978
|
+
)
|
|
17979
|
+
] }),
|
|
17813
17980
|
canApprove && /* @__PURE__ */ jsxs109(
|
|
17814
17981
|
"button",
|
|
17815
17982
|
{
|
|
@@ -17824,53 +17991,14 @@ var ResearchReportJobCard = (props) => {
|
|
|
17824
17991
|
}
|
|
17825
17992
|
),
|
|
17826
17993
|
isApproved && /* @__PURE__ */ jsx148("span", { className: "flex items-center justify-center w-7 h-7 rounded-lg border border-emerald-500/40 bg-emerald-500/10 text-emerald-400", title: "Format saved", children: /* @__PURE__ */ jsx148(CheckIcon2, {}) }),
|
|
17827
|
-
/* @__PURE__ */ jsx148(
|
|
17828
|
-
"button",
|
|
17829
|
-
{
|
|
17830
|
-
onClick: handleShare,
|
|
17831
|
-
disabled: !canShare,
|
|
17832
|
-
title: !canShare && reviewStatus === "pending_review" ? "Approve the report to enable sharing" : copied ? "Copied!" : "Copy shareable link",
|
|
17833
|
-
className: cn(
|
|
17834
|
-
"w-7 h-7 rounded-lg border flex items-center justify-center transition-all",
|
|
17835
|
-
copied ? "border-green-500/40 bg-green-500/10 text-green-400" : "border-zinc-700 bg-zinc-800 text-zinc-400 hover:border-zinc-500 hover:text-zinc-200",
|
|
17836
|
-
"disabled:opacity-30 disabled:cursor-not-allowed"
|
|
17837
|
-
),
|
|
17838
|
-
children: copied ? /* @__PURE__ */ jsx148(CheckIcon2, {}) : /* @__PURE__ */ jsx148(ShareIcon2, {})
|
|
17839
|
-
}
|
|
17840
|
-
),
|
|
17841
|
-
/* @__PURE__ */ jsxs109(
|
|
17842
|
-
"button",
|
|
17843
|
-
{
|
|
17844
|
-
onClick: () => setShowPreview(true),
|
|
17845
|
-
disabled: !hasHTML,
|
|
17846
|
-
title: "Preview report",
|
|
17847
|
-
className: "flex items-center gap-1.5 px-2.5 h-7 rounded-lg border border-zinc-700 bg-zinc-800 hover:border-zinc-500 text-zinc-400 hover:text-zinc-200 text-xs font-medium transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
|
|
17848
|
-
children: [
|
|
17849
|
-
/* @__PURE__ */ jsx148(ExpandIcon2, {}),
|
|
17850
|
-
/* @__PURE__ */ jsx148("span", { children: "Preview" })
|
|
17851
|
-
]
|
|
17852
|
-
}
|
|
17853
|
-
),
|
|
17854
|
-
pdfUrl && /* @__PURE__ */ jsxs109(
|
|
17855
|
-
"button",
|
|
17856
|
-
{
|
|
17857
|
-
onClick: handleDownloadPdf,
|
|
17858
|
-
title: "Download PDF",
|
|
17859
|
-
className: "flex items-center gap-1.5 px-2.5 h-7 rounded-lg border border-zinc-700 bg-zinc-800 hover:border-zinc-500 text-zinc-400 hover:text-zinc-200 text-xs font-medium transition-colors",
|
|
17860
|
-
children: [
|
|
17861
|
-
/* @__PURE__ */ jsx148(DownloadIcon2, {}),
|
|
17862
|
-
/* @__PURE__ */ jsx148("span", { children: "PDF" })
|
|
17863
|
-
]
|
|
17864
|
-
}
|
|
17865
|
-
),
|
|
17866
17994
|
/* @__PURE__ */ jsxs109(
|
|
17867
17995
|
"button",
|
|
17868
17996
|
{
|
|
17869
17997
|
onClick: handleDownload,
|
|
17870
17998
|
disabled: !hasHTML,
|
|
17871
|
-
className: "flex items-center gap-1.5 px-
|
|
17872
|
-
style: {
|
|
17873
|
-
onMouseEnter: (e) => e.currentTarget.style.filter = "brightness(1.
|
|
17999
|
+
className: "flex items-center gap-1.5 px-3 h-7 text-xs font-semibold rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
18000
|
+
style: { backgroundImage: GOLD_GRADIENT, color: readableOn(primaryColor) },
|
|
18001
|
+
onMouseEnter: (e) => e.currentTarget.style.filter = "brightness(1.1)",
|
|
17874
18002
|
onMouseLeave: (e) => e.currentTarget.style.filter = "brightness(1)",
|
|
17875
18003
|
children: [
|
|
17876
18004
|
/* @__PURE__ */ jsx148(DownloadIcon2, {}),
|
|
@@ -18068,7 +18196,7 @@ var WebSearchJobCard = ({
|
|
|
18068
18196
|
{
|
|
18069
18197
|
className: "h-[3px]",
|
|
18070
18198
|
style: {
|
|
18071
|
-
|
|
18199
|
+
backgroundImage: "linear-gradient(90deg, #8B7D5E, #C0AE82, #DCC99B, #C0AE82, #8B7D5E)",
|
|
18072
18200
|
backgroundSize: "200% 100%",
|
|
18073
18201
|
animation: "gradient-shift 2s ease-in-out infinite"
|
|
18074
18202
|
}
|
|
@@ -18090,7 +18218,7 @@ var WebSearchJobCard = ({
|
|
|
18090
18218
|
className: "h-full rounded-full transition-all duration-500 ease-out",
|
|
18091
18219
|
style: {
|
|
18092
18220
|
width: `${Math.max(pct, 2)}%`,
|
|
18093
|
-
|
|
18221
|
+
backgroundImage: "linear-gradient(90deg, #8B7D5E, #C0AE82, #DCC99B)"
|
|
18094
18222
|
}
|
|
18095
18223
|
}
|
|
18096
18224
|
) }),
|
|
@@ -18100,7 +18228,7 @@ var WebSearchJobCard = ({
|
|
|
18100
18228
|
] })
|
|
18101
18229
|
] }),
|
|
18102
18230
|
/* @__PURE__ */ jsxs110("div", { className: "flex items-center gap-2", children: [
|
|
18103
|
-
/* @__PURE__ */ jsx149("div", { className: "w-2 h-2 rounded-full bg-
|
|
18231
|
+
/* @__PURE__ */ jsx149("div", { className: "w-2 h-2 rounded-full bg-[#C0AE82] animate-pulse flex-shrink-0" }),
|
|
18104
18232
|
/* @__PURE__ */ jsx149("span", { className: "text-xs text-zinc-400", children: step })
|
|
18105
18233
|
] }),
|
|
18106
18234
|
searchesTotal > 0 && /* @__PURE__ */ jsxs110("div", { className: "pt-1", children: [
|
|
@@ -18117,7 +18245,7 @@ var WebSearchJobCard = ({
|
|
|
18117
18245
|
{
|
|
18118
18246
|
className: cn(
|
|
18119
18247
|
"flex-1 h-1 rounded-full transition-all duration-300",
|
|
18120
|
-
i < searchesCompleted ? "bg-
|
|
18248
|
+
i < searchesCompleted ? "bg-[#C0AE82]" : phase === "ai_generation" && i === searchesCompleted ? "bg-[#C0AE82]/50 animate-pulse" : "bg-zinc-700"
|
|
18121
18249
|
)
|
|
18122
18250
|
},
|
|
18123
18251
|
i
|
|
@@ -21357,7 +21485,7 @@ function PlatformMetricsBanner({
|
|
|
21357
21485
|
return /* @__PURE__ */ jsxs132(
|
|
21358
21486
|
"div",
|
|
21359
21487
|
{
|
|
21360
|
-
className: "\
|
|
21488
|
+
className: "\n grid grid-cols-1 gap-3 rounded-xl py-4 px-4 shadow-sm\n md:flex md:overflow-x-auto md:gap-6 md:rounded-l-xl md:py-4 md:px-4 md:items-center md:gap-0 md:px-0 md:ml-8\n ",
|
|
21361
21489
|
style: { backgroundColor: bgColor },
|
|
21362
21490
|
children: [
|
|
21363
21491
|
/* @__PURE__ */ jsxs132("div", { className: "flex flex-col items-center md:min-w-0", children: [
|