pxengine 0.1.24 → 0.1.27

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.cjs CHANGED
@@ -34049,11 +34049,10 @@ var EditableField = import_react54.default.memo(
34049
34049
  "h4",
34050
34050
  {
34051
34051
  className: "px-2 py-1 tracking-widest bg-background bg-purple200 text-purpleText dark:text-purple-400 text-[10px] font-bold rounded uppercase",
34052
- style: { fontFamily: "Noto Sans, sans-serif" },
34053
34052
  children: label
34054
34053
  }
34055
34054
  ),
34056
- !isEditingProp && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("span", { className: "inline-flex items-center gap-1 text-[10px] font-medium text-green-600 dark:text-green-500", children: [
34055
+ !isEditingProp && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("span", { className: "inline-flex items-center gap-1 text-[10px] font-medium text-green-500 dark:text-green-500", children: [
34057
34056
  "Suggested by an Agent",
34058
34057
  /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34059
34058
  Pencil,
@@ -34231,7 +34230,7 @@ var FormCard = import_react56.default.memo(
34231
34230
  "div",
34232
34231
  {
34233
34232
  className: cn(
34234
- "relative w-full rounded-[20px] bg-background dark:bg-gray100 border border-gray400 shadow-lg overflow-hidden mb-6",
34233
+ "relative w-full rounded-[20px] bg-background dark:bg-gray100 border border-gray400 shadow-lg overflow-hidden mb-6 font-noto",
34235
34234
  className
34236
34235
  ),
34237
34236
  onMouseEnter: () => setShowCopyButton(true),
@@ -34251,7 +34250,6 @@ var FormCard = import_react56.default.memo(
34251
34250
  "h3",
34252
34251
  {
34253
34252
  className: "text-gray900 mb-12",
34254
- style: { fontFamily: "Noto Sans, sans-serif" },
34255
34253
  children: title
34256
34254
  }
34257
34255
  ),
@@ -35378,14 +35376,24 @@ var CampaignSeedCard = import_react60.default.memo(
35378
35376
  ({
35379
35377
  selectionStatus,
35380
35378
  isLatestMessage = true,
35379
+ hasUserResponded = false,
35381
35380
  className,
35382
35381
  fields: providedFields,
35383
35382
  data,
35383
+ onAction,
35384
35384
  ...formCardProps
35385
35385
  }) => {
35386
35386
  const fields = (0, import_react60.useMemo)(() => {
35387
35387
  return providedFields || buildCampaignSeedFields(data);
35388
35388
  }, [providedFields, data]);
35389
+ const handleProceed = () => {
35390
+ onAction?.({
35391
+ type: "brief_confirmation",
35392
+ value: "Continue to concepts",
35393
+ data
35394
+ });
35395
+ };
35396
+ const effectiveIsLatest = isLatestMessage && !hasUserResponded;
35389
35397
  return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
35390
35398
  FormCard,
35391
35399
  {
@@ -35393,9 +35401,12 @@ var CampaignSeedCard = import_react60.default.memo(
35393
35401
  data,
35394
35402
  title: formCardProps.title || "Campaign Brief",
35395
35403
  fields,
35404
+ proceedLabel: "Continue to concepts",
35405
+ onProceed: handleProceed,
35396
35406
  showTimeline: true,
35407
+ isLatestMessage: effectiveIsLatest,
35397
35408
  className: cn("font-noto", className),
35398
- footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-[10px] font-semibold py-4 pr-6", children: [
35409
+ footer: !effectiveIsLatest && (selectionStatus || hasUserResponded) ? /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-[10px] font-semibold py-4 pr-6", children: [
35399
35410
  /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(CircleCheck, { className: "h-3.5 w-3.5" }),
35400
35411
  /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { children: selectionStatus === "agent" ? "Suggested by Agent" : "Selected by you" })
35401
35412
  ] }) : formCardProps.footer
@@ -35470,16 +35481,26 @@ var SearchSpecCard = import_react61.default.memo(
35470
35481
  ({
35471
35482
  selectionStatus,
35472
35483
  isLatestMessage = true,
35484
+ hasUserResponded = false,
35473
35485
  className,
35474
35486
  fields: providedFields,
35475
35487
  data,
35476
35488
  specData,
35489
+ onAction,
35477
35490
  ...formCardProps
35478
35491
  }) => {
35479
35492
  const resolvedData = data || specData;
35480
35493
  const fields = (0, import_react61.useMemo)(() => {
35481
35494
  return providedFields || buildSearchSpecFields(resolvedData ?? {});
35482
35495
  }, [providedFields, resolvedData]);
35496
+ const handleProceed = () => {
35497
+ onAction?.({
35498
+ type: "search_spec_confirmation",
35499
+ value: "Continue with search",
35500
+ data: resolvedData
35501
+ });
35502
+ };
35503
+ const effectiveIsLatest = isLatestMessage && !hasUserResponded;
35483
35504
  return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35484
35505
  FormCard,
35485
35506
  {
@@ -35487,8 +35508,11 @@ var SearchSpecCard = import_react61.default.memo(
35487
35508
  data: resolvedData ?? {},
35488
35509
  title: formCardProps.title || "Search Specification",
35489
35510
  fields,
35511
+ proceedLabel: "Continue with search",
35512
+ onProceed: handleProceed,
35513
+ isLatestMessage: effectiveIsLatest,
35490
35514
  className,
35491
- footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1", children: [
35515
+ footer: !effectiveIsLatest && (selectionStatus || hasUserResponded) ? /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1", children: [
35492
35516
  /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(CircleCheck, { className: "h-4 w-4" }),
35493
35517
  /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
35494
35518
  ] }) : formCardProps.footer
@@ -35512,11 +35536,15 @@ var MCQCard = import_react62.default.memo(
35512
35536
  isLatestMessage = true,
35513
35537
  isLoading = false,
35514
35538
  className,
35515
- selectionStatus,
35539
+ // selectionStatus,
35516
35540
  onAction,
35517
- disabled = false
35541
+ disabled = false,
35542
+ disableContinueInDiscovery
35543
+ // optional prop
35518
35544
  }) => {
35519
- const [selectedOption, setSelectedOption] = import_react62.default.useState(propsSelectedOption);
35545
+ const [selectedOption, setSelectedOption] = import_react62.default.useState(
35546
+ propsSelectedOption
35547
+ );
35520
35548
  const [isProceeded, setIsProceeded] = import_react62.default.useState(false);
35521
35549
  import_react62.default.useEffect(() => {
35522
35550
  if (propsSelectedOption) {
@@ -35524,6 +35552,7 @@ var MCQCard = import_react62.default.memo(
35524
35552
  setIsProceeded(true);
35525
35553
  }
35526
35554
  }, [propsSelectedOption]);
35555
+ const isDiscovery = disableContinueInDiscovery !== void 0 ? disableContinueInDiscovery : typeof window !== "undefined" && window.location.pathname.includes("creator-discovery");
35527
35556
  const handleOptionClick = (key, e) => {
35528
35557
  e.preventDefault();
35529
35558
  e.stopPropagation();
@@ -35542,11 +35571,13 @@ var MCQCard = import_react62.default.memo(
35542
35571
  onAction?.({
35543
35572
  type: "mcq_selection",
35544
35573
  value: result,
35545
- label: options[result] || result
35574
+ label: options && options[result] || result
35546
35575
  });
35547
35576
  }
35548
35577
  };
35549
- const isInteractionDisabled = disabled || !isLatestMessage || isProceeded;
35578
+ const isOptionsDisabled = disabled || !isLatestMessage || isProceeded && !disableContinueInDiscovery;
35579
+ const isContinueDisabled = disabled || !isLatestMessage || isProceeded || isDiscovery;
35580
+ const optionsEntries = options ? Object.entries(options) : [];
35550
35581
  return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
35551
35582
  "div",
35552
35583
  {
@@ -35556,7 +35587,7 @@ var MCQCard = import_react62.default.memo(
35556
35587
  ),
35557
35588
  children: [
35558
35589
  /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("h4", { className: "font-medium text-foreground px-3 py-1 rounded-md inline-block mb-2", children: question }) }),
35559
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "mb-6", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "space-y-4", children: Object.entries(options).map(([key, label]) => {
35590
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "mb-6", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "space-y-4", children: optionsEntries.map(([key, label]) => {
35560
35591
  const isSelected = selectedOption === key;
35561
35592
  const isRecommended = key === recommended;
35562
35593
  return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
@@ -35566,8 +35597,8 @@ var MCQCard = import_react62.default.memo(
35566
35597
  className: cn(
35567
35598
  "cursor-pointer rounded-xl p-3 transition-colors relative",
35568
35599
  "border border-transparent bg-paperBackground",
35569
- !selectedOption && !isInteractionDisabled && "hover:border-gray500",
35570
- (isLoading || isInteractionDisabled) && "opacity-50 cursor-not-allowed"
35600
+ !selectedOption && !isOptionsDisabled && "hover:border-gray500",
35601
+ (isLoading || isOptionsDisabled) && "opacity-50 cursor-not-allowed"
35571
35602
  ),
35572
35603
  children: [
35573
35604
  /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "absolute top-1/2 left-4 transform -translate-y-1/2", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
@@ -35577,7 +35608,7 @@ var MCQCard = import_react62.default.memo(
35577
35608
  "w-5 h-5 rounded-full border flex items-center justify-center transition-colors",
35578
35609
  isSelected ? "border-purple100 bg-gray300" : cn(
35579
35610
  "border-gray300 bg-background",
35580
- !selectedOption && !isInteractionDisabled && "hover:border-purple100"
35611
+ !selectedOption && !isOptionsDisabled && "hover:border-purple100"
35581
35612
  )
35582
35613
  ),
35583
35614
  children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "w-2.5 h-2.5 rounded-full bg-purple100" })
@@ -35609,8 +35640,8 @@ var MCQCard = import_react62.default.memo(
35609
35640
  /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35610
35641
  "button",
35611
35642
  {
35612
- onClick: (e) => handleProceed(e),
35613
- disabled: isInteractionDisabled || isLoading || !selectedOption && !recommended,
35643
+ onClick: handleProceed,
35644
+ disabled: isContinueDisabled || isLoading || !selectedOption && !recommended,
35614
35645
  className: cn(
35615
35646
  "flex-3 px-4 py-2 border rounded-full text-sm disabled:opacity-50 disabled:cursor-not-allowed transition-colors",
35616
35647
  "bg-purpleLight dark:bg-purple200 hover:bg-purpleText1 dark:hover:bg-purple100 text-purpleText2 dark:text-purpleText border-purpleText1 dark:border-purple-border dark:hover:text-white"
@@ -35618,10 +35649,7 @@ var MCQCard = import_react62.default.memo(
35618
35649
  children: isLoading ? "Sending..." : "Continue"
35619
35650
  }
35620
35651
  ),
35621
- isLatestMessage ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex-1" }) : /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex-1 text-right text-xs bg-green100 text-green-600 dark:text-green500", children: selectionStatus === "agent" ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "flex flex-col gap-1 sm:flex-row sm:justify-end", children: [
35622
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "whitespace-nowrap", children: "Suggested by an Agent," }),
35623
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "whitespace-nowrap", children: "Approved by You" })
35624
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { children: "Selected by you" }) })
35652
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex-1" })
35625
35653
  ] })
35626
35654
  ]
35627
35655
  }
@@ -36204,10 +36232,12 @@ var CampaignConceptCard = import_react64.default.memo(
36204
36232
  onToggle,
36205
36233
  data,
36206
36234
  fields: providedFields,
36207
- title,
36235
+ title: propsTitle,
36208
36236
  selectionStatus,
36209
36237
  isLatestMessage = true,
36238
+ hasUserResponded = false,
36210
36239
  className,
36240
+ onAction,
36211
36241
  ...formCardProps
36212
36242
  }) => {
36213
36243
  const [internalIsOpen, setInternalIsOpen] = (0, import_react64.useState)(false);
@@ -36219,38 +36249,102 @@ var CampaignConceptCard = import_react64.default.memo(
36219
36249
  setInternalIsOpen(!internalIsOpen);
36220
36250
  }
36221
36251
  };
36252
+ const cardTitle = propsTitle || data.title || data.name || data.concept_name || data.conceptName || "Campaign Concept";
36253
+ const handleProceed = () => {
36254
+ onAction?.({
36255
+ type: "concept_selection",
36256
+ value: typeof cardTitle === "string" ? cardTitle : JSON.stringify(cardTitle),
36257
+ data
36258
+ });
36259
+ };
36260
+ const effectiveIsLatest = isLatestMessage && !hasUserResponded;
36222
36261
  const fields = (0, import_react64.useMemo)(() => {
36223
36262
  const baseFields = providedFields || generateFieldsFromData(data);
36224
36263
  return baseFields.map((field) => {
36225
- if (field.key === "budgetAllocation") {
36264
+ if (field.key === "budgetAllocation" || field.key === "budget_allocation") {
36226
36265
  return {
36227
36266
  ...field,
36267
+ label: "Budget Allocation",
36228
36268
  renderDisplay: (val) => {
36229
- if (!Array.isArray(val)) return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { children: val });
36230
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "space-y-2", children: val.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "flex items-center gap-2 text-xs font-medium", children: [
36231
- /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("span", { children: [
36232
- idx + 1,
36233
- "."
36234
- ] }),
36235
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "bg-background bg-gray400 border border-white/10 px-2 py-0.5 rounded text-gray-300", children: item.label }),
36236
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-gray-400", children: "=" }),
36237
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "bg-background bg-gray400 border border-white/10 px-2 py-0.5 rounded text-gray-300", children: item.value })
36238
- ] }, idx)) });
36269
+ if (val && typeof val === "object" && !Array.isArray(val)) {
36270
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "flex flex-wrap gap-2 pt-1", children: Object.entries(val).map(([k, v]) => /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
36271
+ "div",
36272
+ {
36273
+ className: "flex items-center gap-1.5 bg-background bg-gray400 border border-white/10 px-2 py-1 rounded shadow-sm",
36274
+ children: [
36275
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("span", { className: "text-[10px] text-gray-400 font-bold uppercase tracking-tight", children: [
36276
+ k.replace(/_/g, " "),
36277
+ ":"
36278
+ ] }),
36279
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-xs text-white font-medium", children: String(v) })
36280
+ ]
36281
+ },
36282
+ k
36283
+ )) });
36284
+ }
36285
+ if (Array.isArray(val)) {
36286
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "flex flex-wrap gap-2 pt-1", children: val.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
36287
+ "div",
36288
+ {
36289
+ className: "flex items-center gap-1.5 bg-background bg-gray400 border border-white/10 px-2 py-1 rounded shadow-sm",
36290
+ children: [
36291
+ item.label && /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("span", { className: "text-[10px] text-gray-400 font-bold uppercase tracking-tight", children: [
36292
+ item.label,
36293
+ ":"
36294
+ ] }),
36295
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-xs text-white font-medium", children: String(item.value || item) })
36296
+ ]
36297
+ },
36298
+ idx
36299
+ )) });
36300
+ }
36301
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-gray-300 text-sm", children: val ? String(val) : "-" });
36239
36302
  }
