pxengine 0.1.19 → 0.1.22

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
@@ -73,6 +73,7 @@ __export(index_exports, {
73
73
  ButtonAtom: () => ButtonAtom,
74
74
  Calendar: () => Calendar2,
75
75
  CalendarAtom: () => CalendarAtom,
76
+ CampaignConceptCard: () => CampaignConceptCard,
76
77
  CampaignSeedCard: () => CampaignSeedCard,
77
78
  Card: () => Card,
78
79
  CardAtom: () => CardAtom,
@@ -120,6 +121,7 @@ __export(index_exports, {
120
121
  CreatorActionHeader: () => CreatorActionHeader,
121
122
  CreatorGridCard: () => CreatorGridCard,
122
123
  CreatorProfileSummary: () => CreatorProfileSummary,
124
+ CreatorSearch: () => CreatorSearch,
123
125
  DataGrid: () => DataGrid,
124
126
  Dialog: () => Dialog,
125
127
  DialogAtom: () => DialogAtom,
@@ -292,7 +294,7 @@ __export(index_exports, {
292
294
  module.exports = __toCommonJS(index_exports);
293
295
 
294
296
  // src/render/PXEngineRenderer.tsx
295
- var import_react64 = __toESM(require("react"), 1);
297
+ var import_react66 = __toESM(require("react"), 1);
296
298
 
297
299
  // src/atoms/index.ts
298
300
  var atoms_exports = {};
@@ -405,7 +407,8 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
405
407
  outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
406
408
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
407
409
  ghost: "hover:bg-accent hover:text-accent-foreground",
408
- link: "text-primary underline-offset-4 hover:underline"
410
+ link: "text-primary underline-offset-4 hover:underline",
411
+ purple: "bg-purpleLight dark:bg-purple200 hover:bg-purpleText1 dark:hover:bg-purple100 text-purpleText2 dark:text-purpleText border border-purpleText1 dark:border-purpleText shadow-none font-medium"
409
412
  },
410
413
  size: {
411
414
  default: "h-10 px-4 py-2",
@@ -25549,7 +25552,8 @@ var badgeVariants = (0, import_class_variance_authority3.cva)(
25549
25552
  default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
25550
25553
  secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
25551
25554
  destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
25552
- outline: "text-foreground"
25555
+ outline: "text-foreground",
25556
+ purple: "bg-purpleLight dark:bg-purple200 hover:bg-purpleText1 dark:hover:bg-purple100 text-purpleText2 dark:text-purpleText border border-purpleText1 dark:border-purpleText"
25553
25557
  }
25554
25558
  },
25555
25559
  defaultVariants: {
@@ -33549,6 +33553,7 @@ __export(molecules_exports, {
33549
33553
  AudienceDemographicsCard: () => AudienceDemographicsCard,
33550
33554
  AudienceMetricCard: () => AudienceMetricCard,
33551
33555
  BrandAffinityGroup: () => BrandAffinityGroup,
33556
+ CampaignConceptCard: () => CampaignConceptCard,
33552
33557
  CampaignSeedCard: () => CampaignSeedCard,
33553
33558
  ContentPreviewGallery: () => ContentPreviewGallery,
33554
33559
  CountrySelectDisplay: () => CountrySelectDisplay,
@@ -33556,6 +33561,7 @@ __export(molecules_exports, {
33556
33561
  CreatorActionHeader: () => CreatorActionHeader,
33557
33562
  CreatorGridCard: () => CreatorGridCard,
33558
33563
  CreatorProfileSummary: () => CreatorProfileSummary,
33564
+ CreatorSearch: () => CreatorSearch,
33559
33565
  DataGrid: () => DataGrid,
33560
33566
  EditableField: () => EditableField,
33561
33567
  EmptyState: () => EmptyState,
@@ -33906,12 +33912,13 @@ var EditableField = import_react54.default.memo(
33906
33912
  onSave,
33907
33913
  onCancel,
33908
33914
  isSaving = false,
33909
- isChanged = false,
33910
33915
  config = {},
33911
33916
  className,
33912
33917
  renderDisplay,
33913
- renderEdit
33918
+ renderEdit,
33919
+ ...rest
33914
33920
  }) => {
33921
+ void rest;
33915
33922
  const [localValue, setLocalValue] = (0, import_react54.useState)(value);
33916
33923
  const inputRef = (0, import_react54.useRef)(null);
33917
33924
  (0, import_react54.useEffect)(() => {
@@ -33948,7 +33955,7 @@ var EditableField = import_react54.default.memo(
33948
33955
  onKeyDown: handleKeyDown,
33949
33956
  placeholder: config.placeholder,
33950
33957
  rows: config.rows || 3,
33951
- className: "min-h-[80px] resize-none"
33958
+ className: "min-h-[80px] resize-none bg-background dark:bg-gray100 border-gray300"
33952
33959
  }
33953
33960
  );
33954
33961
  case "select":
@@ -33977,9 +33984,12 @@ var EditableField = import_react54.default.memo(
33977
33984
  /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
33978
33985
  Slider,
33979
33986
  {
33980
- defaultValue: [localValue?.min || 0, localValue?.max || 100],
33981
- max: config.sliderConfig?.max || 100,
33987
+ defaultValue: [
33988
+ localValue?.min || 0,
33989
+ localValue?.max || 100
33990
+ ],
33982
33991
  min: config.sliderConfig?.min || 0,
33992
+ max: config.sliderConfig?.max || 100,
33983
33993
  step: config.sliderConfig?.step || 1,
33984
33994
  onValueChange: ([min2, max2]) => setLocalValue({ min: min2, max: max2 })
33985
33995
  }
@@ -33997,7 +34007,8 @@ var EditableField = import_react54.default.memo(
33997
34007
  onKeyDown: handleKeyDown,
33998
34008
  min: config.numberConfig?.min,
33999
34009
  max: config.numberConfig?.max,
34000
- step: config.numberConfig?.step
34010
+ step: config.numberConfig?.step,
34011
+ className: "bg-background dark:bg-gray100 border-gray300"
34001
34012
  }
34002
34013
  );
34003
34014
  default:
@@ -34009,7 +34020,8 @@ var EditableField = import_react54.default.memo(
34009
34020
  value: localValue || "",
34010
34021
  onChange: (e) => setLocalValue(e.target.value),
34011
34022
  onKeyDown: handleKeyDown,
34012
- placeholder: config.placeholder
34023
+ placeholder: config.placeholder,
34024
+ className: "bg-background dark:bg-gray100 border-gray300"
34013
34025
  }
34014
34026
  );
34015
34027
  }
@@ -34019,60 +34031,77 @@ var EditableField = import_react54.default.memo(
34019
34031
  if (type === "slider") {
34020
34032
  return config.sliderConfig?.formatValue ? config.sliderConfig.formatValue(value) : `${value?.min} - ${value?.max}`;
34021
34033
  }
34022
- if (!value) return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "opacity-0", children: "-" });
34034
+ if (!value) {
34035
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "opacity-0", children: "-" });
34036
+ }
34023
34037
  return value.toString();
34024
34038
  };
34025
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: cn("group flex flex-col gap-1 py-1.5", className), children: [
34026
- /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center justify-between", children: [
34027
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Label, { className: "text-[13px] font-bold text-foreground opacity-80 uppercase tracking-wider", children: label }),
34028
- isChanged && !isEditingProp && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34029
- "div",
34030
- {
34031
- className: "w-2 h-2 rounded-full bg-amber-500 shadow-[0_0_8px_rgba(245,158,11,0.6)]",
34032
- title: "Unsaved changes"
34033
- }
34034
- )
34035
- ] }),
34036
- isEditingProp ? /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex flex-col gap-3", children: [
34037
- renderInput(),
34038
- /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center justify-end gap-2", children: [
34039
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34040
- Button,
34041
- {
34042
- size: "icon",
34043
- variant: "outline",
34044
- className: "h-9 w-9 text-destructive border-destructive/20 hover:bg-destructive/10 rounded-xl",
34045
- onClick: onCancel,
34046
- disabled: isSaving,
34047
- children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(X, { className: "h-5 w-5" })
34048
- }
34049
- ),
34050
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34051
- Button,
34039
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
34040
+ "div",
34041
+ {
34042
+ className: cn(
34043
+ "relative z-10 group flex flex-col gap-2 p-3 bg-[#0A0A0A] rounded-md mb-8",
34044
+ className
34045
+ ),
34046
+ children: [
34047
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "flex justify-between items-start mb-2", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "w-full flex justify-between items-center flex-wrap gap-2", children: [
34048
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34049
+ "h4",
34050
+ {
34051
+ className: "px-2 py-1 tracking-widest bg-purple200/50 dark:bg-purple-500/20 text-purpleText dark:text-purple-400 text-[10px] font-bold rounded uppercase",
34052
+ style: { fontFamily: "Noto Sans, sans-serif" },
34053
+ children: label
34054
+ }
34055
+ ),
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: [
34057
+ "Suggested by an Agent",
34058
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34059
+ Pencil,
34060
+ {
34061
+ className: "h-3 w-3 hover:text-green-700 cursor-pointer",
34062
+ onClick: onEdit
34063
+ }
34064
+ )
34065
+ ] })
34066
+ ] }) }),
34067
+ isEditingProp ? /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex flex-col gap-3", children: [
34068
+ renderInput(),
34069
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "flex items-center justify-end gap-2", children: [
34070
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34071
+ Button,
34072
+ {
34073
+ size: "icon",
34074
+ variant: "outline",
34075
+ className: "h-8 w-8 text-destructive border-destructive/20 hover:bg-destructive/10 rounded-lg",
34076
+ onClick: onCancel,
34077
+ disabled: isSaving,
34078
+ children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(X, { className: "h-4 w-4" })
34079
+ }
34080
+ ),
34081
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34082
+ Button,
34083
+ {
34084
+ size: "icon",
34085
+ className: "h-8 w-8 bg-purpleLight text-purpleText2 hover:bg-purpleText1 rounded-lg border border-purpleText1 shadow-none",
34086
+ onClick: handleSave,
34087
+ disabled: isSaving,
34088
+ children: isSaving ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(LoaderCircle, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Check, { className: "h-4 w-4" })
34089
+ }
34090
+ )
34091
+ ] })
34092
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
34093
+ "div",
34052
34094
  {
34053
- size: "icon",
34054
- className: "h-9 w-9 bg-primary hover:opacity-90 text-primary-foreground rounded-xl shadow-lg shadow-primary/20",
34055
- onClick: handleSave,
34056
- disabled: isSaving,
34057
- children: isSaving ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(LoaderCircle, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Check, { className: "h-5 w-5" })
34095
+ className: cn(
34096
+ "relative flex items-center justify-between rounded-lg px-3 py-2",
34097
+ "text-[14px] text-foreground font-normal leading-relaxed"
34098
+ ),
34099
+ children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "flex-1", children: formattedValue() })
34058
34100
  }
34059
34101
  )
34060
- ] })
34061
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
34062
- "div",
34063
- {
34064
- className: cn(
34065
- "relative flex items-center justify-between rounded-xl px-2 py-1.5 transition-all duration-200",
34066
- "hover:bg-muted cursor-pointer border border-transparent hover:border-border group-hover:shadow-sm"
34067
- ),
34068
- onClick: onEdit,
34069
- children: [
34070
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "text-[14px] text-foreground font-semibold truncate flex-1 leading-relaxed", children: formattedValue() }),
34071
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Pencil, { className: "h-4 w-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
34072
- ]
34073
- }
34074
- )
34075
- ] });
34102
+ ]
34103
+ }
34104
+ );
34076
34105
  }
34077
34106
  );
34078
34107
  EditableField.displayName = "EditableField";
@@ -34130,6 +34159,7 @@ var ActionButton = import_react55.default.memo(
34130
34159
  "relative min-w-[140px] overflow-hidden group transition-all duration-300",
34131
34160
  "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%)]",
34132
34161
  variant === "outline" && "bg-transparent border-[var(--primary-color)] text-[var(--primary-color)] hover:bg-[var(--primary-color)]/5",
34162
+ variant === "purple" && "bg-gray100 hover:bg-gray200 text-foreground border border-purple100 shadow-none font-semibold px-8 py-3 h-auto",
34133
34163
  isLoading && "opacity-80"
34134
34164
  ),
