pxengine 0.1.13 → 0.1.15

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
@@ -70,7 +70,6 @@ __export(index_exports, {
70
70
  BreadcrumbSeparator: () => BreadcrumbSeparator,
71
71
  Button: () => Button,
72
72
  ButtonAtom: () => ButtonAtom,
73
- CAMPAIGN_SEED_FIELDS: () => CAMPAIGN_SEED_FIELDS,
74
73
  Calendar: () => Calendar2,
75
74
  CalendarAtom: () => CalendarAtom,
76
75
  CampaignSeedCard: () => CampaignSeedCard,
@@ -224,7 +223,6 @@ __export(index_exports, {
224
223
  ResizableAtom: () => ResizableAtom,
225
224
  ResizablePanel: () => ResizablePanel,
226
225
  ResizablePanelGroup: () => ResizablePanelGroup,
227
- SEARCH_SPEC_FIELDS: () => SEARCH_SPEC_FIELDS,
228
226
  ScrollArea: () => ScrollArea,
229
227
  ScrollAreaAtom: () => ScrollAreaAtom,
230
228
  ScrollBar: () => ScrollBar,
@@ -31846,7 +31844,7 @@ var ButtonAtom = ({
31846
31844
  }
31847
31845
  };
31848
31846
  const variantMap = {
31849
- purple: "bg-primary text-primary-foreground hover:bg-primary/90 shadow-[0_4px_14px_0_hsl(var(--primary)/30%)] transition-all active:scale-95 font-bold",
31847
+ purple: "bg-[var(--primary-color)] text-[var(--primary-foreground,white)] hover:opacity-90 shadow-[0_4px_14px_0_hsl(var(--primary)/30%)] transition-all active:scale-95 font-bold",
31850
31848
  gradient: "bg-gradient-to-r from-primary via-purple-500 to-indigo-600 text-primary-foreground hover:opacity-95 shadow-[0_4px_14px_0_hsl(var(--primary)/40%)] active:scale-95 font-bold"
31851
31849
  };
31852
31850
  const customClass = variantMap[variant] || "";
@@ -31880,8 +31878,8 @@ var LayoutAtom = ({
31880
31878
  }) => {
31881
31879
  const gapMap = {
31882
31880
  none: "gap-0",
31883
- sm: "gap-2",
31884
- md: "gap-4",
31881
+ sm: "gap-4",
31882
+ md: "gap-6",
31885
31883
  lg: "gap-8",
31886
31884
  xl: "gap-12"
31887
31885
  };
@@ -33673,7 +33671,6 @@ __export(molecules_exports, {
33673
33671
  AudienceDemographicsCard: () => AudienceDemographicsCard,
33674
33672
  AudienceMetricCard: () => AudienceMetricCard,
33675
33673
  BrandAffinityGroup: () => BrandAffinityGroup,
33676
- CAMPAIGN_SEED_FIELDS: () => CAMPAIGN_SEED_FIELDS,
33677
33674
  CampaignSeedCard: () => CampaignSeedCard,
33678
33675
  ContentPreviewGallery: () => ContentPreviewGallery,
33679
33676
  CountrySelectDisplay: () => CountrySelectDisplay,
@@ -33694,7 +33691,6 @@ __export(molecules_exports, {
33694
33691
  MCQCard: () => MCQCard,
33695
33692
  NotificationList: () => NotificationList,
33696
33693
  PlatformIconGroup: () => PlatformIconGroup,
33697
- SEARCH_SPEC_FIELDS: () => SEARCH_SPEC_FIELDS,
33698
33694
  SearchSpecCard: () => SearchSpecCard,
33699
33695
  StatsGrid: () => StatsGrid,
33700
33696
  StepWizard: () => StepWizard,
@@ -33828,22 +33824,21 @@ var EditableField = import_react53.default.memo(
33828
33824
  if (type === "slider") {
33829
33825
  return config.sliderConfig?.formatValue ? config.sliderConfig.formatValue(value) : `${value?.min} - ${value?.max}`;
33830
33826
  }
33831
- if (!value)
33832
- return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { className: "text-muted-foreground italic", children: "Not set" });
33827
+ if (!value) return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { className: "opacity-0", children: "-" });
33833
33828
  return value.toString();
33834
33829
  };
33835
- return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: cn("group flex flex-col gap-1.5 py-2", className), children: [
33830
+ return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: cn("group flex flex-col gap-1 py-1.5", className), children: [
33836
33831
  /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "flex items-center justify-between", children: [
33837
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Label, { className: "text-xs font-medium text-gray500 uppercase tracking-tight", children: label }),
33832
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Label, { className: "text-[13px] font-bold text-[var(--foreground)] opacity-80 uppercase tracking-wider", children: label }),
33838
33833
  isChanged && !isEditingProp && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
33839
33834
  "div",
33840
33835
  {
33841
- className: "w-1.5 h-1.5 rounded-full bg-amber-500",
33836
+ className: "w-2 h-2 rounded-full bg-amber-500 shadow-[0_0_8px_rgba(245,158,11,0.6)]",
33842
33837
  title: "Unsaved changes"
33843
33838
  }
33844
33839
  )
33845
33840
  ] }),
33846
- isEditingProp ? /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "flex flex-col gap-2", children: [
33841
+ isEditingProp ? /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "flex flex-col gap-3", children: [
33847
33842
  renderInput(),
33848
33843
  /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "flex items-center justify-end gap-2", children: [
33849
33844
  /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
@@ -33851,20 +33846,20 @@ var EditableField = import_react53.default.memo(
33851
33846
  {
33852
33847
  size: "icon",
33853
33848
  variant: "outline",
33854
- className: "h-8 w-8 text-destructive border-destructive/20 hover:bg-destructive/10",
33849
+ className: "h-9 w-9 text-destructive border-destructive/20 hover:bg-destructive/10 rounded-xl",
33855
33850
  onClick: onCancel,
33856
33851
  disabled: isSaving,
33857
- children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(X, { className: "h-4 w-4" })
33852
+ children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(X, { className: "h-5 w-5" })
33858
33853
  }
33859
33854
  ),
33860
33855
  /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
33861
33856
  Button,
33862
33857
  {
33863
33858
  size: "icon",
33864
- className: "h-8 w-8 bg-purple500 hover:bg-purple600 text-white",
33859
+ className: "h-9 w-9 bg-[var(--primary-color)] hover:opacity-90 text-[var(--primary-foreground,white)] rounded-xl shadow-lg shadow-[var(--primary-color)]/20",
33865
33860
  onClick: handleSave,
33866
33861
  disabled: isSaving,
33867
- children: isSaving ? /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(LoaderCircle, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Check, { className: "h-4 w-4" })
33862
+ children: isSaving ? /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(LoaderCircle, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Check, { className: "h-5 w-5" })
33868
33863
  }
33869
33864
  )
33870
33865
  ] })
@@ -33872,13 +33867,13 @@ var EditableField = import_react53.default.memo(
33872
33867
  "div",
33873
33868
  {
33874
33869
  className: cn(
33875
- "relative flex items-center justify-between rounded-md px-2 py-1.5 transition-all",
33876
- "hover:bg-gray-100/50 cursor-pointer border border-transparent hover:border-gray-200"
33870
+ "relative flex items-center justify-between rounded-xl px-2 py-1.5 transition-all duration-200",
33871
+ "hover:bg-gray-100/80 cursor-pointer border border-transparent hover:border-gray-200 group-hover:shadow-sm"
33877
33872
  ),
33878
33873
  onClick: onEdit,
33879
33874
  children: [
33880
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { className: "text-sm text-gray-900 font-medium truncate flex-1 leading-relaxed", children: formattedValue() }),
33881
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Pencil, { className: "h-3.5 w-3.5 text-gray-400 opacity-0 group-hover:opacity-100 transition-opacity" })
33875
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { className: "text-[14px] text-gray-900 font-semibold truncate flex-1 leading-relaxed", children: formattedValue() }),
33876
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Pencil, { className: "h-4 w-4 text-gray-400 opacity-0 group-hover:opacity-100 transition-opacity" })
33882
33877
  ]
33883
33878
  }