36240
36303
  };
36241
36304
  }
36242
- if (field.key === "estimatedCreators") {
36305
+ if (field.key === "estimatedCreators" || field.key === "estimated_creators") {
36243
36306
  return {
36244
36307
  ...field,
36308
+ label: "Estimated Creators",
36245
36309
  renderDisplay: (val) => {
36246
- if (!Array.isArray(val)) return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-white font-medium", children: val });
36247
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "flex gap-2", children: val.map((v, idx) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "bg-background bg-gray400 border border-white/10 px-2 py-0.5 rounded text-white text-xs font-medium", children: v }, idx)) });
36310
+ if (Array.isArray(val)) {
36311
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "flex gap-2 pt-1", children: val.map((v, idx) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36312
+ "div",
36313
+ {
36314
+ className: "bg-background bg-purple200 border border-purple100/20 px-2 py-0.5 rounded text-white text-xs font-medium",
36315
+ children: String(v)
36316
+ },
36317
+ idx
36318
+ )) });
36319
+ }
36320
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-white font-medium", children: val ? String(val) : "-" });
36321
+ }
36322
+ };
36323
+ }
36324
+ if (field.key === "platforms") {
36325
+ return {
36326
+ ...field,
36327
+ renderDisplay: (val) => {
36328
+ const platforms = Array.isArray(val) ? val : typeof val === "string" ? val.split(/,\s*/) : [val];
36329
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "flex flex-wrap gap-1.5 pt-1", children: platforms.map((p) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36330
+ "div",
36331
+ {
36332
+ className: "px-2 py-0.5 rounded-full bg-blue-500/10 border border-blue-500/20 text-blue-400 text-[10px] font-bold uppercase",
36333
+ children: String(p)
36334
+ },
36335
+ String(p)
36336
+ )) });
36248
36337
  }