34135
34165
  children: [
@@ -34182,94 +34212,103 @@ var FormCard = import_react56.default.memo(
34182
34212
  onFieldEdit,
34183
34213
  onFieldSave,
34184
34214
  onFieldCancel,
34185
- showTimeline = false,
34186
- // Default to false to remove "bullets"
34215
+ showTimeline = true,
34187
34216
  proceedLabel,
34188
- countdown,
34189
- isPaused = false,
34190
- onPause,
34191
34217
  onProceed,
34218
+ isLatestMessage = true,
34192
34219
  className,
34193
34220
  footer
34194
34221
  }) => {
34222
+ const [showCopyButton, setShowCopyButton] = (0, import_react56.useState)(false);
34195
34223
  const handleCopyAll = () => {
34196
- const text = fields.map(
34197
- (f) => `${f.label}: ${typeof data[f.key] === "object" ? JSON.stringify(data[f.key]) : data[f.key]}`
34198
- ).join("\n");
34224
+ const text = fields.map((field) => {
34225
+ const value = data[field.key];
34226
+ return `${field.label}: ${typeof value === "object" ? JSON.stringify(value) : value}`;
34227
+ }).join("\n");
34199
34228
  navigator.clipboard.writeText(text);
34200
34229
  };
34201
34230
  return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
34202
- Card,
34231
+ "div",
34203
34232
  {
34204
34233
  className: cn(
34205
- "w-full rounded-[24px] border border-border bg-card shadow-lg overflow-hidden transition-all duration-300 hover:shadow-xl",
34234
+ "relative w-full rounded-[20px] bg-background dark:bg-gray50 border border-gray400 shadow-lg overflow-hidden mb-6",
34206
34235
  className
34207
34236
  ),
34237
+ onMouseEnter: () => setShowCopyButton(true),
34238
+ onMouseLeave: () => setShowCopyButton(false),
34208
34239
  children: [
34209
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(CardHeader, { className: "flex flex-row items-center justify-between pb-3 pt-4 px-6 space-y-0", children: [
34210
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(CardTitle, { className: "text-lg font-bold text-foreground tracking-tight", children: title }),
34240
+ showCopyButton && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
34241
+ "button",
34242
+ {
34243
+ onClick: handleCopyAll,
34244
+ title: "Copy all details",
34245
+ className: "absolute top-4 right-4 p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray200 text-gray-400 hover:text-gray-600 dark:hover:text-gray300 transition-all active:scale-95 z-10",
34246
+ children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Copy, { className: "h-4 w-4" })
34247
+ }
34248
+ ),
34249
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "p-6 relative", children: [
34211
34250
  /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
34212
- "button",
34251
+ "h3",
34213
34252
  {
34214
- onClick: handleCopyAll,
34215
- className: "p-1.5 rounded-xl hover:bg-foreground/5 text-foreground/40 hover:text-foreground/60 transition-all active:scale-95",
34216
- title: "Copy all details",
34217
- children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Copy, { className: "h-4 w-4" })
34253
+ className: "text-gray900 mb-12",
34254
+ style: { fontFamily: "Noto Sans, sans-serif" },
34255
+ children: title
34218
34256
  }
34219
- )
34220
- ] }),
34221
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(CardContent, { className: "px-6 pt-1 pb-4", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "relative", children: [
34222
- showTimeline && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "absolute left-[7px] top-2 bottom-6 w-0.5 border-l-2 border-dotted border-border pointer-events-none" }),
34223
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "space-y-2.5", children: fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
34257
+ ),
34258
+ showTimeline && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
34224
34259
  "div",
34225
34260
  {
34226
- className: cn(
34227
- "relative transition-all duration-300",
34228
- showTimeline && "pl-8"
34229
- ),
34230
- children: [
34231
- showTimeline && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
34232
- "div",
34233
- {
34234
- className: cn(
34235
- "absolute left-0 top-[18px] w-[14px] h-[14px] -translate-x-1/2 rounded-full border-2 bg-background z-10 transition-all duration-300",
34236
- changedFields[field.key] ? "border-amber-500 shadow-[0_0_8px_rgba(245,158,11,0.4)]" : "border-border shadow-sm"
34237
- )
34238
- }
34239
- ),
34240
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
34241
- EditableField,
34242
- {
34243
- label: field.label,
34244
- value: data[field.key],
34245
- type: field.type,
34246
- config: field,
34247
- isEditing: editingFields[field.key],
34248
- isChanged: changedFields[field.key],
34249
- isSaving: savingFields[field.key],
34250
- onEdit: () => onFieldEdit?.(field.key),
34251
- onSave: (val) => onFieldSave?.(field.key, val),
34252
- onCancel: () => onFieldCancel?.(field.key)
34253
- }
34254
- )
34255
- ]
34261
+ className: "absolute z-0 left-[60px] top-[100px] bottom-[60px] w-[3px]",
34262
+ style: {
34263
+ background: `
34264
+ radial-gradient(circle closest-side, #3C3D3E 98%, transparent) 50%/2px 5px repeat-y,
34265
+ linear-gradient(#3C3D3E 50%, transparent 0) 50%/2px 10px repeat-y
34266
+ `
34267
+ }
34268
+ }
34269
+ ),
34270
+ fields.map((field, index) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
34271
+ EditableField,
34272
+ {
34273
+ label: field.label,
34274
+ value: data[field.key],
34275
+ type: field.type,
34276
+ config: field,
34277
+ isEditing: editingFields[field.key],
34278
+ isChanged: changedFields[field.key],
34279
+ isSaving: savingFields[field.key],
34280
+ isLatestMessage,
34281
+ onEdit: () => onFieldEdit?.(field.key),
34282
+ onSave: (val) => onFieldSave?.(field.key, val),
34283
+ onCancel: () => onFieldCancel?.(field.key),
34284
+ renderDisplay: field.renderDisplay,
34285
+ renderEdit: field.renderEdit,
34286
+ showIndex: showTimeline,
34287
+ index,
34288
+ totalFields: fields.length
34256
34289
  },
34257
34290
  field.key
34258
- )) })
34259
- ] }) }),
34260
- (onProceed || footer) && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(CardFooter, { className: "flex flex-col gap-3 border-t border-border bg-foreground/[0.03] p-6", children: [
34261
- onProceed && proceedLabel && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "w-full flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
34262
- ActionButton,
34263
- {
34264
- label: proceedLabel,
34265
- countdown,
34266
- isPaused,
34267
- onPause,
34268
- onProceed
34269
- }
34270
- ) }),
34271
- footer
34272
- ] })
34291
+ ))
34292
+ ] }),
34293
+ isLatestMessage && onProceed && proceedLabel ? /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "my-6 flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
34294
+ "button",
34295
+ {
34296
+ onClick: () => {
34297
+ if (isLatestMessage) {
34298
+ onProceed();
34299
+ }
34300
+ },
34301
+ className: cn(
34302
+ "px-6 py-2.5 border rounded-full transition-colors text-sm font-medium flex items-center gap-2",
34303
+ "bg-purpleLight dark:bg-purple200 text-purpleText2 dark:text-purpleText border-purpleText1 dark:border-purple100",
34304
+ "hover:bg-purpleText1 dark:hover:bg-purple100 dark:hover:text-white"
34305
+ ),
34306
+ children: [
34307
+ proceedLabel,
34308
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(ChevronRight, { className: "w-4 h-4" })
34309
+ ]
34310
+ }
34311
+ ) }) : !isLatestMessage && footer ? /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "flex justify-end items-center pb-4 pr-4 gap-1 text-green-600 text-sm font-medium", children: footer }) : null
34273
34312
  ]
34274
34313
  }
34275
34314
  );
@@ -34791,59 +34830,41 @@ var CampaignSeedCard = import_react59.default.memo(
34791
34830
  const fields = (0, import_react59.useMemo)(() => {
34792
34831
  return providedFields || generateFieldsFromData(data);
34793
34832
  }, [providedFields, data]);
34794
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
34795
- FormCard,
34796
- {
34797
- ...formCardProps,
34798
- data,
34799
- title: formCardProps.title || "Campaign Brief",
34800
- fields,
34801
- className,
34802
- footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1", children: [
34803
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CircleCheck, { className: "h-4 w-4" }),
34804
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
34805
- ] }) : formCardProps.footer
34806
- }
34807
- ) });
34833
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex flex-col gap-2 mb-10", children: [
34834
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
34835
+ FormCard,
34836
+ {
34837
+ ...formCardProps,
34838
+ data,
34839
+ title: formCardProps.title || "Campaign Brief",
34840
+ fields,
34841
+ className,
34842
+ footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1 mb-6", children: [
34843
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(CircleCheck, { className: "h-4 w-4" }),
34844
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
34845
+ ] }) : formCardProps.footer
34846
+ }
34847
+ ),
34848
+ !isLatestMessage && selectionStatus && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "flex justify-center mt-4", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
34849
+ "button",
34850
+ {
34851
+ className: cn(
34852
+ "flex items-center gap-2 px-6 py-2.5 border rounded-full text-sm transition-all active:scale-95",
34853
+ "bg-purpleLight dark:bg-purple200 hover:bg-purpleText1 dark:hover:bg-purple100 text-purpleText2 dark:text-purpleText border-purpleText1 dark:border-purpleText dark:hover:text-white"
34854
+ ),
34855
+ children: "Continue"
34856
+ }
34857
+ ) })
34858
+ ] });
34808
34859
  }
34809
34860
  );
34810
34861
  CampaignSeedCard.displayName = "CampaignSeedCard";
34811
34862
 
34812
34863
  // src/molecules/creator-discovery/SearchSpecCard/SearchSpecCard.tsx
34813
- var import_react60 = __toESM(require("react"), 1);
34814
- var import_jsx_runtime107 = require("react/jsx-runtime");
34815
- var SearchSpecCard = import_react60.default.memo(
34816
- ({
34817
- selectionStatus,
34818
- isLatestMessage = true,
34819
- className,
34820
- fields: providedFields,
34821
- data,
34822
- ...formCardProps
34823
- }) => {
34824
- const fields = (0, import_react60.useMemo)(() => {
34825
- return providedFields || generateFieldsFromData(data);
34826
- }, [providedFields, data]);
34827
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
34828
- FormCard,
34829
- {
34830
- ...formCardProps,
34831
- data,
34832
- title: formCardProps.title || "Search Specification",
34833
- fields,
34834
- className,
34835
- footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1", children: [
34836
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(CircleCheck, { className: "h-4 w-4" }),
34837
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
34838
- ] }) : formCardProps.footer
34839
- }
34840
- );
34841
- }
34842
- );
34843
- SearchSpecCard.displayName = "SearchSpecCard";
34864
+ var import_react61 = __toESM(require("react"), 1);
34844
34865
 
34845
34866
  // src/molecules/creator-discovery/SearchSpecCard/CustomFieldRenderers.tsx
34846
- var import_react61 = require("react");
34867
+ var import_react60 = require("react");
34847
34868
 
34848
34869
  // src/lib/countries.ts
