pxengine 0.1.19 → 0.1.21

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,20 +34830,32 @@ 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";
@@ -35275,7 +35326,7 @@ var KeywordBundlesEdit = ({
35275
35326
  var KeywordBundlesDisplay = ({ value }) => {
35276
35327
  const bundles = Array.isArray(value) ? value : [];
35277
35328
  if (bundles.length === 0)
35278
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-muted-foreground italic", children: "Not specified" });
35329
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-gray-500 italic text-sm", children: "Not specified" });
35279
35330
  const groups = {};
35280
35331
  bundles.forEach((b) => {
35281
35332
  const p = Number(b?.priority) || 1;
@@ -35284,28 +35335,20 @@ var KeywordBundlesDisplay = ({ value }) => {
35284
35335
  groups[p].push(...keywords);
35285
35336
  });
35286
35337
  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) => {
35338
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "space-y-4 pt-2", children: sortedPriorities.map((priority) => {
35288
35339
  const deduped = Array.from(new Set(groups[priority]));
35289
35340
  return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "space-y-2", children: [
35290
35341
  /* @__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" })
35342
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("span", { className: "text-[10px] uppercase tracking-widest text-purple-400 font-bold", children: [
35343
+ "Priority ",
35344
+ priority
35345
+ ] }),
35346
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "h-[1px] flex-1 bg-white/10" })
35303
35347
  ] }),
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,
35348
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "flex flex-wrap gap-2", children: deduped.map((keyword) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
35349
+ "div",
35306
35350
  {
35307
- variant: "secondary",
35308
- className: "bg-white border-gray-200 text-gray-700 font-medium",
35351
+ className: "px-2 py-1 rounded bg-[#1A1A1A] border border-white/10 text-gray-300 text-xs font-medium",
35309
35352
  children: keyword
35310
35353
  },
35311
35354
  keyword
@@ -35322,116 +35365,120 @@ var MCQCard = import_react62.default.memo(
35322
35365
  question,
35323
35366
  options,
35324
35367
  recommended,
35325
- selectedOption,
35368
+ selectedOption: propsSelectedOption,
35326
35369
  onSelect,
35327
- onAction,
35370
+ onProceed,
35328
35371
  isLatestMessage = true,
35329
- countdown,
35330
- isPaused = false,
35331
- onPause,
35332
35372
  isLoading = false,
35333
35373
  className,
35334
- selectionStatus
35374
+ selectionStatus,
35375
+ onAction,
35376
+ disabled = false
35335
35377
  }) => {
35336
- const [localSelected, setLocalSelected] = (0, import_react62.useState)(null);
35337
- const effectiveSelected = selectedOption ?? localSelected;
35338
- const handleOptionClick = (key) => {
35339
- if (!isLoading) {
35340
- setLocalSelected(key);
35378
+ const [selectedOption, setSelectedOption] = import_react62.default.useState(propsSelectedOption);
35379
+ import_react62.default.useEffect(() => {
35380
+ if (propsSelectedOption) {
35381
+ setSelectedOption(propsSelectedOption);
35382
+ }
35383
+ }, [propsSelectedOption]);
35384
+ const handleOptionClick = (key, e) => {
35385
+ e.preventDefault();
35386
+ e.stopPropagation();
35387
+ if (isLatestMessage && !isLoading && !disabled) {
35388
+ setSelectedOption(key);
35341
35389
  onSelect?.(key);
35342
35390
  }
35343
35391
  };
35344
- const handleProceed = () => {
35345
- const value = effectiveSelected || recommended || "";
35346
- if (value) {
35347
- if (onAction) {
35348
- onAction(value);
35349
- }
35392
+ const handleProceed = (e) => {
35393
+ e.preventDefault();
35394
+ e.stopPropagation();
35395
+ if ((selectedOption || recommended) && !disabled) {
35396
+ const result = selectedOption || recommended || "";
35397
+ onProceed?.(result);
35398
+ onAction?.({
35399
+ type: "mcq_selection",
35400
+ value: result,
35401
+ label: options[result] || result
35402
+ });
35350
35403
  }
35351
35404
  };
35405
+ const isInteractionDisabled = disabled || !isLatestMessage;
35352
35406
  return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
35353
- Card,
35407
+ "div",
35354
35408
  {
35355
35409
  className: cn(
35356
- "w-full rounded-[24px] border border-border bg-card shadow-sm overflow-hidden",
35410
+ "p-6 rounded-[20px] border border-gray400 bg-background dark:bg-gray200 font-noto w-full",
35357
35411
  className
35358
35412
  ),
35359
35413
  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;
35414
+ /* @__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 }) }),
35415
+ /* @__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]) => {
35416
+ const isSelected = selectedOption === key;
35363
35417
  const isRecommended = key === recommended;
35364
35418
  return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
35365
35419
  "div",
35366
35420
  {
35367
- onClick: () => handleOptionClick(key),
35421
+ onClick: (e) => handleOptionClick(key, e),
35368
35422
  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"
35423
+ "cursor-pointer rounded-xl p-3 transition-colors relative",
35424
+ "border border-transparent bg-paperBackground",
35425
+ !selectedOption && !isInteractionDisabled && "hover:border-gray500",
35426
+ (isLoading || isInteractionDisabled) && "opacity-50 cursor-not-allowed"
35372
35427
  ),
35373
35428
  children: [
35374
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35429
+ /* @__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
35430
  "div",
35376
35431
  {
35377
35432
  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"
35433
+ "w-5 h-5 rounded-full border flex items-center justify-center transition-colors",
35434
+ isSelected ? "border-purple100 bg-gray300" : cn(
35435
+ "border-gray300 bg-background",
35436
+ !selectedOption && !isInteractionDisabled && "hover:border-purple100"
35437
+ )
35380
35438
  ),
35381
- children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "w-1.5 h-1.5 rounded-full bg-white" })
35439
+ children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "w-2.5 h-2.5 rounded-full bg-purple100" })
35382
35440
  }
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
- ] }) })
35441
+ ) }),
35442
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "pl-12", children: [
35443
+ (isRecommended || isSelected) && /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "flex gap-2 mb-2 flex-wrap", children: [
35444
+ 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" }) }),
35445
+ isSelected && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex text-xs font-semibold", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35446
+ "p",
35447
+ {
35448
+ className: cn(
35449
+ "px-2 py-1 rounded-[20px]",
35450
+ selectedOption === recommended ? "bg-purpleLight text-purpleText2 dark:bg-primary/20 dark:text-primary" : "bg-paperBackground text-primaryDark2 dark:bg-primary/20 dark:text-primary"
35451
+ ),
35452
+ children: "Selected by you"
35453
+ }
35454
+ ) })
35455
+ ] }),
35456
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "text-base font-medium text-txtColor", children: label })
35457
+ ] })
35415
35458
  ]
35416
35459
  },
35417
35460
  key
35418
35461
  );
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
- ] }) })
35462
+ }) }) }),
35463
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "flex justify-between items-center", children: [
35464
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "flex-1" }),
35465
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
35466
+ "button",
35467
+ {
35468
+ onClick: (e) => handleProceed(e),
35469
+ disabled: isInteractionDisabled || isLoading || !selectedOption && !recommended,
35470
+ className: cn(
35471
+ "flex-3 px-4 py-2 border rounded-full text-sm disabled:opacity-50 disabled:cursor-not-allowed transition-colors",
35472
+ "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"
35473
+ ),
35474
+ children: isLoading ? "Sending..." : "Continue"
35475
+ }
35476
+ ),
35477
+ 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: [
35478
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "whitespace-nowrap", children: "Suggested by an Agent," }),
35479
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "whitespace-nowrap", children: "Approved by You" })
35480
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { children: "Selected by you" }) })
35481
+ ] })
35435
35482
  ]
35436
35483
  }
35437
35484
  );
@@ -35911,6 +35958,216 @@ var CreatorActionHeader = ({
35911
35958
  );
35912
35959
  };
35913
35960
 
35961
+ // src/molecules/creator-discovery/CreatorSearchBox/CreatorSearch.tsx
35962
+ var import_react63 = __toESM(require("react"), 1);
35963
+ var import_jsx_runtime120 = require("react/jsx-runtime");
35964
+ var CreatorSearch = import_react63.default.memo(
35965
+ ({
35966
+ selectionStatus,
35967
+ isLatestMessage = true,
35968
+ className,
35969
+ fields: providedFields,
35970
+ data,
35971
+ ...formCardProps
35972
+ }) => {
35973
+ const fields = (0, import_react63.useMemo)(() => {
35974
+ const baseFields = providedFields || generateFieldsFromData(data);
35975
+ return baseFields.map((field) => {
35976
+ if (field.key === "platforms") {
35977
+ return {
35978
+ ...field,
35979
+ renderDisplay: (val) => {
35980
+ const platforms = Array.isArray(val) ? val : [val];
35981
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "flex flex-wrap gap-2", children: platforms.map((p) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
35982
+ BadgeAtom,
35983
+ {
35984
+ id: `platform-${p}`,
35985
+ type: "badge",
35986
+ label: p,
35987
+ variant: "outline",
35988
+ className: "bg-[#1A1A1A] border-gray400 text-white font-medium"
35989
+ },
35990
+ p
35991
+ )) });
35992
+ }
35993
+ };
35994
+ }
35995
+ if (field.key === "geography") {
35996
+ return {
35997
+ ...field,
35998
+ renderDisplay: (val) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(CountrySelectDisplay, { value: val })
35999
+ };
36000
+ }
36001
+ if (field.key === "keywordBundles") {
36002
+ return {
36003
+ ...field,
36004
+ renderDisplay: (val) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(KeywordBundlesDisplay, { value: val })
36005
+ };
36006
+ }
36007
+ if (field.key === "followerRange") {
36008
+ return {
36009
+ ...field,
36010
+ renderDisplay: (val) => {
36011
+ if (typeof val === "object" && val !== null) {
36012
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { className: "text-white font-medium", children: `${val.min?.toLocaleString()} - ${val.max?.toLocaleString()} followers` });
36013
+ }
36014
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("span", { className: "text-white font-medium", children: [
36015
+ val,
36016
+ " followers"
36017
+ ] });
36018
+ }
36019
+ };
36020
+ }
36021
+ if (field.key === "initialCreators") {
36022
+ return {
36023
+ ...field,
36024
+ renderDisplay: (val) => /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("span", { className: "text-white font-medium", children: [
36025
+ val,
36026
+ " creators"
36027
+ ] })
36028
+ };
36029
+ }
36030
+ return field;
36031
+ });
36032
+ }, [providedFields, data]);
36033
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
36034
+ FormCard,
36035
+ {
36036
+ ...formCardProps,
36037
+ data,
36038
+ title: formCardProps.title || "Creator Search Settings",
36039
+ fields,
36040
+ showTimeline: true,
36041
+ className: cn("font-noto", className),
36042
+ 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: [
36043
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(CircleCheck, { className: "h-3.5 w-3.5" }),
36044
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { children: selectionStatus === "agent" ? "Suggested by Agent" : "Selected by you" })
36045
+ ] }) : formCardProps.footer
36046
+ }
36047
+ ) });
36048
+ }
36049
+ );
36050
+ CreatorSearch.displayName = "CreatorSearch";
36051
+
36052
+ // src/molecules/creator-discovery/CampaignConceptCard/CampaignConceptCard.tsx
36053
+ var import_react64 = __toESM(require("react"), 1);
36054
+ var import_framer_motion = require("framer-motion");
36055
+ var import_jsx_runtime121 = require("react/jsx-runtime");
36056
+ var CampaignConceptCard = import_react64.default.memo(
36057
+ ({
36058
+ isRecommended,
36059
+ isOpen: controlledIsOpen,
36060
+ onToggle,
36061
+ data,
36062
+ fields: providedFields,
36063
+ title,
36064
+ selectionStatus,
36065
+ isLatestMessage = true,
36066
+ className,
36067
+ ...formCardProps
36068
+ }) => {
36069
+ const [internalIsOpen, setInternalIsOpen] = (0, import_react64.useState)(false);
36070
+ const isOpen = controlledIsOpen !== void 0 ? controlledIsOpen : internalIsOpen;
36071
+ const handleToggle = () => {
36072
+ if (onToggle) {
36073
+ onToggle();
36074
+ } else {
36075
+ setInternalIsOpen(!internalIsOpen);
36076
+ }
36077
+ };
36078
+ const fields = (0, import_react64.useMemo)(() => {
36079
+ const baseFields = providedFields || generateFieldsFromData(data);
36080
+ return baseFields.map((field) => {
36081
+ if (field.key === "budgetAllocation") {
36082
+ return {
36083
+ ...field,
36084
+ renderDisplay: (val) => {
36085
+ if (!Array.isArray(val)) return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { children: val });
36086
+ 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: [
36087
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("span", { children: [
36088
+ idx + 1,
36089
+ "."
36090
+ ] }),
36091
+ /* @__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 }),
36092
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-gray-400", children: "=" }),
36093
+ /* @__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 })
36094
+ ] }, idx)) });
36095
+ }
36096
+ };
36097
+ }
36098
+ if (field.key === "estimatedCreators") {
36099
+ return {
36100
+ ...field,
36101
+ renderDisplay: (val) => {
36102
+ if (!Array.isArray(val)) return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-white font-medium", children: val });
36103
+ 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)) });
36104
+ }
36105
+ };
36106
+ }
36107
+ return {
36108
+ ...field,
36109
+ renderDisplay: (val) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-gray-300 text-sm", children: val })
36110
+ };
36111
+ });
36112
+ }, [providedFields, data]);
36113
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
36114
+ "div",
36115
+ {
36116
+ className: cn(
36117
+ "w-full rounded-[20px] transition-all duration-300 bg-background dark:bg-gray50",
36118
+ isOpen ? "border border-green-500/50 shadow-[0_0_15px_rgba(34,197,94,0.1)]" : "border border-gray400",
36119
+ className
36120
+ ),
36121
+ children: [
36122
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
36123
+ "div",
36124
+ {
36125
+ className: "flex items-center justify-between p-6 cursor-pointer select-none",
36126
+ onClick: handleToggle,
36127
+ children: [
36128
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { className: "flex flex-col gap-2", children: [
36129
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("h3", { className: "text-lg font-semibold text-white tracking-wide", children: title || data.title }),
36130
+ 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" }) })
36131
+ ] }),
36132
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className: cn(
36133
+ "p-2 rounded-lg bg-white/5 border border-white/10 text-gray-400 transition-transform duration-300",
36134
+ isOpen && "rotate-180"
36135
+ ), children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(ChevronDown, { className: "h-4 w-4" }) })
36136
+ ]
36137
+ }
36138
+ ),
36139
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: isOpen && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36140
+ import_framer_motion.motion.div,
36141
+ {
36142
+ initial: { height: 0, opacity: 0 },
36143
+ animate: { height: "auto", opacity: 1 },
36144
+ exit: { height: 0, opacity: 0 },
36145
+ transition: { duration: 0.3, ease: "easeInOut" },
36146
+ className: "overflow-hidden",
36147
+ 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)(
36148
+ FormCard,
36149
+ {
36150
+ ...formCardProps,
36151
+ title: title || data.title || "Campaign Concept",
36152
+ data,
36153
+ fields,
36154
+ showTimeline: true,
36155
+ className: "bg-transparent border-none shadow-none mb-0 p-0",
36156
+ 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: [
36157
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(CircleCheck, { className: "h-3.5 w-3.5" }),
36158
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by You" })
36159
+ ] }) : formCardProps.footer
36160
+ }
36161
+ ) })
36162
+ }
36163
+ ) })
36164
+ ]
36165
+ }
36166
+ );
36167
+ }
36168
+ );
36169
+ CampaignConceptCard.displayName = "CampaignConceptCard";
36170
+
35914
36171
  // src/components/ui/index.ts
35915
36172
  var ui_exports = {};
35916
36173
  __export(ui_exports, {
@@ -36203,7 +36460,7 @@ __export(ui_exports, {
36203
36460
  // src/components/ui/button-group.tsx
36204
36461
  var import_react_slot4 = require("@radix-ui/react-slot");
36205
36462
  var import_class_variance_authority8 = require("class-variance-authority");
36206
- var import_jsx_runtime120 = require("react/jsx-runtime");
36463
+ var import_jsx_runtime122 = require("react/jsx-runtime");
36207
36464
  var buttonGroupVariants = (0, import_class_variance_authority8.cva)(
36208
36465
  "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
36466
  {
@@ -36223,7 +36480,7 @@ function ButtonGroup({
36223
36480
  orientation,
36224
36481
  ...props
36225
36482
  }) {
36226
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
36483
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36227
36484
  "div",
36228
36485
  {
36229
36486
  role: "group",
@@ -36240,7 +36497,7 @@ function ButtonGroupText({
36240
36497
  ...props
36241
36498
  }) {
36242
36499
  const Comp = asChild ? import_react_slot4.Slot : "div";
36243
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
36500
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36244
36501
  Comp,
36245
36502
  {
36246
36503
  className: cn(
@@ -36256,7 +36513,7 @@ function ButtonGroupSeparator({
36256
36513
  orientation = "vertical",
36257
36514
  ...props
36258
36515
  }) {
36259
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
36516
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36260
36517
  Separator2,
36261
36518
  {
36262
36519
  "data-slot": "button-group-separator",
@@ -36272,9 +36529,9 @@ function ButtonGroupSeparator({
36272
36529
 
36273
36530
  // src/components/ui/empty.tsx
36274
36531
  var import_class_variance_authority9 = require("class-variance-authority");
36275
- var import_jsx_runtime121 = require("react/jsx-runtime");
36532
+ var import_jsx_runtime123 = require("react/jsx-runtime");
36276
36533
  function Empty({ className, ...props }) {
36277
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36534
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36278
36535
  "div",
36279
36536
  {
36280
36537
  "data-slot": "empty",
@@ -36287,7 +36544,7 @@ function Empty({ className, ...props }) {
36287
36544
  );
36288
36545
  }
36289
36546
  function EmptyHeader({ className, ...props }) {
36290
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36547
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36291
36548
  "div",
36292
36549
  {
36293
36550
  "data-slot": "empty-header",
@@ -36318,7 +36575,7 @@ function EmptyMedia({
36318
36575
  variant = "default",
36319
36576
  ...props
36320
36577
  }) {
36321
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36578
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36322
36579
  "div",
36323
36580
  {
36324
36581
  "data-slot": "empty-icon",
@@ -36329,7 +36586,7 @@ function EmptyMedia({
36329
36586
  );
36330
36587
  }
36331
36588
  function EmptyTitle({ className, ...props }) {
36332
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36589
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36333
36590
  "div",
36334
36591
  {
36335
36592
  "data-slot": "empty-title",
@@ -36339,7 +36596,7 @@ function EmptyTitle({ className, ...props }) {
36339
36596
  );
36340
36597
  }
36341
36598
  function EmptyDescription({ className, ...props }) {
36342
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36599
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36343
36600
  "div",
36344
36601
  {
36345
36602
  "data-slot": "empty-description",
@@ -36352,7 +36609,7 @@ function EmptyDescription({ className, ...props }) {
36352
36609
  );
36353
36610
  }
36354
36611
  function EmptyContent({ className, ...props }) {
36355
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
36612
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36356
36613
  "div",
36357
36614
  {
36358
36615
  "data-slot": "empty-content",
@@ -36366,11 +36623,11 @@ function EmptyContent({ className, ...props }) {
36366
36623
  }
36367
36624
 
36368
36625
  // src/components/ui/field.tsx
36369
- var import_react63 = require("react");
36626
+ var import_react65 = require("react");
36370
36627
  var import_class_variance_authority10 = require("class-variance-authority");
36371
- var import_jsx_runtime122 = require("react/jsx-runtime");
36628
+ var import_jsx_runtime124 = require("react/jsx-runtime");
36372
36629
  function FieldSet({ className, ...props }) {
36373
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36630
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36374
36631
  "fieldset",
36375
36632
  {
36376
36633
  "data-slot": "field-set",
@@ -36388,7 +36645,7 @@ function FieldLegend({
36388
36645
  variant = "legend",
36389
36646
  ...props
36390
36647
  }) {
36391
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36648
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36392
36649
  "legend",
36393
36650
  {
36394
36651
  "data-slot": "field-legend",
@@ -36404,7 +36661,7 @@ function FieldLegend({
36404
36661
  );
36405
36662
  }
36406
36663
  function FieldGroup({ className, ...props }) {
36407
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36664
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36408
36665
  "div",
36409
36666
  {
36410
36667
  "data-slot": "field-group",
@@ -36444,7 +36701,7 @@ function Field({
36444
36701
  orientation = "vertical",
36445
36702
  ...props
36446
36703
  }) {
36447
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36704
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36448
36705
  "div",
36449
36706
  {
36450
36707
  role: "group",
@@ -36456,7 +36713,7 @@ function Field({
36456
36713
  );
36457
36714
  }
36458
36715
  function FieldContent({ className, ...props }) {
36459
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36716
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36460
36717
  "div",
36461
36718
  {
36462
36719
  "data-slot": "field-content",
@@ -36472,7 +36729,7 @@ function FieldLabel({
36472
36729
  className,
36473
36730
  ...props
36474
36731
  }) {
36475
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36732
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36476
36733
  Label,
36477
36734
  {
36478
36735
  "data-slot": "field-label",
@@ -36487,7 +36744,7 @@ function FieldLabel({
36487
36744
  );
36488
36745
  }
36489
36746
  function FieldTitle({ className, ...props }) {
36490
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36747
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36491
36748
  "div",
36492
36749
  {
36493
36750
  "data-slot": "field-label",
@@ -36500,7 +36757,7 @@ function FieldTitle({ className, ...props }) {
36500
36757
  );
36501
36758
  }
36502
36759
  function FieldDescription({ className, ...props }) {
36503
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36760
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36504
36761
  "p",
36505
36762
  {
36506
36763
  "data-slot": "field-description",
@@ -36519,7 +36776,7 @@ function FieldSeparator({
36519
36776
  className,
36520
36777
  ...props
36521
36778
  }) {
36522
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
36779
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
36523
36780
  "div",
36524
36781
  {
36525
36782
  "data-slot": "field-separator",
@@ -36530,8 +36787,8 @@ function FieldSeparator({
36530
36787
  ),
36531
36788
  ...props,
36532
36789
  children: [
36533
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(Separator2, { className: "absolute inset-0 top-1/2" }),
36534
- children && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36790
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Separator2, { className: "absolute inset-0 top-1/2" }),
36791
+ children && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36535
36792
  "span",
36536
36793
  {
36537
36794
  className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
@@ -36549,7 +36806,7 @@ function FieldError({
36549
36806
  errors,
36550
36807
  ...props
36551
36808
  }) {
36552
- const content = (0, import_react63.useMemo)(() => {
36809
+ const content = (0, import_react65.useMemo)(() => {
36553
36810
  if (children) {
36554
36811
  return children;
36555
36812
  }
@@ -36559,14 +36816,14 @@ function FieldError({
36559
36816
  if (errors?.length === 1 && errors[0]?.message) {
36560
36817
  return errors[0].message;
36561
36818
  }
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)
36819
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
36820
+ (error, index) => error?.message && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("li", { children: error.message }, index)
36564
36821
  ) });
36565
36822
  }, [children, errors]);
36566
36823
  if (!content) {
36567
36824
  return null;
36568
36825
  }
36569
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
36826
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36570
36827
  "div",
36571
36828
  {
36572
36829
  role: "alert",
@@ -36580,9 +36837,9 @@ function FieldError({
36580
36837
 
36581
36838
  // src/components/ui/input-group.tsx
36582
36839
  var import_class_variance_authority11 = require("class-variance-authority");
36583
- var import_jsx_runtime123 = require("react/jsx-runtime");
36840
+ var import_jsx_runtime125 = require("react/jsx-runtime");
36584
36841
  function InputGroup({ className, ...props }) {
36585
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36842
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36586
36843
  "div",
36587
36844
  {
36588
36845
  "data-slot": "input-group",
@@ -36626,7 +36883,7 @@ function InputGroupAddon({
36626
36883
  align = "inline-start",
36627
36884
  ...props
36628
36885
  }) {
36629
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36886
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36630
36887
  "div",
36631
36888
  {
36632
36889
  role: "group",
@@ -36666,7 +36923,7 @@ function InputGroupButton({
36666
36923
  size = "xs",
36667
36924
  ...props
36668
36925
  }) {
36669
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36926
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36670
36927
  Button,
36671
36928
  {
36672
36929
  type,
@@ -36678,7 +36935,7 @@ function InputGroupButton({
36678
36935
  );
36679
36936
  }
36680
36937
  function InputGroupText({ className, ...props }) {
36681
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36938
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36682
36939
  "span",
36683
36940
  {
36684
36941
  className: cn(
@@ -36693,7 +36950,7 @@ function InputGroupInput({
36693
36950
  className,
36694
36951
  ...props
36695
36952
  }) {
36696
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36953
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36697
36954
  Input,
36698
36955
  {
36699
36956
  "data-slot": "input-group-control",
@@ -36709,7 +36966,7 @@ function InputGroupTextarea({
36709
36966
  className,
36710
36967
  ...props
36711
36968
  }) {
36712
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
36969
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
36713
36970
  Textarea,
36714
36971
  {
36715
36972
  "data-slot": "input-group-control",
@@ -36725,9 +36982,9 @@ function InputGroupTextarea({
36725
36982
  // src/components/ui/item.tsx
36726
36983
  var import_react_slot5 = require("@radix-ui/react-slot");
36727
36984
  var import_class_variance_authority12 = require("class-variance-authority");
36728
- var import_jsx_runtime124 = require("react/jsx-runtime");
36985
+ var import_jsx_runtime126 = require("react/jsx-runtime");
36729
36986
  function ItemGroup({ className, ...props }) {
36730
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
36987
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36731
36988
  "div",
36732
36989
  {
36733
36990
  role: "list",
@@ -36741,7 +36998,7 @@ function ItemSeparator({
36741
36998
  className,
36742
36999
  ...props
36743
37000
  }) {
36744
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37001
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36745
37002
  Separator2,
36746
37003
  {
36747
37004
  "data-slot": "item-separator",
@@ -36779,7 +37036,7 @@ function Item8({
36779
37036
  ...props
36780
37037
  }) {
36781
37038
  const Comp = asChild ? import_react_slot5.Slot : "div";
36782
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37039
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36783
37040
  Comp,
36784
37041
  {
36785
37042
  "data-slot": "item",
@@ -36810,7 +37067,7 @@ function ItemMedia({
36810
37067
  variant = "default",
36811
37068
  ...props
36812
37069
  }) {
36813
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37070
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36814
37071
  "div",
36815
37072
  {
36816
37073
  "data-slot": "item-media",
@@ -36821,7 +37078,7 @@ function ItemMedia({
36821
37078
  );
36822
37079
  }
36823
37080
  function ItemContent({ className, ...props }) {
36824
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37081
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36825
37082
  "div",
36826
37083
  {
36827
37084
  "data-slot": "item-content",
@@ -36834,7 +37091,7 @@ function ItemContent({ className, ...props }) {
36834
37091
  );
36835
37092
  }
36836
37093
  function ItemTitle({ className, ...props }) {
36837
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37094
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36838
37095
  "div",
36839
37096
  {
36840
37097
  "data-slot": "item-title",
@@ -36847,7 +37104,7 @@ function ItemTitle({ className, ...props }) {
36847
37104
  );
36848
37105
  }
36849
37106
  function ItemDescription({ className, ...props }) {
36850
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37107
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36851
37108
  "p",
36852
37109
  {
36853
37110
  "data-slot": "item-description",
@@ -36861,7 +37118,7 @@ function ItemDescription({ className, ...props }) {
36861
37118
  );
36862
37119
  }
36863
37120
  function ItemActions({ className, ...props }) {
36864
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37121
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36865
37122
  "div",
36866
37123
  {
36867
37124
  "data-slot": "item-actions",
@@ -36871,7 +37128,7 @@ function ItemActions({ className, ...props }) {
36871
37128
  );
36872
37129
  }
36873
37130
  function ItemHeader({ className, ...props }) {
36874
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37131
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36875
37132
  "div",
36876
37133
  {
36877
37134
  "data-slot": "item-header",
@@ -36884,7 +37141,7 @@ function ItemHeader({ className, ...props }) {
36884
37141
  );
36885
37142
  }
36886
37143
  function ItemFooter({ className, ...props }) {
36887
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
37144
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
36888
37145
  "div",
36889
37146
  {
36890
37147
  "data-slot": "item-footer",
@@ -36898,9 +37155,9 @@ function ItemFooter({ className, ...props }) {
36898
37155
  }
36899
37156
 
36900
37157
  // src/components/ui/kbd.tsx
36901
- var import_jsx_runtime125 = require("react/jsx-runtime");
37158
+ var import_jsx_runtime127 = require("react/jsx-runtime");
36902
37159
  function Kbd({ className, ...props }) {
36903
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
37160
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
36904
37161
  "kbd",
36905
37162
  {
36906
37163
  "data-slot": "kbd",
@@ -36915,7 +37172,7 @@ function Kbd({ className, ...props }) {
36915
37172
  );
36916
37173
  }
36917
37174
  function KbdGroup({ className, ...props }) {
36918
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
37175
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
36919
37176
  "kbd",
36920
37177
  {
36921
37178
  "data-slot": "kbd-group",
@@ -36926,16 +37183,16 @@ function KbdGroup({ className, ...props }) {
36926
37183
  }
36927
37184
 
36928
37185
  // src/components/ui/sidebar.tsx
36929
- var React94 = __toESM(require("react"), 1);
37186
+ var React96 = __toESM(require("react"), 1);
36930
37187
  var import_react_slot6 = require("@radix-ui/react-slot");
36931
37188
  var import_class_variance_authority13 = require("class-variance-authority");
36932
37189
 
36933
37190
  // src/hooks/use-mobile.tsx
36934
- var React93 = __toESM(require("react"), 1);
37191
+ var React95 = __toESM(require("react"), 1);
36935
37192
  var MOBILE_BREAKPOINT = 768;
36936
37193
  function useIsMobile() {
36937
- const [isMobile, setIsMobile] = React93.useState(void 0);
36938
- React93.useEffect(() => {
37194
+ const [isMobile, setIsMobile] = React95.useState(void 0);
37195
+ React95.useEffect(() => {
36939
37196
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
36940
37197
  const onChange = () => {
36941
37198
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -36948,22 +37205,22 @@ function useIsMobile() {
36948
37205
  }
36949
37206
 
36950
37207
  // src/components/ui/sidebar.tsx
36951
- var import_jsx_runtime126 = require("react/jsx-runtime");
37208
+ var import_jsx_runtime128 = require("react/jsx-runtime");
36952
37209
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
36953
37210
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
36954
37211
  var SIDEBAR_WIDTH = "16rem";
36955
37212
  var SIDEBAR_WIDTH_MOBILE = "18rem";
36956
37213
  var SIDEBAR_WIDTH_ICON = "3rem";
36957
37214
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
36958
- var SidebarContext = React94.createContext(null);
37215
+ var SidebarContext = React96.createContext(null);
36959
37216
  function useSidebar() {
36960
- const context = React94.useContext(SidebarContext);
37217
+ const context = React96.useContext(SidebarContext);
36961
37218
  if (!context) {
36962
37219
  throw new Error("useSidebar must be used within a SidebarProvider.");
36963
37220
  }
36964
37221
  return context;
36965
37222
  }
36966
- var SidebarProvider = React94.forwardRef(
37223
+ var SidebarProvider = React96.forwardRef(
36967
37224
  ({
36968
37225
  defaultOpen = true,
36969
37226
  open: openProp,
@@ -36974,10 +37231,10 @@ var SidebarProvider = React94.forwardRef(
36974
37231
  ...props
36975
37232
  }, ref) => {
36976
37233
  const isMobile = useIsMobile();
36977
- const [openMobile, setOpenMobile] = React94.useState(false);
36978
- const [_open, _setOpen] = React94.useState(defaultOpen);
37234
+ const [openMobile, setOpenMobile] = React96.useState(false);
37235
+ const [_open, _setOpen] = React96.useState(defaultOpen);
36979
37236
  const open = openProp ?? _open;
36980
- const setOpen = React94.useCallback(
37237
+ const setOpen = React96.useCallback(
36981
37238
  (value) => {
36982
37239
  const openState = typeof value === "function" ? value(open) : value;
36983
37240
  if (setOpenProp) {
@@ -36989,10 +37246,10 @@ var SidebarProvider = React94.forwardRef(
36989
37246
  },
36990
37247
  [setOpenProp, open]
36991
37248
  );
36992
- const toggleSidebar = React94.useCallback(() => {
37249
+ const toggleSidebar = React96.useCallback(() => {
36993
37250
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
36994
37251
  }, [isMobile, setOpen, setOpenMobile]);
36995
- React94.useEffect(() => {
37252
+ React96.useEffect(() => {
36996
37253
  const handleKeyDown = (event) => {
36997
37254
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
36998
37255
  event.preventDefault();
@@ -37003,7 +37260,7 @@ var SidebarProvider = React94.forwardRef(
37003
37260
  return () => window.removeEventListener("keydown", handleKeyDown);
37004
37261
  }, [toggleSidebar]);
37005
37262
  const state = open ? "expanded" : "collapsed";
37006
- const contextValue = React94.useMemo(
37263
+ const contextValue = React96.useMemo(
37007
37264
  () => ({
37008
37265
  state,
37009
37266
  open,
@@ -37015,7 +37272,7 @@ var SidebarProvider = React94.forwardRef(
37015
37272
  }),
37016
37273
  [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
37017
37274
  );
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)(
37275
+ 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
37276
  "div",
37020
37277
  {
37021
37278
  style: {
@@ -37035,7 +37292,7 @@ var SidebarProvider = React94.forwardRef(
37035
37292
  }
37036
37293
  );
37037
37294
  SidebarProvider.displayName = "SidebarProvider";
37038
- var Sidebar = React94.forwardRef(
37295
+ var Sidebar = React96.forwardRef(
37039
37296
  ({
37040
37297
  side = "left",
37041
37298
  variant = "sidebar",
@@ -37046,7 +37303,7 @@ var Sidebar = React94.forwardRef(
37046
37303
  }, ref) => {
37047
37304
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
37048
37305
  if (collapsible === "none") {
37049
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37306
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37050
37307
  "div",
37051
37308
  {
37052
37309
  className: cn(
@@ -37060,7 +37317,7 @@ var Sidebar = React94.forwardRef(
37060
37317
  );
37061
37318
  }
37062
37319
  if (isMobile) {
37063
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37320
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
37064
37321
  SheetContent,
37065
37322
  {
37066
37323
  "data-sidebar": "sidebar",
@@ -37071,16 +37328,16 @@ var Sidebar = React94.forwardRef(
37071
37328
  },
37072
37329
  side,
37073
37330
  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." })
37331
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(SheetHeader, { className: "sr-only", children: [
37332
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SheetTitle, { children: "Sidebar" }),
37333
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
37077
37334
  ] }),
37078
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "flex h-full w-full flex-col", children })
37335
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "flex h-full w-full flex-col", children })
37079
37336
  ]
37080
37337
  }
37081
37338
  ) });
37082
37339
  }
37083
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37340
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
37084
37341
  "div",
37085
37342
  {
37086
37343
  ref,
@@ -37090,7 +37347,7 @@ var Sidebar = React94.forwardRef(
37090
37347
  "data-variant": variant,
37091
37348
  "data-side": side,
37092
37349
  children: [
37093
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37350
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37094
37351
  "div",
37095
37352
  {
37096
37353
  className: cn(
@@ -37101,7 +37358,7 @@ var Sidebar = React94.forwardRef(
37101
37358
  )
37102
37359
  }
37103
37360
  ),
37104
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37361
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37105
37362
  "div",
37106
37363
  {
37107
37364
  className: cn(
@@ -37112,7 +37369,7 @@ var Sidebar = React94.forwardRef(
37112
37369
  className
37113
37370
  ),
37114
37371
  ...props,
37115
- children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37372
+ children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37116
37373
  "div",
37117
37374
  {
37118
37375
  "data-sidebar": "sidebar",
@@ -37128,9 +37385,9 @@ var Sidebar = React94.forwardRef(
37128
37385
  }
37129
37386
  );
37130
37387
  Sidebar.displayName = "Sidebar";
37131
- var SidebarTrigger = React94.forwardRef(({ className, onClick, ...props }, ref) => {
37388
+ var SidebarTrigger = React96.forwardRef(({ className, onClick, ...props }, ref) => {
37132
37389
  const { toggleSidebar } = useSidebar();
37133
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37390
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
37134
37391
  Button,
37135
37392
  {
37136
37393
  ref,
@@ -37144,16 +37401,16 @@ var SidebarTrigger = React94.forwardRef(({ className, onClick, ...props }, ref)
37144
37401
  },
37145
37402
  ...props,
37146
37403
  children: [
37147
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(PanelLeft, {}),
37148
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
37404
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(PanelLeft, {}),
37405
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
37149
37406
  ]
37150
37407
  }
37151
37408
  );
37152
37409
  });
37153
37410
  SidebarTrigger.displayName = "SidebarTrigger";
37154
- var SidebarRail = React94.forwardRef(({ className, ...props }, ref) => {
37411
+ var SidebarRail = React96.forwardRef(({ className, ...props }, ref) => {
37155
37412
  const { toggleSidebar } = useSidebar();
37156
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37413
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37157
37414
  "button",
37158
37415
  {
37159
37416
  ref,
@@ -37176,8 +37433,8 @@ var SidebarRail = React94.forwardRef(({ className, ...props }, ref) => {
37176
37433
  );
37177
37434
  });
37178
37435
  SidebarRail.displayName = "SidebarRail";
37179
- var SidebarInset = React94.forwardRef(({ className, ...props }, ref) => {
37180
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37436
+ var SidebarInset = React96.forwardRef(({ className, ...props }, ref) => {
37437
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37181
37438
  "main",
37182
37439
  {
37183
37440
  ref,
@@ -37191,8 +37448,8 @@ var SidebarInset = React94.forwardRef(({ className, ...props }, ref) => {
37191
37448
  );
37192
37449
  });
37193
37450
  SidebarInset.displayName = "SidebarInset";
37194
- var SidebarInput = React94.forwardRef(({ className, ...props }, ref) => {
37195
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37451
+ var SidebarInput = React96.forwardRef(({ className, ...props }, ref) => {
37452
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37196
37453
  Input,
37197
37454
  {
37198
37455
  ref,
@@ -37206,8 +37463,8 @@ var SidebarInput = React94.forwardRef(({ className, ...props }, ref) => {
37206
37463
  );
37207
37464
  });
37208
37465
  SidebarInput.displayName = "SidebarInput";
37209
- var SidebarHeader = React94.forwardRef(({ className, ...props }, ref) => {
37210
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37466
+ var SidebarHeader = React96.forwardRef(({ className, ...props }, ref) => {
37467
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37211
37468
  "div",
37212
37469
  {
37213
37470
  ref,
@@ -37218,8 +37475,8 @@ var SidebarHeader = React94.forwardRef(({ className, ...props }, ref) => {
37218
37475
  );
37219
37476
  });
37220
37477
  SidebarHeader.displayName = "SidebarHeader";
37221
- var SidebarFooter = React94.forwardRef(({ className, ...props }, ref) => {
37222
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37478
+ var SidebarFooter = React96.forwardRef(({ className, ...props }, ref) => {
37479
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37223
37480
  "div",
37224
37481
  {
37225
37482
  ref,
@@ -37230,8 +37487,8 @@ var SidebarFooter = React94.forwardRef(({ className, ...props }, ref) => {
37230
37487
  );
37231
37488
  });
37232
37489
  SidebarFooter.displayName = "SidebarFooter";
37233
- var SidebarSeparator = React94.forwardRef(({ className, ...props }, ref) => {
37234
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37490
+ var SidebarSeparator = React96.forwardRef(({ className, ...props }, ref) => {
37491
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37235
37492
  Separator2,
37236
37493
  {
37237
37494
  ref,
@@ -37242,8 +37499,8 @@ var SidebarSeparator = React94.forwardRef(({ className, ...props }, ref) => {
37242
37499
  );
37243
37500
  });
37244
37501
  SidebarSeparator.displayName = "SidebarSeparator";
37245
- var SidebarContent = React94.forwardRef(({ className, ...props }, ref) => {
37246
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37502
+ var SidebarContent = React96.forwardRef(({ className, ...props }, ref) => {
37503
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37247
37504
  "div",
37248
37505
  {
37249
37506
  ref,
@@ -37257,8 +37514,8 @@ var SidebarContent = React94.forwardRef(({ className, ...props }, ref) => {
37257
37514
  );
37258
37515
  });
37259
37516
  SidebarContent.displayName = "SidebarContent";
37260
- var SidebarGroup = React94.forwardRef(({ className, ...props }, ref) => {
37261
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37517
+ var SidebarGroup = React96.forwardRef(({ className, ...props }, ref) => {
37518
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37262
37519
  "div",
37263
37520
  {
37264
37521
  ref,
@@ -37269,9 +37526,9 @@ var SidebarGroup = React94.forwardRef(({ className, ...props }, ref) => {
37269
37526
  );
37270
37527
  });
37271
37528
  SidebarGroup.displayName = "SidebarGroup";
37272
- var SidebarGroupLabel = React94.forwardRef(({ className, asChild = false, ...props }, ref) => {
37529
+ var SidebarGroupLabel = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
37273
37530
  const Comp = asChild ? import_react_slot6.Slot : "div";
37274
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37531
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37275
37532
  Comp,
37276
37533
  {
37277
37534
  ref,
@@ -37286,9 +37543,9 @@ var SidebarGroupLabel = React94.forwardRef(({ className, asChild = false, ...pro
37286
37543
  );
37287
37544
  });
37288
37545
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
37289
- var SidebarGroupAction = React94.forwardRef(({ className, asChild = false, ...props }, ref) => {
37546
+ var SidebarGroupAction = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
37290
37547
  const Comp = asChild ? import_react_slot6.Slot : "button";
37291
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37548
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37292
37549
  Comp,
37293
37550
  {
37294
37551
  ref,
@@ -37305,7 +37562,7 @@ var SidebarGroupAction = React94.forwardRef(({ className, asChild = false, ...pr
37305
37562
  );
37306
37563
  });
37307
37564
  SidebarGroupAction.displayName = "SidebarGroupAction";
37308
- var SidebarGroupContent = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37565
+ var SidebarGroupContent = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37309
37566
  "div",
37310
37567
  {
37311
37568
  ref,
@@ -37315,7 +37572,7 @@ var SidebarGroupContent = React94.forwardRef(({ className, ...props }, ref) => /
37315
37572
  }
37316
37573
  ));
37317
37574
  SidebarGroupContent.displayName = "SidebarGroupContent";
37318
- var SidebarMenu = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37575
+ var SidebarMenu = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37319
37576
  "ul",
37320
37577
  {
37321
37578
  ref,
@@ -37325,7 +37582,7 @@ var SidebarMenu = React94.forwardRef(({ className, ...props }, ref) => /* @__PUR
37325
37582
  }
37326
37583
  ));
37327
37584
  SidebarMenu.displayName = "SidebarMenu";
37328
- var SidebarMenuItem = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37585
+ var SidebarMenuItem = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37329
37586
  "li",
37330
37587
  {
37331
37588
  ref,
@@ -37355,7 +37612,7 @@ var sidebarMenuButtonVariants = (0, import_class_variance_authority13.cva)(
37355
37612
  }
37356
37613
  }
37357
37614
  );
37358
- var SidebarMenuButton = React94.forwardRef(
37615
+ var SidebarMenuButton = React96.forwardRef(
37359
37616
  ({
37360
37617
  asChild = false,
37361
37618
  isActive = false,
@@ -37367,7 +37624,7 @@ var SidebarMenuButton = React94.forwardRef(
37367
37624
  }, ref) => {
37368
37625
  const Comp = asChild ? import_react_slot6.Slot : "button";
37369
37626
  const { isMobile, state } = useSidebar();
37370
- const button = /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37627
+ const button = /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37371
37628
  Comp,
37372
37629
  {
37373
37630
  ref,
@@ -37386,9 +37643,9 @@ var SidebarMenuButton = React94.forwardRef(
37386
37643
  children: tooltip
37387
37644
  };
37388
37645
  }
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)(
37646
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(Tooltip, { children: [
37647
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(TooltipTrigger, { asChild: true, children: button }),
37648
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37392
37649
  TooltipContent,
37393
37650
  {
37394
37651
  side: "right",
@@ -37401,9 +37658,9 @@ var SidebarMenuButton = React94.forwardRef(
37401
37658
  }
37402
37659
  );
37403
37660
  SidebarMenuButton.displayName = "SidebarMenuButton";
37404
- var SidebarMenuAction = React94.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
37661
+ var SidebarMenuAction = React96.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
37405
37662
  const Comp = asChild ? import_react_slot6.Slot : "button";
37406
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37663
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37407
37664
  Comp,
37408
37665
  {
37409
37666
  ref,
@@ -37424,7 +37681,7 @@ var SidebarMenuAction = React94.forwardRef(({ className, asChild = false, showOn
37424
37681
  );
37425
37682
  });
37426
37683
  SidebarMenuAction.displayName = "SidebarMenuAction";
37427
- var SidebarMenuBadge = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37684
+ var SidebarMenuBadge = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37428
37685
  "div",
37429
37686
  {
37430
37687
  ref,
@@ -37442,11 +37699,11 @@ var SidebarMenuBadge = React94.forwardRef(({ className, ...props }, ref) => /* @
37442
37699
  }
37443
37700
  ));
37444
37701
  SidebarMenuBadge.displayName = "SidebarMenuBadge";
37445
- var SidebarMenuSkeleton = React94.forwardRef(({ className, showIcon = false, ...props }, ref) => {
37446
- const width = React94.useMemo(() => {
37702
+ var SidebarMenuSkeleton = React96.forwardRef(({ className, showIcon = false, ...props }, ref) => {
37703
+ const width = React96.useMemo(() => {
37447
37704
  return `${Math.floor(Math.random() * 40) + 50}%`;
37448
37705
  }, []);
37449
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(
37706
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
37450
37707
  "div",
37451
37708
  {
37452
37709
  ref,
@@ -37454,14 +37711,14 @@ var SidebarMenuSkeleton = React94.forwardRef(({ className, showIcon = false, ...
37454
37711
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
37455
37712
  ...props,
37456
37713
  children: [
37457
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37714
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37458
37715
  Skeleton,
37459
37716
  {
37460
37717
  className: "size-4 rounded-md",
37461
37718
  "data-sidebar": "menu-skeleton-icon"
37462
37719
  }
37463
37720
  ),
37464
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37721
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37465
37722
  Skeleton,
37466
37723
  {
37467
37724
  className: "h-4 max-w-[--skeleton-width] flex-1",
@@ -37476,7 +37733,7 @@ var SidebarMenuSkeleton = React94.forwardRef(({ className, showIcon = false, ...
37476
37733
  );
37477
37734
  });
37478
37735
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
37479
- var SidebarMenuSub = React94.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37736
+ var SidebarMenuSub = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37480
37737
  "ul",
37481
37738
  {
37482
37739
  ref,
@@ -37490,11 +37747,11 @@ var SidebarMenuSub = React94.forwardRef(({ className, ...props }, ref) => /* @__
37490
37747
  }
37491
37748
  ));
37492
37749
  SidebarMenuSub.displayName = "SidebarMenuSub";
37493
- var SidebarMenuSubItem = React94.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("li", { ref, ...props }));
37750
+ var SidebarMenuSubItem = React96.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("li", { ref, ...props }));
37494
37751
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
37495
- var SidebarMenuSubButton = React94.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
37752
+ var SidebarMenuSubButton = React96.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
37496
37753
  const Comp = asChild ? import_react_slot6.Slot : "a";
37497
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
37754
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37498
37755
  Comp,
37499
37756
  {
37500
37757
  ref,
@@ -37518,20 +37775,20 @@ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
37518
37775
  // src/components/ui/sonner.tsx
37519
37776
  var import_next_themes = require("next-themes");
37520
37777
  var import_sonner = require("sonner");
37521
- var import_jsx_runtime127 = require("react/jsx-runtime");
37778
+ var import_jsx_runtime129 = require("react/jsx-runtime");
37522
37779
  var Toaster = ({ ...props }) => {
37523
37780
  const { theme = "system" } = (0, import_next_themes.useTheme)();
37524
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
37781
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
37525
37782
  import_sonner.Toaster,
37526
37783
  {
37527
37784
  theme,
37528
37785
  className: "toaster group",
37529
37786
  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" })
37787
+ success: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(CircleCheck, { className: "h-4 w-4" }),
37788
+ info: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Info, { className: "h-4 w-4" }),
37789
+ warning: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(TriangleAlert, { className: "h-4 w-4" }),
37790
+ error: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(OctagonX, { className: "h-4 w-4" }),
37791
+ loading: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(LoaderCircle, { className: "h-4 w-4 animate-spin" })
37535
37792
  },
37536
37793
  toastOptions: {
37537
37794
  classNames: {
@@ -37547,26 +37804,26 @@ var Toaster = ({ ...props }) => {
37547
37804
  };
37548
37805
 
37549
37806
  // src/components/ui/toggle-group.tsx
37550
- var React95 = __toESM(require("react"), 1);
37807
+ var React97 = __toESM(require("react"), 1);
37551
37808
  var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"), 1);
37552
- var import_jsx_runtime128 = require("react/jsx-runtime");
37553
- var ToggleGroupContext = React95.createContext({
37809
+ var import_jsx_runtime130 = require("react/jsx-runtime");
37810
+ var ToggleGroupContext = React97.createContext({
37554
37811
  size: "default",
37555
37812
  variant: "default"
37556
37813
  });
37557
- var ToggleGroup = React95.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
37814
+ var ToggleGroup = React97.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37558
37815
  ToggleGroupPrimitive.Root,
37559
37816
  {
37560
37817
  ref,
37561
37818
  className: cn("flex items-center justify-center gap-1", className),
37562
37819
  ...props,
37563
- children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
37820
+ children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
37564
37821
  }
37565
37822
  ));
37566
37823
  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)(
37824
+ var ToggleGroupItem = React97.forwardRef(({ className, children, variant, size, ...props }, ref) => {
37825
+ const context = React97.useContext(ToggleGroupContext);
37826
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
37570
37827
  ToggleGroupPrimitive.Item,
37571
37828
  {
37572
37829
  ref,
@@ -37585,7 +37842,7 @@ var ToggleGroupItem = React95.forwardRef(({ className, children, variant, size,
37585
37842
  ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
37586
37843
 
37587
37844
  // src/render/PXEngineRenderer.tsx
37588
- var import_jsx_runtime129 = require("react/jsx-runtime");
37845
+ var import_jsx_runtime131 = require("react/jsx-runtime");
37589
37846
  var CONTEXT_DEPENDENT_COMPONENTS = /* @__PURE__ */ new Set([
37590
37847
  // Form components - require FormField + FormItem context
37591
37848
  "FormLabel",
@@ -37677,24 +37934,24 @@ var COMPONENT_SUGGESTIONS = {
37677
37934
  };
37678
37935
  var renderContextDependentError = (componentName, normalizedName, key) => {
37679
37936
  const suggestion = COMPONENT_SUGGESTIONS[normalizedName] || `${componentName}Atom (if available)`;
37680
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
37937
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
37681
37938
  "div",
37682
37939
  {
37683
37940
  className: "p-4 border-2 border-amber-500/50 rounded-lg bg-amber-50/80 space-y-2 my-2",
37684
37941
  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: [
37942
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "flex items-start gap-2", children: [
37943
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
37944
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "flex-1", children: [
37945
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("p", { className: "text-sm font-semibold text-amber-900", children: [
37689
37946
  "Invalid Component: ",
37690
37947
  componentName
37691
37948
  ] }),
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." })
37949
+ /* @__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
37950
  ] })
37694
37951
  ] }),
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 })
37952
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
37953
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
37954
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
37698
37955
  ] })
37699
37956
  ]
37700
37957
  },
@@ -37765,7 +38022,8 @@ var normalizeProps = (props) => {
37765
38022
  };
37766
38023
  var PXEngineRenderer = ({
37767
38024
  schema,
37768
- onAction
38025
+ onAction,
38026
+ disabled
37769
38027
  }) => {
37770
38028
  if (!schema) return null;
37771
38029
  const root = schema.root || schema;
@@ -37773,7 +38031,7 @@ var PXEngineRenderer = ({
37773
38031
  if (typeof component === "string" || typeof component === "number") {
37774
38032
  return component;
37775
38033
  }
37776
- if (import_react64.default.isValidElement(component)) {
38034
+ if (import_react66.default.isValidElement(component)) {
37777
38035
  return component;
37778
38036
  }
37779
38037
  if (!component || typeof component !== "object") return null;
@@ -37789,6 +38047,9 @@ var PXEngineRenderer = ({
37789
38047
  const componentName = name || type || componentType;
37790
38048
  if (!componentName || typeof componentName !== "string") return null;
37791
38049
  const rawProps = { ...remainingProps, ...props };
38050
+ if (disabled !== void 0 && rawProps.disabled === void 0) {
38051
+ rawProps.disabled = disabled;
38052
+ }
37792
38053
  const { normalized: finalProps, dynamicStyle } = normalizeProps(rawProps);
37793
38054
  if (id && !finalProps.id) {
37794
38055
  finalProps.id = id;
@@ -37848,7 +38109,7 @@ var PXEngineRenderer = ({
37848
38109
  const isAtomWithRenderProp = ATOMS_WITH_RENDER.has(atomName);
37849
38110
  const finalStyle = { ...dynamicStyle, ...finalProps.style || {} };
37850
38111
  if (isAtomWithRenderProp) {
37851
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38112
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37852
38113
  TargetComponent,
37853
38114
  {
37854
38115
  ...finalProps,
@@ -37860,7 +38121,7 @@ var PXEngineRenderer = ({
37860
38121
  uniqueKey
37861
38122
  );
37862
38123
  } else {
37863
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
38124
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
37864
38125
  TargetComponent,
37865
38126
  {
37866
38127
  ...finalProps,
@@ -37872,7 +38133,7 @@ var PXEngineRenderer = ({
37872
38133
  );
37873
38134
  }
37874
38135
  };
37875
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
38136
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
37876
38137
  };
37877
38138
  // Annotate the CommonJS export names for ESM import in node:
37878
38139
  0 && (module.exports = {
@@ -37919,6 +38180,7 @@ var PXEngineRenderer = ({
37919
38180
  ButtonAtom,
37920
38181
  Calendar,
37921
38182
  CalendarAtom,
38183
+ CampaignConceptCard,
37922
38184
  CampaignSeedCard,
37923
38185
  Card,
37924
38186
  CardAtom,
@@ -37966,6 +38228,7 @@ var PXEngineRenderer = ({
37966
38228
  CreatorActionHeader,
37967
38229
  CreatorGridCard,
37968
38230
  CreatorProfileSummary,
38231
+ CreatorSearch,
37969
38232
  DataGrid,
37970
38233
  Dialog,
37971
38234
  DialogAtom,