33884
33879
  )
@@ -33938,8 +33933,8 @@ var ActionButton = import_react54.default.memo(
33938
33933
  onClick: onProceed,
33939
33934
  className: cn(
33940
33935
  "relative min-w-[140px] overflow-hidden group transition-all duration-300",
33941
- "bg-purple500 hover:bg-purple600 text-white font-semibold rounded-full px-6 py-2.5 shadow-md hover:shadow-lg",
33942
- variant === "outline" && "bg-transparent border-purple500 text-purple500 hover:bg-purple50",
33936
+ "bg-[var(--primary-color)] hover:opacity-90 text-white font-bold rounded-full px-5 py-2.5 shadow-[0_4px_14px_0_hsl(var(--primary)/30%)] hover:shadow-[0_6px_20px_0_hsl(var(--primary)/40%)]",
33937
+ variant === "outline" && "bg-transparent border-[var(--primary-color)] text-[var(--primary-color)] hover:bg-[var(--primary-color)]/5",
33943
33938
  isLoading && "opacity-80"
33944
33939
  ),
33945
33940
  children: [
@@ -33967,12 +33962,12 @@ var ActionButton = import_react54.default.memo(
33967
33962
  variant: "ghost",
33968
33963
  size: "icon",
33969
33964
  onClick: onPause,
33970
- className: "h-10 w-10 rounded-full hover:bg-gray200 text-gray600",
33965
+ className: "h-10 w-10 rounded-full hover:bg-[var(--foreground)]/5 text-[var(--foreground)]/60",
33971
33966
  title: isPaused ? "Resume auto-proceed" : "Pause auto-proceed",
33972
33967
  children: isPaused ? /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Play, { className: "h-4 w-4 fill-current" }) : /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Pause, { className: "h-4 w-4 fill-current" })
33973
33968
  }
33974
33969
  ),
33975
- secondaryLabel && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { className: "text-sm text-gray-500 font-medium italic", children: secondaryLabel })
33970
+ secondaryLabel && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { className: "text-sm text-[var(--foreground)]/50 font-medium italic", children: secondaryLabel })
33976
33971
  ] });
33977
33972
  }
33978
33973
  );
@@ -33992,7 +33987,8 @@ var FormCard = import_react55.default.memo(
33992
33987
  onFieldEdit,
33993
33988
  onFieldSave,
33994
33989
  onFieldCancel,
33995
- showTimeline = true,
33990
+ showTimeline = false,
33991
+ // Default to false to remove "bullets"
33996
33992
  proceedLabel,
33997
33993
  countdown,
33998
33994
  isPaused = false,
@@ -34011,52 +34007,62 @@ var FormCard = import_react55.default.memo(
34011
34007
  Card,
34012
34008
  {
34013
34009
  className: cn(
34014
- "w-full rounded-[24px] border border-gray200 bg-white shadow-sm overflow-hidden",
34010
+ "w-full rounded-[24px] border border-[var(--border-color)] bg-[var(--card-background)] shadow-lg overflow-hidden transition-all duration-300 hover:shadow-xl",
34015
34011
  className
34016
34012
  ),
34017
34013
  children: [
34018
- /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(CardHeader, { className: "flex flex-row items-center justify-between pb-2 space-y-0", children: [
34019
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(CardTitle, { className: "text-lg font-bold text-gray-900 tracking-tight", children: title }),
34014
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(CardHeader, { className: "flex flex-row items-center justify-between pb-3 pt-4 px-6 space-y-0", children: [
34015
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(CardTitle, { className: "text-lg font-bold text-[var(--foreground)] tracking-tight", children: title }),
34020
34016
  /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
34021
34017
  "button",
34022
34018
  {
34023
34019
  onClick: handleCopyAll,
34024
- className: "p-1.5 rounded-md hover:bg-gray-100 text-gray-400 hover:text-gray-600 transition-colors",
34020
+ className: "p-1.5 rounded-xl hover:bg-[var(--foreground)]/5 text-[var(--foreground)]/40 hover:text-[var(--foreground)]/60 transition-all active:scale-95",
34025
34021
  title: "Copy all details",
34026
34022
  children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Copy, { className: "h-4 w-4" })
34027
34023
  }
34028
34024
  )
34029
34025
  ] }),
34030
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(CardContent, { className: "pt-2 pb-6", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "relative", children: [
34031
- showTimeline && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "absolute left-[7px] top-2 bottom-6 w-0.5 border-l-2 border-dotted border-gray200 pointer-events-none" }),
34032
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "space-y-4", children: fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "relative pl-6", children: [
34033
- showTimeline && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
34034
- "div",
34035
- {
34036
- className: cn(
34037
- "absolute left-0 top-[18px] w-[14px] h-[14px] -translate-x-1/2 rounded-full border-2 bg-white z-10",
34038
- changedFields[field.key] ? "border-amber-500" : "border-gray-200"
34026
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(CardContent, { className: "px-6 pt-1 pb-4", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "relative", children: [
34027
+ showTimeline && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "absolute left-[7px] top-2 bottom-6 w-0.5 border-l-2 border-dotted border-[var(--border-color)] pointer-events-none" }),
34028
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "space-y-2.5", children: fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
34029
+ "div",
34030
+ {
34031
+ className: cn(
34032
+ "relative transition-all duration-300",
34033
+ showTimeline && "pl-8"
34034
+ ),
34035
+ children: [
34036
+ showTimeline && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
34037
+ "div",
34038
+ {
34039
+ className: cn(
34040
+ "absolute left-0 top-[18px] w-[14px] h-[14px] -translate-x-1/2 rounded-full border-2 bg-[var(--background)] z-10 transition-all duration-300",
34041
+ changedFields[field.key] ? "border-amber-500 shadow-[0_0_8px_rgba(245,158,11,0.4)]" : "border-[var(--border-color)] shadow-sm"
34042
+ )
34043
+ }
34044
+ ),
34045
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
34046
+ EditableField,
34047
+ {
34048
+ label: field.label,
34049
+ value: data[field.key],
34050
+ type: field.type,
34051
+ config: field,
34052
+ isEditing: editingFields[field.key],
34053
+ isChanged: changedFields[field.key],
34054
+ isSaving: savingFields[field.key],
34055
+ onEdit: () => onFieldEdit?.(field.key),
34056
+ onSave: (val) => onFieldSave?.(field.key, val),
34057
+ onCancel: () => onFieldCancel?.(field.key)
34058
+ }
34039
34059
  )
34040
- }
34041
- ),
34042
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
34043
- EditableField,
34044
- {
34045
- label: field.label,
34046
- value: data[field.key],
34047
- type: field.type,
34048
- config: field,
34049
- isEditing: editingFields[field.key],
34050
- isChanged: changedFields[field.key],
34051
- isSaving: savingFields[field.key],
34052
- onEdit: () => onFieldEdit?.(field.key),
34053
- onSave: (val) => onFieldSave?.(field.key, val),
34054
- onCancel: () => onFieldCancel?.(field.key)
34055
- }
34056
- )
34057
- ] }, field.key)) })
34060
+ ]
34061
+ },
34062
+ field.key
34063
+ )) })
34058
34064
  ] }) }),