34849
34870
  var countries = [
@@ -35050,15 +35071,15 @@ var countriesWithFlags = Object.fromEntries(
35050
35071
  );
35051
35072
 
35052
35073
  // src/molecules/creator-discovery/SearchSpecCard/CustomFieldRenderers.tsx
35053
- var import_jsx_runtime108 = require("react/jsx-runtime");
35074
+ var import_jsx_runtime107 = require("react/jsx-runtime");
35054
35075
  var CountrySelectEdit = ({
35055
35076
  value,
35056
35077
  onChange
35057
35078
  }) => {
35058
- const [isDropdownOpen, setIsDropdownOpen] = (0, import_react61.useState)(false);
35059
- const [searchTerm, setSearchTerm] = (0, import_react61.useState)("");
35060
- const dropdownRef = (0, import_react61.useRef)(null);
35061
- (0, import_react61.useEffect)(() => {
35079
+ const [isDropdownOpen, setIsDropdownOpen] = (0, import_react60.useState)(false);
35080
+ const [searchTerm, setSearchTerm] = (0, import_react60.useState)("");
35081
+ const dropdownRef = (0, import_react60.useRef)(null);
35082
+ (0, import_react60.useEffect)(() => {
35062
35083
  const handleClickOutside = (event) => {
35063
35084
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
35064
35085
  setIsDropdownOpen(false);
@@ -35068,16 +35089,16 @@ var CountrySelectEdit = ({
35068
35089
  return () => document.removeEventListener("mousedown", handleClickOutside);
35069
35090
  }, []);
35070
35091
  const inputValue = Array.isArray(value) ? value : [];
35071
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "space-y-3", children: [
35072
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "relative", ref: dropdownRef, children: [
35073
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
35092
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "space-y-3", children: [
35093
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "relative", ref: dropdownRef, children: [
35094
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
35074
35095
  "div",
35075
35096
  {
35076
35097
  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",
35077
35098
  onClick: () => setIsDropdownOpen(!isDropdownOpen),
35078
35099
  children: [
35079
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-gray-700", children: inputValue.length > 0 ? `${inputValue.length} ${inputValue.length === 1 ? "country" : "countries"} selected` : "Select countries..." }),
35080
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35100
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "text-gray-700", children: inputValue.length > 0 ? `${inputValue.length} ${inputValue.length === 1 ? "country" : "countries"} selected` : "Select countries..." }),
35101
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
35081
35102
  ChevronDown,
35082
35103
  {
35083
35104
  className: cn(
@@ -35089,8 +35110,8 @@ var CountrySelectEdit = ({
35089
35110
  ]
35090
35111
  }
35091
35112
  ),
35092
- isDropdownOpen && /* @__PURE__ */ (0, import_jsx_runtime108.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: [
35093
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "p-2 border-b border-gray-100", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35113
+ isDropdownOpen && /* @__PURE__ */ (0, import_jsx_runtime107.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: [
35114
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "p-2 border-b border-gray-100", children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
35094
35115
  "input",
35095
35116
  {
35096
35117
  type: "text",
@@ -35101,9 +35122,9 @@ var CountrySelectEdit = ({
35101
35122
  onClick: (e) => e.stopPropagation()
35102
35123
  }
35103
35124
  ) }),
35104
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "max-h-40 overflow-y-auto p-1", children: countries.filter(
35125
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "max-h-40 overflow-y-auto p-1", children: countries.filter(
35105
35126
  (country) => country.name.toLowerCase().includes(searchTerm.toLowerCase()) || country.code.toLowerCase().includes(searchTerm.toLowerCase())
35106
- ).map((country) => /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
35127
+ ).map((country) => /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
35107
35128
  "div",
35108
35129
  {
35109
35130
  className: cn(
@@ -35124,31 +35145,31 @@ var CountrySelectEdit = ({
35124
35145
  }
35125
35146
  },
35126
35147
  children: [
35127
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex items-center gap-2", children: [
35128
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-sm text-gray-700", children: country.name }),
35129
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-xs text-gray-400 font-mono", children: country.code })
35148
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center gap-2", children: [
35149
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "text-sm text-gray-700", children: country.name }),
35150
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "text-xs text-gray-400 font-mono", children: country.code })
35130
35151
  ] }),
35131
- inputValue.includes(country.code) && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Check, { className: "h-4 w-4 text-purple500" })
35152
+ inputValue.includes(country.code) && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Check, { className: "h-4 w-4 text-purple500" })
35132
35153
  ]
35133
35154
  },
35134
35155
  country.code
35135
35156
  )) })
35136
35157
  ] })
35137
35158
  ] }),
35138
- inputValue.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "flex flex-wrap gap-1.5", children: inputValue.map((countryCode) => /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
35159
+ inputValue.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex flex-wrap gap-1.5", children: inputValue.map((countryCode) => /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
35139
35160
  Badge2,
35140
35161
  {
35141
35162
  variant: "secondary",
35142
35163
  className: "bg-purple50 text-purple700 border-purple100 hover:bg-purple100 cursor-default flex items-center gap-1 pr-1",
35143
35164
  children: [
35144
35165
  countryCode,
35145
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
35166
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
35146
35167
  "button",
35147
35168
  {
35148
35169
  onClick: () => onChange(inputValue.filter((c) => c !== countryCode)),
35149
35170
  className: "hover:bg-purple200 rounded-full p-0.5 transition-colors",
35150
35171
  children: [
35151
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(ChevronDown, { className: "h-3 w-3 rotate-45" }),
35172
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(ChevronDown, { className: "h-3 w-3 rotate-45" }),
35152
35173
  " "
35153
35174
  ]
35154
35175
  }
@@ -35161,9 +35182,9 @@ var CountrySelectEdit = ({
35161
35182
  };
35162
35183
  var CountrySelectDisplay = ({ value }) => {
35163
35184
  if (!value || !Array.isArray(value) || value.length === 0) {
35164
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-muted-foreground italic", children: "Not specified" });
35185
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "text-muted-foreground italic", children: "Not specified" });
35165
35186
  }
35166
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "flex flex-wrap gap-1.5", children: value.map((countryCode) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35187
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex flex-wrap gap-1.5", children: value.map((countryCode) => /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
35167
35188
  Badge2,
35168
35189
  {
35169
35190
  variant: "outline",
@@ -35185,22 +35206,22 @@ var KeywordBundlesEdit = ({
35185
35206
  groups[p].push({ bundle: b, index: idx });
35186
35207
  });
35187
35208
  const sortedPriorities = Object.keys(groups).map((n) => parseInt(n)).sort((a, b) => a - b);
35188
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "space-y-6 pt-2", children: sortedPriorities.map((priority) => /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "space-y-3", children: [
35189
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex items-center gap-2", children: [
35190
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(Badge2, { className: "bg-purple500 hover:bg-purple500", children: [
35209
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "space-y-6 pt-2", children: sortedPriorities.map((priority) => /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "space-y-3", children: [
35210
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center gap-2", children: [
35211
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(Badge2, { className: "bg-purple500 hover:bg-purple500", children: [
35191
35212
  "Priority ",
35192
35213
  priority
35193
35214
  ] }),
35194
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "h-px flex-1 bg-gray-100" })
35215
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "h-px flex-1 bg-gray-100" })
35195
35216
  ] }),
35196
- groups[priority].map(({ bundle, index: bundleIndex }) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35217
+ groups[priority].map(({ bundle, index: bundleIndex }) => /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
35197
35218
  "div",
35198
35219
  {
35199
35220
  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",
35200
- children: /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex flex-col gap-3", children: [
35201
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Keywords" }),
35202
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "space-y-3", children: [
35203
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "flex flex-wrap gap-1.5", children: Array.isArray(bundle.keywords) && bundle.keywords.map((keyword, kIndex) => /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
35221
+ children: /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex flex-col gap-3", children: [
35222
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Keywords" }),
35223
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "space-y-3", children: [
35224
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex flex-wrap gap-1.5", children: Array.isArray(bundle.keywords) && bundle.keywords.map((keyword, kIndex) => /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
35204
35225
  Badge2,
35205
35226
  {
35206
35227
  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",
@@ -35216,12 +35237,12 @@ var KeywordBundlesEdit = ({
35216
35237
  },
35217
35238
  children: [
35218
35239
  keyword,
35219
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "ml-1 opacity-0 group-hover:opacity-100 transition-opacity", children: "\xD7" })
35240
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "ml-1 opacity-0 group-hover:opacity-100 transition-opacity", children: "\xD7" })
35220
35241
  ]
35221
35242
  },
35222
35243
  kIndex
35223
35244
  )) }),
35224
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "flex gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35245
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
35225
35246
  "input",
35226
35247
  {
35227
35248
  type: "text",
@@ -35245,9 +35266,9 @@ var KeywordBundlesEdit = ({
35245
35266
  }
35246
35267
  ) })
35247
35268
  ] }),
35248
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex flex-col gap-1.5 mt-1", children: [
35249
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Priority Level (1-5)" }),
35250
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35269
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex flex-col gap-1.5 mt-1", children: [
35270
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Priority Level (1-5)" }),
35271
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
35251
35272
  "input",
35252
35273
  {
35253
35274
  type: "number",
@@ -35275,7 +35296,7 @@ var KeywordBundlesEdit = ({
35275
35296
  var KeywordBundlesDisplay = ({ value }) => {
35276
35297
  const bundles = Array.isArray(value) ? value : [];
35277
35298
  if (bundles.length === 0)
35278
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-muted-foreground italic", children: "Not specified" });
35299
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "text-gray-500 italic text-sm", children: "Not specified" });
35279
35300
  const groups = {};
35280
35301
  bundles.forEach((b) => {
35281
35302
  const p = Number(b?.priority) || 1;
@@ -35284,28 +35305,20 @@ var KeywordBundlesDisplay = ({ value }) => {
35284
35305
  groups[p].push(...keywords);
35285
35306
  });
35286
35307
  const sortedPriorities = Object.keys(groups).map((n) => parseInt(n)).sort((a, b) => a - b);
35287
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "space-y-4 pt-1", children: sortedPriorities.map((priority) => {
35308
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "space-y-4 pt-2", children: sortedPriorities.map((priority) => {
35288
35309
  const deduped = Array.from(new Set(groups[priority]));
35289
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "space-y-2", children: [
35290
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex items-center gap-2", children: [
35291
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
35292
- Badge2,
35293
- {
35294
- variant: "outline",
35295
- className: "text-[10px] uppercase tracking-wider text-purple600 border-purple100 bg-purple50/30",
35296
- children: [
35297
- "Priority ",
35298
- priority
35299
- ]
35300
- }
35301
- ),
35302
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "h-px flex-1 bg-gray-100/50" })
35310
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "space-y-2", children: [
35311
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center gap-2", children: [
35312
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("span", { className: "text-[10px] uppercase tracking-widest text-purple-400 font-bold", children: [
35313
+ "Priority ",
35314
+ priority
35315
+ ] }),
35316
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "h-[1px] flex-1 bg-white/10" })
35303
35317
  ] }),
35304
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "flex flex-wrap gap-1.5", children: deduped.map((keyword) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35305
- Badge2,
35318
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "flex flex-wrap gap-2", children: deduped.map((keyword) => /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
35319
+ "div",
35306
35320
  {
35307
- variant: "secondary",
35308
- className: "bg-white border-gray-200 text-gray-700 font-medium",
35321
+ className: "px-2 py-1 rounded bg-[#1A1A1A] border border-white/10 text-gray-300 text-xs font-medium",
35309
35322
  children: keyword
35310
35323
  },
35311
35324
  keyword
@@ -35314,6 +35327,98 @@ var KeywordBundlesDisplay = ({ value }) => {
35314
35327
  }) });
35315
35328
  };
35316
35329
 