36249
36338
  };
36250
36339
  }
36251
36340
  return {
36252
36341
  ...field,
36253
- renderDisplay: (val) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-gray-300 text-sm", children: val })
36342
+ renderDisplay: (val) => {
36343
+ if (typeof val === "object" && val !== null) {
36344
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "text-gray-300 text-xs font-mono bg-black/20 p-2 rounded border border-white/5 mt-1 overflow-auto max-h-24", children: JSON.stringify(val, null, 2) });
36345
+ }
36346
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-gray-300 text-sm", children: String(val) });
36347
+ }
36254
36348
  };
36255
36349
  });
36256
36350
  }, [providedFields, data]);
@@ -36270,13 +36364,22 @@ var CampaignConceptCard = import_react64.default.memo(
36270
36364
  onClick: handleToggle,
36271
36365
  children: [
36272
36366
  /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "flex flex-col gap-2", children: [
36273
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("h3", { className: "text-lg font-semibold text-white tracking-wide", children: title || data.title }),
36274
- isRecommended && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "inline-flex text-[10px] font-bold uppercase tracking-widest text-[#22C55E]", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "bg-[#22C55E]/10 px-2 py-0.5 rounded border border-[#22C55E]/20", children: "Recommended" }) })
36367
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("h3", { className: "text-lg font-semibold text-white tracking-wide", children: typeof cardTitle === "object" ? JSON.stringify(cardTitle) : String(cardTitle) }),
36368
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "flex flex-wrap gap-2", children: [
36369
+ isRecommended && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "inline-flex text-[10px] font-bold uppercase tracking-widest text-[#22C55E]", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "bg-[#22C55E]/10 px-2 py-0.5 rounded border border-[#22C55E]/20", children: "Recommended" }) }),
36370
+ hasUserResponded && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "inline-flex text-[10px] font-bold uppercase tracking-widest text-[#3B82F6]", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "bg-[#3B82F6]/10 px-2 py-0.5 rounded border border-[#3B82F6]/20", children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by You" }) })
36371
+ ] })
36275
36372
  ] }),