34059
- (onProceed || footer) && /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(CardFooter, { className: "flex flex-col gap-4 pt-0 border-t border-gray-100/50 bg-gray-50/30 p-6", children: [
34065
+ (onProceed || footer) && /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(CardFooter, { className: "flex flex-col gap-3 border-t border-[var(--border-color)] bg-[var(--foreground)]/[0.03] p-6", children: [
34060
34066
  onProceed && proceedLabel && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "w-full flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
34061
34067
  ActionButton,
34062
34068
  {
@@ -34080,8 +34086,10 @@ FormCard.displayName = "FormCard";
34080
34086
  var import_jsx_runtime94 = require("react/jsx-runtime");
34081
34087
  var StatsGrid = ({
34082
34088
  items,
34089
+ stats,
34083
34090
  className
34084
34091
  }) => {
34092
+ const displayItems = items || stats || [];
34085
34093
  return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34086
34094
  "div",
34087
34095
  {
@@ -34089,15 +34097,15 @@ var StatsGrid = ({
34089
34097
  "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",
34090
34098
  className
34091
34099
  ),
34092
- children: items.map((item, index) => {
34100
+ children: displayItems?.map((item, index) => {
34093
34101
  const Icon3 = item.icon ? lucide_react_exports[item.icon] : null;
34094
- const trendColor = item.trendDirection === "up" ? "text-green-600" : item.trendDirection === "down" ? "text-red-600" : "text-gray-500";
34102
+ const trendColor = item.trendDirection === "up" ? "text-emerald-600 dark:text-emerald-400" : item.trendDirection === "down" ? "text-rose-600 dark:text-rose-400" : "text-muted-foreground";
34095
34103
  const TrendIcon = item.trendDirection === "up" ? ArrowUpRight : item.trendDirection === "down" ? ArrowDownRight : null;
34096
34104
  return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34097
34105
  Card,
34098
34106
  {
34099
- className: "bg-white/60 backdrop-blur-sm border-purple-50 hover:shadow-md transition-all rounded-2xl overflow-hidden",
34100
- children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(CardContent, { className: "p-4 flex flex-col gap-2", children: [
34107
+ className: "bg-[var(--card-background,theme(colors.white))] dark:bg-[var(--card-background,theme(colors.zinc.900))] border-[var(--border-color,theme(colors.gray.200))] backdrop-blur-sm shadow-sm hover:shadow-md transition-all duration-300 rounded-[24px] overflow-hidden",
34108
+ children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(CardContent, { className: "p-5 flex flex-col gap-1.5", children: [
34101
34109
  /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center justify-between", children: [
34102
34110
  /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34103
34111
  TextAtom,
@@ -34106,12 +34114,12 @@ var StatsGrid = ({
34106
34114
  type: "text",
34107
34115
  content: item.label,
34108
34116
  variant: "small",
34109
- className: "text-muted-foreground font-medium"
34117
+ className: "text-muted-foreground font-medium tracking-wide uppercase text-[10px]"
34110
34118
  }
34111
34119
  ),
34112
- Icon3 && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Icon3, { className: "w-4 h-4 text-purple-500" })
34120
+ Icon3 && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Icon3, { className: "w-4 h-4 text-[var(--primary-color,theme(colors.purple.500))]" })
34113
34121
  ] }),
34114
- /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-baseline gap-2", children: [
34122
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-baseline gap-3", children: [
34115
34123
  /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34116
34124
  TextAtom,
34117
34125
  {
@@ -34119,15 +34127,19 @@ var StatsGrid = ({
34119
34127
  type: "text",
34120
34128
  content: String(item.value),
34121
34129
  variant: "h3",
34122
- className: "font-bold text-gray-900"
34130
+ className: cn(
34131
+ "font-bold text-[var(--foreground)] tracking-tight leading-tight",
34132
+ String(item.value).length > 20 ? "text-base" : String(item.value).length > 12 ? "text-lg" : "text-xl"
34133
+ )
34123
34134
  }
34124
34135
  ),
34125
34136
  item.trend && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
34126
34137
  "div",
34127
34138
  {
34128
34139
  className: cn(
34129
- "flex items-center text-xs font-bold",
34130
- trendColor
34140
+ "flex items-center text-xs font-bold px-1.5 py-0.5 rounded-full bg-opacity-10",
34141
+ trendColor,
34142
+ item.trendDirection === "up" ? "bg-emerald-100 dark:bg-emerald-900/30" : item.trendDirection === "down" ? "bg-rose-100 dark:bg-rose-900/30" : "bg-gray-100 dark:bg-gray-800"
34131
34143
  ),
34132
34144
  children: [
34133
34145
  TrendIcon && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(TrendIcon, { className: "w-3 h-3 mr-0.5" }),
@@ -34334,16 +34346,19 @@ var FileUpload = ({ title, accept, multiple, className, onFilesSelected }) => {
34334
34346
 
34335
34347
  // src/molecules/generic/TagCloud/TagCloud.tsx
34336
34348
  var import_jsx_runtime99 = require("react/jsx-runtime");
34337
- var TagCloud = ({ tags, className, onTagClick }) => {
34338
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: cn("flex flex-wrap gap-2", className), children: tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
34349
+ var TagCloud = ({ tags = [], className, onTagClick }) => {
34350
+ const normalizedTags = tags.map(
34351
+ (t) => typeof t === "string" ? { label: t, value: t } : t
34352
+ );
34353
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: cn("flex flex-wrap gap-3.5", className), children: normalizedTags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
34339
34354
  Badge2,
34340
34355
  {
34341
34356
  variant: "secondary",
34342
- className: "cursor-pointer bg-white border border-purple-50 hover:bg-purple-50 hover:border-purple-200 text-gray-700 rounded-lg px-3 py-1.5 transition-all flex items-center gap-2 shadow-sm",
34357
+ className: "cursor-pointer bg-[var(--card-background,theme(colors.white))] dark:bg-[var(--card-background,theme(colors.zinc.900))] border border-[var(--border-color,theme(colors.gray.200))] text-[var(--foreground)] hover:bg-[var(--primary-color)] hover:text-white hover:border-[var(--primary-color)] rounded-full px-3 py-1 transition-all duration-300 flex items-center gap-2 shadow-sm",
34343
34358
  onClick: () => onTagClick?.(tag.value),
34344
34359
  children: [
34345
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: tag.label }),
34346
- tag.count !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "text-[10px] font-bold bg-purple-100 text-purple-700 px-1.5 rounded-full", children: tag.count })
34360
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "font-medium", children: tag.label }),
34361
+ tag.count !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "text-[10px] font-bold bg-black/5 dark:bg-white/10 px-1.5 py-0.5 rounded-full min-w-[20px] text-center", children: tag.count })
34347
34362
  ]
34348
34363
  },
34349
34364
  tag.value
@@ -34527,88 +34542,67 @@ var NotificationList = ({
34527
34542
 
34528
34543
  // src/molecules/creator-discovery/CampaignSeedCard/CampaignSeedCard.tsx
34529
34544
  var import_react58 = __toESM(require("react"), 1);
34530
- var import_jsx_runtime103 = require("react/jsx-runtime");
34531
- var CAMPAIGN_SEED_FIELDS = [
34532
- {
34533
- key: "brand",
34534
- label: "Brand / Campaign",
34535
- type: "text",
34536
- placeholder: "Not specified"
34537
- },
34538
- {
34539
- key: "objective",
34540
- label: "Objective",
34541
- type: "text",
34542
- placeholder: "Not specified"
34543
- },
34544
- {
34545
- key: "budget_hint",
34546
- label: "Budget Hint",
34547
- type: "slider",
34548
- placeholder: "Not specified",
34549
- sliderConfig: {
34550
- min: 0,
34551
- max: 1e6,
34552
- step: 1e3,
34553
- formatValue: (value) => {
34554
- if (!value) return "$0 - $100K";
34555
- const formatCurrency = (amount) => {
34556
- if (amount >= 1e6) return `$${(amount / 1e6).toFixed(1)}M`;
34557
- if (amount >= 1e3) return `$${(amount / 1e3).toFixed(0)}K`;
34558
- return `$${amount.toLocaleString()}`;
34559
- };
34560
- let normalized;
34561
- if (typeof value === "object" && value?.min !== void 0) {
34562
- normalized = value;
34563
- } else if (typeof value === "string" && value.includes("-")) {
34564
- const [minStr, maxStr] = value.split("-");
34565
- normalized = {
34566
- min: Number(minStr) || 0,
34567
- max: Number(maxStr) || 1e5
34568
- };
34569
- } else {
34570
- const val = Number(String(value).replace(/[^0-9.]/g, "")) || 0;
34571
- normalized = val > 0 ? { min: val, max: val } : { min: 0, max: 1e5 };
34572
- }
34573
- if (normalized.min === normalized.max)
34574
- return formatCurrency(normalized.min);
34575
- return `${formatCurrency(normalized.min)} - ${formatCurrency(normalized.max)}`;
34576
- }
34545
+
34546
+ // src/lib/field-utils.ts
34547
+ function normalizeLabel(key) {
34548
+ return key.split(/_|\s+/).map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
34549
+ }
34550
+ function inferFieldType(value) {
34551
+ if (typeof value === "boolean") return "checkbox";
34552
+ if (typeof value === "number") return "number";
34553
+ if (Array.isArray(value)) return "custom";
34554
+ if (typeof value === "object" && value !== null) {
34555
+ if ("min" in value && "max" in value) return "slider";
34556
+ return "custom";
34557
+ }
34558
+ if (typeof value === "string") {
34559
+ if (value.length > 100) return "textarea";
34560
+ return "text";
34561
+ }
34562
+ return "text";
34563
+ }
34564
+ function generateFieldsFromData(data) {
34565
+ if (!data || typeof data !== "object") return [];
34566
+ return Object.keys(data).map((key) => {
34567
+ const value = data[key];
34568
+ const type = inferFieldType(value);
34569
+ const config = {
34570
+ key,
34571
+ label: normalizeLabel(key),
34572
+ type
34573
+ };
34574
+ if (type === "slider" && typeof value === "object") {
34575
+ config.sliderConfig = {
34576
+ min: value.min ?? 0,
34577
+ max: value.max ?? 100,
34578
+ step: 1
34579
+ };
34577
34580
  }
34578
- },
34579
- {
34580
- key: "geo_or_audience",
34581
- label: "Geography or Audience",
34582
- type: "text",
34583
- placeholder: "Not specified"
34584
- },
34585
- {
34586
- key: "timeline_opt",
34587
- label: "Timeline Option",
34588
- type: "text",
34589
- placeholder: "Not specified"
34590
- },
34591
- {
34592
- key: "notes",
34593
- label: "Notes",
34594
- type: "textarea",
34595
- placeholder: "No notes",
34596
- rows: 4
34597
- }
34598
- ];
34581
+ return config;
34582
+ });
34583
+ }
34584
+
34585
+ // src/molecules/creator-discovery/CampaignSeedCard/CampaignSeedCard.tsx
34586
+ var import_jsx_runtime103 = require("react/jsx-runtime");
34599
34587
  var CampaignSeedCard = import_react58.default.memo(
34600
34588
  ({
34601
34589
  selectionStatus,
34602
34590
  isLatestMessage = true,
34603
34591
  className,
34592
+ fields: providedFields,
34593
+ data,
34604
34594
  ...formCardProps
34605
34595
  }) => {
34596
+ const fields = (0, import_react58.useMemo)(() => {
34597
+ return providedFields || generateFieldsFromData(data);
34598
+ }, [providedFields, data]);
34606
34599
  return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
34607
34600
  FormCard,
34608
34601
  {
34609
34602
  ...formCardProps,
34610
- title: formCardProps.title || "Brand Information",
34611
- fields: CAMPAIGN_SEED_FIELDS,
34603
+ data,
34604
+ title: formCardProps.title || "Campaign Brief",
34605
+ fields,
34612
34606
  className,
34613
34607
  footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1", children: [
34614
34608
  /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(CircleCheck, { className: "h-4 w-4" }),
@@ -34621,10 +34615,40 @@ var CampaignSeedCard = import_react58.default.memo(
34621
34615
  CampaignSeedCard.displayName = "CampaignSeedCard";
34622
34616
 
34623
34617
  // src/molecules/creator-discovery/SearchSpecCard/SearchSpecCard.tsx
34624
- var import_react60 = __toESM(require("react"), 1);
34618
+ var import_react59 = __toESM(require("react"), 1);
34619
+ var import_jsx_runtime104 = require("react/jsx-runtime");
34620
+ var SearchSpecCard = import_react59.default.memo(
34621
+ ({
34622
+ selectionStatus,
34623
+ isLatestMessage = true,
34624
+ className,
34625
+ fields: providedFields,
34626
+ data,
34627
+ ...formCardProps
34628
+ }) => {
34629
+ const fields = (0, import_react59.useMemo)(() => {
34630
+ return providedFields || generateFieldsFromData(data);
34631
+ }, [providedFields, data]);
34632
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
34633
+ FormCard,
34634
+ {
34635
+ ...formCardProps,
34636
+ data,
34637
+ title: formCardProps.title || "Search Specification",
34638
+ fields,
34639
+ className,
34640
+ footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1", children: [
34641
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(CircleCheck, { className: "h-4 w-4" }),
34642
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
34643
+ ] }) : formCardProps.footer
34644
+ }
34645
+ );
34646
+ }
34647
+ );
34648
+ SearchSpecCard.displayName = "SearchSpecCard";
34625
34649
 
34626
34650
  // src/molecules/creator-discovery/SearchSpecCard/CustomFieldRenderers.tsx
34627
- var import_react59 = require("react");
34651
+ var import_react60 = require("react");
34628
34652
 
34629
34653
  // src/lib/countries.ts
34630
34654
  var countries = [
@@ -34831,15 +34855,15 @@ var countriesWithFlags = Object.fromEntries(
34831
34855
  );
34832
34856
 
34833
34857
  // src/molecules/creator-discovery/SearchSpecCard/CustomFieldRenderers.tsx
34834
- var import_jsx_runtime104 = require("react/jsx-runtime");
34858
+ var import_jsx_runtime105 = require("react/jsx-runtime");
34835
34859
  var CountrySelectEdit = ({
34836
34860
  value,
34837
34861
  onChange
34838
34862
  }) => {
34839
- const [isDropdownOpen, setIsDropdownOpen] = (0, import_react59.useState)(false);
34840
- const [searchTerm, setSearchTerm] = (0, import_react59.useState)("");
34841
- const dropdownRef = (0, import_react59.useRef)(null);
34842
- (0, import_react59.useEffect)(() => {
34863
+ const [isDropdownOpen, setIsDropdownOpen] = (0, import_react60.useState)(false);
34864
+ const [searchTerm, setSearchTerm] = (0, import_react60.useState)("");
34865
+ const dropdownRef = (0, import_react60.useRef)(null);
34866
+ (0, import_react60.useEffect)(() => {
34843
34867
  const handleClickOutside = (event) => {
34844
34868
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
34845
34869
  setIsDropdownOpen(false);
@@ -34849,16 +34873,16 @@ var CountrySelectEdit = ({
34849
34873
  return () => document.removeEventListener("mousedown", handleClickOutside);
34850
34874
  }, []);
34851
34875
  const inputValue = Array.isArray(value) ? value : [];
34852
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "space-y-3", children: [
34853
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "relative", ref: dropdownRef, children: [
34854
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
34876
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "space-y-3", children: [
34877
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "relative", ref: dropdownRef, children: [
34878
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
34855
34879
  "div",
34856
34880
  {
34857
34881
  className: "flex-1 bg-white border border-gray200 rounded-md px-3 py-2 text-sm cursor-pointer flex items-center justify-between font-medium hover:border-purple500 transition-colors",
34858
34882
  onClick: () => setIsDropdownOpen(!isDropdownOpen),
34859
34883
  children: [
34860
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "text-gray-700", children: inputValue.length > 0 ? `${inputValue.length} ${inputValue.length === 1 ? "country" : "countries"} selected` : "Select countries..." }),
34861
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
34884
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "text-gray-700", children: inputValue.length > 0 ? `${inputValue.length} ${inputValue.length === 1 ? "country" : "countries"} selected` : "Select countries..." }),
34885
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
34862
34886
  ChevronDown,
34863
34887
  {
34864
34888
  className: cn(
@@ -34870,8 +34894,8 @@ var CountrySelectEdit = ({
34870
34894
  ]
34871
34895
  }
34872
34896
  ),
34873
- isDropdownOpen && /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "absolute top-full left-0 right-0 mt-1 bg-white border border-gray200 rounded-lg shadow-xl z-50 max-h-60 overflow-hidden animate-in fade-in slide-in-from-top-1", children: [
34874
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "p-2 border-b border-gray-100", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
34897
+ isDropdownOpen && /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "absolute top-full left-0 right-0 mt-1 bg-white border border-gray200 rounded-lg shadow-xl z-50 max-h-60 overflow-hidden animate-in fade-in slide-in-from-top-1", children: [
34898
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "p-2 border-b border-gray-100", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
34875
34899
  "input",
34876
34900
  {
34877
34901
  type: "text",
@@ -34882,9 +34906,9 @@ var CountrySelectEdit = ({
34882
34906
  onClick: (e) => e.stopPropagation()
34883
34907
  }
34884
34908
  ) }),
34885
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "max-h-40 overflow-y-auto p-1", children: countries.filter(
34909
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "max-h-40 overflow-y-auto p-1", children: countries.filter(
34886
34910
  (country) => country.name.toLowerCase().includes(searchTerm.toLowerCase()) || country.code.toLowerCase().includes(searchTerm.toLowerCase())
34887
- ).map((country) => /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
34911
+ ).map((country) => /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
34888
34912
  "div",
34889
34913
  {
34890
34914
  className: cn(
@@ -34905,31 +34929,31 @@ var CountrySelectEdit = ({
34905
34929
  }
34906
34930
  },
34907
34931
  children: [
34908
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "flex items-center gap-2", children: [
34909
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "text-sm text-gray-700", children: country.name }),
34910
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "text-xs text-gray-400 font-mono", children: country.code })
34932
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex items-center gap-2", children: [
34933
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "text-sm text-gray-700", children: country.name }),
34934
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "text-xs text-gray-400 font-mono", children: country.code })
34911
34935
  ] }),
34912
- inputValue.includes(country.code) && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Check, { className: "h-4 w-4 text-purple500" })
34936
+ inputValue.includes(country.code) && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Check, { className: "h-4 w-4 text-purple500" })
34913
34937
  ]
34914
34938
  },
34915
34939
  country.code
34916
34940
  )) })
34917
34941
  ] })
34918
34942
  ] }),
34919
- inputValue.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "flex flex-wrap gap-1.5", children: inputValue.map((countryCode) => /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
34943
+ inputValue.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "flex flex-wrap gap-1.5", children: inputValue.map((countryCode) => /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
34920
34944
  Badge2,
34921
34945
  {
34922
34946
  variant: "secondary",
34923
34947
  className: "bg-purple50 text-purple700 border-purple100 hover:bg-purple100 cursor-default flex items-center gap-1 pr-1",
34924
34948
  children: [
34925
34949
  countryCode,
34926
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
34950
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
34927
34951
  "button",
34928
34952
  {
34929
34953
  onClick: () => onChange(inputValue.filter((c) => c !== countryCode)),
34930
34954
  className: "hover:bg-purple200 rounded-full p-0.5 transition-colors",
34931
34955
  children: [
34932
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ChevronDown, { className: "h-3 w-3 rotate-45" }),
34956
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(ChevronDown, { className: "h-3 w-3 rotate-45" }),
34933
34957
  " "
34934
34958
  ]
34935
34959
  }
@@ -34942,9 +34966,9 @@ var CountrySelectEdit = ({
34942
34966
  };
34943
34967
  var CountrySelectDisplay = ({ value }) => {
34944
34968
  if (!value || !Array.isArray(value) || value.length === 0) {
34945
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "text-muted-foreground italic", children: "Not specified" });
34969
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "text-muted-foreground italic", children: "Not specified" });
34946
34970
  }
34947
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "flex flex-wrap gap-1.5", children: value.map((countryCode) => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
34971
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "flex flex-wrap gap-1.5", children: value.map((countryCode) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
34948
34972
  Badge2,
34949
34973
  {
34950
34974
  variant: "outline",
@@ -34966,22 +34990,22 @@ var KeywordBundlesEdit = ({
34966
34990
  groups[p].push({ bundle: b, index: idx });
34967
34991
  });
34968
34992
  const sortedPriorities = Object.keys(groups).map((n) => parseInt(n)).sort((a, b) => a - b);
34969
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "space-y-6 pt-2", children: sortedPriorities.map((priority) => /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "space-y-3", children: [
34970
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "flex items-center gap-2", children: [
34971
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Badge2, { className: "bg-purple500 hover:bg-purple500", children: [
34993
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "space-y-6 pt-2", children: sortedPriorities.map((priority) => /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "space-y-3", children: [
34994
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex items-center gap-2", children: [
34995
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Badge2, { className: "bg-purple500 hover:bg-purple500", children: [
34972
34996
  "Priority ",
34973
34997
  priority
34974
34998
  ] }),
34975
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "h-px flex-1 bg-gray-100" })
34999
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "h-px flex-1 bg-gray-100" })
34976
35000
  ] }),
34977
- groups[priority].map(({ bundle, index: bundleIndex }) => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
35001
+ groups[priority].map(({ bundle, index: bundleIndex }) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
34978
35002
  "div",
34979
35003
  {
34980
35004
  className: "bg-gray-50/50 border border-gray-100 rounded-xl p-4 transition-all hover:bg-gray-50 hover:border-gray-200 shadow-sm",
34981
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "flex flex-col gap-3", children: [
34982
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Keywords" }),
34983
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "space-y-3", children: [
34984
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "flex flex-wrap gap-1.5", children: Array.isArray(bundle.keywords) && bundle.keywords.map((keyword, kIndex) => /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
35005
+ children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex flex-col gap-3", children: [
35006
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Keywords" }),
35007
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "space-y-3", children: [
35008
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "flex flex-wrap gap-1.5", children: Array.isArray(bundle.keywords) && bundle.keywords.map((keyword, kIndex) => /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
34985
35009
  Badge2,
34986
35010
  {
34987
35011
  className: "bg-white border-gray-200 text-gray-700 hover:bg-red-50 hover:text-red-600 hover:border-red-100 transition-all cursor-pointer group",
@@ -34997,12 +35021,12 @@ var KeywordBundlesEdit = ({
34997
35021
  },
34998
35022
  children: [
34999
35023
  keyword,
35000
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "ml-1 opacity-0 group-hover:opacity-100 transition-opacity", children: "\xD7" })
35024
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "ml-1 opacity-0 group-hover:opacity-100 transition-opacity", children: "\xD7" })
35001
35025
  ]
35002
35026
  },
35003
35027
  kIndex
35004
35028
  )) }),
35005
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "flex gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
35029
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "flex gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
35006
35030
  "input",
35007
35031
  {
35008
35032
  type: "text",
@@ -35026,9 +35050,9 @@ var KeywordBundlesEdit = ({
35026
35050
  }
35027
35051
  ) })
35028
35052
  ] }),
35029
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "flex flex-col gap-1.5 mt-1", children: [
35030
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Priority Level (1-5)" }),
35031
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
35053
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex flex-col gap-1.5 mt-1", children: [
35054
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Priority Level (1-5)" }),
35055
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
35032
35056
  "input",
35033
35057
  {
35034
35058
  type: "number",
@@ -35056,7 +35080,7 @@ var KeywordBundlesEdit = ({
35056
35080
  var KeywordBundlesDisplay = ({ value }) => {
35057
35081
  const bundles = Array.isArray(value) ? value : [];
35058
35082
  if (bundles.length === 0)
35059
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "text-muted-foreground italic", children: "Not specified" });
35083
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "text-muted-foreground italic", children: "Not specified" });
35060
35084
  const groups = {};
35061
35085
  bundles.forEach((b) => {
35062
35086
  const p = Number(b?.priority) || 1;
@@ -35065,11 +35089,11 @@ var KeywordBundlesDisplay = ({ value }) => {
35065
35089
  groups[p].push(...keywords);
35066
35090
  });
35067
35091
  const sortedPriorities = Object.keys(groups).map((n) => parseInt(n)).sort((a, b) => a - b);
35068
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "space-y-4 pt-1", children: sortedPriorities.map((priority) => {
35092
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "space-y-4 pt-1", children: sortedPriorities.map((priority) => {
35069
35093
  const deduped = Array.from(new Set(groups[priority]));
35070
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "space-y-2", children: [
35071
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: "flex items-center gap-2", children: [
35072
- /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
35094
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "space-y-2", children: [
35095
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex items-center gap-2", children: [
35096
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
35073
35097
  Badge2,
35074
35098
  {
35075
35099
  variant: "outline",
@@ -35080,9 +35104,9 @@ var KeywordBundlesDisplay = ({ value }) => {
35080
35104
  ]
35081
35105
  }
35082
35106
  ),
35083
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "h-px flex-1 bg-gray-100/50" })
35107
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "h-px flex-1 bg-gray-100/50" })
35084
35108
  ] }),
35085
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "flex flex-wrap gap-1.5", children: deduped.map((keyword) => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
35109
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "flex flex-wrap gap-1.5", children: deduped.map((keyword) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
35086
35110
  Badge2,
35087
35111
  {
35088
35112
  variant: "secondary",
@@ -35095,85 +35119,6 @@ var KeywordBundlesDisplay = ({ value }) => {
35095
35119
  }) });
35096
35120
  };
35097
35121
 
35098
- // src/molecules/creator-discovery/SearchSpecCard/SearchSpecCard.tsx
35099
- var import_jsx_runtime105 = require("react/jsx-runtime");
35100
- var SEARCH_SPEC_FIELDS = [
35101
- {
35102
- key: "platforms",
35103
- label: "Platforms",
35104
- type: "select",
35105
- // Changed to select for simplicity in form, or custom if multi-select needed
35106
- placeholder: "Select platforms",
35107
- options: ["Instagram", "YouTube", "TikTok"]
35108
- },
35109
- {
35110
- key: "follower_range",
35111
- label: "Follower Range",
35112
- type: "slider",
35113
- placeholder: "Not specified",
35114
- sliderConfig: {
35115
- min: 0,
35116
- max: 5e6,
35117
- step: 1e4,
35118
- formatValue: (value) => {
35119
- if (!value || typeof value !== "object") return "0 - 2.5M followers";
35120
- const formatNum = (n) => {
35121
- if (n >= 1e6) return `${(n / 1e6).toFixed(1)}M`;
35122
- if (n >= 1e3) return `${(n / 1e3).toFixed(0)}K`;
35123
- return n.toLocaleString();
35124
- };
35125
- return `${formatNum(value.min || 0)} - ${formatNum(value.max || 25e5)} followers`;
35126
- }
35127
- }
35128
- },
35129
- {
35130
- key: "geography",
35131
- label: "Geography",
35132
- type: "custom",
35133
- renderEdit: (value, onChange) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(CountrySelectEdit, { value, onChange }),
35134
- renderDisplay: (value) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(CountrySelectDisplay, { value })
35135
- },
35136
- {
35137
- key: "keyword_bundles",
35138
- label: "Keyword Bundles",
35139
- type: "custom",
35140
- renderEdit: (value, onChange) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(KeywordBundlesEdit, { value, onChange }),
35141
- renderDisplay: (value) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(KeywordBundlesDisplay, { value })
35142
- },
35143
- {
35144
- key: "desired_candidate_count",
35145
- label: "Initial Creators",
35146
- type: "number",
35147
- numberConfig: {
35148
- min: 1,
35149
- formatValue: (value) => `${value || 0} creators`
35150
- }
35151
- }
35152
- ];
35153
- var SearchSpecCard = import_react60.default.memo(
35154
- ({
35155
- selectionStatus,
35156
- isLatestMessage = true,
35157
- className,
35158
- ...formCardProps
35159
- }) => {
35160
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
35161
- FormCard,
35162
- {
35163
- ...formCardProps,
35164
- title: formCardProps.title || "Creator Search Settings",
35165
- fields: SEARCH_SPEC_FIELDS,
35166
- className,
35167
- footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1", children: [
35168
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(CircleCheck, { className: "h-4 w-4" }),
35169
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
35170
- ] }) : formCardProps.footer
35171
- }
35172
- );
35173
- }
35174
- );
35175
- SearchSpecCard.displayName = "SearchSpecCard";
35176
-
35177
35122
  // src/molecules/creator-discovery/MCQCard/MCQCard.tsx
35178
35123
  var import_react61 = __toESM(require("react"), 1);
35179
35124
  var import_jsx_runtime106 = require("react/jsx-runtime");
@@ -35184,7 +35129,7 @@ var MCQCard = import_react61.default.memo(
35184
35129
  recommended,
35185
35130
  selectedOption,
35186
35131
  onSelect,
35187
- onProceed,
35132
+ onAction,
35188
35133
  isLatestMessage = true,
35189
35134
  countdown,
35190
35135
  isPaused = false,
@@ -35193,27 +35138,33 @@ var MCQCard = import_react61.default.memo(
35193
35138
  className,
35194
35139
  selectionStatus
35195
35140
  }) => {
35141
+ const [localSelected, setLocalSelected] = (0, import_react61.useState)(null);
35142
+ const effectiveSelected = selectedOption ?? localSelected;
35196
35143
  const handleOptionClick = (key) => {
35197
- if (isLatestMessage && !isLoading) {
35144
+ if (!isLoading) {
35145
+ setLocalSelected(key);
35198
35146
  onSelect?.(key);
35199
35147
  }
35200
35148
  };
35201
35149
  const handleProceed = () => {
35202
- if (selectedOption || recommended) {
35203
- onProceed?.(selectedOption || recommended || "");
35150
+ const value = effectiveSelected || recommended || "";
35151
+ if (value) {
35152
+ if (onAction) {
35153
+ onAction(value);
35154
+ }
35204
35155
  }
35205
35156
  };
35206
35157
  return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
35207
35158
  Card,
35208
35159
  {
35209
35160
  className: cn(
35210
- "w-full rounded-[24px] border border-gray200 bg-white shadow-sm overflow-hidden",
35161
+ "w-full rounded-[24px] border border-[var(--border-color)] bg-[var(--card-background)] shadow-sm overflow-hidden",
35211
35162
  className
35212
35163
  ),
35213
35164
  children: [
35214
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CardHeader, { className: "pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CardTitle, { className: "text-lg font-bold text-gray-900 tracking-tight leading-snug", children: question }) }),
35165
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CardHeader, { className: "pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CardTitle, { className: "text-lg font-bold text-[var(--foreground)] tracking-tight leading-snug", children: question }) }),
35215
35166
  /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CardContent, { className: "space-y-3 pb-6", children: Object.entries(options).map(([key, label]) => {
35216
- const isSelected = selectedOption === key;
35167
+ const isSelected = effectiveSelected === key;
35217
35168
  const isRecommended = key === recommended;
35218
35169
  return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
35219
35170
  "div",
@@ -35221,7 +35172,7 @@ var MCQCard = import_react61.default.memo(
35221
35172
  onClick: () => handleOptionClick(key),
35222
35173
  className: cn(
35223
35174
  "group relative flex items-start gap-4 p-4 rounded-2xl border transition-all duration-200 cursor-pointer",
35224
- isSelected ? "border-purple500 bg-purple50/30" : "border-gray-100 bg-gray-50/30 hover:border-gray-300 hover:bg-gray-50",
35175
+ isSelected ? "border-[var(--primary-color)] bg-[var(--primary-color)]/5 shadow-[0_0_0_1px_var(--primary-color)]" : "border-[var(--border-color)] bg-[var(--background)]/30 hover:border-gray-300 hover:bg-[var(--background)]/50",
35225
35176
  isLoading && "opacity-50 cursor-not-allowed"
35226
35177
  ),
35227
35178
  children: [
@@ -35230,7 +35181,7 @@ var MCQCard = import_react61.default.memo(
35230
35181
  {
35231
35182
  className: cn(
35232
35183
  "mt-1 w-5 h-5 rounded-full border-2 flex items-center justify-center transition-colors",
35233
- isSelected ? "border-purple500 bg-purple500" : "border-gray-300 bg-white group-hover:border-gray-400"
35184
+ isSelected ? "border-[var(--primary-color)] bg-[var(--primary-color)]" : "border-[var(--border-color)] bg-[var(--background)] group-hover:border-gray-400"
35234
35185
  ),
35235
35186
  children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "w-1.5 h-1.5 rounded-full bg-white" })
35236
35187
  }
@@ -35241,7 +35192,7 @@ var MCQCard = import_react61.default.memo(
35241
35192
  {
35242
35193
  className: cn(
35243
35194
  "text-sm font-semibold transition-colors",
35244
- isSelected ? "text-purple900" : "text-gray700"
35195
+ isSelected ? "text-[var(--foreground)]" : "text-[var(--foreground)]/80"
35245
35196
  ),
35246
35197
  children: label
35247
35198
  }
@@ -35250,18 +35201,18 @@ var MCQCard = import_react61.default.memo(
35250
35201
  Badge2,
35251
35202
  {
35252
35203
  variant: "outline",
35253
- className: "bg-green-50 text-green-700 border-green-100 flex items-center gap-1 text-[10px] py-0 h-5",
35204
+ className: "bg-green-500/10 text-green-500 border-green-500/20 flex items-center gap-1 text-[10px] py-0 h-5",
35254
35205
  children: [
35255
35206
  /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Sparkles, { className: "h-3 w-3" }),
35256
35207
  "Recommended"
35257
35208
  ]
35258
35209
  }
35259
35210
  ),
35260
- isSelected && !isLatestMessage && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
35211
+ isSelected && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
35261
35212
  Badge2,
35262
35213
  {
35263
35214
  variant: "outline",
35264
- className: "bg-purple-50 text-purple-700 border-purple-100 text-[10px] py-0 h-5",
35215
+ className: "bg-[var(--primary-color)]/10 text-[var(--primary-color)] border-[var(--primary-color)]/20 text-[10px] py-0 h-5",
35265
35216
  children: "Selected"
35266
35217
  }
35267
35218
  )
@@ -35271,18 +35222,18 @@ var MCQCard = import_react61.default.memo(
35271
35222
  key
35272
35223
  );
35273
35224
  }) }),
35274
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CardFooter, { className: "flex flex-col gap-4 pt-0 border-t border-gray-100/50 bg-gray-50/30 p-6", children: isLatestMessage ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "w-full flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
35225
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CardFooter, { className: "flex flex-col gap-4 pt-0 border-t border-[var(--border-color)] bg-black/5 p-6", children: isLatestMessage ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "w-full flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
35275
35226
  ActionButton,
35276
35227
  {
35277
- label: selectedOption ? "Continue" : "Proceed with Recommendation",
35228
+ label: effectiveSelected ? "Continue" : "Proceed with Recommendation",
35278
35229
  countdown,
35279
35230
  isPaused,
35280
35231
  onPause,
35281
35232
  onProceed: handleProceed,
35282
35233
  isLoading,
35283
- disabled: !selectedOption && !recommended
35234
+ disabled: !effectiveSelected && !recommended
35284
35235
  }
35285
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "w-full flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold", children: [
35236
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "w-full flex justify-end items-center gap-1.5 text-green-500 text-xs font-semibold", children: [
35286
35237
  /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CircleCheck, { className: "h-4 w-4" }),
35287
35238
  /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { children: selectionStatus === "agent" ? "Suggested by Agent, Approved by You" : "Selected by You" })
35288
35239
  ] }) })
@@ -35362,7 +35313,7 @@ var CreatorProfileSummary = ({
35362
35313
  "div",
35363
35314
  {
35364
35315
  className: cn(
35365
- "flex items-center gap-4 p-3 rounded-2xl bg-white/40 border border-purple-50 shadow-sm",
35316
+ "flex items-center gap-4 p-4 rounded-2xl bg-[var(--card-background,theme(colors.white))] dark:bg-[var(--card-background,theme(colors.zinc.950))] border border-[var(--border-color,theme(colors.gray.200))] shadow-sm transition-all duration-300 hover:shadow-md",
35366
35317
  className
35367
35318
  ),
35368
35319
  children: [
@@ -35414,7 +35365,7 @@ var AudienceMetricCard = ({
35414
35365
  Card,
35415
35366
  {
35416
35367
  className: cn(
35417
- "bg-white border-purple-50 rounded-3xl overflow-hidden",
35368
+ "bg-[var(--card-background,theme(colors.white))] dark:bg-[var(--card-background,theme(colors.zinc.900))] border-[var(--border-color,theme(colors.gray.200))] rounded-[32px] shadow-xl overflow-hidden transition-all duration-300 hover:shadow-2xl",
35418
35369
  className
35419
35370
  ),
35420
35371
  children: [
@@ -35470,7 +35421,7 @@ var CreatorGridCard = ({
35470
35421
  Card,
35471
35422
  {
35472
35423
  className: cn(
35473
- "group overflow-hidden rounded-[32px] border-none bg-white shadow-sm hover:shadow-xl transition-all duration-300",
35424
+ "group overflow-hidden rounded-[32px] border border-[var(--border-color)] bg-[var(--card-background)] shadow-sm hover:shadow-xl transition-all duration-300",
35474
35425
  className
35475
35426
  ),
35476
35427
  children: [
@@ -35486,13 +35437,13 @@ var CreatorGridCard = ({
35486
35437
  /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "absolute inset-x-0 bottom-0 h-1/2 bg-gradient-to-t from-black/20 to-transparent" })
35487
35438
  ] }),
35488
35439
  /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(CardContent, { className: "relative pt-0 px-5 pb-6", children: [
35489
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "absolute -top-10 left-5", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Avatar, { className: "h-20 w-20 border-4 border-white shadow-lg ring-2 ring-purple-100", children: [
35440
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "absolute -top-10 left-5", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Avatar, { className: "h-20 w-20 border-4 border-[var(--card-background)] shadow-lg ring-2 ring-purple-100/20", children: [
35490
35441
  /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(AvatarImage, { src: avatarSrc, alt: name }),
35491
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(AvatarFallback, { className: "bg-purple-50 text-purple-700 font-bold text-xl", children: name.charAt(0) })
35442
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(AvatarFallback, { className: "bg-purple-500/10 text-purple-500 font-bold text-xl", children: name.charAt(0) })
35492
35443
  ] }) }),
35493
35444
  /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "mt-12 flex flex-col gap-1", children: [
35494
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("h3", { className: "text-xl font-bold text-gray-900 truncate", children: name }),
35495
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("p", { className: "text-sm text-muted-foreground font-medium", children: [
35445
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("h3", { className: "text-xl font-bold text-[var(--foreground)] truncate", children: name }),
35446
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("p", { className: "text-sm text-[var(--foreground)]/60 font-medium", children: [
35496
35447
  "@",
35497
35448
  handle
35498
35449
  ] })
@@ -35502,15 +35453,15 @@ var CreatorGridCard = ({
35502
35453
  return Icon3 ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
35503
35454
  "div",
35504
35455
  {
35505
- className: "p-1.5 rounded-lg bg-gray-50 text-gray-600 hover:text-purple-600 hover:bg-purple-50 transition-colors",
35456
+ className: "p-1.5 rounded-lg bg-[var(--foreground)]/5 text-[var(--foreground)]/60 hover:text-purple-500 hover:bg-purple-500/10 transition-colors",
35506
35457
  children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Icon3, { className: "h-4 w-4" })
35507
35458
  },
35508
35459
  p
35509
35460
  ) : null;
35510
35461
  }) }),
35511
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "mt-6 grid grid-cols-2 gap-4 border-t border-gray-50 pt-4", children: metrics.map((m, i) => /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex flex-col", children: [
35512
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[10px] font-bold uppercase tracking-wider text-muted-foreground", children: m.label }),
35513
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-sm font-bold text-purple-700", children: m.value })
35462
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "mt-6 grid grid-cols-2 gap-4 border-t border-[var(--border-color)] pt-4", children: metrics.map((m, i) => /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex flex-col", children: [
35463
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[10px] font-bold uppercase tracking-wider text-[var(--foreground)]/40", children: m.label }),
35464
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-sm font-bold text-[var(--primary-color)]", children: m.value })
35514
35465
  ] }, i)) })
35515
35466
  ] })
35516
35467
  ]
@@ -37553,21 +37504,6 @@ var renderContextDependentError = (componentName, normalizedName, key) => {
37553
37504
  key
37554
37505
  );
37555
37506
  };
37556
- var renderNotFoundError = (componentName, key) => {
37557
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37558
- "div",
37559
- {
37560
- className: "p-3 border border-dashed border-red-500/50 text-red-500 text-xs rounded bg-red-50/30 my-2",
37561
- children: [
37562
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "font-semibold", children: "\u274C Unknown Component:" }),
37563
- " ",
37564
- componentName,
37565
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("p", { className: "text-[10px] text-red-400 mt-1", children: "Component not found in Atoms, Molecules, or UI Components registry." })
37566
- ]
37567
- },
37568
- key
37569
- );
37570
- };
37571
37507
  var normalizeProps = (props) => {
37572
37508
  const normalized = {};
37573
37509
  const dynamicStyle = {};
@@ -37663,7 +37599,7 @@ var PXEngineRenderer = ({
37663
37599
  const uniqueKey = id || `${componentName}-${index || Math.random().toString(36).substr(2, 9)}`;
37664
37600
  const normalizedName = componentName.charAt(0).toUpperCase() + componentName.slice(1);
37665
37601
  const resolveComponent = (identifier) => {
37666
- const normalized = identifier.charAt(0).toUpperCase() + identifier.slice(1);
37602
+ const normalized = identifier.split(/[-_]/).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
37667
37603
  const atomName2 = normalized.endsWith("Atom") ? normalized : `${normalized}Atom`;
37668
37604
  let Comp = atoms_exports[atomName2] || atoms_exports[normalized] || atoms_exports[identifier];
37669
37605
  if (!Comp) {
@@ -37693,7 +37629,6 @@ var PXEngineRenderer = ({
37693
37629
  console.warn(
37694
37630
  `[PXEngineRenderer] Component not found: ${componentName}`
37695
37631
  );
37696
- return renderNotFoundError(componentName, uniqueKey);
37697
37632
  }
37698
37633
  }
37699
37634
  const resolvedNormalized = resolvedIdentifier.charAt(0).toUpperCase() + resolvedIdentifier.slice(1);
@@ -37728,7 +37663,16 @@ var PXEngineRenderer = ({
37728
37663
  uniqueKey
37729
37664
  );
37730
37665
  } else {
37731
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(TargetComponent, { ...finalProps, style: finalStyle, children: Array.isArray(children) ? children.map((child, idx) => renderRecursive(child, idx)) : children }, uniqueKey);
37666
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37667
+ TargetComponent,
37668
+ {
37669
+ ...finalProps,
37670
+ style: finalStyle,
37671
+ onAction,
37672
+ children: Array.isArray(children) ? children.map((child, idx) => renderRecursive(child, idx)) : children
37673
+ },
37674
+ uniqueKey
37675
+ );
37732
37676
  }
37733
37677
  };
37734
37678
  return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
@@ -37775,7 +37719,6 @@ var PXEngineRenderer = ({
37775
37719
  BreadcrumbSeparator,
37776
37720
  Button,
37777
37721
  ButtonAtom,
37778
- CAMPAIGN_SEED_FIELDS,
37779
37722
  Calendar,
37780
37723
  CalendarAtom,
37781
37724
  CampaignSeedCard,
@@ -37929,7 +37872,6 @@ var PXEngineRenderer = ({
37929
37872
  ResizableAtom,
37930
37873
  ResizablePanel,
37931
37874
  ResizablePanelGroup,
37932
- SEARCH_SPEC_FIELDS,
37933
37875
  ScrollArea,
37934
37876
  ScrollAreaAtom,
37935
37877
  ScrollBar,