35330
+ // src/molecules/creator-discovery/SearchSpecCard/SearchSpecCard.tsx
35331
+ var import_jsx_runtime108 = require("react/jsx-runtime");
35332
+ var ObjectDisplay = ({ value }) => {
35333
+ if (!value || typeof value !== "object") return null;
35334
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "space-y-1 pt-1", children: Object.entries(value).map(([k, v]) => /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex gap-2 text-sm", children: [
35335
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("span", { className: "text-muted-foreground capitalize min-w-[120px]", children: [
35336
+ k.replace(/_/g, " "),
35337
+ ":"
35338
+ ] }),
35339
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-foreground font-medium", children: Array.isArray(v) ? v.join(", ") : String(v) })
35340
+ ] }, k)) });
35341
+ };
35342
+ var StringArrayDisplay = ({ value }) => {
35343
+ if (!Array.isArray(value) || value.length === 0)
35344
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-muted-foreground italic text-sm", children: "Not specified" });
35345
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "flex flex-wrap gap-1.5 pt-1", children: value.map((item) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Badge2, { variant: "outline", className: "text-xs", children: item }, item)) });
35346
+ };
35347
+ function buildSearchSpecFields(data) {
35348
+ if (!data || typeof data !== "object") return [];
35349
+ return Object.keys(data).map((key) => {
35350
+ const value = data[key];
35351
+ if (key === "keyword_bundles") {
35352
+ return {
35353
+ key,
35354
+ label: "Keyword Bundles",
35355
+ type: "custom",
35356
+ renderDisplay: (v) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(KeywordBundlesDisplay, { value: v }),
35357
+ renderEdit: (v, onChange) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(KeywordBundlesEdit, { value: v, onChange })
35358
+ };
35359
+ }
35360
+ if (key === "geography") {
35361
+ return {
35362
+ key,
35363
+ label: "Geography",
35364
+ type: "custom",
35365
+ renderDisplay: (v) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(CountrySelectDisplay, { value: v }),
35366
+ renderEdit: (v, onChange) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(CountrySelectEdit, { value: v, onChange })
35367
+ };
35368
+ }
35369
+ if (key === "platforms" && Array.isArray(value)) {
35370
+ return {
35371
+ key,
35372
+ label: "Platforms",
35373
+ type: "custom",
35374
+ renderDisplay: (v) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(StringArrayDisplay, { value: v })
35375
+ };
35376
+ }
35377
+ if (typeof value === "object" && value !== null && !Array.isArray(value) && !("min" in value && "max" in value)) {
35378
+ const label = key.split("_").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
35379
+ return {
35380
+ key,
35381
+ label,
35382
+ type: "custom",
35383
+ renderDisplay: (v) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(ObjectDisplay, { value: v })
35384
+ };
35385
+ }
35386
+ const [generated] = generateFieldsFromData({ [key]: value });
35387
+ return generated;
35388
+ });
35389
+ }
35390
+ var SearchSpecCard = import_react61.default.memo(
35391
+ ({
35392
+ selectionStatus,
35393
+ isLatestMessage = true,
35394
+ className,
35395
+ fields: providedFields,
35396
+ data,
35397
+ specData,
35398
+ ...formCardProps
35399
+ }) => {
35400
+ const resolvedData = data || specData;
35401
+ const fields = (0, import_react61.useMemo)(() => {
35402
+ return providedFields || buildSearchSpecFields(resolvedData ?? {});
35403
+ }, [providedFields, resolvedData]);
35404
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35405
+ FormCard,
35406
+ {
35407
+ ...formCardProps,
35408
+ data: resolvedData ?? {},
35409
+ title: formCardProps.title || "Search Specification",
35410
+ fields,
35411
+ className,
35412
+ 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: [
35413
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(CircleCheck, { className: "h-4 w-4" }),
35414
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
35415
+ ] }) : formCardProps.footer
35416
+ }
35417
+ );
35418
+ }
35419
+ );
35420
+ SearchSpecCard.displayName = "SearchSpecCard";
35421
+
35317
35422
  // src/molecules/creator-discovery/MCQCard/MCQCard.tsx
35318
35423
  var import_react62 = __toESM(require("react"), 1);
35319
35424
  var import_jsx_runtime109 = require("react/jsx-runtime");
@@ -35322,116 +35427,123 @@ var MCQCard = import_react62.default.memo(
35322
35427
  question,
35323
35428
  options,
35324
35429
  recommended,
35325
- selectedOption,
35430
+ selectedOption: propsSelectedOption,
35326
35431
  onSelect,
35327
- onAction,
35432
+ onProceed,
35328
35433
  isLatestMessage = true,
35329
- countdown,
35330
- isPaused = false,
35331
- onPause,
35332
35434
  isLoading = false,
35333
35435
  className,
35334
- selectionStatus
35436
+ selectionStatus,
35437
+ onAction,
35438
+ disabled = false
35335
35439
  }) => {
35336
- const [localSelected, setLocalSelected] = (0, import_react62.useState)(null);
35337
- const effectiveSelected = selectedOption ?? localSelected;
35338
- const handleOptionClick = (key) => {
35339
- if (!isLoading) {
35340
- setLocalSelected(key);
35440
+ const [selectedOption, setSelectedOption] = import_react62.default.useState(propsSelectedOption);
35441
+ const [isProceeded, setIsProceeded] = import_react62.default.useState(false);
35442
+ import_react62.default.useEffect(() => {
35443
+ if (propsSelectedOption) {
35444
+ setSelectedOption(propsSelectedOption);
35445
+ setIsProceeded(true);
35446
+ }
35447
+ }, [propsSelectedOption]);
35448
+ const handleOptionClick = (key, e) => {
35449
+ e.preventDefault();
35450
+ e.stopPropagation();
35451
+ if (isLatestMessage && !isLoading && !disabled && !isProceeded) {
35452
+ setSelectedOption(key);
35341
35453
  onSelect?.(key);
35342
35454
  }
35343
35455
  };
35344
- const handleProceed = () => {
35345
- const value = effectiveSelected || recommended || "";
35346
- if (value) {
35347
- if (onAction) {
35348
- onAction(value);
35349
- }
35456
+ const handleProceed = (e) => {
35457
+ e.preventDefault();
35458
+ e.stopPropagation();
35459
+ if ((selectedOption || recommended) && !disabled && !isProceeded) {
35460
+ const result = selectedOption || recommended || "";
35461
+ setIsProceeded(true);
35462
+ onProceed?.(result);
35463
+ onAction?.({
35464
+ type: "mcq_selection",
35465
+ value: result,
35466
+ label: options[result] || result
35467
+ });
35350
35468
  }
35351
35469
  };
35470
+ const isInteractionDisabled = disabled || !isLatestMessage || isProceeded;
35352
35471
  return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
35353
- Card,
35472
+ "div",
35354
35473
  {
35355
35474
  className: cn(
35356
- "w-full rounded-[24px] border border-border bg-card shadow-sm overflow-hidden",
35475
+ "p-6 rounded-[20px] border border-gray400 bg-background dark:bg-gray200 font-noto w-full",
35357
35476
  className
35358
35477
  ),
35359
35478
  children: [
35360
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(CardHeader, { className: "pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(CardTitle, { className: "text-lg font-bold text-foreground tracking-tight leading-snug", children: question }) }),
35361
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(CardContent, { className: "space-y-3 pb-6", children: Object.entries(options).map(([key, label]) => {
35362
- const isSelected = effectiveSelected === key;
35479
+ /* @__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 }) }),
35480
+ /* @__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]) => {
35481
+ const isSelected = selectedOption === key;
35363
35482
  const isRecommended = key === recommended;
35364
35483
  return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
35365
35484
  "div",
35366
35485
  {
35367
- onClick: () => handleOptionClick(key),
35486
+ onClick: (e) => handleOptionClick(key, e),
35368
35487
  className: cn(
35369
- "group relative flex items-start gap-4 p-4 rounded-2xl border transition-all duration-200 cursor-pointer",
35370
- isSelected ? "border-primary bg-primary/5 shadow-[0_0_0_1px_theme(colors.primary.DEFAULT)]" : "border-border bg-background/30 hover:border-gray-300 hover:bg-background/50",
35371
- isLoading && "opacity-50 cursor-not-allowed"
35488
+ "cursor-pointer rounded-xl p-3 transition-colors relative",
35489
+ "border border-transparent bg-paperBackground",
35490
+ !selectedOption && !isInteractionDisabled && "hover:border-gray500",
35491
+ (isLoading || isInteractionDisabled) && "opacity-50 cursor-not-allowed"
35372
35492
  ),
35373
35493
  children: [
35374
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35494
+ /* @__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)(
35375
35495
  "div",
35376
35496
  {
35377
35497
  className: cn(
35378
- "mt-1 w-5 h-5 rounded-full border-2 flex items-center justify-center transition-colors",
35379
- isSelected ? "border-primary bg-primary" : "border-border bg-background group-hover:border-gray-400"
35498
+ "w-5 h-5 rounded-full border flex items-center justify-center transition-colors",
35499
+ isSelected ? "border-purple100 bg-gray300" : cn(
35500
+ "border-gray300 bg-background",
35501
+ !selectedOption && !isInteractionDisabled && "hover:border-purple100"
35502
+ )
35380
35503
  ),
35381
- children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "w-1.5 h-1.5 rounded-full bg-white" })
35504
+ children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "w-2.5 h-2.5 rounded-full bg-purple100" })
35382
35505
  }
35383
- ),
35384
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex-1 space-y-1.5", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "flex items-center gap-2 flex-wrap", children: [
35385
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35386
- "span",
35387
- {
35388
- className: cn(
35389
- "text-sm font-semibold transition-colors",
35390
- isSelected ? "text-foreground" : "text-foreground/80"
35391
- ),
35392
- children: label
35393
- }
35394
- ),
35395
- isRecommended && /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
35396
- Badge2,
35397
- {
35398
- variant: "outline",
35399
- className: "bg-green-500/10 text-green-500 border-green-500/20 flex items-center gap-1 text-[10px] py-0 h-5",
35400
- children: [
35401
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Sparkles, { className: "h-3 w-3" }),
35402
- "Recommended"
35403
- ]
35404
- }
35405
- ),
35406
- isSelected && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35407
- Badge2,
35408
- {
35409
- variant: "outline",
35410
- className: "bg-[var(--primary-color)]/10 text-[var(--primary-color)] border-[var(--primary-color)]/20 text-[10px] py-0 h-5",
35411
- children: "Selected"
35412
- }
35413
- )
35414
- ] }) })
35506
+ ) }),
35507
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "pl-12", children: [
35508
+ (isRecommended || isSelected) && /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "flex gap-2 mb-2 flex-wrap", children: [
35509
+ isRecommended && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex text-xs font-semibold", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("p", { className: "bg-greenBackground text-greenText px-2 py-1 rounded-[20px]", children: "Recommended" }) }),
35510
+ isSelected && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex text-xs font-semibold", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35511
+ "p",
35512
+ {
35513
+ className: cn(
35514
+ "px-2 py-1 rounded-[20px]",
35515
+ selectedOption === recommended ? "bg-purpleLight text-purpleText2 dark:bg-primary/20 dark:text-primary" : "bg-paperBackground text-primaryDark2 dark:bg-primary/20 dark:text-primary"
35516
+ ),
35517
+ children: "Selected by you"
35518
+ }
35519
+ ) })
35520
+ ] }),
35521
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "text-base font-medium text-txtColor", children: label })
35522
+ ] })
35415
35523
  ]
35416
35524
  },
35417
35525
  key
35418
35526
  );
35419
- }) }),
35420
- /* @__PURE__ */ (0, import_jsx_runtime109.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_runtime109.jsx)("div", { className: "w-full flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35421
- ActionButton,
35422
- {
35423
- label: effectiveSelected ? "Continue" : "Proceed with Recommendation",
35424
- countdown,
35425
- isPaused,
35426
- onPause,
35427
- onProceed: handleProceed,
35428
- isLoading,
35429
- disabled: !effectiveSelected && !recommended
35430
- }
35431
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "w-full flex justify-end items-center gap-1.5 text-green-500 text-xs font-semibold", children: [
35432
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(CircleCheck, { className: "h-4 w-4" }),
35433
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { children: selectionStatus === "agent" ? "Suggested by Agent, Approved by You" : "Selected by You" })
35434
- ] }) })
35527
+ }) }) }),
35528
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "flex justify-between items-center", children: [
35529
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex-1" }),
35530
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35531
+ "button",
35532
+ {
35533
+ onClick: (e) => handleProceed(e),
35534
+ disabled: isInteractionDisabled || isLoading || !selectedOption && !recommended,
35535
+ className: cn(
35536
+ "flex-3 px-4 py-2 border rounded-full text-sm disabled:opacity-50 disabled:cursor-not-allowed transition-colors",
35537
+ "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"
35538
+ ),
35539
+ children: isLoading ? "Sending..." : "Continue"
35540
+ }
35541
+ ),
35542
+ 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: [
35543
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "whitespace-nowrap", children: "Suggested by an Agent," }),
35544
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "whitespace-nowrap", children: "Approved by You" })
35545
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { children: "Selected by you" }) })
35546
+ ] })
35435
35547
  ]
35436
35548
  }
35437
35549
  );
@@ -35911,6 +36023,216 @@ var CreatorActionHeader = ({
35911
36023
  );
35912
36024
  };
35913
36025
 