36276
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: cn(
36277
- "p-2 rounded-lg bg-white/5 border border-white/10 text-gray-400 transition-transform duration-300",
36278
- isOpen && "rotate-180"
36279
- ), children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(ChevronDown, { className: "h-4 w-4" }) })
36373
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36374
+ "div",
36375
+ {
36376
+ className: cn(
36377
+ "p-2 rounded-lg bg-white/5 border border-white/10 text-gray-400 transition-transform duration-300",
36378
+ isOpen && "rotate-180"
36379
+ ),
36380
+ children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(ChevronDown, { className: "h-4 w-4" })
36381
+ }
36382
+ )
36280
36383
  ]
36281
36384
  }
36282
36385
  ),
@@ -36292,12 +36395,15 @@ var CampaignConceptCard = import_react64.default.memo(
36292
36395
  FormCard,
36293
36396
  {
36294
36397
  ...formCardProps,
36295
- title: title || data.title || "Campaign Concept",
36398
+ title: typeof cardTitle === "object" ? JSON.stringify(cardTitle) : String(cardTitle),
36296
36399
  data,
36297
36400
  fields,
36298
36401
  showTimeline: true,
36402
+ proceedLabel: "Continue with this concept",
36403
+ onProceed: handleProceed,
36404
+ isLatestMessage: effectiveIsLatest,
36299
36405
  className: "bg-transparent border-none shadow-none mb-0 p-0",
36300
- footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-[10px] font-semibold py-4 pr-6", children: [
36406
+ footer: !effectiveIsLatest && (selectionStatus || hasUserResponded) ? /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-[10px] font-semibold py-4 pr-6", children: [
36301
36407
  /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(CircleCheck, { className: "h-3.5 w-3.5" }),
36302
36408
  /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by You" })
36303
36409
  ] }) : formCardProps.footer