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/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-indigo-400", bg: "bg-indigo-500/10 border-indigo-500/20" }
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-indigo-400 flex-shrink-0", children: /* @__PURE__ */ jsx147(SlidesIcon, {}) }),
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-indigo-500 hover:text-indigo-400 text-zinc-400 flex items-center justify-center transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
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-indigo-500 hover:text-indigo-400 text-zinc-400 flex items-center justify-center transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
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] bg-gradient-to-r from-indigo-500 via-purple-500 to-indigo-500 bg-[length:200%_100%] animate-[gradient-shift_2s_ease-in-out_infinite]",
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-indigo-500/10 border border-indigo-500/20 flex items-center justify-center flex-shrink-0",
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 bg-gradient-to-r from-indigo-500 to-purple-500 rounded-full transition-all duration-500 ease-out",
16589
+ className: "h-full rounded-full transition-all duration-500 ease-out",
16521
16590
  style: {
16522
16591
  width: `${Math.max(pct, 2)}%`,
16523
- ...accentGradient ? { backgroundImage: accentGradient } : t.accentBg
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-indigo-500 animate-pulse", style: t.accentBg }),
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-indigo-500" : i === slidesCompleted ? "bg-indigo-500/50 animate-pulse" : "bg-zinc-700"
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-indigo-500/10 border border-indigo-500/20 flex items-center justify-center flex-shrink-0 text-indigo-400",
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-indigo-500 outline-none disabled:opacity-60"
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-indigo-500/10 border border-indigo-500/20 flex items-center justify-center flex-shrink-0 text-indigo-400",
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
- canRegenerate && /* @__PURE__ */ jsxs108(
16717
- "button",
16718
- {
16719
- onClick: handleRegenerate,
16720
- disabled: regenerating || approving,
16721
- title: "Try another design template with the same content",
16722
- 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-300 text-xs font-medium transition-colors disabled:opacity-50",
16723
- children: [
16724
- /* @__PURE__ */ jsx147(RefreshIcon, {}),
16725
- /* @__PURE__ */ jsx147("span", { children: regenerating ? "Switching..." : "Regenerate" })
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-2.5 h-7 bg-indigo-600 hover:bg-indigo-500 active:bg-indigo-700 text-white text-xs font-medium rounded-lg transition-colors",
16775
- style: { ...t.accentBg, ...t.accentText },
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-indigo-500 hover:text-indigo-400 text-zinc-400 flex items-center justify-center transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
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-indigo-500 hover:text-indigo-400 text-zinc-400 flex items-center justify-center transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
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: "#8b5cf6",
16876
- secondary: "#a78bfa",
16877
- accent: "#c4b5fd"
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-violet-400 flex-shrink-0", children: /* @__PURE__ */ jsx148(DocumentIcon, {}) }),
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] bg-gradient-to-r from-violet-500 via-purple-500 to-violet-500",
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-violet-500/10 border border-violet-500/20 flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx148("span", { className: "text-lg", children: getPhaseIcon() }) }),
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 bg-gradient-to-r from-violet-500 to-purple-500 rounded-full transition-all duration-500 ease-out",
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-violet-500 animate-pulse" }),
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-violet-500" : i === searchesCompleted ? "bg-violet-500/50 animate-pulse" : "bg-zinc-700"
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: { background: "linear-gradient(90deg, #8B7D5E, #C0AE82, #DCC99B)" }
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-violet-500/10 border border-violet-500/20 flex items-center justify-center flex-shrink-0 text-violet-300", children: /* @__PURE__ */ jsx148(DocumentIcon, {}) }),
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-violet-500 outline-none disabled:opacity-60"
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
- canRegenerate && /* @__PURE__ */ jsxs109(
17801
- "button",
17802
- {
17803
- onClick: handleRegenerate,
17804
- disabled: regenerating || approving,
17805
- title: "Try another report template with the same data",
17806
- 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-300 text-xs font-medium transition-colors disabled:opacity-50",
17807
- children: [
17808
- /* @__PURE__ */ jsx148(RefreshIcon2, {}),
17809
- /* @__PURE__ */ jsx148("span", { children: regenerating ? "Switching..." : "Regenerate" })
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-2.5 h-7 text-xs font-medium rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
17872
- style: { backgroundColor: primaryColor, color: readableOn(primaryColor) },
17873
- onMouseEnter: (e) => e.currentTarget.style.filter = "brightness(1.15)",
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
- background: "linear-gradient(90deg, #d97706, #f59e0b, #d97706)",
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
- background: "linear-gradient(90deg, #d97706, #f59e0b)"
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-amber-500 animate-pulse flex-shrink-0" }),
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-amber-500" : phase === "ai_generation" && i === searchesCompleted ? "bg-amber-500/50 animate-pulse" : "bg-zinc-700"
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: "\r\n grid grid-cols-1 gap-3 rounded-xl py-4 px-4 shadow-sm\r\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\r\n ",
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: [