36026
+ // src/molecules/creator-discovery/CreatorSearchBox/CreatorSearch.tsx
36027
+ var import_react63 = __toESM(require("react"), 1);
36028
+ var import_jsx_runtime120 = require("react/jsx-runtime");
36029
+ var CreatorSearch = import_react63.default.memo(
36030
+ ({
36031
+ selectionStatus,
36032
+ isLatestMessage = true,
36033
+ className,
36034
+ fields: providedFields,
36035
+ data,
36036
+ ...formCardProps
36037
+ }) => {
36038
+ const fields = (0, import_react63.useMemo)(() => {
36039
+ const baseFields = providedFields || generateFieldsFromData(data);
36040
+ return baseFields.map((field) => {
36041
+ if (field.key === "platforms") {
36042
+ return {
36043
+ ...field,
36044
+ renderDisplay: (val) => {
36045
+ const platforms = Array.isArray(val) ? val : [val];
36046
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "flex flex-wrap gap-2", children: platforms.map((p) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
36047
+ BadgeAtom,
36048
+ {
36049
+ id: `platform-${p}`,
36050
+ type: "badge",
36051
+ label: p,
36052
+ variant: "outline",
36053
+ className: "bg-[#1A1A1A] border-gray400 text-white font-medium"
36054
+ },
36055
+ p
36056
+ )) });
36057
+ }
36058
+ };
36059
+ }
36060
+ if (field.key === "geography") {
36061
+ return {
36062
+ ...field,
36063
+ renderDisplay: (val) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(CountrySelectDisplay, { value: val })
36064
+ };
36065
+ }
36066
+ if (field.key === "keywordBundles") {
36067
+ return {
36068
+ ...field,
36069
+ renderDisplay: (val) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(KeywordBundlesDisplay, { value: val })
36070
+ };
36071
+ }
36072
+ if (field.key === "followerRange") {
36073
+ return {
36074
+ ...field,
36075
+ renderDisplay: (val) => {
36076
+ if (typeof val === "object" && val !== null) {
36077
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { className: "text-white font-medium", children: `${val.min?.toLocaleString()} - ${val.max?.toLocaleString()} followers` });
36078
+ }
36079
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("span", { className: "text-white font-medium", children: [
36080
+ val,
36081
+ " followers"
36082
+ ] });
36083
+ }
36084
+ };
36085
+ }
36086
+ if (field.key === "initialCreators") {
36087
+ return {
36088
+ ...field,
36089
+ renderDisplay: (val) => /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("span", { className: "text-white font-medium", children: [
36090
+ val,
36091
+ " creators"
36092
+ ] })
36093
+ };
36094
+ }
36095
+ return field;
36096
+ });
36097
+ }, [providedFields, data]);
36098
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
36099
+ FormCard,
36100
+ {
36101
+ ...formCardProps,
36102
+ data,
36103
+ title: formCardProps.title || "Creator Search Settings",
36104
+ fields,
36105
+ showTimeline: true,
36106
+ className: cn("font-noto", className),
36107
+ footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-[10px] font-semibold py-4 pr-6", children: [
36108
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(CircleCheck, { className: "h-3.5 w-3.5" }),
36109
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { children: selectionStatus === "agent" ? "Suggested by Agent" : "Selected by you" })
36110
+ ] }) : formCardProps.footer
36111
+ }
36112
+ ) });
36113
+ }
36114
+ );
36115
+ CreatorSearch.displayName = "CreatorSearch";
36116
+
36117
+ // src/molecules/creator-discovery/CampaignConceptCard/CampaignConceptCard.tsx
36118
+ var import_react64 = __toESM(require("react"), 1);
36119
+ var import_framer_motion = require("framer-motion");
36120
+ var import_jsx_runtime121 = require("react/jsx-runtime");
36121
+ var CampaignConceptCard = import_react64.default.memo(
36122
+ ({
36123
+ isRecommended,
36124
+ isOpen: controlledIsOpen,
36125
+ onToggle,
36126
+ data,
36127
+ fields: providedFields,
36128
+ title,
36129
+ selectionStatus,
36130
+ isLatestMessage = true,
36131
+ className,
36132
+ ...formCardProps
36133
+ }) => {
36134
+ const [internalIsOpen, setInternalIsOpen] = (0, import_react64.useState)(false);
36135
+ const isOpen = controlledIsOpen !== void 0 ? controlledIsOpen : internalIsOpen;
36136
+ const handleToggle = () => {
36137
+ if (onToggle) {
36138
+ onToggle();
36139
+ } else {
36140
+ setInternalIsOpen(!internalIsOpen);
36141
+ }
36142
+ };
36143
+ const fields = (0, import_react64.useMemo)(() => {
36144
+ const baseFields = providedFields || generateFieldsFromData(data);
36145
+ return baseFields.map((field) => {
36146
+ if (field.key === "budgetAllocation") {
36147
+ return {
36148
+ ...field,
36149
+ renderDisplay: (val) => {
36150
+ if (!Array.isArray(val)) return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { children: val });
36151
+ 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: [
36152
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("span", { children: [
36153
+ idx + 1,
36154
+ "."
36155
+ ] }),
36156
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "bg-[#1A1A1A] border border-white/10 px-2 py-0.5 rounded text-gray-300", children: item.label }),
36157
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-gray-400", children: "=" }),
36158
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "bg-[#1A1A1A] border border-white/10 px-2 py-0.5 rounded text-gray-300", children: item.value })
36159
+ ] }, idx)) });
36160
+ }
36161
+ };
36162
+ }
36163
+ if (field.key === "estimatedCreators") {
36164
+ return {
36165
+ ...field,
36166
+ renderDisplay: (val) => {
36167
+ if (!Array.isArray(val)) return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-white font-medium", children: val });
36168
+ 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-[#1A1A1A] border border-white/10 px-2 py-0.5 rounded text-white text-xs font-medium", children: v }, idx)) });
36169
+ }
36170
+ };
36171
+ }
36172
+ return {
36173
+ ...field,
36174
+ renderDisplay: (val) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-gray-300 text-sm", children: val })
36175
+ };
36176
+ });
36177
+ }, [providedFields, data]);
36178
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
36179
+ "div",
36180
+ {
36181
+ className: cn(
36182
+ "w-full rounded-[20px] transition-all duration-300 bg-background dark:bg-gray50",
36183
+ isOpen ? "border border-green-500/50 shadow-[0_0_15px_rgba(34,197,94,0.1)]" : "border border-gray400",
36184
+ className
36185
+ ),
36186
+ children: [
36187
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
36188
+ "div",
36189
+ {
36190
+ className: "flex items-center justify-between p-6 cursor-pointer select-none",
36191
+ onClick: handleToggle,
36192
+ children: [
36193
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "flex flex-col gap-2", children: [
36194
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("h3", { className: "text-lg font-semibold text-white tracking-wide", children: title || data.title }),
36195
+ 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" }) })
36196
+ ] }),
36197
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: cn(
36198
+ "p-2 rounded-lg bg-white/5 border border-white/10 text-gray-400 transition-transform duration-300",
36199
+ isOpen && "rotate-180"
36200
+ ), children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(ChevronDown, { className: "h-4 w-4" }) })
36201
+ ]
36202
+ }
36203
+ ),
36204
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: isOpen && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36205
+ import_framer_motion.motion.div,
36206
+ {
36207
+ initial: { height: 0, opacity: 0 },
36208
+ animate: { height: "auto", opacity: 1 },
36209
+ exit: { height: 0, opacity: 0 },
36210
+ transition: { duration: 0.3, ease: "easeInOut" },
36211
+ className: "overflow-hidden",
36212
+ children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: "px-6 pb-6 pt-0 border-t border-white/5", children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36213
+ FormCard,
36214
+ {
36215
+ ...formCardProps,
36216
+ title: title || data.title || "Campaign Concept",
36217
+ data,
36218
+ fields,
36219
+ showTimeline: true,
36220
+ className: "bg-transparent border-none shadow-none mb-0 p-0",
36221
+ 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: [
36222
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(CircleCheck, { className: "h-3.5 w-3.5" }),
36223
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by You" })
36224
+ ] }) : formCardProps.footer
36225
+ }
36226
+ ) })
36227
+ }
36228
+ ) })
36229
+ ]
36230
+ }
36231
+ );
36232
+ }
36233
+ );
36234
+ CampaignConceptCard.displayName = "CampaignConceptCard";
36235
+
35914
36236
  // src/components/ui/index.ts
35915
36237
  var ui_exports = {};
35916
36238
  __export(ui_exports, {
@@ -36203,7 +36525,7 @@ __export(ui_exports, {
36203
36525
  // src/components/ui/button-group.tsx
36204
36526
  var import_react_slot4 = require("@radix-ui/react-slot");
36205
36527
  var import_class_variance_authority8 = require("class-variance-authority");
36206
- var import_jsx_runtime120 = require("react/jsx-runtime");
36528
+ var import_jsx_runtime122 = require("react/jsx-runtime");
36207
36529
  var buttonGroupVariants = (0, import_class_variance_authority8.cva)(
36208
36530
  "flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
36209
36531
  {
@@ -36223,7 +36545,7 @@ function ButtonGroup({
36223
36545
  orientation,
36224
36546
  ...props
36225
36547
  }) {
36226
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
36548
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36227
36549
  "div",
36228
36550
  {
36229
36551
  role: "group",
@@ -36240,7 +36562,7 @@ function ButtonGroupText({
36240
36562
  ...props
36241
36563
  }) {
36242
36564
  const Comp = asChild ? import_react_slot4.Slot : "div";
36243
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
36565
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36244
36566
  Comp,
36245
36567
  {
36246
36568
  className: cn(
@@ -36256,7 +36578,7 @@ function ButtonGroupSeparator({
36256
36578
  orientation = "vertical",
36257
36579
  ...props
36258
36580
  }) {
36259
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
36581
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36260
36582
  Separator2,
36261
36583
  {
36262
36584
  "data-slot": "button-group-separator",
@@ -36272,9 +36594,9 @@ function ButtonGroupSeparator({
36272
36594
 
36273
36595
  // src/components/ui/empty.tsx
36274
36596
  var import_class_variance_authority9 = require("class-variance-authority");
36275
- var import_jsx_runtime121 = require("react/jsx-runtime");
36597
+ var import_jsx_runtime123 = require("react/jsx-runtime");
36276
36598
  function Empty({ className, ...props }) {
36277
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36599
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36278
36600
  "div",
36279
36601
  {
36280
36602
  "data-slot": "empty",
@@ -36287,7 +36609,7 @@ function Empty({ className, ...props }) {
36287
36609
  );
36288
36610
  }
36289
36611
  function EmptyHeader({ className, ...props }) {
36290
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36612
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36291
36613
  "div",
36292
36614
  {
36293
36615
  "data-slot": "empty-header",
@@ -36318,7 +36640,7 @@ function EmptyMedia({
36318
36640
  variant = "default",
36319
36641
  ...props
36320
36642
  }) {
36321
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36643
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36322
36644
  "div",
36323
36645
  {
36324
36646
  "data-slot": "empty-icon",
@@ -36329,7 +36651,7 @@ function EmptyMedia({
36329
36651
  );
36330
36652
  }
36331
36653
  function EmptyTitle({ className, ...props }) {
36332
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36654
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36333
36655
  "div",
36334
36656
  {
36335
36657
  "data-slot": "empty-title",
@@ -36339,7 +36661,7 @@ function EmptyTitle({ className, ...props }) {
36339
36661
  );
36340
36662
  }
36341
36663
  function EmptyDescription({ className, ...props }) {
36342
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36664
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36343
36665
  "div",
36344
36666
  {
36345
36667
  "data-slot": "empty-description",
@@ -36352,7 +36674,7 @@ function EmptyDescription({ className, ...props }) {
36352
36674
  );
36353
36675
  }
36354
36676
  function EmptyContent({ className, ...props }) {
36355
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36677
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36356
36678
  "div",
36357
36679
  {
36358
36680
  "data-slot": "empty-content",
@@ -36366,11 +36688,11 @@ function EmptyContent({ className, ...props }) {
36366
36688
  }
36367
36689
 
36368
36690
  // src/components/ui/field.tsx
36369
- var import_react63 = require("react");
36691
+ var import_react65 = require("react");
36370
36692
  var import_class_variance_authority10 = require("class-variance-authority");
36371
- var import_jsx_runtime122 = require("react/jsx-runtime");
36693
+ var import_jsx_runtime124 = require("react/jsx-runtime");
36372
36694
  function FieldSet({ className, ...props }) {
36373
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36695
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36374
36696
  "fieldset",
36375
36697
  {
36376
36698
  "data-slot": "field-set",
@@ -36388,7 +36710,7 @@ function FieldLegend({
36388
36710
  variant = "legend",
36389
36711
  ...props
36390
36712
  }) {
36391
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36713
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36392
36714
  "legend",
36393
36715
  {
36394
36716
  "data-slot": "field-legend",
@@ -36404,7 +36726,7 @@ function FieldLegend({
36404
36726
  );
36405
36727
  }
36406
36728
  function FieldGroup({ className, ...props }) {
36407
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36729
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36408
36730
  "div",
36409
36731
  {
36410
36732
  "data-slot": "field-group",
@@ -36444,7 +36766,7 @@ function Field({
36444
36766
  orientation = "vertical",
36445
36767
  ...props
36446
36768
  }) {
36447
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36769
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36448
36770
  "div",
36449
36771
  {
36450
36772
  role: "group",
@@ -36456,7 +36778,7 @@ function Field({
36456
36778
  );
36457
36779
  }
36458
36780
  function FieldContent({ className, ...props }) {
36459
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36781
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36460
36782
  "div",
36461
36783
  {
36462
36784
  "data-slot": "field-content",
@@ -36472,7 +36794,7 @@ function FieldLabel({
36472
36794
  className,
36473
36795
  ...props
36474
36796
  }) {
36475
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36797
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36476
36798
  Label,
36477
36799
  {
36478
36800
  "data-slot": "field-label",
@@ -36487,7 +36809,7 @@ function FieldLabel({
36487
36809
  );
36488
36810
  }
36489
36811
  function FieldTitle({ className, ...props }) {
36490
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36812
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36491
36813
  "div",
36492
36814
  {
36493
36815
  "data-slot": "field-label",
@@ -36500,7 +36822,7 @@ function FieldTitle({ className, ...props }) {
36500
36822
  );
36501
36823
  }
36502
36824
  function FieldDescription({ className, ...props }) {
36503
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36825
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36504
36826
  "p",
36505
36827
  {
36506
36828
  "data-slot": "field-description",
@@ -36519,7 +36841,7 @@ function FieldSeparator({
36519
36841
  className,
36520
36842
  ...props
36521
36843
  }) {
36522
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
36844
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
36523
36845
  "div",
36524
36846
  {
36525
36847
  "data-slot": "field-separator",
@@ -36530,8 +36852,8 @@ function FieldSeparator({
36530
36852
  ),
36531
36853
  ...props,
36532
36854
  children: [
36533
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Separator2, { className: "absolute inset-0 top-1/2" }),
36534
- children && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36855
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Separator2, { className: "absolute inset-0 top-1/2" }),
36856
+ children && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36535
36857
  "span",
36536
36858
  {
36537
36859
  className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
@@ -36549,7 +36871,7 @@ function FieldError({
36549
36871
  errors,
36550
36872
  ...props
36551
36873
  }) {
36552
- const content = (0, import_react63.useMemo)(() => {
36874
+ const content = (0, import_react65.useMemo)(() => {
36553
36875
  if (children) {
36554
36876
  return children;
36555
36877
  }
@@ -36559,14 +36881,14 @@ function FieldError({
36559
36881
  if (errors?.length === 1 && errors[0]?.message) {
36560
36882
  return errors[0].message;
36561
36883
  }
36562
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
36563
- (error, index) => error?.message && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("li", { children: error.message }, index)
36884
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
36885
+ (error, index) => error?.message && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("li", { children: error.message }, index)
36564
36886
  ) });
36565
36887
  }, [children, errors]);
36566
36888
  if (!content) {
36567
36889
  return null;
36568
36890
  }
36569
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36891
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36570
36892
  "div",
36571
36893
  {
36572
36894
  role: "alert",
@@ -36580,9 +36902,9 @@ function FieldError({
36580
36902
 
36581
36903
  // src/components/ui/input-group.tsx
36582
36904
  var import_class_variance_authority11 = require("class-variance-authority");
36583
- var import_jsx_runtime123 = require("react/jsx-runtime");
36905
+ var import_jsx_runtime125 = require("react/jsx-runtime");
36584
36906
  function InputGroup({ className, ...props }) {
36585
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36907
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36586
36908
  "div",
36587
36909
  {
36588
36910
  "data-slot": "input-group",
@@ -36626,7 +36948,7 @@ function InputGroupAddon({
36626
36948
  align = "inline-start",
36627
36949
  ...props
36628
36950
  }) {
36629
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36951
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36630
36952
  "div",
36631
36953
  {
36632
36954
  role: "group",
@@ -36666,7 +36988,7 @@ function InputGroupButton({
36666
36988
  size = "xs",
36667
36989
  ...props
36668
36990
  }) {
36669
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36991
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36670
36992
  Button,
36671
36993
  {
36672
36994
  type,
@@ -36678,7 +37000,7 @@ function InputGroupButton({
36678
37000
  );
36679
37001
  }
36680
37002
  function InputGroupText({ className, ...props }) {
36681
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37003
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36682
37004
  "span",
36683
37005
  {
36684
37006
  className: cn(
@@ -36693,7 +37015,7 @@ function InputGroupInput({
36693
37015
  className,
36694
37016
  ...props
36695
37017
  }) {
36696
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37018
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36697
37019
  Input,
36698
37020
  {
36699
37021
  "data-slot": "input-group-control",
@@ -36709,7 +37031,7 @@ function InputGroupTextarea({
36709
37031
  className,
36710
37032
  ...props
36711
37033
  }) {
36712
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
37034
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36713
37035
  Textarea,
36714
37036
  {
36715
37037
  "data-slot": "input-group-control",
@@ -36725,9 +37047,9 @@ function InputGroupTextarea({
36725
37047
  // src/components/ui/item.tsx
36726
37048
  var import_react_slot5 = require("@radix-ui/react-slot");
36727
37049
  var import_class_variance_authority12 = require("class-variance-authority");
36728
- var import_jsx_runtime124 = require("react/jsx-runtime");
37050
+ var import_jsx_runtime126 = require("react/jsx-runtime");
36729
37051
  function ItemGroup({ className, ...props }) {
36730
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37052
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36731
37053
  "div",
36732
37054
  {
36733
37055
  role: "list",
@@ -36741,7 +37063,7 @@ function ItemSeparator({
36741
37063
  className,
36742
37064
  ...props
36743
37065
  }) {
36744
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37066
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36745
37067
  Separator2,
36746
37068
  {
36747
37069
  "data-slot": "item-separator",
@@ -36779,7 +37101,7 @@ function Item8({
36779
37101
  ...props
36780
37102
  }) {
36781
37103
  const Comp = asChild ? import_react_slot5.Slot : "div";
36782
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37104
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36783
37105
  Comp,
36784
37106
  {
36785
37107
  "data-slot": "item",
@@ -36810,7 +37132,7 @@ function ItemMedia({
36810
37132
  variant = "default",
36811
37133
  ...props
36812
37134
  }) {
36813
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37135
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36814
37136
  "div",
36815
37137
  {
36816
37138
  "data-slot": "item-media",
@@ -36821,7 +37143,7 @@ function ItemMedia({
36821
37143
  );
36822
37144
  }
36823
37145
  function ItemContent({ className, ...props }) {
36824
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37146
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36825
37147
  "div",
36826
37148
  {
36827
37149
  "data-slot": "item-content",
@@ -36834,7 +37156,7 @@ function ItemContent({ className, ...props }) {
36834
37156
  );
36835
37157
  }
36836
37158
  function ItemTitle({ className, ...props }) {
36837
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37159
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36838
37160
  "div",
36839
37161
  {
36840
37162
  "data-slot": "item-title",
@@ -36847,7 +37169,7 @@ function ItemTitle({ className, ...props }) {
36847
37169
  );
36848
37170
  }
36849
37171
  function ItemDescription({ className, ...props }) {
36850
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37172
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36851
37173
  "p",
36852
37174
  {
36853
37175
  "data-slot": "item-description",
@@ -36861,7 +37183,7 @@ function ItemDescription({ className, ...props }) {
36861
37183
  );
36862
37184
  }
36863
37185
  function ItemActions({ className, ...props }) {
36864
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37186
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36865
37187
  "div",
36866
37188
  {
36867
37189
  "data-slot": "item-actions",
@@ -36871,7 +37193,7 @@ function ItemActions({ className, ...props }) {
36871
37193
  );
36872
37194
  }
36873
37195
  function ItemHeader({ className, ...props }) {
36874
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37196
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36875
37197
  "div",
36876
37198
  {
36877
37199
  "data-slot": "item-header",
@@ -36884,7 +37206,7 @@ function ItemHeader({ className, ...props }) {
36884
37206
  );
36885
37207
  }
36886
37208
  function ItemFooter({ className, ...props }) {
36887
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37209
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36888
37210
  "div",
36889
37211
  {
36890
37212
  "data-slot": "item-footer",
@@ -36898,9 +37220,9 @@ function ItemFooter({ className, ...props }) {
36898
37220
  }
36899
37221
 
36900
37222
  // src/components/ui/kbd.tsx
36901
- var import_jsx_runtime125 = require("react/jsx-runtime");
37223
+ var import_jsx_runtime127 = require("react/jsx-runtime");
36902
37224
  function Kbd({ className, ...props }) {
36903
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
37225
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
36904
37226
  "kbd",
36905
37227
  {
36906
37228
  "data-slot": "kbd",
@@ -36915,7 +37237,7 @@ function Kbd({ className, ...props }) {
36915
37237
  );
36916
37238
  }
36917
37239
  function KbdGroup({ className, ...props }) {
36918
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
37240
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
36919
37241
  "kbd",
36920
37242
  {
36921
37243
  "data-slot": "kbd-group",
@@ -36926,16 +37248,16 @@ function KbdGroup({ className, ...props }) {
36926
37248
  }
36927
37249
 
36928
37250
  // src/components/ui/sidebar.tsx
36929
- var React94 = __toESM(require("react"), 1);
37251
+ var React96 = __toESM(require("react"), 1);
36930
37252
  var import_react_slot6 = require("@radix-ui/react-slot");
36931
37253
  var import_class_variance_authority13 = require("class-variance-authority");
36932
37254
 
36933
37255
  // src/hooks/use-mobile.tsx
36934
- var React93 = __toESM(require("react"), 1);
37256
+ var React95 = __toESM(require("react"), 1);
36935
37257
  var MOBILE_BREAKPOINT = 768;
36936
37258
  function useIsMobile() {
36937
- const [isMobile, setIsMobile] = React93.useState(void 0);
36938
- React93.useEffect(() => {
37259
+ const [isMobile, setIsMobile] = React95.useState(void 0);
37260
+ React95.useEffect(() => {
36939
37261
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
36940
37262
  const onChange = () => {
36941
37263
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -36948,22 +37270,22 @@ function useIsMobile() {
36948
37270
  }
36949
37271
 
36950
37272
  // src/components/ui/sidebar.tsx
36951
- var import_jsx_runtime126 = require("react/jsx-runtime");
37273
+ var import_jsx_runtime128 = require("react/jsx-runtime");
36952
37274
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
36953
37275
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
36954
37276
  var SIDEBAR_WIDTH = "16rem";
36955
37277
  var SIDEBAR_WIDTH_MOBILE = "18rem";
36956
37278
  var SIDEBAR_WIDTH_ICON = "3rem";
36957
37279
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
36958
- var SidebarContext = React94.createContext(null);
37280
+ var SidebarContext = React96.createContext(null);
36959
37281
  function useSidebar() {
36960
- const context = React94.useContext(SidebarContext);
37282
+ const context = React96.useContext(SidebarContext);
36961
37283
  if (!context) {
36962
37284
  throw new Error("useSidebar must be used within a SidebarProvider.");
36963
37285
  }
36964
37286
  return context;
36965
37287
  }
36966
- var SidebarProvider = React94.forwardRef(
37288
+ var SidebarProvider = React96.forwardRef(
36967
37289
  ({
36968
37290
  defaultOpen = true,
36969
37291
  open: openProp,
@@ -36974,10 +37296,10 @@ var SidebarProvider = React94.forwardRef(
36974
37296
  ...props
36975
37297
  }, ref) => {
36976
37298
  const isMobile = useIsMobile();
36977
- const [openMobile, setOpenMobile] = React94.useState(false);
36978
- const [_open, _setOpen] = React94.useState(defaultOpen);
37299
+ const [openMobile, setOpenMobile] = React96.useState(false);
37300
+ const [_open, _setOpen] = React96.useState(defaultOpen);
36979
37301
  const open = openProp ?? _open;
36980
- const setOpen = React94.useCallback(
37302
+ const setOpen = React96.useCallback(
36981
37303
  (value) => {
36982
37304
  const openState = typeof value === "function" ? value(open) : value;
36983
37305
  if (setOpenProp) {
@@ -36989,10 +37311,10 @@ var SidebarProvider = React94.forwardRef(
36989
37311
  },
36990
37312
  [setOpenProp, open]
36991
37313
  );
36992
- const toggleSidebar = React94.useCallback(() => {
37314
+ const toggleSidebar = React96.useCallback(() => {
36993
37315
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
36994
37316
  }, [isMobile, setOpen, setOpenMobile]);
36995
- React94.useEffect(() => {
37317
+ React96.useEffect(() => {
36996
37318
  const handleKeyDown = (event) => {
36997
37319
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
36998
37320
  event.preventDefault();
@@ -37003,7 +37325,7 @@ var SidebarProvider = React94.forwardRef(
37003
37325
  return () => window.removeEventListener("keydown", handleKeyDown);
37004
37326
  }, [toggleSidebar]);
37005
37327
  const state = open ? "expanded" : "collapsed";
37006
- const contextValue = React94.useMemo(
37328
+ const contextValue = React96.useMemo(
37007
37329
  () => ({
37008
37330
  state,
37009
37331
  open,
@@ -37015,7 +37337,7 @@ var SidebarProvider = React94.forwardRef(
37015
37337
  }),
37016
37338
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
37017
37339
  );
37018
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37340
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37019
37341
  "div",
37020
37342
  {
37021
37343
  style: {
@@ -37035,7 +37357,7 @@ var SidebarProvider = React94.forwardRef(
37035
37357
  }
37036
37358
  );
37037
37359
  SidebarProvider.displayName = "SidebarProvider";
37038
- var Sidebar = React94.forwardRef(
37360
+ var Sidebar = React96.forwardRef(
37039
37361
  ({
37040
37362
  side = "left",
37041
37363
  variant = "sidebar",
@@ -37046,7 +37368,7 @@ var Sidebar = React94.forwardRef(
37046
37368
  }, ref) => {
37047
37369
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
37048
37370
  if (collapsible === "none") {
37049
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37371
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37050
37372
  "div",
37051
37373
  {
37052
37374
  className: cn(
@@ -37060,7 +37382,7 @@ var Sidebar = React94.forwardRef(
37060
37382
  );
37061
37383
  }
37062
37384
  if (isMobile) {
37063
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37385
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
37064
37386
  SheetContent,
37065
37387
  {
37066
37388
  "data-sidebar": "sidebar",
@@ -37071,16 +37393,16 @@ var Sidebar = React94.forwardRef(
37071
37393
  },
37072
37394
  side,
37073
37395
  children: [
37074
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(SheetHeader, { className: "sr-only", children: [
37075
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(SheetTitle, { children: "Sidebar" }),
37076
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
37396
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(SheetHeader, { className: "sr-only", children: [
37397
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SheetTitle, { children: "Sidebar" }),
37398
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
37077
37399
  ] }),
37078
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "flex h-full w-full flex-col", children })
37400
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "flex h-full w-full flex-col", children })
37079
37401
  ]
37080
37402
  }
37081
37403
  ) });
37082
37404
  }
37083
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37405
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
37084
37406
  "div",
37085
37407
  {
37086
37408
  ref,
@@ -37090,7 +37412,7 @@ var Sidebar = React94.forwardRef(
37090
37412
  "data-variant": variant,
37091
37413
  "data-side": side,
37092
37414
  children: [
37093
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37415
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37094
37416
  "div",
37095
37417
  {
37096
37418
  className: cn(
@@ -37101,7 +37423,7 @@ var Sidebar = React94.forwardRef(
37101
37423
  )
37102
37424
  }
37103
37425
  ),
37104
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37426
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37105
37427
  "div",
37106
37428
  {
37107
37429
  className: cn(
@@ -37112,7 +37434,7 @@ var Sidebar = React94.forwardRef(
37112
37434
  className
37113
37435
  ),
37114
37436
  ...props,
37115
- children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37437
+ children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37116
37438
  "div",
37117
37439
  {
37118
37440
  "data-sidebar": "sidebar",
@@ -37128,9 +37450,9 @@ var Sidebar = React94.forwardRef(
37128
37450
  }
37129
37451
  );
37130
37452
  Sidebar.displayName = "Sidebar";
37131
- var SidebarTrigger = React94.forwardRef(({ className, onClick, ...props }, ref) => {
37453
+ var SidebarTrigger = React96.forwardRef(({ className, onClick, ...props }, ref) => {
37132
37454
  const { toggleSidebar } = useSidebar();
37133
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37455
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
37134
37456
  Button,
37135
37457
  {
37136
37458
  ref,
@@ -37144,16 +37466,16 @@ var SidebarTrigger = React94.forwardRef(({ className, onClick, ...props }, ref)
37144
37466
  },
37145
37467
  ...props,
37146
37468
  children: [
37147
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(PanelLeft, {}),
37148
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
37469
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(PanelLeft, {}),
37470
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
37149
37471
  ]
37150
37472
  }
37151
37473
  );
37152
37474
  });
37153
37475
  SidebarTrigger.displayName = "SidebarTrigger";
37154
- var SidebarRail = React94.forwardRef(({ className, ...props }, ref) => {
37476
+ var SidebarRail = React96.forwardRef(({ className, ...props }, ref) => {
37155
37477
  const { toggleSidebar } = useSidebar();
37156
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37478
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37157
37479
  "button",
37158
37480
  {
37159
37481
  ref,
@@ -37176,8 +37498,8 @@ var SidebarRail = React94.forwardRef(({ className, ...props }, ref) => {
37176
37498
  );
37177
37499
  });
37178
37500
  SidebarRail.displayName = "SidebarRail";
37179
- var SidebarInset = React94.forwardRef(({ className, ...props }, ref) => {
37180
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37501
+ var SidebarInset = React96.forwardRef(({ className, ...props }, ref) => {
37502
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37181
37503
  "main",
37182
37504
  {
37183
37505
  ref,
@@ -37191,8 +37513,8 @@ var SidebarInset = React94.forwardRef(({ className, ...props }, ref) => {
37191
37513
  );
37192
37514
  });
37193
37515
  SidebarInset.displayName = "SidebarInset";
37194
- var SidebarInput = React94.forwardRef(({ className, ...props }, ref) => {
37195
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37516
+ var SidebarInput = React96.forwardRef(({ className, ...props }, ref) => {
37517
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37196
37518
  Input,
37197
37519
  {
37198
37520
  ref,
@@ -37206,8 +37528,8 @@ var SidebarInput = React94.forwardRef(({ className, ...props }, ref) => {
37206
37528
  );
37207
37529
  });
37208
37530
  SidebarInput.displayName = "SidebarInput";
37209
- var SidebarHeader = React94.forwardRef(({ className, ...props }, ref) => {
37210
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37531
+ var SidebarHeader = React96.forwardRef(({ className, ...props }, ref) => {
37532
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37211
37533
  "div",
37212
37534
  {
37213
37535
  ref,
@@ -37218,8 +37540,8 @@ var SidebarHeader = React94.forwardRef(({ className, ...props }, ref) => {
37218
37540
  );
37219
37541
  });
37220
37542
  SidebarHeader.displayName = "SidebarHeader";
37221
- var SidebarFooter = React94.forwardRef(({ className, ...props }, ref) => {
37222
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37543
+ var SidebarFooter = React96.forwardRef(({ className, ...props }, ref) => {
37544
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37223
37545
  "div",
37224
37546
  {
37225
37547
  ref,
@@ -37230,8 +37552,8 @@ var SidebarFooter = React94.forwardRef(({ className, ...props }, ref) => {
37230
37552
  );
37231
37553
  });
37232
37554
  SidebarFooter.displayName = "SidebarFooter";
37233
- var SidebarSeparator = React94.forwardRef(({ className, ...props }, ref) => {
37234
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37555
+ var SidebarSeparator = React96.forwardRef(({ className, ...props }, ref) => {
37556
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37235
37557
  Separator2,
37236
37558
  {
37237
37559
  ref,
@@ -37242,8 +37564,8 @@ var SidebarSeparator = React94.forwardRef(({ className, ...props }, ref) => {
37242
37564
  );
37243
37565
  });
37244
37566
  SidebarSeparator.displayName = "SidebarSeparator";
37245
- var SidebarContent = React94.forwardRef(({ className, ...props }, ref) => {
37246
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37567
+ var SidebarContent = React96.forwardRef(({ className, ...props }, ref) => {
37568
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37247
37569
  "div",
37248
37570
  {
37249
37571
  ref,
@@ -37257,8 +37579,8 @@ var SidebarContent = React94.forwardRef(({ className, ...props }, ref) => {
37257
37579
  );
37258
37580
  });
37259
37581
  SidebarContent.displayName = "SidebarContent";
37260
- var SidebarGroup = React94.forwardRef(({ className, ...props }, ref) => {
37261
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37582
+ var SidebarGroup = React96.forwardRef(({ className, ...props }, ref) => {
37583
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37262
37584
  "div",
37263
37585
  {
37264
37586
  ref,
@@ -37269,9 +37591,9 @@ var SidebarGroup = React94.forwardRef(({ className, ...props }, ref) => {
37269
37591
  );
37270
37592
  });
37271
37593
  SidebarGroup.displayName = "SidebarGroup";
37272
- var SidebarGroupLabel = React94.forwardRef(({ className, asChild = false, ...props }, ref) => {
37594
+ var SidebarGroupLabel = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
37273
37595
  const Comp = asChild ? import_react_slot6.Slot : "div";
37274
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37596
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37275
37597
  Comp,
37276
37598
  {
37277
37599
  ref,
@@ -37286,9 +37608,9 @@ var SidebarGroupLabel = React94.forwardRef(({ className, asChild = false, ...pro
37286
37608
  );
37287
37609
  });
37288
37610
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
37289
- var SidebarGroupAction = React94.forwardRef(({ className, asChild = false, ...props }, ref) => {
37611
+ var SidebarGroupAction = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
37290
37612
  const Comp = asChild ? import_react_slot6.Slot : "button";
37291
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37613
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37292
37614
  Comp,
37293
37615
  {
37294
37616
  ref,
@@ -37305,7 +37627,7 @@ var SidebarGroupAction = React94.forwardRef(({ className, asChild = false, ...pr
37305
37627
  );
37306
37628
  });
37307
37629
  SidebarGroupAction.displayName = "SidebarGroupAction";
37308
- var SidebarGroupContent = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37630
+ var SidebarGroupContent = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37309
37631
  "div",
37310
37632
  {
37311
37633
  ref,
@@ -37315,7 +37637,7 @@ var SidebarGroupContent = React94.forwardRef(({ className, ...props }, ref) => /
37315
37637
  }
37316
37638
  ));
37317
37639
  SidebarGroupContent.displayName = "SidebarGroupContent";
37318
- var SidebarMenu = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37640
+ var SidebarMenu = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37319
37641
  "ul",
37320
37642
  {
37321
37643
  ref,
@@ -37325,7 +37647,7 @@ var SidebarMenu = React94.forwardRef(({ className, ...props }, ref) => /* @__PUR
37325
37647
  }
37326
37648
  ));
37327
37649
  SidebarMenu.displayName = "SidebarMenu";
37328
- var SidebarMenuItem = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37650
+ var SidebarMenuItem = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37329
37651
  "li",
37330
37652
  {
37331
37653
  ref,
@@ -37355,7 +37677,7 @@ var sidebarMenuButtonVariants = (0, import_class_variance_authority13.cva)(
37355
37677
  }
37356
37678
  }
37357
37679
  );
37358
- var SidebarMenuButton = React94.forwardRef(
37680
+ var SidebarMenuButton = React96.forwardRef(
37359
37681
  ({
37360
37682
  asChild = false,
37361
37683
  isActive = false,
@@ -37367,7 +37689,7 @@ var SidebarMenuButton = React94.forwardRef(
37367
37689
  }, ref) => {
37368
37690
  const Comp = asChild ? import_react_slot6.Slot : "button";
37369
37691
  const { isMobile, state } = useSidebar();
37370
- const button = /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37692
+ const button = /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37371
37693
  Comp,
37372
37694
  {
37373
37695
  ref,
@@ -37386,9 +37708,9 @@ var SidebarMenuButton = React94.forwardRef(
37386
37708
  children: tooltip
37387
37709
  };
37388
37710
  }
37389
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(Tooltip, { children: [
37390
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(TooltipTrigger, { asChild: true, children: button }),
37391
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37711
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(Tooltip, { children: [
37712
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(TooltipTrigger, { asChild: true, children: button }),
37713
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37392
37714
  TooltipContent,
37393
37715
  {
37394
37716
  side: "right",
@@ -37401,9 +37723,9 @@ var SidebarMenuButton = React94.forwardRef(
37401
37723
  }
37402
37724
  );
37403
37725
  SidebarMenuButton.displayName = "SidebarMenuButton";
37404
- var SidebarMenuAction = React94.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
37726
+ var SidebarMenuAction = React96.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
37405
37727
  const Comp = asChild ? import_react_slot6.Slot : "button";
37406
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37728
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37407
37729
  Comp,
37408
37730
  {
37409
37731
  ref,
@@ -37424,7 +37746,7 @@ var SidebarMenuAction = React94.forwardRef(({ className, asChild = false, showOn
37424
37746
  );
37425
37747
  });
37426
37748
  SidebarMenuAction.displayName = "SidebarMenuAction";
37427
- var SidebarMenuBadge = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37749
+ var SidebarMenuBadge = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37428
37750
  "div",
37429
37751
  {
37430
37752
  ref,
@@ -37442,11 +37764,11 @@ var SidebarMenuBadge = React94.forwardRef(({ className, ...props }, ref) => /* @
37442
37764
  }
37443
37765
  ));
37444
37766
  SidebarMenuBadge.displayName = "SidebarMenuBadge";
37445
- var SidebarMenuSkeleton = React94.forwardRef(({ className, showIcon = false, ...props }, ref) => {
37446
- const width = React94.useMemo(() => {
37767
+ var SidebarMenuSkeleton = React96.forwardRef(({ className, showIcon = false, ...props }, ref) => {
37768
+ const width = React96.useMemo(() => {
37447
37769
  return `${Math.floor(Math.random() * 40) + 50}%`;
37448
37770
  }, []);
37449
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37771
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
37450
37772
  "div",
37451
37773
  {
37452
37774
  ref,
@@ -37454,14 +37776,14 @@ var SidebarMenuSkeleton = React94.forwardRef(({ className, showIcon = false, ...
37454
37776
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
37455
37777
  ...props,
37456
37778
  children: [
37457
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37779
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37458
37780
  Skeleton,
37459
37781
  {
37460
37782
  className: "size-4 rounded-md",
37461
37783
  "data-sidebar": "menu-skeleton-icon"
37462
37784
  }
37463
37785
  ),
37464
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37786
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37465
37787
  Skeleton,
37466
37788
  {
37467
37789
  className: "h-4 max-w-[--skeleton-width] flex-1",
@@ -37476,7 +37798,7 @@ var SidebarMenuSkeleton = React94.forwardRef(({ className, showIcon = false, ...
37476
37798
  );
37477
37799
  });
37478
37800
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
37479
- var SidebarMenuSub = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37801
+ var SidebarMenuSub = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37480
37802
  "ul",
37481
37803
  {
37482
37804
  ref,
@@ -37490,11 +37812,11 @@ var SidebarMenuSub = React94.forwardRef(({ className, ...props }, ref) => /* @__
37490
37812
  }
37491
37813
  ));
37492
37814
  SidebarMenuSub.displayName = "SidebarMenuSub";
37493
- var SidebarMenuSubItem = React94.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("li", { ref, ...props }));
37815
+ var SidebarMenuSubItem = React96.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("li", { ref, ...props }));
37494
37816
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
37495
- var SidebarMenuSubButton = React94.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
37817
+ var SidebarMenuSubButton = React96.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
37496
37818
  const Comp = asChild ? import_react_slot6.Slot : "a";
37497
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37819
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37498
37820
  Comp,
37499
37821
  {
37500
37822
  ref,
@@ -37518,20 +37840,20 @@ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
37518
37840
  // src/components/ui/sonner.tsx
37519
37841
  var import_next_themes = require("next-themes");
37520
37842
  var import_sonner = require("sonner");
37521
- var import_jsx_runtime127 = require("react/jsx-runtime");
37843
+ var import_jsx_runtime129 = require("react/jsx-runtime");
37522
37844
  var Toaster = ({ ...props }) => {
37523
37845
  const { theme = "system" } = (0, import_next_themes.useTheme)();
37524
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
37846
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37525
37847
  import_sonner.Toaster,
37526
37848
  {
37527
37849
  theme,
37528
37850
  className: "toaster group",
37529
37851
  icons: {
37530
- success: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(CircleCheck, { className: "h-4 w-4" }),
37531
- info: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Info, { className: "h-4 w-4" }),
37532
- warning: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(TriangleAlert, { className: "h-4 w-4" }),
37533
- error: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(OctagonX, { className: "h-4 w-4" }),
37534
- loading: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(LoaderCircle, { className: "h-4 w-4 animate-spin" })
37852
+ success: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(CircleCheck, { className: "h-4 w-4" }),
37853
+ info: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Info, { className: "h-4 w-4" }),
37854
+ warning: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(TriangleAlert, { className: "h-4 w-4" }),
37855
+ error: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(OctagonX, { className: "h-4 w-4" }),
37856
+ loading: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(LoaderCircle, { className: "h-4 w-4 animate-spin" })
37535
37857
  },
37536
37858
  toastOptions: {
37537
37859
  classNames: {
@@ -37547,26 +37869,26 @@ var Toaster = ({ ...props }) => {
37547
37869
  };
37548
37870
 
37549
37871
  // src/components/ui/toggle-group.tsx
37550
- var React95 = __toESM(require("react"), 1);
37872
+ var React97 = __toESM(require("react"), 1);
37551
37873
  var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"), 1);
37552
- var import_jsx_runtime128 = require("react/jsx-runtime");
37553
- var ToggleGroupContext = React95.createContext({
37874
+ var import_jsx_runtime130 = require("react/jsx-runtime");
37875
+ var ToggleGroupContext = React97.createContext({
37554
37876
  size: "default",
37555
37877
  variant: "default"
37556
37878
  });
37557
- var ToggleGroup = React95.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37879
+ var ToggleGroup = React97.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37558
37880
  ToggleGroupPrimitive.Root,
37559
37881
  {
37560
37882
  ref,
37561
37883
  className: cn("flex items-center justify-center gap-1", className),
37562
37884
  ...props,
37563
- children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
37885
+ children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
37564
37886
  }
37565
37887
  ));
37566
37888
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
37567
- var ToggleGroupItem = React95.forwardRef(({ className, children, variant, size, ...props }, ref) => {
37568
- const context = React95.useContext(ToggleGroupContext);
37569
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37889
+ var ToggleGroupItem = React97.forwardRef(({ className, children, variant, size, ...props }, ref) => {
37890
+ const context = React97.useContext(ToggleGroupContext);
37891
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37570
37892
  ToggleGroupPrimitive.Item,
37571
37893
  {
37572
37894
  ref,
@@ -37585,7 +37907,7 @@ var ToggleGroupItem = React95.forwardRef(({ className, children, variant, size,
37585
37907
  ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
37586
37908
 
37587
37909
  // src/render/PXEngineRenderer.tsx
37588
- var import_jsx_runtime129 = require("react/jsx-runtime");
37910
+ var import_jsx_runtime131 = require("react/jsx-runtime");
37589
37911
  var CONTEXT_DEPENDENT_COMPONENTS = /* @__PURE__ */ new Set([
37590
37912
  // Form components - require FormField + FormItem context
37591
37913
  "FormLabel",
@@ -37677,24 +37999,24 @@ var COMPONENT_SUGGESTIONS = {
37677
37999
  };
37678
38000
  var renderContextDependentError = (componentName, normalizedName, key) => {
37679
38001
  const suggestion = COMPONENT_SUGGESTIONS[normalizedName] || `${componentName}Atom (if available)`;
37680
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
38002
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
37681
38003
  "div",
37682
38004
  {
37683
38005
  className: "p-4 border-2 border-amber-500/50 rounded-lg bg-amber-50/80 space-y-2 my-2",
37684
38006
  children: [
37685
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex items-start gap-2", children: [
37686
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
37687
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex-1", children: [
37688
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("p", { className: "text-sm font-semibold text-amber-900", children: [
38007
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "flex items-start gap-2", children: [
38008
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
38009
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "flex-1", children: [
38010
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("p", { className: "text-sm font-semibold text-amber-900", children: [
37689
38011
  "Invalid Component: ",
37690
38012
  componentName
37691
38013
  ] }),
37692
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("p", { className: "text-xs text-amber-700 mt-1", children: "This component requires React Context and cannot be rendered directly in schemas." })
38014
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("p", { className: "text-xs text-amber-700 mt-1", children: "This component requires React Context and cannot be rendered directly in schemas." })
37693
38015
  ] })
37694
38016
  ] }),
37695
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
37696
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
37697
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
38017
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
38018
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
38019
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
37698
38020
  ] })
37699
38021
  ]
37700
38022
  },
@@ -37765,7 +38087,8 @@ var normalizeProps = (props) => {
37765
38087
  };
37766
38088
  var PXEngineRenderer = ({
37767
38089
  schema,
37768
- onAction
38090
+ onAction,
38091
+ disabled
37769
38092
  }) => {
37770
38093
  if (!schema) return null;
37771
38094
  const root = schema.root || schema;
@@ -37773,7 +38096,7 @@ var PXEngineRenderer = ({
37773
38096
  if (typeof component === "string" || typeof component === "number") {
37774
38097
  return component;
37775
38098
  }
37776
- if (import_react64.default.isValidElement(component)) {
38099
+ if (import_react66.default.isValidElement(component)) {
37777
38100
  return component;
37778
38101
  }
37779
38102
  if (!component || typeof component !== "object") return null;
@@ -37789,6 +38112,9 @@ var PXEngineRenderer = ({
37789
38112
  const componentName = name || type || componentType;
37790
38113
  if (!componentName || typeof componentName !== "string") return null;
37791
38114
  const rawProps = { ...remainingProps, ...props };
38115
+ if (disabled !== void 0 && rawProps.disabled === void 0) {
38116
+ rawProps.disabled = disabled;
38117
+ }
37792
38118
  const { normalized: finalProps, dynamicStyle } = normalizeProps(rawProps);
37793
38119
  if (id && !finalProps.id) {
37794
38120
  finalProps.id = id;
@@ -37848,7 +38174,7 @@ var PXEngineRenderer = ({
37848
38174
  const isAtomWithRenderProp = ATOMS_WITH_RENDER.has(atomName);
37849
38175
  const finalStyle = { ...dynamicStyle, ...finalProps.style || {} };
37850
38176
  if (isAtomWithRenderProp) {
37851
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38177
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37852
38178
  TargetComponent,
37853
38179
  {
37854
38180
  ...finalProps,
@@ -37860,7 +38186,7 @@ var PXEngineRenderer = ({
37860
38186
  uniqueKey
37861
38187
  );
37862
38188
  } else {
37863
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38189
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37864
38190
  TargetComponent,
37865
38191
  {
37866
38192
  ...finalProps,
@@ -37872,7 +38198,7 @@ var PXEngineRenderer = ({
37872
38198
  );
37873
38199
  }
37874
38200
  };
37875
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
38201
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
37876
38202
  };
37877
38203
  // Annotate the CommonJS export names for ESM import in node:
37878
38204
  0 && (module.exports = {
@@ -37919,6 +38245,7 @@ var PXEngineRenderer = ({
37919
38245
  ButtonAtom,
37920
38246
  Calendar,
37921
38247
  CalendarAtom,
38248
+ CampaignConceptCard,
37922
38249
  CampaignSeedCard,
37923
38250
  Card,
37924
38251
  CardAtom,
@@ -37966,6 +38293,7 @@ var PXEngineRenderer = ({
37966
38293
  CreatorActionHeader,
37967
38294
  CreatorGridCard,
37968
38295
  CreatorProfileSummary,
38296
+ CreatorSearch,
37969
38297
  DataGrid,
37970
38298
  Dialog,
37971
38299
  DialogAtom,