pxengine 0.1.19 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +784 -456
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +115 -47
- package/dist/index.d.ts +115 -47
- package/dist/index.mjs +781 -455
- package/dist/index.mjs.map +1 -1
- package/dist/registry.json +264 -71
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -5,7 +5,7 @@ var __export = (target, all) => {
|
|
|
5
5
|
};
|
|
6
6
|
|
|
7
7
|
// src/render/PXEngineRenderer.tsx
|
|
8
|
-
import
|
|
8
|
+
import React98 from "react";
|
|
9
9
|
|
|
10
10
|
// src/atoms/index.ts
|
|
11
11
|
var atoms_exports = {};
|
|
@@ -118,7 +118,8 @@ var buttonVariants = cva(
|
|
|
118
118
|
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
119
119
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
120
120
|
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
121
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
121
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
122
|
+
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"
|
|
122
123
|
},
|
|
123
124
|
size: {
|
|
124
125
|
default: "h-10 px-4 py-2",
|
|
@@ -25262,7 +25263,8 @@ var badgeVariants = cva3(
|
|
|
25262
25263
|
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
25263
25264
|
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
25264
25265
|
destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
|
|
25265
|
-
outline: "text-foreground"
|
|
25266
|
+
outline: "text-foreground",
|
|
25267
|
+
purple: "bg-purpleLight dark:bg-purple200 hover:bg-purpleText1 dark:hover:bg-purple100 text-purpleText2 dark:text-purpleText border border-purpleText1 dark:border-purpleText"
|
|
25266
25268
|
}
|
|
25267
25269
|
},
|
|
25268
25270
|
defaultVariants: {
|
|
@@ -33283,6 +33285,7 @@ __export(molecules_exports, {
|
|
|
33283
33285
|
AudienceDemographicsCard: () => AudienceDemographicsCard,
|
|
33284
33286
|
AudienceMetricCard: () => AudienceMetricCard,
|
|
33285
33287
|
BrandAffinityGroup: () => BrandAffinityGroup,
|
|
33288
|
+
CampaignConceptCard: () => CampaignConceptCard,
|
|
33286
33289
|
CampaignSeedCard: () => CampaignSeedCard,
|
|
33287
33290
|
ContentPreviewGallery: () => ContentPreviewGallery,
|
|
33288
33291
|
CountrySelectDisplay: () => CountrySelectDisplay,
|
|
@@ -33290,6 +33293,7 @@ __export(molecules_exports, {
|
|
|
33290
33293
|
CreatorActionHeader: () => CreatorActionHeader,
|
|
33291
33294
|
CreatorGridCard: () => CreatorGridCard,
|
|
33292
33295
|
CreatorProfileSummary: () => CreatorProfileSummary,
|
|
33296
|
+
CreatorSearch: () => CreatorSearch,
|
|
33293
33297
|
DataGrid: () => DataGrid,
|
|
33294
33298
|
EditableField: () => EditableField,
|
|
33295
33299
|
EmptyState: () => EmptyState,
|
|
@@ -33640,12 +33644,13 @@ var EditableField = React85.memo(
|
|
|
33640
33644
|
onSave,
|
|
33641
33645
|
onCancel,
|
|
33642
33646
|
isSaving = false,
|
|
33643
|
-
isChanged = false,
|
|
33644
33647
|
config = {},
|
|
33645
33648
|
className,
|
|
33646
33649
|
renderDisplay,
|
|
33647
|
-
renderEdit
|
|
33650
|
+
renderEdit,
|
|
33651
|
+
...rest
|
|
33648
33652
|
}) => {
|
|
33653
|
+
void rest;
|
|
33649
33654
|
const [localValue, setLocalValue] = useState5(value);
|
|
33650
33655
|
const inputRef = useRef4(null);
|
|
33651
33656
|
useEffect4(() => {
|
|
@@ -33682,7 +33687,7 @@ var EditableField = React85.memo(
|
|
|
33682
33687
|
onKeyDown: handleKeyDown,
|
|
33683
33688
|
placeholder: config.placeholder,
|
|
33684
33689
|
rows: config.rows || 3,
|
|
33685
|
-
className: "min-h-[80px] resize-none"
|
|
33690
|
+
className: "min-h-[80px] resize-none bg-background dark:bg-gray100 border-gray300"
|
|
33686
33691
|
}
|
|
33687
33692
|
);
|
|
33688
33693
|
case "select":
|
|
@@ -33711,9 +33716,12 @@ var EditableField = React85.memo(
|
|
|
33711
33716
|
/* @__PURE__ */ jsx94(
|
|
33712
33717
|
Slider,
|
|
33713
33718
|
{
|
|
33714
|
-
defaultValue: [
|
|
33715
|
-
|
|
33719
|
+
defaultValue: [
|
|
33720
|
+
localValue?.min || 0,
|
|
33721
|
+
localValue?.max || 100
|
|
33722
|
+
],
|
|
33716
33723
|
min: config.sliderConfig?.min || 0,
|
|
33724
|
+
max: config.sliderConfig?.max || 100,
|
|
33717
33725
|
step: config.sliderConfig?.step || 1,
|
|
33718
33726
|
onValueChange: ([min2, max2]) => setLocalValue({ min: min2, max: max2 })
|
|
33719
33727
|
}
|
|
@@ -33731,7 +33739,8 @@ var EditableField = React85.memo(
|
|
|
33731
33739
|
onKeyDown: handleKeyDown,
|
|
33732
33740
|
min: config.numberConfig?.min,
|
|
33733
33741
|
max: config.numberConfig?.max,
|
|
33734
|
-
step: config.numberConfig?.step
|
|
33742
|
+
step: config.numberConfig?.step,
|
|
33743
|
+
className: "bg-background dark:bg-gray100 border-gray300"
|
|
33735
33744
|
}
|
|
33736
33745
|
);
|
|
33737
33746
|
default:
|
|
@@ -33743,7 +33752,8 @@ var EditableField = React85.memo(
|
|
|
33743
33752
|
value: localValue || "",
|
|
33744
33753
|
onChange: (e) => setLocalValue(e.target.value),
|
|
33745
33754
|
onKeyDown: handleKeyDown,
|
|
33746
|
-
placeholder: config.placeholder
|
|
33755
|
+
placeholder: config.placeholder,
|
|
33756
|
+
className: "bg-background dark:bg-gray100 border-gray300"
|
|
33747
33757
|
}
|
|
33748
33758
|
);
|
|
33749
33759
|
}
|
|
@@ -33753,60 +33763,77 @@ var EditableField = React85.memo(
|
|
|
33753
33763
|
if (type === "slider") {
|
|
33754
33764
|
return config.sliderConfig?.formatValue ? config.sliderConfig.formatValue(value) : `${value?.min} - ${value?.max}`;
|
|
33755
33765
|
}
|
|
33756
|
-
if (!value)
|
|
33766
|
+
if (!value) {
|
|
33767
|
+
return /* @__PURE__ */ jsx94("span", { className: "opacity-0", children: "-" });
|
|
33768
|
+
}
|
|
33757
33769
|
return value.toString();
|
|
33758
33770
|
};
|
|
33759
|
-
return /* @__PURE__ */ jsxs54(
|
|
33760
|
-
|
|
33761
|
-
|
|
33762
|
-
|
|
33763
|
-
"
|
|
33764
|
-
|
|
33765
|
-
|
|
33766
|
-
|
|
33767
|
-
|
|
33768
|
-
|
|
33769
|
-
|
|
33770
|
-
|
|
33771
|
-
|
|
33772
|
-
|
|
33773
|
-
|
|
33774
|
-
|
|
33775
|
-
|
|
33776
|
-
|
|
33777
|
-
|
|
33778
|
-
|
|
33779
|
-
|
|
33780
|
-
|
|
33781
|
-
|
|
33782
|
-
|
|
33783
|
-
|
|
33784
|
-
|
|
33785
|
-
|
|
33771
|
+
return /* @__PURE__ */ jsxs54(
|
|
33772
|
+
"div",
|
|
33773
|
+
{
|
|
33774
|
+
className: cn(
|
|
33775
|
+
"relative z-10 group flex flex-col gap-2 p-3 bg-[#0A0A0A] rounded-md mb-8",
|
|
33776
|
+
className
|
|
33777
|
+
),
|
|
33778
|
+
children: [
|
|
33779
|
+
/* @__PURE__ */ jsx94("div", { className: "flex justify-between items-start mb-2", children: /* @__PURE__ */ jsxs54("div", { className: "w-full flex justify-between items-center flex-wrap gap-2", children: [
|
|
33780
|
+
/* @__PURE__ */ jsx94(
|
|
33781
|
+
"h4",
|
|
33782
|
+
{
|
|
33783
|
+
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",
|
|
33784
|
+
style: { fontFamily: "Noto Sans, sans-serif" },
|
|
33785
|
+
children: label
|
|
33786
|
+
}
|
|
33787
|
+
),
|
|
33788
|
+
!isEditingProp && /* @__PURE__ */ jsxs54("span", { className: "inline-flex items-center gap-1 text-[10px] font-medium text-green-600 dark:text-green-500", children: [
|
|
33789
|
+
"Suggested by an Agent",
|
|
33790
|
+
/* @__PURE__ */ jsx94(
|
|
33791
|
+
Pencil,
|
|
33792
|
+
{
|
|
33793
|
+
className: "h-3 w-3 hover:text-green-700 cursor-pointer",
|
|
33794
|
+
onClick: onEdit
|
|
33795
|
+
}
|
|
33796
|
+
)
|
|
33797
|
+
] })
|
|
33798
|
+
] }) }),
|
|
33799
|
+
isEditingProp ? /* @__PURE__ */ jsxs54("div", { className: "flex flex-col gap-3", children: [
|
|
33800
|
+
renderInput(),
|
|
33801
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex items-center justify-end gap-2", children: [
|
|
33802
|
+
/* @__PURE__ */ jsx94(
|
|
33803
|
+
Button,
|
|
33804
|
+
{
|
|
33805
|
+
size: "icon",
|
|
33806
|
+
variant: "outline",
|
|
33807
|
+
className: "h-8 w-8 text-destructive border-destructive/20 hover:bg-destructive/10 rounded-lg",
|
|
33808
|
+
onClick: onCancel,
|
|
33809
|
+
disabled: isSaving,
|
|
33810
|
+
children: /* @__PURE__ */ jsx94(X, { className: "h-4 w-4" })
|
|
33811
|
+
}
|
|
33812
|
+
),
|
|
33813
|
+
/* @__PURE__ */ jsx94(
|
|
33814
|
+
Button,
|
|
33815
|
+
{
|
|
33816
|
+
size: "icon",
|
|
33817
|
+
className: "h-8 w-8 bg-purpleLight text-purpleText2 hover:bg-purpleText1 rounded-lg border border-purpleText1 shadow-none",
|
|
33818
|
+
onClick: handleSave,
|
|
33819
|
+
disabled: isSaving,
|
|
33820
|
+
children: isSaving ? /* @__PURE__ */ jsx94(LoaderCircle, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx94(Check, { className: "h-4 w-4" })
|
|
33821
|
+
}
|
|
33822
|
+
)
|
|
33823
|
+
] })
|
|
33824
|
+
] }) : /* @__PURE__ */ jsx94(
|
|
33825
|
+
"div",
|
|
33786
33826
|
{
|
|
33787
|
-
|
|
33788
|
-
|
|
33789
|
-
|
|
33790
|
-
|
|
33791
|
-
children:
|
|
33827
|
+
className: cn(
|
|
33828
|
+
"relative flex items-center justify-between rounded-lg px-3 py-2",
|
|
33829
|
+
"text-[14px] text-foreground font-normal leading-relaxed"
|
|
33830
|
+
),
|
|
33831
|
+
children: /* @__PURE__ */ jsx94("div", { className: "flex-1", children: formattedValue() })
|
|
33792
33832
|
}
|
|
33793
33833
|
)
|
|
33794
|
-
]
|
|
33795
|
-
|
|
33796
|
-
|
|
33797
|
-
{
|
|
33798
|
-
className: cn(
|
|
33799
|
-
"relative flex items-center justify-between rounded-xl px-2 py-1.5 transition-all duration-200",
|
|
33800
|
-
"hover:bg-muted cursor-pointer border border-transparent hover:border-border group-hover:shadow-sm"
|
|
33801
|
-
),
|
|
33802
|
-
onClick: onEdit,
|
|
33803
|
-
children: [
|
|
33804
|
-
/* @__PURE__ */ jsx94("div", { className: "text-[14px] text-foreground font-semibold truncate flex-1 leading-relaxed", children: formattedValue() }),
|
|
33805
|
-
/* @__PURE__ */ jsx94(Pencil, { className: "h-4 w-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity" })
|
|
33806
|
-
]
|
|
33807
|
-
}
|
|
33808
|
-
)
|
|
33809
|
-
] });
|
|
33834
|
+
]
|
|
33835
|
+
}
|
|
33836
|
+
);
|
|
33810
33837
|
}
|
|
33811
33838
|
);
|
|
33812
33839
|
EditableField.displayName = "EditableField";
|
|
@@ -33864,6 +33891,7 @@ var ActionButton = React86.memo(
|
|
|
33864
33891
|
"relative min-w-[140px] overflow-hidden group transition-all duration-300",
|
|
33865
33892
|
"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%)]",
|
|
33866
33893
|
variant === "outline" && "bg-transparent border-[var(--primary-color)] text-[var(--primary-color)] hover:bg-[var(--primary-color)]/5",
|
|
33894
|
+
variant === "purple" && "bg-gray100 hover:bg-gray200 text-foreground border border-purple100 shadow-none font-semibold px-8 py-3 h-auto",
|
|
33867
33895
|
isLoading && "opacity-80"
|
|
33868
33896
|
),
|
|
33869
33897
|
children: [
|
|
@@ -33903,7 +33931,7 @@ var ActionButton = React86.memo(
|
|
|
33903
33931
|
ActionButton.displayName = "ActionButton";
|
|
33904
33932
|
|
|
33905
33933
|
// src/molecules/generic/FormCard/FormCard.tsx
|
|
33906
|
-
import React87 from "react";
|
|
33934
|
+
import React87, { useState as useState7 } from "react";
|
|
33907
33935
|
import { jsx as jsx96, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
33908
33936
|
var FormCard = React87.memo(
|
|
33909
33937
|
({
|
|
@@ -33916,94 +33944,103 @@ var FormCard = React87.memo(
|
|
|
33916
33944
|
onFieldEdit,
|
|
33917
33945
|
onFieldSave,
|
|
33918
33946
|
onFieldCancel,
|
|
33919
|
-
showTimeline =
|
|
33920
|
-
// Default to false to remove "bullets"
|
|
33947
|
+
showTimeline = true,
|
|
33921
33948
|
proceedLabel,
|
|
33922
|
-
countdown,
|
|
33923
|
-
isPaused = false,
|
|
33924
|
-
onPause,
|
|
33925
33949
|
onProceed,
|
|
33950
|
+
isLatestMessage = true,
|
|
33926
33951
|
className,
|
|
33927
33952
|
footer
|
|
33928
33953
|
}) => {
|
|
33954
|
+
const [showCopyButton, setShowCopyButton] = useState7(false);
|
|
33929
33955
|
const handleCopyAll = () => {
|
|
33930
|
-
const text = fields.map(
|
|
33931
|
-
|
|
33932
|
-
|
|
33956
|
+
const text = fields.map((field) => {
|
|
33957
|
+
const value = data[field.key];
|
|
33958
|
+
return `${field.label}: ${typeof value === "object" ? JSON.stringify(value) : value}`;
|
|
33959
|
+
}).join("\n");
|
|
33933
33960
|
navigator.clipboard.writeText(text);
|
|
33934
33961
|
};
|
|
33935
33962
|
return /* @__PURE__ */ jsxs56(
|
|
33936
|
-
|
|
33963
|
+
"div",
|
|
33937
33964
|
{
|
|
33938
33965
|
className: cn(
|
|
33939
|
-
"w-full rounded-[
|
|
33966
|
+
"relative w-full rounded-[20px] bg-background dark:bg-gray50 border border-gray400 shadow-lg overflow-hidden mb-6",
|
|
33940
33967
|
className
|
|
33941
33968
|
),
|
|
33969
|
+
onMouseEnter: () => setShowCopyButton(true),
|
|
33970
|
+
onMouseLeave: () => setShowCopyButton(false),
|
|
33942
33971
|
children: [
|
|
33943
|
-
/* @__PURE__ */
|
|
33944
|
-
|
|
33972
|
+
showCopyButton && /* @__PURE__ */ jsx96(
|
|
33973
|
+
"button",
|
|
33974
|
+
{
|
|
33975
|
+
onClick: handleCopyAll,
|
|
33976
|
+
title: "Copy all details",
|
|
33977
|
+
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",
|
|
33978
|
+
children: /* @__PURE__ */ jsx96(Copy, { className: "h-4 w-4" })
|
|
33979
|
+
}
|
|
33980
|
+
),
|
|
33981
|
+
/* @__PURE__ */ jsxs56("div", { className: "p-6 relative", children: [
|
|
33945
33982
|
/* @__PURE__ */ jsx96(
|
|
33946
|
-
"
|
|
33983
|
+
"h3",
|
|
33947
33984
|
{
|
|
33948
|
-
|
|
33949
|
-
|
|
33950
|
-
|
|
33951
|
-
children: /* @__PURE__ */ jsx96(Copy, { className: "h-4 w-4" })
|
|
33985
|
+
className: "text-gray900 mb-12",
|
|
33986
|
+
style: { fontFamily: "Noto Sans, sans-serif" },
|
|
33987
|
+
children: title
|
|
33952
33988
|
}
|
|
33953
|
-
)
|
|
33954
|
-
|
|
33955
|
-
/* @__PURE__ */ jsx96(CardContent, { className: "px-6 pt-1 pb-4", children: /* @__PURE__ */ jsxs56("div", { className: "relative", children: [
|
|
33956
|
-
showTimeline && /* @__PURE__ */ jsx96("div", { className: "absolute left-[7px] top-2 bottom-6 w-0.5 border-l-2 border-dotted border-border pointer-events-none" }),
|
|
33957
|
-
/* @__PURE__ */ jsx96("div", { className: "space-y-2.5", children: fields.map((field) => /* @__PURE__ */ jsxs56(
|
|
33989
|
+
),
|
|
33990
|
+
showTimeline && /* @__PURE__ */ jsx96(
|
|
33958
33991
|
"div",
|
|
33959
33992
|
{
|
|
33960
|
-
className:
|
|
33961
|
-
|
|
33962
|
-
|
|
33963
|
-
|
|
33964
|
-
|
|
33965
|
-
|
|
33966
|
-
|
|
33967
|
-
|
|
33968
|
-
|
|
33969
|
-
|
|
33970
|
-
|
|
33971
|
-
|
|
33972
|
-
|
|
33973
|
-
|
|
33974
|
-
|
|
33975
|
-
|
|
33976
|
-
|
|
33977
|
-
|
|
33978
|
-
|
|
33979
|
-
|
|
33980
|
-
|
|
33981
|
-
|
|
33982
|
-
|
|
33983
|
-
|
|
33984
|
-
|
|
33985
|
-
|
|
33986
|
-
|
|
33987
|
-
|
|
33988
|
-
)
|
|
33989
|
-
]
|
|
33993
|
+
className: "absolute z-0 left-[60px] top-[100px] bottom-[60px] w-[3px]",
|
|
33994
|
+
style: {
|
|
33995
|
+
background: `
|
|
33996
|
+
radial-gradient(circle closest-side, #3C3D3E 98%, transparent) 50%/2px 5px repeat-y,
|
|
33997
|
+
linear-gradient(#3C3D3E 50%, transparent 0) 50%/2px 10px repeat-y
|
|
33998
|
+
`
|
|
33999
|
+
}
|
|
34000
|
+
}
|
|
34001
|
+
),
|
|
34002
|
+
fields.map((field, index) => /* @__PURE__ */ jsx96(
|
|
34003
|
+
EditableField,
|
|
34004
|
+
{
|
|
34005
|
+
label: field.label,
|
|
34006
|
+
value: data[field.key],
|
|
34007
|
+
type: field.type,
|
|
34008
|
+
config: field,
|
|
34009
|
+
isEditing: editingFields[field.key],
|
|
34010
|
+
isChanged: changedFields[field.key],
|
|
34011
|
+
isSaving: savingFields[field.key],
|
|
34012
|
+
isLatestMessage,
|
|
34013
|
+
onEdit: () => onFieldEdit?.(field.key),
|
|
34014
|
+
onSave: (val) => onFieldSave?.(field.key, val),
|
|
34015
|
+
onCancel: () => onFieldCancel?.(field.key),
|
|
34016
|
+
renderDisplay: field.renderDisplay,
|
|
34017
|
+
renderEdit: field.renderEdit,
|
|
34018
|
+
showIndex: showTimeline,
|
|
34019
|
+
index,
|
|
34020
|
+
totalFields: fields.length
|
|
33990
34021
|
},
|
|
33991
34022
|
field.key
|
|
33992
|
-
))
|
|
33993
|
-
] })
|
|
33994
|
-
|
|
33995
|
-
|
|
33996
|
-
|
|
33997
|
-
{
|
|
33998
|
-
|
|
33999
|
-
|
|
34000
|
-
|
|
34001
|
-
|
|
34002
|
-
|
|
34003
|
-
|
|
34004
|
-
|
|
34005
|
-
|
|
34006
|
-
|
|
34023
|
+
))
|
|
34024
|
+
] }),
|
|
34025
|
+
isLatestMessage && onProceed && proceedLabel ? /* @__PURE__ */ jsx96("div", { className: "my-6 flex justify-center", children: /* @__PURE__ */ jsxs56(
|
|
34026
|
+
"button",
|
|
34027
|
+
{
|
|
34028
|
+
onClick: () => {
|
|
34029
|
+
if (isLatestMessage) {
|
|
34030
|
+
onProceed();
|
|
34031
|
+
}
|
|
34032
|
+
},
|
|
34033
|
+
className: cn(
|
|
34034
|
+
"px-6 py-2.5 border rounded-full transition-colors text-sm font-medium flex items-center gap-2",
|
|
34035
|
+
"bg-purpleLight dark:bg-purple200 text-purpleText2 dark:text-purpleText border-purpleText1 dark:border-purple100",
|
|
34036
|
+
"hover:bg-purpleText1 dark:hover:bg-purple100 dark:hover:text-white"
|
|
34037
|
+
),
|
|
34038
|
+
children: [
|
|
34039
|
+
proceedLabel,
|
|
34040
|
+
/* @__PURE__ */ jsx96(ChevronRight, { className: "w-4 h-4" })
|
|
34041
|
+
]
|
|
34042
|
+
}
|
|
34043
|
+
) }) : !isLatestMessage && footer ? /* @__PURE__ */ jsx96("div", { className: "flex justify-end items-center pb-4 pr-4 gap-1 text-green-600 text-sm font-medium", children: footer }) : null
|
|
34007
34044
|
]
|
|
34008
34045
|
}
|
|
34009
34046
|
);
|
|
@@ -34525,59 +34562,41 @@ var CampaignSeedCard = React90.memo(
|
|
|
34525
34562
|
const fields = useMemo4(() => {
|
|
34526
34563
|
return providedFields || generateFieldsFromData(data);
|
|
34527
34564
|
}, [providedFields, data]);
|
|
34528
|
-
return /* @__PURE__ */
|
|
34529
|
-
|
|
34530
|
-
|
|
34531
|
-
|
|
34532
|
-
|
|
34533
|
-
|
|
34534
|
-
|
|
34535
|
-
|
|
34536
|
-
|
|
34537
|
-
/* @__PURE__ */
|
|
34538
|
-
|
|
34539
|
-
|
|
34540
|
-
|
|
34541
|
-
|
|
34565
|
+
return /* @__PURE__ */ jsxs66("div", { className: "flex flex-col gap-2 mb-10", children: [
|
|
34566
|
+
/* @__PURE__ */ jsx106(
|
|
34567
|
+
FormCard,
|
|
34568
|
+
{
|
|
34569
|
+
...formCardProps,
|
|
34570
|
+
data,
|
|
34571
|
+
title: formCardProps.title || "Campaign Brief",
|
|
34572
|
+
fields,
|
|
34573
|
+
className,
|
|
34574
|
+
footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ jsxs66("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1 mb-6", children: [
|
|
34575
|
+
/* @__PURE__ */ jsx106(CircleCheck, { className: "h-4 w-4" }),
|
|
34576
|
+
/* @__PURE__ */ jsx106("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
|
|
34577
|
+
] }) : formCardProps.footer
|
|
34578
|
+
}
|
|
34579
|
+
),
|
|
34580
|
+
!isLatestMessage && selectionStatus && /* @__PURE__ */ jsx106("div", { className: "flex justify-center mt-4", children: /* @__PURE__ */ jsx106(
|
|
34581
|
+
"button",
|
|
34582
|
+
{
|
|
34583
|
+
className: cn(
|
|
34584
|
+
"flex items-center gap-2 px-6 py-2.5 border rounded-full text-sm transition-all active:scale-95",
|
|
34585
|
+
"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"
|
|
34586
|
+
),
|
|
34587
|
+
children: "Continue"
|
|
34588
|
+
}
|
|
34589
|
+
) })
|
|
34590
|
+
] });
|
|
34542
34591
|
}
|
|
34543
34592
|
);
|
|
34544
34593
|
CampaignSeedCard.displayName = "CampaignSeedCard";
|
|
34545
34594
|
|
|
34546
34595
|
// src/molecules/creator-discovery/SearchSpecCard/SearchSpecCard.tsx
|
|
34547
34596
|
import React91, { useMemo as useMemo5 } from "react";
|
|
34548
|
-
import { jsx as jsx107, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
34549
|
-
var SearchSpecCard = React91.memo(
|
|
34550
|
-
({
|
|
34551
|
-
selectionStatus,
|
|
34552
|
-
isLatestMessage = true,
|
|
34553
|
-
className,
|
|
34554
|
-
fields: providedFields,
|
|
34555
|
-
data,
|
|
34556
|
-
...formCardProps
|
|
34557
|
-
}) => {
|
|
34558
|
-
const fields = useMemo5(() => {
|
|
34559
|
-
return providedFields || generateFieldsFromData(data);
|
|
34560
|
-
}, [providedFields, data]);
|
|
34561
|
-
return /* @__PURE__ */ jsx107(
|
|
34562
|
-
FormCard,
|
|
34563
|
-
{
|
|
34564
|
-
...formCardProps,
|
|
34565
|
-
data,
|
|
34566
|
-
title: formCardProps.title || "Search Specification",
|
|
34567
|
-
fields,
|
|
34568
|
-
className,
|
|
34569
|
-
footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ jsxs67("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1", children: [
|
|
34570
|
-
/* @__PURE__ */ jsx107(CircleCheck, { className: "h-4 w-4" }),
|
|
34571
|
-
/* @__PURE__ */ jsx107("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
|
|
34572
|
-
] }) : formCardProps.footer
|
|
34573
|
-
}
|
|
34574
|
-
);
|
|
34575
|
-
}
|
|
34576
|
-
);
|
|
34577
|
-
SearchSpecCard.displayName = "SearchSpecCard";
|
|
34578
34597
|
|
|
34579
34598
|
// src/molecules/creator-discovery/SearchSpecCard/CustomFieldRenderers.tsx
|
|
34580
|
-
import { useState as
|
|
34599
|
+
import { useState as useState8, useRef as useRef5, useEffect as useEffect6 } from "react";
|
|
34581
34600
|
|
|
34582
34601
|
// src/lib/countries.ts
|
|
34583
34602
|
var countries = [
|
|
@@ -34784,13 +34803,13 @@ var countriesWithFlags = Object.fromEntries(
|
|
|
34784
34803
|
);
|
|
34785
34804
|
|
|
34786
34805
|
// src/molecules/creator-discovery/SearchSpecCard/CustomFieldRenderers.tsx
|
|
34787
|
-
import { jsx as
|
|
34806
|
+
import { jsx as jsx107, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
34788
34807
|
var CountrySelectEdit = ({
|
|
34789
34808
|
value,
|
|
34790
34809
|
onChange
|
|
34791
34810
|
}) => {
|
|
34792
|
-
const [isDropdownOpen, setIsDropdownOpen] =
|
|
34793
|
-
const [searchTerm, setSearchTerm] =
|
|
34811
|
+
const [isDropdownOpen, setIsDropdownOpen] = useState8(false);
|
|
34812
|
+
const [searchTerm, setSearchTerm] = useState8("");
|
|
34794
34813
|
const dropdownRef = useRef5(null);
|
|
34795
34814
|
useEffect6(() => {
|
|
34796
34815
|
const handleClickOutside = (event) => {
|
|
@@ -34802,16 +34821,16 @@ var CountrySelectEdit = ({
|
|
|
34802
34821
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
34803
34822
|
}, []);
|
|
34804
34823
|
const inputValue = Array.isArray(value) ? value : [];
|
|
34805
|
-
return /* @__PURE__ */
|
|
34806
|
-
/* @__PURE__ */
|
|
34807
|
-
/* @__PURE__ */
|
|
34824
|
+
return /* @__PURE__ */ jsxs67("div", { className: "space-y-3", children: [
|
|
34825
|
+
/* @__PURE__ */ jsxs67("div", { className: "relative", ref: dropdownRef, children: [
|
|
34826
|
+
/* @__PURE__ */ jsxs67(
|
|
34808
34827
|
"div",
|
|
34809
34828
|
{
|
|
34810
34829
|
className: "flex-1 bg-white border border-gray200 rounded-md px-3 py-2 text-sm cursor-pointer flex items-center justify-between font-medium hover:border-purple500 transition-colors",
|
|
34811
34830
|
onClick: () => setIsDropdownOpen(!isDropdownOpen),
|
|
34812
34831
|
children: [
|
|
34813
|
-
/* @__PURE__ */
|
|
34814
|
-
/* @__PURE__ */
|
|
34832
|
+
/* @__PURE__ */ jsx107("span", { className: "text-gray-700", children: inputValue.length > 0 ? `${inputValue.length} ${inputValue.length === 1 ? "country" : "countries"} selected` : "Select countries..." }),
|
|
34833
|
+
/* @__PURE__ */ jsx107(
|
|
34815
34834
|
ChevronDown,
|
|
34816
34835
|
{
|
|
34817
34836
|
className: cn(
|
|
@@ -34823,8 +34842,8 @@ var CountrySelectEdit = ({
|
|
|
34823
34842
|
]
|
|
34824
34843
|
}
|
|
34825
34844
|
),
|
|
34826
|
-
isDropdownOpen && /* @__PURE__ */
|
|
34827
|
-
/* @__PURE__ */
|
|
34845
|
+
isDropdownOpen && /* @__PURE__ */ jsxs67("div", { className: "absolute top-full left-0 right-0 mt-1 bg-white border border-gray200 rounded-lg shadow-xl z-50 max-h-60 overflow-hidden animate-in fade-in slide-in-from-top-1", children: [
|
|
34846
|
+
/* @__PURE__ */ jsx107("div", { className: "p-2 border-b border-gray-100", children: /* @__PURE__ */ jsx107(
|
|
34828
34847
|
"input",
|
|
34829
34848
|
{
|
|
34830
34849
|
type: "text",
|
|
@@ -34835,9 +34854,9 @@ var CountrySelectEdit = ({
|
|
|
34835
34854
|
onClick: (e) => e.stopPropagation()
|
|
34836
34855
|
}
|
|
34837
34856
|
) }),
|
|
34838
|
-
/* @__PURE__ */
|
|
34857
|
+
/* @__PURE__ */ jsx107("div", { className: "max-h-40 overflow-y-auto p-1", children: countries.filter(
|
|
34839
34858
|
(country) => country.name.toLowerCase().includes(searchTerm.toLowerCase()) || country.code.toLowerCase().includes(searchTerm.toLowerCase())
|
|
34840
|
-
).map((country) => /* @__PURE__ */
|
|
34859
|
+
).map((country) => /* @__PURE__ */ jsxs67(
|
|
34841
34860
|
"div",
|
|
34842
34861
|
{
|
|
34843
34862
|
className: cn(
|
|
@@ -34858,31 +34877,31 @@ var CountrySelectEdit = ({
|
|
|
34858
34877
|
}
|
|
34859
34878
|
},
|
|
34860
34879
|
children: [
|
|
34861
|
-
/* @__PURE__ */
|
|
34862
|
-
/* @__PURE__ */
|
|
34863
|
-
/* @__PURE__ */
|
|
34880
|
+
/* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2", children: [
|
|
34881
|
+
/* @__PURE__ */ jsx107("span", { className: "text-sm text-gray-700", children: country.name }),
|
|
34882
|
+
/* @__PURE__ */ jsx107("span", { className: "text-xs text-gray-400 font-mono", children: country.code })
|
|
34864
34883
|
] }),
|
|
34865
|
-
inputValue.includes(country.code) && /* @__PURE__ */
|
|
34884
|
+
inputValue.includes(country.code) && /* @__PURE__ */ jsx107(Check, { className: "h-4 w-4 text-purple500" })
|
|
34866
34885
|
]
|
|
34867
34886
|
},
|
|
34868
34887
|
country.code
|
|
34869
34888
|
)) })
|
|
34870
34889
|
] })
|
|
34871
34890
|
] }),
|
|
34872
|
-
inputValue.length > 0 && /* @__PURE__ */
|
|
34891
|
+
inputValue.length > 0 && /* @__PURE__ */ jsx107("div", { className: "flex flex-wrap gap-1.5", children: inputValue.map((countryCode) => /* @__PURE__ */ jsxs67(
|
|
34873
34892
|
Badge2,
|
|
34874
34893
|
{
|
|
34875
34894
|
variant: "secondary",
|
|
34876
34895
|
className: "bg-purple50 text-purple700 border-purple100 hover:bg-purple100 cursor-default flex items-center gap-1 pr-1",
|
|
34877
34896
|
children: [
|
|
34878
34897
|
countryCode,
|
|
34879
|
-
/* @__PURE__ */
|
|
34898
|
+
/* @__PURE__ */ jsxs67(
|
|
34880
34899
|
"button",
|
|
34881
34900
|
{
|
|
34882
34901
|
onClick: () => onChange(inputValue.filter((c) => c !== countryCode)),
|
|
34883
34902
|
className: "hover:bg-purple200 rounded-full p-0.5 transition-colors",
|
|
34884
34903
|
children: [
|
|
34885
|
-
/* @__PURE__ */
|
|
34904
|
+
/* @__PURE__ */ jsx107(ChevronDown, { className: "h-3 w-3 rotate-45" }),
|
|
34886
34905
|
" "
|
|
34887
34906
|
]
|
|
34888
34907
|
}
|
|
@@ -34895,9 +34914,9 @@ var CountrySelectEdit = ({
|
|
|
34895
34914
|
};
|
|
34896
34915
|
var CountrySelectDisplay = ({ value }) => {
|
|
34897
34916
|
if (!value || !Array.isArray(value) || value.length === 0) {
|
|
34898
|
-
return /* @__PURE__ */
|
|
34917
|
+
return /* @__PURE__ */ jsx107("span", { className: "text-muted-foreground italic", children: "Not specified" });
|
|
34899
34918
|
}
|
|
34900
|
-
return /* @__PURE__ */
|
|
34919
|
+
return /* @__PURE__ */ jsx107("div", { className: "flex flex-wrap gap-1.5", children: value.map((countryCode) => /* @__PURE__ */ jsx107(
|
|
34901
34920
|
Badge2,
|
|
34902
34921
|
{
|
|
34903
34922
|
variant: "outline",
|
|
@@ -34919,22 +34938,22 @@ var KeywordBundlesEdit = ({
|
|
|
34919
34938
|
groups[p].push({ bundle: b, index: idx });
|
|
34920
34939
|
});
|
|
34921
34940
|
const sortedPriorities = Object.keys(groups).map((n) => parseInt(n)).sort((a, b) => a - b);
|
|
34922
|
-
return /* @__PURE__ */
|
|
34923
|
-
/* @__PURE__ */
|
|
34924
|
-
/* @__PURE__ */
|
|
34941
|
+
return /* @__PURE__ */ jsx107("div", { className: "space-y-6 pt-2", children: sortedPriorities.map((priority) => /* @__PURE__ */ jsxs67("div", { className: "space-y-3", children: [
|
|
34942
|
+
/* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2", children: [
|
|
34943
|
+
/* @__PURE__ */ jsxs67(Badge2, { className: "bg-purple500 hover:bg-purple500", children: [
|
|
34925
34944
|
"Priority ",
|
|
34926
34945
|
priority
|
|
34927
34946
|
] }),
|
|
34928
|
-
/* @__PURE__ */
|
|
34947
|
+
/* @__PURE__ */ jsx107("div", { className: "h-px flex-1 bg-gray-100" })
|
|
34929
34948
|
] }),
|
|
34930
|
-
groups[priority].map(({ bundle, index: bundleIndex }) => /* @__PURE__ */
|
|
34949
|
+
groups[priority].map(({ bundle, index: bundleIndex }) => /* @__PURE__ */ jsx107(
|
|
34931
34950
|
"div",
|
|
34932
34951
|
{
|
|
34933
34952
|
className: "bg-gray-50/50 border border-gray-100 rounded-xl p-4 transition-all hover:bg-gray-50 hover:border-gray-200 shadow-sm",
|
|
34934
|
-
children: /* @__PURE__ */
|
|
34935
|
-
/* @__PURE__ */
|
|
34936
|
-
/* @__PURE__ */
|
|
34937
|
-
/* @__PURE__ */
|
|
34953
|
+
children: /* @__PURE__ */ jsxs67("div", { className: "flex flex-col gap-3", children: [
|
|
34954
|
+
/* @__PURE__ */ jsx107("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Keywords" }),
|
|
34955
|
+
/* @__PURE__ */ jsxs67("div", { className: "space-y-3", children: [
|
|
34956
|
+
/* @__PURE__ */ jsx107("div", { className: "flex flex-wrap gap-1.5", children: Array.isArray(bundle.keywords) && bundle.keywords.map((keyword, kIndex) => /* @__PURE__ */ jsxs67(
|
|
34938
34957
|
Badge2,
|
|
34939
34958
|
{
|
|
34940
34959
|
className: "bg-white border-gray-200 text-gray-700 hover:bg-red-50 hover:text-red-600 hover:border-red-100 transition-all cursor-pointer group",
|
|
@@ -34950,12 +34969,12 @@ var KeywordBundlesEdit = ({
|
|
|
34950
34969
|
},
|
|
34951
34970
|
children: [
|
|
34952
34971
|
keyword,
|
|
34953
|
-
/* @__PURE__ */
|
|
34972
|
+
/* @__PURE__ */ jsx107("span", { className: "ml-1 opacity-0 group-hover:opacity-100 transition-opacity", children: "\xD7" })
|
|
34954
34973
|
]
|
|
34955
34974
|
},
|
|
34956
34975
|
kIndex
|
|
34957
34976
|
)) }),
|
|
34958
|
-
/* @__PURE__ */
|
|
34977
|
+
/* @__PURE__ */ jsx107("div", { className: "flex gap-2", children: /* @__PURE__ */ jsx107(
|
|
34959
34978
|
"input",
|
|
34960
34979
|
{
|
|
34961
34980
|
type: "text",
|
|
@@ -34979,9 +34998,9 @@ var KeywordBundlesEdit = ({
|
|
|
34979
34998
|
}
|
|
34980
34999
|
) })
|
|
34981
35000
|
] }),
|
|
34982
|
-
/* @__PURE__ */
|
|
34983
|
-
/* @__PURE__ */
|
|
34984
|
-
/* @__PURE__ */
|
|
35001
|
+
/* @__PURE__ */ jsxs67("div", { className: "flex flex-col gap-1.5 mt-1", children: [
|
|
35002
|
+
/* @__PURE__ */ jsx107("label", { className: "text-[10px] font-bold text-gray-400 uppercase tracking-widest pl-1", children: "Priority Level (1-5)" }),
|
|
35003
|
+
/* @__PURE__ */ jsx107(
|
|
34985
35004
|
"input",
|
|
34986
35005
|
{
|
|
34987
35006
|
type: "number",
|
|
@@ -35009,7 +35028,7 @@ var KeywordBundlesEdit = ({
|
|
|
35009
35028
|
var KeywordBundlesDisplay = ({ value }) => {
|
|
35010
35029
|
const bundles = Array.isArray(value) ? value : [];
|
|
35011
35030
|
if (bundles.length === 0)
|
|
35012
|
-
return /* @__PURE__ */
|
|
35031
|
+
return /* @__PURE__ */ jsx107("span", { className: "text-gray-500 italic text-sm", children: "Not specified" });
|
|
35013
35032
|
const groups = {};
|
|
35014
35033
|
bundles.forEach((b) => {
|
|
35015
35034
|
const p = Number(b?.priority) || 1;
|
|
@@ -35018,28 +35037,20 @@ var KeywordBundlesDisplay = ({ value }) => {
|
|
|
35018
35037
|
groups[p].push(...keywords);
|
|
35019
35038
|
});
|
|
35020
35039
|
const sortedPriorities = Object.keys(groups).map((n) => parseInt(n)).sort((a, b) => a - b);
|
|
35021
|
-
return /* @__PURE__ */
|
|
35040
|
+
return /* @__PURE__ */ jsx107("div", { className: "space-y-4 pt-2", children: sortedPriorities.map((priority) => {
|
|
35022
35041
|
const deduped = Array.from(new Set(groups[priority]));
|
|
35023
|
-
return /* @__PURE__ */
|
|
35024
|
-
/* @__PURE__ */
|
|
35025
|
-
/* @__PURE__ */
|
|
35026
|
-
|
|
35027
|
-
|
|
35028
|
-
|
|
35029
|
-
|
|
35030
|
-
children: [
|
|
35031
|
-
"Priority ",
|
|
35032
|
-
priority
|
|
35033
|
-
]
|
|
35034
|
-
}
|
|
35035
|
-
),
|
|
35036
|
-
/* @__PURE__ */ jsx108("div", { className: "h-px flex-1 bg-gray-100/50" })
|
|
35042
|
+
return /* @__PURE__ */ jsxs67("div", { className: "space-y-2", children: [
|
|
35043
|
+
/* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2", children: [
|
|
35044
|
+
/* @__PURE__ */ jsxs67("span", { className: "text-[10px] uppercase tracking-widest text-purple-400 font-bold", children: [
|
|
35045
|
+
"Priority ",
|
|
35046
|
+
priority
|
|
35047
|
+
] }),
|
|
35048
|
+
/* @__PURE__ */ jsx107("div", { className: "h-[1px] flex-1 bg-white/10" })
|
|
35037
35049
|
] }),
|
|
35038
|
-
/* @__PURE__ */
|
|
35039
|
-
|
|
35050
|
+
/* @__PURE__ */ jsx107("div", { className: "flex flex-wrap gap-2", children: deduped.map((keyword) => /* @__PURE__ */ jsx107(
|
|
35051
|
+
"div",
|
|
35040
35052
|
{
|
|
35041
|
-
|
|
35042
|
-
className: "bg-white border-gray-200 text-gray-700 font-medium",
|
|
35053
|
+
className: "px-2 py-1 rounded bg-[#1A1A1A] border border-white/10 text-gray-300 text-xs font-medium",
|
|
35043
35054
|
children: keyword
|
|
35044
35055
|
},
|
|
35045
35056
|
keyword
|
|
@@ -35048,124 +35059,223 @@ var KeywordBundlesDisplay = ({ value }) => {
|
|
|
35048
35059
|
}) });
|
|
35049
35060
|
};
|
|
35050
35061
|
|
|
35062
|
+
// src/molecules/creator-discovery/SearchSpecCard/SearchSpecCard.tsx
|
|
35063
|
+
import { jsx as jsx108, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
35064
|
+
var ObjectDisplay = ({ value }) => {
|
|
35065
|
+
if (!value || typeof value !== "object") return null;
|
|
35066
|
+
return /* @__PURE__ */ jsx108("div", { className: "space-y-1 pt-1", children: Object.entries(value).map(([k, v]) => /* @__PURE__ */ jsxs68("div", { className: "flex gap-2 text-sm", children: [
|
|
35067
|
+
/* @__PURE__ */ jsxs68("span", { className: "text-muted-foreground capitalize min-w-[120px]", children: [
|
|
35068
|
+
k.replace(/_/g, " "),
|
|
35069
|
+
":"
|
|
35070
|
+
] }),
|
|
35071
|
+
/* @__PURE__ */ jsx108("span", { className: "text-foreground font-medium", children: Array.isArray(v) ? v.join(", ") : String(v) })
|
|
35072
|
+
] }, k)) });
|
|
35073
|
+
};
|
|
35074
|
+
var StringArrayDisplay = ({ value }) => {
|
|
35075
|
+
if (!Array.isArray(value) || value.length === 0)
|
|
35076
|
+
return /* @__PURE__ */ jsx108("span", { className: "text-muted-foreground italic text-sm", children: "Not specified" });
|
|
35077
|
+
return /* @__PURE__ */ jsx108("div", { className: "flex flex-wrap gap-1.5 pt-1", children: value.map((item) => /* @__PURE__ */ jsx108(Badge2, { variant: "outline", className: "text-xs", children: item }, item)) });
|
|
35078
|
+
};
|
|
35079
|
+
function buildSearchSpecFields(data) {
|
|
35080
|
+
if (!data || typeof data !== "object") return [];
|
|
35081
|
+
return Object.keys(data).map((key) => {
|
|
35082
|
+
const value = data[key];
|
|
35083
|
+
if (key === "keyword_bundles") {
|
|
35084
|
+
return {
|
|
35085
|
+
key,
|
|
35086
|
+
label: "Keyword Bundles",
|
|
35087
|
+
type: "custom",
|
|
35088
|
+
renderDisplay: (v) => /* @__PURE__ */ jsx108(KeywordBundlesDisplay, { value: v }),
|
|
35089
|
+
renderEdit: (v, onChange) => /* @__PURE__ */ jsx108(KeywordBundlesEdit, { value: v, onChange })
|
|
35090
|
+
};
|
|
35091
|
+
}
|
|
35092
|
+
if (key === "geography") {
|
|
35093
|
+
return {
|
|
35094
|
+
key,
|
|
35095
|
+
label: "Geography",
|
|
35096
|
+
type: "custom",
|
|
35097
|
+
renderDisplay: (v) => /* @__PURE__ */ jsx108(CountrySelectDisplay, { value: v }),
|
|
35098
|
+
renderEdit: (v, onChange) => /* @__PURE__ */ jsx108(CountrySelectEdit, { value: v, onChange })
|
|
35099
|
+
};
|
|
35100
|
+
}
|
|
35101
|
+
if (key === "platforms" && Array.isArray(value)) {
|
|
35102
|
+
return {
|
|
35103
|
+
key,
|
|
35104
|
+
label: "Platforms",
|
|
35105
|
+
type: "custom",
|
|
35106
|
+
renderDisplay: (v) => /* @__PURE__ */ jsx108(StringArrayDisplay, { value: v })
|
|
35107
|
+
};
|
|
35108
|
+
}
|
|
35109
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value) && !("min" in value && "max" in value)) {
|
|
35110
|
+
const label = key.split("_").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ");
|
|
35111
|
+
return {
|
|
35112
|
+
key,
|
|
35113
|
+
label,
|
|
35114
|
+
type: "custom",
|
|
35115
|
+
renderDisplay: (v) => /* @__PURE__ */ jsx108(ObjectDisplay, { value: v })
|
|
35116
|
+
};
|
|
35117
|
+
}
|
|
35118
|
+
const [generated] = generateFieldsFromData({ [key]: value });
|
|
35119
|
+
return generated;
|
|
35120
|
+
});
|
|
35121
|
+
}
|
|
35122
|
+
var SearchSpecCard = React91.memo(
|
|
35123
|
+
({
|
|
35124
|
+
selectionStatus,
|
|
35125
|
+
isLatestMessage = true,
|
|
35126
|
+
className,
|
|
35127
|
+
fields: providedFields,
|
|
35128
|
+
data,
|
|
35129
|
+
specData,
|
|
35130
|
+
...formCardProps
|
|
35131
|
+
}) => {
|
|
35132
|
+
const resolvedData = data || specData;
|
|
35133
|
+
const fields = useMemo5(() => {
|
|
35134
|
+
return providedFields || buildSearchSpecFields(resolvedData ?? {});
|
|
35135
|
+
}, [providedFields, resolvedData]);
|
|
35136
|
+
return /* @__PURE__ */ jsx108(
|
|
35137
|
+
FormCard,
|
|
35138
|
+
{
|
|
35139
|
+
...formCardProps,
|
|
35140
|
+
data: resolvedData ?? {},
|
|
35141
|
+
title: formCardProps.title || "Search Specification",
|
|
35142
|
+
fields,
|
|
35143
|
+
className,
|
|
35144
|
+
footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ jsxs68("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-xs font-semibold py-1", children: [
|
|
35145
|
+
/* @__PURE__ */ jsx108(CircleCheck, { className: "h-4 w-4" }),
|
|
35146
|
+
/* @__PURE__ */ jsx108("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by User" })
|
|
35147
|
+
] }) : formCardProps.footer
|
|
35148
|
+
}
|
|
35149
|
+
);
|
|
35150
|
+
}
|
|
35151
|
+
);
|
|
35152
|
+
SearchSpecCard.displayName = "SearchSpecCard";
|
|
35153
|
+
|
|
35051
35154
|
// src/molecules/creator-discovery/MCQCard/MCQCard.tsx
|
|
35052
|
-
import React92
|
|
35155
|
+
import React92 from "react";
|
|
35053
35156
|
import { jsx as jsx109, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
35054
35157
|
var MCQCard = React92.memo(
|
|
35055
35158
|
({
|
|
35056
35159
|
question,
|
|
35057
35160
|
options,
|
|
35058
35161
|
recommended,
|
|
35059
|
-
selectedOption,
|
|
35162
|
+
selectedOption: propsSelectedOption,
|
|
35060
35163
|
onSelect,
|
|
35061
|
-
|
|
35164
|
+
onProceed,
|
|
35062
35165
|
isLatestMessage = true,
|
|
35063
|
-
countdown,
|
|
35064
|
-
isPaused = false,
|
|
35065
|
-
onPause,
|
|
35066
35166
|
isLoading = false,
|
|
35067
35167
|
className,
|
|
35068
|
-
selectionStatus
|
|
35168
|
+
selectionStatus,
|
|
35169
|
+
onAction,
|
|
35170
|
+
disabled = false
|
|
35069
35171
|
}) => {
|
|
35070
|
-
const [
|
|
35071
|
-
const
|
|
35072
|
-
|
|
35073
|
-
if (
|
|
35074
|
-
|
|
35172
|
+
const [selectedOption, setSelectedOption] = React92.useState(propsSelectedOption);
|
|
35173
|
+
const [isProceeded, setIsProceeded] = React92.useState(false);
|
|
35174
|
+
React92.useEffect(() => {
|
|
35175
|
+
if (propsSelectedOption) {
|
|
35176
|
+
setSelectedOption(propsSelectedOption);
|
|
35177
|
+
setIsProceeded(true);
|
|
35178
|
+
}
|
|
35179
|
+
}, [propsSelectedOption]);
|
|
35180
|
+
const handleOptionClick = (key, e) => {
|
|
35181
|
+
e.preventDefault();
|
|
35182
|
+
e.stopPropagation();
|
|
35183
|
+
if (isLatestMessage && !isLoading && !disabled && !isProceeded) {
|
|
35184
|
+
setSelectedOption(key);
|
|
35075
35185
|
onSelect?.(key);
|
|
35076
35186
|
}
|
|
35077
35187
|
};
|
|
35078
|
-
const handleProceed = () => {
|
|
35079
|
-
|
|
35080
|
-
|
|
35081
|
-
|
|
35082
|
-
|
|
35083
|
-
|
|
35188
|
+
const handleProceed = (e) => {
|
|
35189
|
+
e.preventDefault();
|
|
35190
|
+
e.stopPropagation();
|
|
35191
|
+
if ((selectedOption || recommended) && !disabled && !isProceeded) {
|
|
35192
|
+
const result = selectedOption || recommended || "";
|
|
35193
|
+
setIsProceeded(true);
|
|
35194
|
+
onProceed?.(result);
|
|
35195
|
+
onAction?.({
|
|
35196
|
+
type: "mcq_selection",
|
|
35197
|
+
value: result,
|
|
35198
|
+
label: options[result] || result
|
|
35199
|
+
});
|
|
35084
35200
|
}
|
|
35085
35201
|
};
|
|
35202
|
+
const isInteractionDisabled = disabled || !isLatestMessage || isProceeded;
|
|
35086
35203
|
return /* @__PURE__ */ jsxs69(
|
|
35087
|
-
|
|
35204
|
+
"div",
|
|
35088
35205
|
{
|
|
35089
35206
|
className: cn(
|
|
35090
|
-
"
|
|
35207
|
+
"p-6 rounded-[20px] border border-gray400 bg-background dark:bg-gray200 font-noto w-full",
|
|
35091
35208
|
className
|
|
35092
35209
|
),
|
|
35093
35210
|
children: [
|
|
35094
|
-
/* @__PURE__ */ jsx109(
|
|
35095
|
-
/* @__PURE__ */ jsx109(
|
|
35096
|
-
const isSelected =
|
|
35211
|
+
/* @__PURE__ */ jsx109("div", { className: "mb-4", children: /* @__PURE__ */ jsx109("h4", { className: "font-medium text-foreground px-3 py-1 rounded-md inline-block mb-2", children: question }) }),
|
|
35212
|
+
/* @__PURE__ */ jsx109("div", { className: "mb-6", children: /* @__PURE__ */ jsx109("div", { className: "space-y-4", children: Object.entries(options).map(([key, label]) => {
|
|
35213
|
+
const isSelected = selectedOption === key;
|
|
35097
35214
|
const isRecommended = key === recommended;
|
|
35098
35215
|
return /* @__PURE__ */ jsxs69(
|
|
35099
35216
|
"div",
|
|
35100
35217
|
{
|
|
35101
|
-
onClick: () => handleOptionClick(key),
|
|
35218
|
+
onClick: (e) => handleOptionClick(key, e),
|
|
35102
35219
|
className: cn(
|
|
35103
|
-
"
|
|
35104
|
-
|
|
35105
|
-
|
|
35220
|
+
"cursor-pointer rounded-xl p-3 transition-colors relative",
|
|
35221
|
+
"border border-transparent bg-paperBackground",
|
|
35222
|
+
!selectedOption && !isInteractionDisabled && "hover:border-gray500",
|
|
35223
|
+
(isLoading || isInteractionDisabled) && "opacity-50 cursor-not-allowed"
|
|
35106
35224
|
),
|
|
35107
35225
|
children: [
|
|
35108
|
-
/* @__PURE__ */ jsx109(
|
|
35226
|
+
/* @__PURE__ */ jsx109("div", { className: "absolute top-1/2 left-4 transform -translate-y-1/2", children: /* @__PURE__ */ jsx109(
|
|
35109
35227
|
"div",
|
|
35110
35228
|
{
|
|
35111
35229
|
className: cn(
|
|
35112
|
-
"
|
|
35113
|
-
isSelected ? "border-
|
|
35230
|
+
"w-5 h-5 rounded-full border flex items-center justify-center transition-colors",
|
|
35231
|
+
isSelected ? "border-purple100 bg-gray300" : cn(
|
|
35232
|
+
"border-gray300 bg-background",
|
|
35233
|
+
!selectedOption && !isInteractionDisabled && "hover:border-purple100"
|
|
35234
|
+
)
|
|
35114
35235
|
),
|
|
35115
|
-
children: isSelected && /* @__PURE__ */ jsx109("div", { className: "w-
|
|
35236
|
+
children: isSelected && /* @__PURE__ */ jsx109("div", { className: "w-2.5 h-2.5 rounded-full bg-purple100" })
|
|
35116
35237
|
}
|
|
35117
|
-
),
|
|
35118
|
-
/* @__PURE__ */
|
|
35119
|
-
/* @__PURE__ */
|
|
35120
|
-
"
|
|
35121
|
-
{
|
|
35122
|
-
|
|
35123
|
-
|
|
35124
|
-
|
|
35125
|
-
|
|
35126
|
-
|
|
35127
|
-
|
|
35128
|
-
|
|
35129
|
-
|
|
35130
|
-
|
|
35131
|
-
|
|
35132
|
-
|
|
35133
|
-
|
|
35134
|
-
children: [
|
|
35135
|
-
/* @__PURE__ */ jsx109(Sparkles, { className: "h-3 w-3" }),
|
|
35136
|
-
"Recommended"
|
|
35137
|
-
]
|
|
35138
|
-
}
|
|
35139
|
-
),
|
|
35140
|
-
isSelected && /* @__PURE__ */ jsx109(
|
|
35141
|
-
Badge2,
|
|
35142
|
-
{
|
|
35143
|
-
variant: "outline",
|
|
35144
|
-
className: "bg-[var(--primary-color)]/10 text-[var(--primary-color)] border-[var(--primary-color)]/20 text-[10px] py-0 h-5",
|
|
35145
|
-
children: "Selected"
|
|
35146
|
-
}
|
|
35147
|
-
)
|
|
35148
|
-
] }) })
|
|
35238
|
+
) }),
|
|
35239
|
+
/* @__PURE__ */ jsxs69("div", { className: "pl-12", children: [
|
|
35240
|
+
(isRecommended || isSelected) && /* @__PURE__ */ jsxs69("div", { className: "flex gap-2 mb-2 flex-wrap", children: [
|
|
35241
|
+
isRecommended && /* @__PURE__ */ jsx109("div", { className: "flex text-xs font-semibold", children: /* @__PURE__ */ jsx109("p", { className: "bg-greenBackground text-greenText px-2 py-1 rounded-[20px]", children: "Recommended" }) }),
|
|
35242
|
+
isSelected && /* @__PURE__ */ jsx109("div", { className: "flex text-xs font-semibold", children: /* @__PURE__ */ jsx109(
|
|
35243
|
+
"p",
|
|
35244
|
+
{
|
|
35245
|
+
className: cn(
|
|
35246
|
+
"px-2 py-1 rounded-[20px]",
|
|
35247
|
+
selectedOption === recommended ? "bg-purpleLight text-purpleText2 dark:bg-primary/20 dark:text-primary" : "bg-paperBackground text-primaryDark2 dark:bg-primary/20 dark:text-primary"
|
|
35248
|
+
),
|
|
35249
|
+
children: "Selected by you"
|
|
35250
|
+
}
|
|
35251
|
+
) })
|
|
35252
|
+
] }),
|
|
35253
|
+
/* @__PURE__ */ jsx109("div", { className: "text-base font-medium text-txtColor", children: label })
|
|
35254
|
+
] })
|
|
35149
35255
|
]
|
|
35150
35256
|
},
|
|
35151
35257
|
key
|
|
35152
35258
|
);
|
|
35153
|
-
}) }),
|
|
35154
|
-
/* @__PURE__ */
|
|
35155
|
-
|
|
35156
|
-
|
|
35157
|
-
|
|
35158
|
-
|
|
35159
|
-
|
|
35160
|
-
|
|
35161
|
-
|
|
35162
|
-
|
|
35163
|
-
|
|
35164
|
-
|
|
35165
|
-
|
|
35166
|
-
|
|
35167
|
-
|
|
35168
|
-
|
|
35259
|
+
}) }) }),
|
|
35260
|
+
/* @__PURE__ */ jsxs69("div", { className: "flex justify-between items-center", children: [
|
|
35261
|
+
/* @__PURE__ */ jsx109("div", { className: "flex-1" }),
|
|
35262
|
+
/* @__PURE__ */ jsx109(
|
|
35263
|
+
"button",
|
|
35264
|
+
{
|
|
35265
|
+
onClick: (e) => handleProceed(e),
|
|
35266
|
+
disabled: isInteractionDisabled || isLoading || !selectedOption && !recommended,
|
|
35267
|
+
className: cn(
|
|
35268
|
+
"flex-3 px-4 py-2 border rounded-full text-sm disabled:opacity-50 disabled:cursor-not-allowed transition-colors",
|
|
35269
|
+
"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"
|
|
35270
|
+
),
|
|
35271
|
+
children: isLoading ? "Sending..." : "Continue"
|
|
35272
|
+
}
|
|
35273
|
+
),
|
|
35274
|
+
isLatestMessage ? /* @__PURE__ */ jsx109("div", { className: "flex-1" }) : /* @__PURE__ */ jsx109("div", { className: "flex-1 text-right text-xs bg-green100 text-green-600 dark:text-green500", children: selectionStatus === "agent" ? /* @__PURE__ */ jsxs69("div", { className: "flex flex-col gap-1 sm:flex-row sm:justify-end", children: [
|
|
35275
|
+
/* @__PURE__ */ jsx109("span", { className: "whitespace-nowrap", children: "Suggested by an Agent," }),
|
|
35276
|
+
/* @__PURE__ */ jsx109("span", { className: "whitespace-nowrap", children: "Approved by You" })
|
|
35277
|
+
] }) : /* @__PURE__ */ jsx109("span", { children: "Selected by you" }) })
|
|
35278
|
+
] })
|
|
35169
35279
|
]
|
|
35170
35280
|
}
|
|
35171
35281
|
);
|
|
@@ -35645,6 +35755,216 @@ var CreatorActionHeader = ({
|
|
|
35645
35755
|
);
|
|
35646
35756
|
};
|
|
35647
35757
|
|
|
35758
|
+
// src/molecules/creator-discovery/CreatorSearchBox/CreatorSearch.tsx
|
|
35759
|
+
import React93, { useMemo as useMemo6 } from "react";
|
|
35760
|
+
import { jsx as jsx120, jsxs as jsxs79 } from "react/jsx-runtime";
|
|
35761
|
+
var CreatorSearch = React93.memo(
|
|
35762
|
+
({
|
|
35763
|
+
selectionStatus,
|
|
35764
|
+
isLatestMessage = true,
|
|
35765
|
+
className,
|
|
35766
|
+
fields: providedFields,
|
|
35767
|
+
data,
|
|
35768
|
+
...formCardProps
|
|
35769
|
+
}) => {
|
|
35770
|
+
const fields = useMemo6(() => {
|
|
35771
|
+
const baseFields = providedFields || generateFieldsFromData(data);
|
|
35772
|
+
return baseFields.map((field) => {
|
|
35773
|
+
if (field.key === "platforms") {
|
|
35774
|
+
return {
|
|
35775
|
+
...field,
|
|
35776
|
+
renderDisplay: (val) => {
|
|
35777
|
+
const platforms = Array.isArray(val) ? val : [val];
|
|
35778
|
+
return /* @__PURE__ */ jsx120("div", { className: "flex flex-wrap gap-2", children: platforms.map((p) => /* @__PURE__ */ jsx120(
|
|
35779
|
+
BadgeAtom,
|
|
35780
|
+
{
|
|
35781
|
+
id: `platform-${p}`,
|
|
35782
|
+
type: "badge",
|
|
35783
|
+
label: p,
|
|
35784
|
+
variant: "outline",
|
|
35785
|
+
className: "bg-[#1A1A1A] border-gray400 text-white font-medium"
|
|
35786
|
+
},
|
|
35787
|
+
p
|
|
35788
|
+
)) });
|
|
35789
|
+
}
|
|
35790
|
+
};
|
|
35791
|
+
}
|
|
35792
|
+
if (field.key === "geography") {
|
|
35793
|
+
return {
|
|
35794
|
+
...field,
|
|
35795
|
+
renderDisplay: (val) => /* @__PURE__ */ jsx120(CountrySelectDisplay, { value: val })
|
|
35796
|
+
};
|
|
35797
|
+
}
|
|
35798
|
+
if (field.key === "keywordBundles") {
|
|
35799
|
+
return {
|
|
35800
|
+
...field,
|
|
35801
|
+
renderDisplay: (val) => /* @__PURE__ */ jsx120(KeywordBundlesDisplay, { value: val })
|
|
35802
|
+
};
|
|
35803
|
+
}
|
|
35804
|
+
if (field.key === "followerRange") {
|
|
35805
|
+
return {
|
|
35806
|
+
...field,
|
|
35807
|
+
renderDisplay: (val) => {
|
|
35808
|
+
if (typeof val === "object" && val !== null) {
|
|
35809
|
+
return /* @__PURE__ */ jsx120("span", { className: "text-white font-medium", children: `${val.min?.toLocaleString()} - ${val.max?.toLocaleString()} followers` });
|
|
35810
|
+
}
|
|
35811
|
+
return /* @__PURE__ */ jsxs79("span", { className: "text-white font-medium", children: [
|
|
35812
|
+
val,
|
|
35813
|
+
" followers"
|
|
35814
|
+
] });
|
|
35815
|
+
}
|
|
35816
|
+
};
|
|
35817
|
+
}
|
|
35818
|
+
if (field.key === "initialCreators") {
|
|
35819
|
+
return {
|
|
35820
|
+
...field,
|
|
35821
|
+
renderDisplay: (val) => /* @__PURE__ */ jsxs79("span", { className: "text-white font-medium", children: [
|
|
35822
|
+
val,
|
|
35823
|
+
" creators"
|
|
35824
|
+
] })
|
|
35825
|
+
};
|
|
35826
|
+
}
|
|
35827
|
+
return field;
|
|
35828
|
+
});
|
|
35829
|
+
}, [providedFields, data]);
|
|
35830
|
+
return /* @__PURE__ */ jsx120("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ jsx120(
|
|
35831
|
+
FormCard,
|
|
35832
|
+
{
|
|
35833
|
+
...formCardProps,
|
|
35834
|
+
data,
|
|
35835
|
+
title: formCardProps.title || "Creator Search Settings",
|
|
35836
|
+
fields,
|
|
35837
|
+
showTimeline: true,
|
|
35838
|
+
className: cn("font-noto", className),
|
|
35839
|
+
footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ jsxs79("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-[10px] font-semibold py-4 pr-6", children: [
|
|
35840
|
+
/* @__PURE__ */ jsx120(CircleCheck, { className: "h-3.5 w-3.5" }),
|
|
35841
|
+
/* @__PURE__ */ jsx120("span", { children: selectionStatus === "agent" ? "Suggested by Agent" : "Selected by you" })
|
|
35842
|
+
] }) : formCardProps.footer
|
|
35843
|
+
}
|
|
35844
|
+
) });
|
|
35845
|
+
}
|
|
35846
|
+
);
|
|
35847
|
+
CreatorSearch.displayName = "CreatorSearch";
|
|
35848
|
+
|
|
35849
|
+
// src/molecules/creator-discovery/CampaignConceptCard/CampaignConceptCard.tsx
|
|
35850
|
+
import React94, { useMemo as useMemo7, useState as useState9 } from "react";
|
|
35851
|
+
import { motion, AnimatePresence } from "framer-motion";
|
|
35852
|
+
import { jsx as jsx121, jsxs as jsxs80 } from "react/jsx-runtime";
|
|
35853
|
+
var CampaignConceptCard = React94.memo(
|
|
35854
|
+
({
|
|
35855
|
+
isRecommended,
|
|
35856
|
+
isOpen: controlledIsOpen,
|
|
35857
|
+
onToggle,
|
|
35858
|
+
data,
|
|
35859
|
+
fields: providedFields,
|
|
35860
|
+
title,
|
|
35861
|
+
selectionStatus,
|
|
35862
|
+
isLatestMessage = true,
|
|
35863
|
+
className,
|
|
35864
|
+
...formCardProps
|
|
35865
|
+
}) => {
|
|
35866
|
+
const [internalIsOpen, setInternalIsOpen] = useState9(false);
|
|
35867
|
+
const isOpen = controlledIsOpen !== void 0 ? controlledIsOpen : internalIsOpen;
|
|
35868
|
+
const handleToggle = () => {
|
|
35869
|
+
if (onToggle) {
|
|
35870
|
+
onToggle();
|
|
35871
|
+
} else {
|
|
35872
|
+
setInternalIsOpen(!internalIsOpen);
|
|
35873
|
+
}
|
|
35874
|
+
};
|
|
35875
|
+
const fields = useMemo7(() => {
|
|
35876
|
+
const baseFields = providedFields || generateFieldsFromData(data);
|
|
35877
|
+
return baseFields.map((field) => {
|
|
35878
|
+
if (field.key === "budgetAllocation") {
|
|
35879
|
+
return {
|
|
35880
|
+
...field,
|
|
35881
|
+
renderDisplay: (val) => {
|
|
35882
|
+
if (!Array.isArray(val)) return /* @__PURE__ */ jsx121("span", { children: val });
|
|
35883
|
+
return /* @__PURE__ */ jsx121("div", { className: "space-y-2", children: val.map((item, idx) => /* @__PURE__ */ jsxs80("div", { className: "flex items-center gap-2 text-xs font-medium", children: [
|
|
35884
|
+
/* @__PURE__ */ jsxs80("span", { children: [
|
|
35885
|
+
idx + 1,
|
|
35886
|
+
"."
|
|
35887
|
+
] }),
|
|
35888
|
+
/* @__PURE__ */ jsx121("div", { className: "bg-[#1A1A1A] border border-white/10 px-2 py-0.5 rounded text-gray-300", children: item.label }),
|
|
35889
|
+
/* @__PURE__ */ jsx121("span", { className: "text-gray-400", children: "=" }),
|
|
35890
|
+
/* @__PURE__ */ jsx121("div", { className: "bg-[#1A1A1A] border border-white/10 px-2 py-0.5 rounded text-gray-300", children: item.value })
|
|
35891
|
+
] }, idx)) });
|
|
35892
|
+
}
|
|
35893
|
+
};
|
|
35894
|
+
}
|
|
35895
|
+
if (field.key === "estimatedCreators") {
|
|
35896
|
+
return {
|
|
35897
|
+
...field,
|
|
35898
|
+
renderDisplay: (val) => {
|
|
35899
|
+
if (!Array.isArray(val)) return /* @__PURE__ */ jsx121("span", { className: "text-white font-medium", children: val });
|
|
35900
|
+
return /* @__PURE__ */ jsx121("div", { className: "flex gap-2", children: val.map((v, idx) => /* @__PURE__ */ jsx121("div", { className: "bg-[#1A1A1A] border border-white/10 px-2 py-0.5 rounded text-white text-xs font-medium", children: v }, idx)) });
|
|
35901
|
+
}
|
|
35902
|
+
};
|
|
35903
|
+
}
|
|
35904
|
+
return {
|
|
35905
|
+
...field,
|
|
35906
|
+
renderDisplay: (val) => /* @__PURE__ */ jsx121("span", { className: "text-gray-300 text-sm", children: val })
|
|
35907
|
+
};
|
|
35908
|
+
});
|
|
35909
|
+
}, [providedFields, data]);
|
|
35910
|
+
return /* @__PURE__ */ jsxs80(
|
|
35911
|
+
"div",
|
|
35912
|
+
{
|
|
35913
|
+
className: cn(
|
|
35914
|
+
"w-full rounded-[20px] transition-all duration-300 bg-background dark:bg-gray50",
|
|
35915
|
+
isOpen ? "border border-green-500/50 shadow-[0_0_15px_rgba(34,197,94,0.1)]" : "border border-gray400",
|
|
35916
|
+
className
|
|
35917
|
+
),
|
|
35918
|
+
children: [
|
|
35919
|
+
/* @__PURE__ */ jsxs80(
|
|
35920
|
+
"div",
|
|
35921
|
+
{
|
|
35922
|
+
className: "flex items-center justify-between p-6 cursor-pointer select-none",
|
|
35923
|
+
onClick: handleToggle,
|
|
35924
|
+
children: [
|
|
35925
|
+
/* @__PURE__ */ jsxs80("div", { className: "flex flex-col gap-2", children: [
|
|
35926
|
+
/* @__PURE__ */ jsx121("h3", { className: "text-lg font-semibold text-white tracking-wide", children: title || data.title }),
|
|
35927
|
+
isRecommended && /* @__PURE__ */ jsx121("div", { className: "inline-flex text-[10px] font-bold uppercase tracking-widest text-[#22C55E]", children: /* @__PURE__ */ jsx121("span", { className: "bg-[#22C55E]/10 px-2 py-0.5 rounded border border-[#22C55E]/20", children: "Recommended" }) })
|
|
35928
|
+
] }),
|
|
35929
|
+
/* @__PURE__ */ jsx121("div", { className: cn(
|
|
35930
|
+
"p-2 rounded-lg bg-white/5 border border-white/10 text-gray-400 transition-transform duration-300",
|
|
35931
|
+
isOpen && "rotate-180"
|
|
35932
|
+
), children: /* @__PURE__ */ jsx121(ChevronDown, { className: "h-4 w-4" }) })
|
|
35933
|
+
]
|
|
35934
|
+
}
|
|
35935
|
+
),
|
|
35936
|
+
/* @__PURE__ */ jsx121(AnimatePresence, { initial: false, children: isOpen && /* @__PURE__ */ jsx121(
|
|
35937
|
+
motion.div,
|
|
35938
|
+
{
|
|
35939
|
+
initial: { height: 0, opacity: 0 },
|
|
35940
|
+
animate: { height: "auto", opacity: 1 },
|
|
35941
|
+
exit: { height: 0, opacity: 0 },
|
|
35942
|
+
transition: { duration: 0.3, ease: "easeInOut" },
|
|
35943
|
+
className: "overflow-hidden",
|
|
35944
|
+
children: /* @__PURE__ */ jsx121("div", { className: "px-6 pb-6 pt-0 border-t border-white/5", children: /* @__PURE__ */ jsx121(
|
|
35945
|
+
FormCard,
|
|
35946
|
+
{
|
|
35947
|
+
...formCardProps,
|
|
35948
|
+
title: title || data.title || "Campaign Concept",
|
|
35949
|
+
data,
|
|
35950
|
+
fields,
|
|
35951
|
+
showTimeline: true,
|
|
35952
|
+
className: "bg-transparent border-none shadow-none mb-0 p-0",
|
|
35953
|
+
footer: !isLatestMessage && selectionStatus ? /* @__PURE__ */ jsxs80("div", { className: "flex justify-end items-center gap-1.5 text-green-600 text-[10px] font-semibold py-4 pr-6", children: [
|
|
35954
|
+
/* @__PURE__ */ jsx121(CircleCheck, { className: "h-3.5 w-3.5" }),
|
|
35955
|
+
/* @__PURE__ */ jsx121("span", { children: selectionStatus === "agent" ? "Selected by Agent" : "Selected by You" })
|
|
35956
|
+
] }) : formCardProps.footer
|
|
35957
|
+
}
|
|
35958
|
+
) })
|
|
35959
|
+
}
|
|
35960
|
+
) })
|
|
35961
|
+
]
|
|
35962
|
+
}
|
|
35963
|
+
);
|
|
35964
|
+
}
|
|
35965
|
+
);
|
|
35966
|
+
CampaignConceptCard.displayName = "CampaignConceptCard";
|
|
35967
|
+
|
|
35648
35968
|
// src/components/ui/index.ts
|
|
35649
35969
|
var ui_exports = {};
|
|
35650
35970
|
__export(ui_exports, {
|
|
@@ -35937,7 +36257,7 @@ __export(ui_exports, {
|
|
|
35937
36257
|
// src/components/ui/button-group.tsx
|
|
35938
36258
|
import { Slot as Slot4 } from "@radix-ui/react-slot";
|
|
35939
36259
|
import { cva as cva8 } from "class-variance-authority";
|
|
35940
|
-
import { jsx as
|
|
36260
|
+
import { jsx as jsx122 } from "react/jsx-runtime";
|
|
35941
36261
|
var buttonGroupVariants = cva8(
|
|
35942
36262
|
"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",
|
|
35943
36263
|
{
|
|
@@ -35957,7 +36277,7 @@ function ButtonGroup({
|
|
|
35957
36277
|
orientation,
|
|
35958
36278
|
...props
|
|
35959
36279
|
}) {
|
|
35960
|
-
return /* @__PURE__ */
|
|
36280
|
+
return /* @__PURE__ */ jsx122(
|
|
35961
36281
|
"div",
|
|
35962
36282
|
{
|
|
35963
36283
|
role: "group",
|
|
@@ -35974,7 +36294,7 @@ function ButtonGroupText({
|
|
|
35974
36294
|
...props
|
|
35975
36295
|
}) {
|
|
35976
36296
|
const Comp = asChild ? Slot4 : "div";
|
|
35977
|
-
return /* @__PURE__ */
|
|
36297
|
+
return /* @__PURE__ */ jsx122(
|
|
35978
36298
|
Comp,
|
|
35979
36299
|
{
|
|
35980
36300
|
className: cn(
|
|
@@ -35990,7 +36310,7 @@ function ButtonGroupSeparator({
|
|
|
35990
36310
|
orientation = "vertical",
|
|
35991
36311
|
...props
|
|
35992
36312
|
}) {
|
|
35993
|
-
return /* @__PURE__ */
|
|
36313
|
+
return /* @__PURE__ */ jsx122(
|
|
35994
36314
|
Separator2,
|
|
35995
36315
|
{
|
|
35996
36316
|
"data-slot": "button-group-separator",
|
|
@@ -36006,9 +36326,9 @@ function ButtonGroupSeparator({
|
|
|
36006
36326
|
|
|
36007
36327
|
// src/components/ui/empty.tsx
|
|
36008
36328
|
import { cva as cva9 } from "class-variance-authority";
|
|
36009
|
-
import { jsx as
|
|
36329
|
+
import { jsx as jsx123 } from "react/jsx-runtime";
|
|
36010
36330
|
function Empty({ className, ...props }) {
|
|
36011
|
-
return /* @__PURE__ */
|
|
36331
|
+
return /* @__PURE__ */ jsx123(
|
|
36012
36332
|
"div",
|
|
36013
36333
|
{
|
|
36014
36334
|
"data-slot": "empty",
|
|
@@ -36021,7 +36341,7 @@ function Empty({ className, ...props }) {
|
|
|
36021
36341
|
);
|
|
36022
36342
|
}
|
|
36023
36343
|
function EmptyHeader({ className, ...props }) {
|
|
36024
|
-
return /* @__PURE__ */
|
|
36344
|
+
return /* @__PURE__ */ jsx123(
|
|
36025
36345
|
"div",
|
|
36026
36346
|
{
|
|
36027
36347
|
"data-slot": "empty-header",
|
|
@@ -36052,7 +36372,7 @@ function EmptyMedia({
|
|
|
36052
36372
|
variant = "default",
|
|
36053
36373
|
...props
|
|
36054
36374
|
}) {
|
|
36055
|
-
return /* @__PURE__ */
|
|
36375
|
+
return /* @__PURE__ */ jsx123(
|
|
36056
36376
|
"div",
|
|
36057
36377
|
{
|
|
36058
36378
|
"data-slot": "empty-icon",
|
|
@@ -36063,7 +36383,7 @@ function EmptyMedia({
|
|
|
36063
36383
|
);
|
|
36064
36384
|
}
|
|
36065
36385
|
function EmptyTitle({ className, ...props }) {
|
|
36066
|
-
return /* @__PURE__ */
|
|
36386
|
+
return /* @__PURE__ */ jsx123(
|
|
36067
36387
|
"div",
|
|
36068
36388
|
{
|
|
36069
36389
|
"data-slot": "empty-title",
|
|
@@ -36073,7 +36393,7 @@ function EmptyTitle({ className, ...props }) {
|
|
|
36073
36393
|
);
|
|
36074
36394
|
}
|
|
36075
36395
|
function EmptyDescription({ className, ...props }) {
|
|
36076
|
-
return /* @__PURE__ */
|
|
36396
|
+
return /* @__PURE__ */ jsx123(
|
|
36077
36397
|
"div",
|
|
36078
36398
|
{
|
|
36079
36399
|
"data-slot": "empty-description",
|
|
@@ -36086,7 +36406,7 @@ function EmptyDescription({ className, ...props }) {
|
|
|
36086
36406
|
);
|
|
36087
36407
|
}
|
|
36088
36408
|
function EmptyContent({ className, ...props }) {
|
|
36089
|
-
return /* @__PURE__ */
|
|
36409
|
+
return /* @__PURE__ */ jsx123(
|
|
36090
36410
|
"div",
|
|
36091
36411
|
{
|
|
36092
36412
|
"data-slot": "empty-content",
|
|
@@ -36100,11 +36420,11 @@ function EmptyContent({ className, ...props }) {
|
|
|
36100
36420
|
}
|
|
36101
36421
|
|
|
36102
36422
|
// src/components/ui/field.tsx
|
|
36103
|
-
import { useMemo as
|
|
36423
|
+
import { useMemo as useMemo8 } from "react";
|
|
36104
36424
|
import { cva as cva10 } from "class-variance-authority";
|
|
36105
|
-
import { jsx as
|
|
36425
|
+
import { jsx as jsx124, jsxs as jsxs81 } from "react/jsx-runtime";
|
|
36106
36426
|
function FieldSet({ className, ...props }) {
|
|
36107
|
-
return /* @__PURE__ */
|
|
36427
|
+
return /* @__PURE__ */ jsx124(
|
|
36108
36428
|
"fieldset",
|
|
36109
36429
|
{
|
|
36110
36430
|
"data-slot": "field-set",
|
|
@@ -36122,7 +36442,7 @@ function FieldLegend({
|
|
|
36122
36442
|
variant = "legend",
|
|
36123
36443
|
...props
|
|
36124
36444
|
}) {
|
|
36125
|
-
return /* @__PURE__ */
|
|
36445
|
+
return /* @__PURE__ */ jsx124(
|
|
36126
36446
|
"legend",
|
|
36127
36447
|
{
|
|
36128
36448
|
"data-slot": "field-legend",
|
|
@@ -36138,7 +36458,7 @@ function FieldLegend({
|
|
|
36138
36458
|
);
|
|
36139
36459
|
}
|
|
36140
36460
|
function FieldGroup({ className, ...props }) {
|
|
36141
|
-
return /* @__PURE__ */
|
|
36461
|
+
return /* @__PURE__ */ jsx124(
|
|
36142
36462
|
"div",
|
|
36143
36463
|
{
|
|
36144
36464
|
"data-slot": "field-group",
|
|
@@ -36178,7 +36498,7 @@ function Field({
|
|
|
36178
36498
|
orientation = "vertical",
|
|
36179
36499
|
...props
|
|
36180
36500
|
}) {
|
|
36181
|
-
return /* @__PURE__ */
|
|
36501
|
+
return /* @__PURE__ */ jsx124(
|
|
36182
36502
|
"div",
|
|
36183
36503
|
{
|
|
36184
36504
|
role: "group",
|
|
@@ -36190,7 +36510,7 @@ function Field({
|
|
|
36190
36510
|
);
|
|
36191
36511
|
}
|
|
36192
36512
|
function FieldContent({ className, ...props }) {
|
|
36193
|
-
return /* @__PURE__ */
|
|
36513
|
+
return /* @__PURE__ */ jsx124(
|
|
36194
36514
|
"div",
|
|
36195
36515
|
{
|
|
36196
36516
|
"data-slot": "field-content",
|
|
@@ -36206,7 +36526,7 @@ function FieldLabel({
|
|
|
36206
36526
|
className,
|
|
36207
36527
|
...props
|
|
36208
36528
|
}) {
|
|
36209
|
-
return /* @__PURE__ */
|
|
36529
|
+
return /* @__PURE__ */ jsx124(
|
|
36210
36530
|
Label,
|
|
36211
36531
|
{
|
|
36212
36532
|
"data-slot": "field-label",
|
|
@@ -36221,7 +36541,7 @@ function FieldLabel({
|
|
|
36221
36541
|
);
|
|
36222
36542
|
}
|
|
36223
36543
|
function FieldTitle({ className, ...props }) {
|
|
36224
|
-
return /* @__PURE__ */
|
|
36544
|
+
return /* @__PURE__ */ jsx124(
|
|
36225
36545
|
"div",
|
|
36226
36546
|
{
|
|
36227
36547
|
"data-slot": "field-label",
|
|
@@ -36234,7 +36554,7 @@ function FieldTitle({ className, ...props }) {
|
|
|
36234
36554
|
);
|
|
36235
36555
|
}
|
|
36236
36556
|
function FieldDescription({ className, ...props }) {
|
|
36237
|
-
return /* @__PURE__ */
|
|
36557
|
+
return /* @__PURE__ */ jsx124(
|
|
36238
36558
|
"p",
|
|
36239
36559
|
{
|
|
36240
36560
|
"data-slot": "field-description",
|
|
@@ -36253,7 +36573,7 @@ function FieldSeparator({
|
|
|
36253
36573
|
className,
|
|
36254
36574
|
...props
|
|
36255
36575
|
}) {
|
|
36256
|
-
return /* @__PURE__ */
|
|
36576
|
+
return /* @__PURE__ */ jsxs81(
|
|
36257
36577
|
"div",
|
|
36258
36578
|
{
|
|
36259
36579
|
"data-slot": "field-separator",
|
|
@@ -36264,8 +36584,8 @@ function FieldSeparator({
|
|
|
36264
36584
|
),
|
|
36265
36585
|
...props,
|
|
36266
36586
|
children: [
|
|
36267
|
-
/* @__PURE__ */
|
|
36268
|
-
children && /* @__PURE__ */
|
|
36587
|
+
/* @__PURE__ */ jsx124(Separator2, { className: "absolute inset-0 top-1/2" }),
|
|
36588
|
+
children && /* @__PURE__ */ jsx124(
|
|
36269
36589
|
"span",
|
|
36270
36590
|
{
|
|
36271
36591
|
className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
|
|
@@ -36283,7 +36603,7 @@ function FieldError({
|
|
|
36283
36603
|
errors,
|
|
36284
36604
|
...props
|
|
36285
36605
|
}) {
|
|
36286
|
-
const content =
|
|
36606
|
+
const content = useMemo8(() => {
|
|
36287
36607
|
if (children) {
|
|
36288
36608
|
return children;
|
|
36289
36609
|
}
|
|
@@ -36293,14 +36613,14 @@ function FieldError({
|
|
|
36293
36613
|
if (errors?.length === 1 && errors[0]?.message) {
|
|
36294
36614
|
return errors[0].message;
|
|
36295
36615
|
}
|
|
36296
|
-
return /* @__PURE__ */
|
|
36297
|
-
(error, index) => error?.message && /* @__PURE__ */
|
|
36616
|
+
return /* @__PURE__ */ jsx124("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
|
|
36617
|
+
(error, index) => error?.message && /* @__PURE__ */ jsx124("li", { children: error.message }, index)
|
|
36298
36618
|
) });
|
|
36299
36619
|
}, [children, errors]);
|
|
36300
36620
|
if (!content) {
|
|
36301
36621
|
return null;
|
|
36302
36622
|
}
|
|
36303
|
-
return /* @__PURE__ */
|
|
36623
|
+
return /* @__PURE__ */ jsx124(
|
|
36304
36624
|
"div",
|
|
36305
36625
|
{
|
|
36306
36626
|
role: "alert",
|
|
@@ -36314,9 +36634,9 @@ function FieldError({
|
|
|
36314
36634
|
|
|
36315
36635
|
// src/components/ui/input-group.tsx
|
|
36316
36636
|
import { cva as cva11 } from "class-variance-authority";
|
|
36317
|
-
import { jsx as
|
|
36637
|
+
import { jsx as jsx125 } from "react/jsx-runtime";
|
|
36318
36638
|
function InputGroup({ className, ...props }) {
|
|
36319
|
-
return /* @__PURE__ */
|
|
36639
|
+
return /* @__PURE__ */ jsx125(
|
|
36320
36640
|
"div",
|
|
36321
36641
|
{
|
|
36322
36642
|
"data-slot": "input-group",
|
|
@@ -36360,7 +36680,7 @@ function InputGroupAddon({
|
|
|
36360
36680
|
align = "inline-start",
|
|
36361
36681
|
...props
|
|
36362
36682
|
}) {
|
|
36363
|
-
return /* @__PURE__ */
|
|
36683
|
+
return /* @__PURE__ */ jsx125(
|
|
36364
36684
|
"div",
|
|
36365
36685
|
{
|
|
36366
36686
|
role: "group",
|
|
@@ -36400,7 +36720,7 @@ function InputGroupButton({
|
|
|
36400
36720
|
size = "xs",
|
|
36401
36721
|
...props
|
|
36402
36722
|
}) {
|
|
36403
|
-
return /* @__PURE__ */
|
|
36723
|
+
return /* @__PURE__ */ jsx125(
|
|
36404
36724
|
Button,
|
|
36405
36725
|
{
|
|
36406
36726
|
type,
|
|
@@ -36412,7 +36732,7 @@ function InputGroupButton({
|
|
|
36412
36732
|
);
|
|
36413
36733
|
}
|
|
36414
36734
|
function InputGroupText({ className, ...props }) {
|
|
36415
|
-
return /* @__PURE__ */
|
|
36735
|
+
return /* @__PURE__ */ jsx125(
|
|
36416
36736
|
"span",
|
|
36417
36737
|
{
|
|
36418
36738
|
className: cn(
|
|
@@ -36427,7 +36747,7 @@ function InputGroupInput({
|
|
|
36427
36747
|
className,
|
|
36428
36748
|
...props
|
|
36429
36749
|
}) {
|
|
36430
|
-
return /* @__PURE__ */
|
|
36750
|
+
return /* @__PURE__ */ jsx125(
|
|
36431
36751
|
Input,
|
|
36432
36752
|
{
|
|
36433
36753
|
"data-slot": "input-group-control",
|
|
@@ -36443,7 +36763,7 @@ function InputGroupTextarea({
|
|
|
36443
36763
|
className,
|
|
36444
36764
|
...props
|
|
36445
36765
|
}) {
|
|
36446
|
-
return /* @__PURE__ */
|
|
36766
|
+
return /* @__PURE__ */ jsx125(
|
|
36447
36767
|
Textarea,
|
|
36448
36768
|
{
|
|
36449
36769
|
"data-slot": "input-group-control",
|
|
@@ -36459,9 +36779,9 @@ function InputGroupTextarea({
|
|
|
36459
36779
|
// src/components/ui/item.tsx
|
|
36460
36780
|
import { Slot as Slot5 } from "@radix-ui/react-slot";
|
|
36461
36781
|
import { cva as cva12 } from "class-variance-authority";
|
|
36462
|
-
import { jsx as
|
|
36782
|
+
import { jsx as jsx126 } from "react/jsx-runtime";
|
|
36463
36783
|
function ItemGroup({ className, ...props }) {
|
|
36464
|
-
return /* @__PURE__ */
|
|
36784
|
+
return /* @__PURE__ */ jsx126(
|
|
36465
36785
|
"div",
|
|
36466
36786
|
{
|
|
36467
36787
|
role: "list",
|
|
@@ -36475,7 +36795,7 @@ function ItemSeparator({
|
|
|
36475
36795
|
className,
|
|
36476
36796
|
...props
|
|
36477
36797
|
}) {
|
|
36478
|
-
return /* @__PURE__ */
|
|
36798
|
+
return /* @__PURE__ */ jsx126(
|
|
36479
36799
|
Separator2,
|
|
36480
36800
|
{
|
|
36481
36801
|
"data-slot": "item-separator",
|
|
@@ -36513,7 +36833,7 @@ function Item8({
|
|
|
36513
36833
|
...props
|
|
36514
36834
|
}) {
|
|
36515
36835
|
const Comp = asChild ? Slot5 : "div";
|
|
36516
|
-
return /* @__PURE__ */
|
|
36836
|
+
return /* @__PURE__ */ jsx126(
|
|
36517
36837
|
Comp,
|
|
36518
36838
|
{
|
|
36519
36839
|
"data-slot": "item",
|
|
@@ -36544,7 +36864,7 @@ function ItemMedia({
|
|
|
36544
36864
|
variant = "default",
|
|
36545
36865
|
...props
|
|
36546
36866
|
}) {
|
|
36547
|
-
return /* @__PURE__ */
|
|
36867
|
+
return /* @__PURE__ */ jsx126(
|
|
36548
36868
|
"div",
|
|
36549
36869
|
{
|
|
36550
36870
|
"data-slot": "item-media",
|
|
@@ -36555,7 +36875,7 @@ function ItemMedia({
|
|
|
36555
36875
|
);
|
|
36556
36876
|
}
|
|
36557
36877
|
function ItemContent({ className, ...props }) {
|
|
36558
|
-
return /* @__PURE__ */
|
|
36878
|
+
return /* @__PURE__ */ jsx126(
|
|
36559
36879
|
"div",
|
|
36560
36880
|
{
|
|
36561
36881
|
"data-slot": "item-content",
|
|
@@ -36568,7 +36888,7 @@ function ItemContent({ className, ...props }) {
|
|
|
36568
36888
|
);
|
|
36569
36889
|
}
|
|
36570
36890
|
function ItemTitle({ className, ...props }) {
|
|
36571
|
-
return /* @__PURE__ */
|
|
36891
|
+
return /* @__PURE__ */ jsx126(
|
|
36572
36892
|
"div",
|
|
36573
36893
|
{
|
|
36574
36894
|
"data-slot": "item-title",
|
|
@@ -36581,7 +36901,7 @@ function ItemTitle({ className, ...props }) {
|
|
|
36581
36901
|
);
|
|
36582
36902
|
}
|
|
36583
36903
|
function ItemDescription({ className, ...props }) {
|
|
36584
|
-
return /* @__PURE__ */
|
|
36904
|
+
return /* @__PURE__ */ jsx126(
|
|
36585
36905
|
"p",
|
|
36586
36906
|
{
|
|
36587
36907
|
"data-slot": "item-description",
|
|
@@ -36595,7 +36915,7 @@ function ItemDescription({ className, ...props }) {
|
|
|
36595
36915
|
);
|
|
36596
36916
|
}
|
|
36597
36917
|
function ItemActions({ className, ...props }) {
|
|
36598
|
-
return /* @__PURE__ */
|
|
36918
|
+
return /* @__PURE__ */ jsx126(
|
|
36599
36919
|
"div",
|
|
36600
36920
|
{
|
|
36601
36921
|
"data-slot": "item-actions",
|
|
@@ -36605,7 +36925,7 @@ function ItemActions({ className, ...props }) {
|
|
|
36605
36925
|
);
|
|
36606
36926
|
}
|
|
36607
36927
|
function ItemHeader({ className, ...props }) {
|
|
36608
|
-
return /* @__PURE__ */
|
|
36928
|
+
return /* @__PURE__ */ jsx126(
|
|
36609
36929
|
"div",
|
|
36610
36930
|
{
|
|
36611
36931
|
"data-slot": "item-header",
|
|
@@ -36618,7 +36938,7 @@ function ItemHeader({ className, ...props }) {
|
|
|
36618
36938
|
);
|
|
36619
36939
|
}
|
|
36620
36940
|
function ItemFooter({ className, ...props }) {
|
|
36621
|
-
return /* @__PURE__ */
|
|
36941
|
+
return /* @__PURE__ */ jsx126(
|
|
36622
36942
|
"div",
|
|
36623
36943
|
{
|
|
36624
36944
|
"data-slot": "item-footer",
|
|
@@ -36632,9 +36952,9 @@ function ItemFooter({ className, ...props }) {
|
|
|
36632
36952
|
}
|
|
36633
36953
|
|
|
36634
36954
|
// src/components/ui/kbd.tsx
|
|
36635
|
-
import { jsx as
|
|
36955
|
+
import { jsx as jsx127 } from "react/jsx-runtime";
|
|
36636
36956
|
function Kbd({ className, ...props }) {
|
|
36637
|
-
return /* @__PURE__ */
|
|
36957
|
+
return /* @__PURE__ */ jsx127(
|
|
36638
36958
|
"kbd",
|
|
36639
36959
|
{
|
|
36640
36960
|
"data-slot": "kbd",
|
|
@@ -36649,7 +36969,7 @@ function Kbd({ className, ...props }) {
|
|
|
36649
36969
|
);
|
|
36650
36970
|
}
|
|
36651
36971
|
function KbdGroup({ className, ...props }) {
|
|
36652
|
-
return /* @__PURE__ */
|
|
36972
|
+
return /* @__PURE__ */ jsx127(
|
|
36653
36973
|
"kbd",
|
|
36654
36974
|
{
|
|
36655
36975
|
"data-slot": "kbd-group",
|
|
@@ -36660,16 +36980,16 @@ function KbdGroup({ className, ...props }) {
|
|
|
36660
36980
|
}
|
|
36661
36981
|
|
|
36662
36982
|
// src/components/ui/sidebar.tsx
|
|
36663
|
-
import * as
|
|
36983
|
+
import * as React96 from "react";
|
|
36664
36984
|
import { Slot as Slot6 } from "@radix-ui/react-slot";
|
|
36665
36985
|
import { cva as cva13 } from "class-variance-authority";
|
|
36666
36986
|
|
|
36667
36987
|
// src/hooks/use-mobile.tsx
|
|
36668
|
-
import * as
|
|
36988
|
+
import * as React95 from "react";
|
|
36669
36989
|
var MOBILE_BREAKPOINT = 768;
|
|
36670
36990
|
function useIsMobile() {
|
|
36671
|
-
const [isMobile, setIsMobile] =
|
|
36672
|
-
|
|
36991
|
+
const [isMobile, setIsMobile] = React95.useState(void 0);
|
|
36992
|
+
React95.useEffect(() => {
|
|
36673
36993
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
36674
36994
|
const onChange = () => {
|
|
36675
36995
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -36682,22 +37002,22 @@ function useIsMobile() {
|
|
|
36682
37002
|
}
|
|
36683
37003
|
|
|
36684
37004
|
// src/components/ui/sidebar.tsx
|
|
36685
|
-
import { jsx as
|
|
37005
|
+
import { jsx as jsx128, jsxs as jsxs82 } from "react/jsx-runtime";
|
|
36686
37006
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
36687
37007
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
36688
37008
|
var SIDEBAR_WIDTH = "16rem";
|
|
36689
37009
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
36690
37010
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
36691
37011
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
36692
|
-
var SidebarContext =
|
|
37012
|
+
var SidebarContext = React96.createContext(null);
|
|
36693
37013
|
function useSidebar() {
|
|
36694
|
-
const context =
|
|
37014
|
+
const context = React96.useContext(SidebarContext);
|
|
36695
37015
|
if (!context) {
|
|
36696
37016
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
36697
37017
|
}
|
|
36698
37018
|
return context;
|
|
36699
37019
|
}
|
|
36700
|
-
var SidebarProvider =
|
|
37020
|
+
var SidebarProvider = React96.forwardRef(
|
|
36701
37021
|
({
|
|
36702
37022
|
defaultOpen = true,
|
|
36703
37023
|
open: openProp,
|
|
@@ -36708,10 +37028,10 @@ var SidebarProvider = React94.forwardRef(
|
|
|
36708
37028
|
...props
|
|
36709
37029
|
}, ref) => {
|
|
36710
37030
|
const isMobile = useIsMobile();
|
|
36711
|
-
const [openMobile, setOpenMobile] =
|
|
36712
|
-
const [_open, _setOpen] =
|
|
37031
|
+
const [openMobile, setOpenMobile] = React96.useState(false);
|
|
37032
|
+
const [_open, _setOpen] = React96.useState(defaultOpen);
|
|
36713
37033
|
const open = openProp ?? _open;
|
|
36714
|
-
const setOpen =
|
|
37034
|
+
const setOpen = React96.useCallback(
|
|
36715
37035
|
(value) => {
|
|
36716
37036
|
const openState = typeof value === "function" ? value(open) : value;
|
|
36717
37037
|
if (setOpenProp) {
|
|
@@ -36723,10 +37043,10 @@ var SidebarProvider = React94.forwardRef(
|
|
|
36723
37043
|
},
|
|
36724
37044
|
[setOpenProp, open]
|
|
36725
37045
|
);
|
|
36726
|
-
const toggleSidebar =
|
|
37046
|
+
const toggleSidebar = React96.useCallback(() => {
|
|
36727
37047
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
36728
37048
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
36729
|
-
|
|
37049
|
+
React96.useEffect(() => {
|
|
36730
37050
|
const handleKeyDown = (event) => {
|
|
36731
37051
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
36732
37052
|
event.preventDefault();
|
|
@@ -36737,7 +37057,7 @@ var SidebarProvider = React94.forwardRef(
|
|
|
36737
37057
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
36738
37058
|
}, [toggleSidebar]);
|
|
36739
37059
|
const state = open ? "expanded" : "collapsed";
|
|
36740
|
-
const contextValue =
|
|
37060
|
+
const contextValue = React96.useMemo(
|
|
36741
37061
|
() => ({
|
|
36742
37062
|
state,
|
|
36743
37063
|
open,
|
|
@@ -36749,7 +37069,7 @@ var SidebarProvider = React94.forwardRef(
|
|
|
36749
37069
|
}),
|
|
36750
37070
|
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
36751
37071
|
);
|
|
36752
|
-
return /* @__PURE__ */
|
|
37072
|
+
return /* @__PURE__ */ jsx128(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx128(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx128(
|
|
36753
37073
|
"div",
|
|
36754
37074
|
{
|
|
36755
37075
|
style: {
|
|
@@ -36769,7 +37089,7 @@ var SidebarProvider = React94.forwardRef(
|
|
|
36769
37089
|
}
|
|
36770
37090
|
);
|
|
36771
37091
|
SidebarProvider.displayName = "SidebarProvider";
|
|
36772
|
-
var Sidebar =
|
|
37092
|
+
var Sidebar = React96.forwardRef(
|
|
36773
37093
|
({
|
|
36774
37094
|
side = "left",
|
|
36775
37095
|
variant = "sidebar",
|
|
@@ -36780,7 +37100,7 @@ var Sidebar = React94.forwardRef(
|
|
|
36780
37100
|
}, ref) => {
|
|
36781
37101
|
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
36782
37102
|
if (collapsible === "none") {
|
|
36783
|
-
return /* @__PURE__ */
|
|
37103
|
+
return /* @__PURE__ */ jsx128(
|
|
36784
37104
|
"div",
|
|
36785
37105
|
{
|
|
36786
37106
|
className: cn(
|
|
@@ -36794,7 +37114,7 @@ var Sidebar = React94.forwardRef(
|
|
|
36794
37114
|
);
|
|
36795
37115
|
}
|
|
36796
37116
|
if (isMobile) {
|
|
36797
|
-
return /* @__PURE__ */
|
|
37117
|
+
return /* @__PURE__ */ jsx128(Sheet2, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs82(
|
|
36798
37118
|
SheetContent,
|
|
36799
37119
|
{
|
|
36800
37120
|
"data-sidebar": "sidebar",
|
|
@@ -36805,16 +37125,16 @@ var Sidebar = React94.forwardRef(
|
|
|
36805
37125
|
},
|
|
36806
37126
|
side,
|
|
36807
37127
|
children: [
|
|
36808
|
-
/* @__PURE__ */
|
|
36809
|
-
/* @__PURE__ */
|
|
36810
|
-
/* @__PURE__ */
|
|
37128
|
+
/* @__PURE__ */ jsxs82(SheetHeader, { className: "sr-only", children: [
|
|
37129
|
+
/* @__PURE__ */ jsx128(SheetTitle, { children: "Sidebar" }),
|
|
37130
|
+
/* @__PURE__ */ jsx128(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
36811
37131
|
] }),
|
|
36812
|
-
/* @__PURE__ */
|
|
37132
|
+
/* @__PURE__ */ jsx128("div", { className: "flex h-full w-full flex-col", children })
|
|
36813
37133
|
]
|
|
36814
37134
|
}
|
|
36815
37135
|
) });
|
|
36816
37136
|
}
|
|
36817
|
-
return /* @__PURE__ */
|
|
37137
|
+
return /* @__PURE__ */ jsxs82(
|
|
36818
37138
|
"div",
|
|
36819
37139
|
{
|
|
36820
37140
|
ref,
|
|
@@ -36824,7 +37144,7 @@ var Sidebar = React94.forwardRef(
|
|
|
36824
37144
|
"data-variant": variant,
|
|
36825
37145
|
"data-side": side,
|
|
36826
37146
|
children: [
|
|
36827
|
-
/* @__PURE__ */
|
|
37147
|
+
/* @__PURE__ */ jsx128(
|
|
36828
37148
|
"div",
|
|
36829
37149
|
{
|
|
36830
37150
|
className: cn(
|
|
@@ -36835,7 +37155,7 @@ var Sidebar = React94.forwardRef(
|
|
|
36835
37155
|
)
|
|
36836
37156
|
}
|
|
36837
37157
|
),
|
|
36838
|
-
/* @__PURE__ */
|
|
37158
|
+
/* @__PURE__ */ jsx128(
|
|
36839
37159
|
"div",
|
|
36840
37160
|
{
|
|
36841
37161
|
className: cn(
|
|
@@ -36846,7 +37166,7 @@ var Sidebar = React94.forwardRef(
|
|
|
36846
37166
|
className
|
|
36847
37167
|
),
|
|
36848
37168
|
...props,
|
|
36849
|
-
children: /* @__PURE__ */
|
|
37169
|
+
children: /* @__PURE__ */ jsx128(
|
|
36850
37170
|
"div",
|
|
36851
37171
|
{
|
|
36852
37172
|
"data-sidebar": "sidebar",
|
|
@@ -36862,9 +37182,9 @@ var Sidebar = React94.forwardRef(
|
|
|
36862
37182
|
}
|
|
36863
37183
|
);
|
|
36864
37184
|
Sidebar.displayName = "Sidebar";
|
|
36865
|
-
var SidebarTrigger =
|
|
37185
|
+
var SidebarTrigger = React96.forwardRef(({ className, onClick, ...props }, ref) => {
|
|
36866
37186
|
const { toggleSidebar } = useSidebar();
|
|
36867
|
-
return /* @__PURE__ */
|
|
37187
|
+
return /* @__PURE__ */ jsxs82(
|
|
36868
37188
|
Button,
|
|
36869
37189
|
{
|
|
36870
37190
|
ref,
|
|
@@ -36878,16 +37198,16 @@ var SidebarTrigger = React94.forwardRef(({ className, onClick, ...props }, ref)
|
|
|
36878
37198
|
},
|
|
36879
37199
|
...props,
|
|
36880
37200
|
children: [
|
|
36881
|
-
/* @__PURE__ */
|
|
36882
|
-
/* @__PURE__ */
|
|
37201
|
+
/* @__PURE__ */ jsx128(PanelLeft, {}),
|
|
37202
|
+
/* @__PURE__ */ jsx128("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
36883
37203
|
]
|
|
36884
37204
|
}
|
|
36885
37205
|
);
|
|
36886
37206
|
});
|
|
36887
37207
|
SidebarTrigger.displayName = "SidebarTrigger";
|
|
36888
|
-
var SidebarRail =
|
|
37208
|
+
var SidebarRail = React96.forwardRef(({ className, ...props }, ref) => {
|
|
36889
37209
|
const { toggleSidebar } = useSidebar();
|
|
36890
|
-
return /* @__PURE__ */
|
|
37210
|
+
return /* @__PURE__ */ jsx128(
|
|
36891
37211
|
"button",
|
|
36892
37212
|
{
|
|
36893
37213
|
ref,
|
|
@@ -36910,8 +37230,8 @@ var SidebarRail = React94.forwardRef(({ className, ...props }, ref) => {
|
|
|
36910
37230
|
);
|
|
36911
37231
|
});
|
|
36912
37232
|
SidebarRail.displayName = "SidebarRail";
|
|
36913
|
-
var SidebarInset =
|
|
36914
|
-
return /* @__PURE__ */
|
|
37233
|
+
var SidebarInset = React96.forwardRef(({ className, ...props }, ref) => {
|
|
37234
|
+
return /* @__PURE__ */ jsx128(
|
|
36915
37235
|
"main",
|
|
36916
37236
|
{
|
|
36917
37237
|
ref,
|
|
@@ -36925,8 +37245,8 @@ var SidebarInset = React94.forwardRef(({ className, ...props }, ref) => {
|
|
|
36925
37245
|
);
|
|
36926
37246
|
});
|
|
36927
37247
|
SidebarInset.displayName = "SidebarInset";
|
|
36928
|
-
var SidebarInput =
|
|
36929
|
-
return /* @__PURE__ */
|
|
37248
|
+
var SidebarInput = React96.forwardRef(({ className, ...props }, ref) => {
|
|
37249
|
+
return /* @__PURE__ */ jsx128(
|
|
36930
37250
|
Input,
|
|
36931
37251
|
{
|
|
36932
37252
|
ref,
|
|
@@ -36940,8 +37260,8 @@ var SidebarInput = React94.forwardRef(({ className, ...props }, ref) => {
|
|
|
36940
37260
|
);
|
|
36941
37261
|
});
|
|
36942
37262
|
SidebarInput.displayName = "SidebarInput";
|
|
36943
|
-
var SidebarHeader =
|
|
36944
|
-
return /* @__PURE__ */
|
|
37263
|
+
var SidebarHeader = React96.forwardRef(({ className, ...props }, ref) => {
|
|
37264
|
+
return /* @__PURE__ */ jsx128(
|
|
36945
37265
|
"div",
|
|
36946
37266
|
{
|
|
36947
37267
|
ref,
|
|
@@ -36952,8 +37272,8 @@ var SidebarHeader = React94.forwardRef(({ className, ...props }, ref) => {
|
|
|
36952
37272
|
);
|
|
36953
37273
|
});
|
|
36954
37274
|
SidebarHeader.displayName = "SidebarHeader";
|
|
36955
|
-
var SidebarFooter =
|
|
36956
|
-
return /* @__PURE__ */
|
|
37275
|
+
var SidebarFooter = React96.forwardRef(({ className, ...props }, ref) => {
|
|
37276
|
+
return /* @__PURE__ */ jsx128(
|
|
36957
37277
|
"div",
|
|
36958
37278
|
{
|
|
36959
37279
|
ref,
|
|
@@ -36964,8 +37284,8 @@ var SidebarFooter = React94.forwardRef(({ className, ...props }, ref) => {
|
|
|
36964
37284
|
);
|
|
36965
37285
|
});
|
|
36966
37286
|
SidebarFooter.displayName = "SidebarFooter";
|
|
36967
|
-
var SidebarSeparator =
|
|
36968
|
-
return /* @__PURE__ */
|
|
37287
|
+
var SidebarSeparator = React96.forwardRef(({ className, ...props }, ref) => {
|
|
37288
|
+
return /* @__PURE__ */ jsx128(
|
|
36969
37289
|
Separator2,
|
|
36970
37290
|
{
|
|
36971
37291
|
ref,
|
|
@@ -36976,8 +37296,8 @@ var SidebarSeparator = React94.forwardRef(({ className, ...props }, ref) => {
|
|
|
36976
37296
|
);
|
|
36977
37297
|
});
|
|
36978
37298
|
SidebarSeparator.displayName = "SidebarSeparator";
|
|
36979
|
-
var SidebarContent =
|
|
36980
|
-
return /* @__PURE__ */
|
|
37299
|
+
var SidebarContent = React96.forwardRef(({ className, ...props }, ref) => {
|
|
37300
|
+
return /* @__PURE__ */ jsx128(
|
|
36981
37301
|
"div",
|
|
36982
37302
|
{
|
|
36983
37303
|
ref,
|
|
@@ -36991,8 +37311,8 @@ var SidebarContent = React94.forwardRef(({ className, ...props }, ref) => {
|
|
|
36991
37311
|
);
|
|
36992
37312
|
});
|
|
36993
37313
|
SidebarContent.displayName = "SidebarContent";
|
|
36994
|
-
var SidebarGroup =
|
|
36995
|
-
return /* @__PURE__ */
|
|
37314
|
+
var SidebarGroup = React96.forwardRef(({ className, ...props }, ref) => {
|
|
37315
|
+
return /* @__PURE__ */ jsx128(
|
|
36996
37316
|
"div",
|
|
36997
37317
|
{
|
|
36998
37318
|
ref,
|
|
@@ -37003,9 +37323,9 @@ var SidebarGroup = React94.forwardRef(({ className, ...props }, ref) => {
|
|
|
37003
37323
|
);
|
|
37004
37324
|
});
|
|
37005
37325
|
SidebarGroup.displayName = "SidebarGroup";
|
|
37006
|
-
var SidebarGroupLabel =
|
|
37326
|
+
var SidebarGroupLabel = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
|
|
37007
37327
|
const Comp = asChild ? Slot6 : "div";
|
|
37008
|
-
return /* @__PURE__ */
|
|
37328
|
+
return /* @__PURE__ */ jsx128(
|
|
37009
37329
|
Comp,
|
|
37010
37330
|
{
|
|
37011
37331
|
ref,
|
|
@@ -37020,9 +37340,9 @@ var SidebarGroupLabel = React94.forwardRef(({ className, asChild = false, ...pro
|
|
|
37020
37340
|
);
|
|
37021
37341
|
});
|
|
37022
37342
|
SidebarGroupLabel.displayName = "SidebarGroupLabel";
|
|
37023
|
-
var SidebarGroupAction =
|
|
37343
|
+
var SidebarGroupAction = React96.forwardRef(({ className, asChild = false, ...props }, ref) => {
|
|
37024
37344
|
const Comp = asChild ? Slot6 : "button";
|
|
37025
|
-
return /* @__PURE__ */
|
|
37345
|
+
return /* @__PURE__ */ jsx128(
|
|
37026
37346
|
Comp,
|
|
37027
37347
|
{
|
|
37028
37348
|
ref,
|
|
@@ -37039,7 +37359,7 @@ var SidebarGroupAction = React94.forwardRef(({ className, asChild = false, ...pr
|
|
|
37039
37359
|
);
|
|
37040
37360
|
});
|
|
37041
37361
|
SidebarGroupAction.displayName = "SidebarGroupAction";
|
|
37042
|
-
var SidebarGroupContent =
|
|
37362
|
+
var SidebarGroupContent = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
|
|
37043
37363
|
"div",
|
|
37044
37364
|
{
|
|
37045
37365
|
ref,
|
|
@@ -37049,7 +37369,7 @@ var SidebarGroupContent = React94.forwardRef(({ className, ...props }, ref) => /
|
|
|
37049
37369
|
}
|
|
37050
37370
|
));
|
|
37051
37371
|
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
37052
|
-
var SidebarMenu =
|
|
37372
|
+
var SidebarMenu = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
|
|
37053
37373
|
"ul",
|
|
37054
37374
|
{
|
|
37055
37375
|
ref,
|
|
@@ -37059,7 +37379,7 @@ var SidebarMenu = React94.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
37059
37379
|
}
|
|
37060
37380
|
));
|
|
37061
37381
|
SidebarMenu.displayName = "SidebarMenu";
|
|
37062
|
-
var SidebarMenuItem =
|
|
37382
|
+
var SidebarMenuItem = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
|
|
37063
37383
|
"li",
|
|
37064
37384
|
{
|
|
37065
37385
|
ref,
|
|
@@ -37089,7 +37409,7 @@ var sidebarMenuButtonVariants = cva13(
|
|
|
37089
37409
|
}
|
|
37090
37410
|
}
|
|
37091
37411
|
);
|
|
37092
|
-
var SidebarMenuButton =
|
|
37412
|
+
var SidebarMenuButton = React96.forwardRef(
|
|
37093
37413
|
({
|
|
37094
37414
|
asChild = false,
|
|
37095
37415
|
isActive = false,
|
|
@@ -37101,7 +37421,7 @@ var SidebarMenuButton = React94.forwardRef(
|
|
|
37101
37421
|
}, ref) => {
|
|
37102
37422
|
const Comp = asChild ? Slot6 : "button";
|
|
37103
37423
|
const { isMobile, state } = useSidebar();
|
|
37104
|
-
const button = /* @__PURE__ */
|
|
37424
|
+
const button = /* @__PURE__ */ jsx128(
|
|
37105
37425
|
Comp,
|
|
37106
37426
|
{
|
|
37107
37427
|
ref,
|
|
@@ -37120,9 +37440,9 @@ var SidebarMenuButton = React94.forwardRef(
|
|
|
37120
37440
|
children: tooltip
|
|
37121
37441
|
};
|
|
37122
37442
|
}
|
|
37123
|
-
return /* @__PURE__ */
|
|
37124
|
-
/* @__PURE__ */
|
|
37125
|
-
/* @__PURE__ */
|
|
37443
|
+
return /* @__PURE__ */ jsxs82(Tooltip, { children: [
|
|
37444
|
+
/* @__PURE__ */ jsx128(TooltipTrigger, { asChild: true, children: button }),
|
|
37445
|
+
/* @__PURE__ */ jsx128(
|
|
37126
37446
|
TooltipContent,
|
|
37127
37447
|
{
|
|
37128
37448
|
side: "right",
|
|
@@ -37135,9 +37455,9 @@ var SidebarMenuButton = React94.forwardRef(
|
|
|
37135
37455
|
}
|
|
37136
37456
|
);
|
|
37137
37457
|
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
37138
|
-
var SidebarMenuAction =
|
|
37458
|
+
var SidebarMenuAction = React96.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
|
|
37139
37459
|
const Comp = asChild ? Slot6 : "button";
|
|
37140
|
-
return /* @__PURE__ */
|
|
37460
|
+
return /* @__PURE__ */ jsx128(
|
|
37141
37461
|
Comp,
|
|
37142
37462
|
{
|
|
37143
37463
|
ref,
|
|
@@ -37158,7 +37478,7 @@ var SidebarMenuAction = React94.forwardRef(({ className, asChild = false, showOn
|
|
|
37158
37478
|
);
|
|
37159
37479
|
});
|
|
37160
37480
|
SidebarMenuAction.displayName = "SidebarMenuAction";
|
|
37161
|
-
var SidebarMenuBadge =
|
|
37481
|
+
var SidebarMenuBadge = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
|
|
37162
37482
|
"div",
|
|
37163
37483
|
{
|
|
37164
37484
|
ref,
|
|
@@ -37176,11 +37496,11 @@ var SidebarMenuBadge = React94.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
37176
37496
|
}
|
|
37177
37497
|
));
|
|
37178
37498
|
SidebarMenuBadge.displayName = "SidebarMenuBadge";
|
|
37179
|
-
var SidebarMenuSkeleton =
|
|
37180
|
-
const width =
|
|
37499
|
+
var SidebarMenuSkeleton = React96.forwardRef(({ className, showIcon = false, ...props }, ref) => {
|
|
37500
|
+
const width = React96.useMemo(() => {
|
|
37181
37501
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
37182
37502
|
}, []);
|
|
37183
|
-
return /* @__PURE__ */
|
|
37503
|
+
return /* @__PURE__ */ jsxs82(
|
|
37184
37504
|
"div",
|
|
37185
37505
|
{
|
|
37186
37506
|
ref,
|
|
@@ -37188,14 +37508,14 @@ var SidebarMenuSkeleton = React94.forwardRef(({ className, showIcon = false, ...
|
|
|
37188
37508
|
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
37189
37509
|
...props,
|
|
37190
37510
|
children: [
|
|
37191
|
-
showIcon && /* @__PURE__ */
|
|
37511
|
+
showIcon && /* @__PURE__ */ jsx128(
|
|
37192
37512
|
Skeleton,
|
|
37193
37513
|
{
|
|
37194
37514
|
className: "size-4 rounded-md",
|
|
37195
37515
|
"data-sidebar": "menu-skeleton-icon"
|
|
37196
37516
|
}
|
|
37197
37517
|
),
|
|
37198
|
-
/* @__PURE__ */
|
|
37518
|
+
/* @__PURE__ */ jsx128(
|
|
37199
37519
|
Skeleton,
|
|
37200
37520
|
{
|
|
37201
37521
|
className: "h-4 max-w-[--skeleton-width] flex-1",
|
|
@@ -37210,7 +37530,7 @@ var SidebarMenuSkeleton = React94.forwardRef(({ className, showIcon = false, ...
|
|
|
37210
37530
|
);
|
|
37211
37531
|
});
|
|
37212
37532
|
SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
|
|
37213
|
-
var SidebarMenuSub =
|
|
37533
|
+
var SidebarMenuSub = React96.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx128(
|
|
37214
37534
|
"ul",
|
|
37215
37535
|
{
|
|
37216
37536
|
ref,
|
|
@@ -37224,11 +37544,11 @@ var SidebarMenuSub = React94.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
37224
37544
|
}
|
|
37225
37545
|
));
|
|
37226
37546
|
SidebarMenuSub.displayName = "SidebarMenuSub";
|
|
37227
|
-
var SidebarMenuSubItem =
|
|
37547
|
+
var SidebarMenuSubItem = React96.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx128("li", { ref, ...props }));
|
|
37228
37548
|
SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
|
|
37229
|
-
var SidebarMenuSubButton =
|
|
37549
|
+
var SidebarMenuSubButton = React96.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
|
|
37230
37550
|
const Comp = asChild ? Slot6 : "a";
|
|
37231
|
-
return /* @__PURE__ */
|
|
37551
|
+
return /* @__PURE__ */ jsx128(
|
|
37232
37552
|
Comp,
|
|
37233
37553
|
{
|
|
37234
37554
|
ref,
|
|
@@ -37252,20 +37572,20 @@ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
|
|
|
37252
37572
|
// src/components/ui/sonner.tsx
|
|
37253
37573
|
import { useTheme } from "next-themes";
|
|
37254
37574
|
import { Toaster as Sonner } from "sonner";
|
|
37255
|
-
import { jsx as
|
|
37575
|
+
import { jsx as jsx129 } from "react/jsx-runtime";
|
|
37256
37576
|
var Toaster = ({ ...props }) => {
|
|
37257
37577
|
const { theme = "system" } = useTheme();
|
|
37258
|
-
return /* @__PURE__ */
|
|
37578
|
+
return /* @__PURE__ */ jsx129(
|
|
37259
37579
|
Sonner,
|
|
37260
37580
|
{
|
|
37261
37581
|
theme,
|
|
37262
37582
|
className: "toaster group",
|
|
37263
37583
|
icons: {
|
|
37264
|
-
success: /* @__PURE__ */
|
|
37265
|
-
info: /* @__PURE__ */
|
|
37266
|
-
warning: /* @__PURE__ */
|
|
37267
|
-
error: /* @__PURE__ */
|
|
37268
|
-
loading: /* @__PURE__ */
|
|
37584
|
+
success: /* @__PURE__ */ jsx129(CircleCheck, { className: "h-4 w-4" }),
|
|
37585
|
+
info: /* @__PURE__ */ jsx129(Info, { className: "h-4 w-4" }),
|
|
37586
|
+
warning: /* @__PURE__ */ jsx129(TriangleAlert, { className: "h-4 w-4" }),
|
|
37587
|
+
error: /* @__PURE__ */ jsx129(OctagonX, { className: "h-4 w-4" }),
|
|
37588
|
+
loading: /* @__PURE__ */ jsx129(LoaderCircle, { className: "h-4 w-4 animate-spin" })
|
|
37269
37589
|
},
|
|
37270
37590
|
toastOptions: {
|
|
37271
37591
|
classNames: {
|
|
@@ -37281,26 +37601,26 @@ var Toaster = ({ ...props }) => {
|
|
|
37281
37601
|
};
|
|
37282
37602
|
|
|
37283
37603
|
// src/components/ui/toggle-group.tsx
|
|
37284
|
-
import * as
|
|
37604
|
+
import * as React97 from "react";
|
|
37285
37605
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
37286
|
-
import { jsx as
|
|
37287
|
-
var ToggleGroupContext =
|
|
37606
|
+
import { jsx as jsx130 } from "react/jsx-runtime";
|
|
37607
|
+
var ToggleGroupContext = React97.createContext({
|
|
37288
37608
|
size: "default",
|
|
37289
37609
|
variant: "default"
|
|
37290
37610
|
});
|
|
37291
|
-
var ToggleGroup =
|
|
37611
|
+
var ToggleGroup = React97.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx130(
|
|
37292
37612
|
ToggleGroupPrimitive.Root,
|
|
37293
37613
|
{
|
|
37294
37614
|
ref,
|
|
37295
37615
|
className: cn("flex items-center justify-center gap-1", className),
|
|
37296
37616
|
...props,
|
|
37297
|
-
children: /* @__PURE__ */
|
|
37617
|
+
children: /* @__PURE__ */ jsx130(ToggleGroupContext.Provider, { value: { variant, size }, children })
|
|
37298
37618
|
}
|
|
37299
37619
|
));
|
|
37300
37620
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
37301
|
-
var ToggleGroupItem =
|
|
37302
|
-
const context =
|
|
37303
|
-
return /* @__PURE__ */
|
|
37621
|
+
var ToggleGroupItem = React97.forwardRef(({ className, children, variant, size, ...props }, ref) => {
|
|
37622
|
+
const context = React97.useContext(ToggleGroupContext);
|
|
37623
|
+
return /* @__PURE__ */ jsx130(
|
|
37304
37624
|
ToggleGroupPrimitive.Item,
|
|
37305
37625
|
{
|
|
37306
37626
|
ref,
|
|
@@ -37319,7 +37639,7 @@ var ToggleGroupItem = React95.forwardRef(({ className, children, variant, size,
|
|
|
37319
37639
|
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
37320
37640
|
|
|
37321
37641
|
// src/render/PXEngineRenderer.tsx
|
|
37322
|
-
import { jsx as
|
|
37642
|
+
import { jsx as jsx131, jsxs as jsxs83 } from "react/jsx-runtime";
|
|
37323
37643
|
var CONTEXT_DEPENDENT_COMPONENTS = /* @__PURE__ */ new Set([
|
|
37324
37644
|
// Form components - require FormField + FormItem context
|
|
37325
37645
|
"FormLabel",
|
|
@@ -37411,24 +37731,24 @@ var COMPONENT_SUGGESTIONS = {
|
|
|
37411
37731
|
};
|
|
37412
37732
|
var renderContextDependentError = (componentName, normalizedName, key) => {
|
|
37413
37733
|
const suggestion = COMPONENT_SUGGESTIONS[normalizedName] || `${componentName}Atom (if available)`;
|
|
37414
|
-
return /* @__PURE__ */
|
|
37734
|
+
return /* @__PURE__ */ jsxs83(
|
|
37415
37735
|
"div",
|
|
37416
37736
|
{
|
|
37417
37737
|
className: "p-4 border-2 border-amber-500/50 rounded-lg bg-amber-50/80 space-y-2 my-2",
|
|
37418
37738
|
children: [
|
|
37419
|
-
/* @__PURE__ */
|
|
37420
|
-
/* @__PURE__ */
|
|
37421
|
-
/* @__PURE__ */
|
|
37422
|
-
/* @__PURE__ */
|
|
37739
|
+
/* @__PURE__ */ jsxs83("div", { className: "flex items-start gap-2", children: [
|
|
37740
|
+
/* @__PURE__ */ jsx131("span", { className: "text-amber-600 font-bold text-lg", children: "\u26A0\uFE0F" }),
|
|
37741
|
+
/* @__PURE__ */ jsxs83("div", { className: "flex-1", children: [
|
|
37742
|
+
/* @__PURE__ */ jsxs83("p", { className: "text-sm font-semibold text-amber-900", children: [
|
|
37423
37743
|
"Invalid Component: ",
|
|
37424
37744
|
componentName
|
|
37425
37745
|
] }),
|
|
37426
|
-
/* @__PURE__ */
|
|
37746
|
+
/* @__PURE__ */ jsx131("p", { className: "text-xs text-amber-700 mt-1", children: "This component requires React Context and cannot be rendered directly in schemas." })
|
|
37427
37747
|
] })
|
|
37428
37748
|
] }),
|
|
37429
|
-
/* @__PURE__ */
|
|
37430
|
-
/* @__PURE__ */
|
|
37431
|
-
/* @__PURE__ */
|
|
37749
|
+
/* @__PURE__ */ jsxs83("div", { className: "bg-white/60 p-3 rounded border border-amber-200", children: [
|
|
37750
|
+
/* @__PURE__ */ jsx131("p", { className: "text-xs font-semibold text-gray-700 mb-1.5", children: "\u2713 Use instead:" }),
|
|
37751
|
+
/* @__PURE__ */ jsx131("code", { className: "text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded", children: suggestion })
|
|
37432
37752
|
] })
|
|
37433
37753
|
]
|
|
37434
37754
|
},
|
|
@@ -37499,7 +37819,8 @@ var normalizeProps = (props) => {
|
|
|
37499
37819
|
};
|
|
37500
37820
|
var PXEngineRenderer = ({
|
|
37501
37821
|
schema,
|
|
37502
|
-
onAction
|
|
37822
|
+
onAction,
|
|
37823
|
+
disabled
|
|
37503
37824
|
}) => {
|
|
37504
37825
|
if (!schema) return null;
|
|
37505
37826
|
const root = schema.root || schema;
|
|
@@ -37507,7 +37828,7 @@ var PXEngineRenderer = ({
|
|
|
37507
37828
|
if (typeof component === "string" || typeof component === "number") {
|
|
37508
37829
|
return component;
|
|
37509
37830
|
}
|
|
37510
|
-
if (
|
|
37831
|
+
if (React98.isValidElement(component)) {
|
|
37511
37832
|
return component;
|
|
37512
37833
|
}
|
|
37513
37834
|
if (!component || typeof component !== "object") return null;
|
|
@@ -37523,6 +37844,9 @@ var PXEngineRenderer = ({
|
|
|
37523
37844
|
const componentName = name || type || componentType;
|
|
37524
37845
|
if (!componentName || typeof componentName !== "string") return null;
|
|
37525
37846
|
const rawProps = { ...remainingProps, ...props };
|
|
37847
|
+
if (disabled !== void 0 && rawProps.disabled === void 0) {
|
|
37848
|
+
rawProps.disabled = disabled;
|
|
37849
|
+
}
|
|
37526
37850
|
const { normalized: finalProps, dynamicStyle } = normalizeProps(rawProps);
|
|
37527
37851
|
if (id && !finalProps.id) {
|
|
37528
37852
|
finalProps.id = id;
|
|
@@ -37582,7 +37906,7 @@ var PXEngineRenderer = ({
|
|
|
37582
37906
|
const isAtomWithRenderProp = ATOMS_WITH_RENDER.has(atomName);
|
|
37583
37907
|
const finalStyle = { ...dynamicStyle, ...finalProps.style || {} };
|
|
37584
37908
|
if (isAtomWithRenderProp) {
|
|
37585
|
-
return /* @__PURE__ */
|
|
37909
|
+
return /* @__PURE__ */ jsx131(
|
|
37586
37910
|
TargetComponent,
|
|
37587
37911
|
{
|
|
37588
37912
|
...finalProps,
|
|
@@ -37594,7 +37918,7 @@ var PXEngineRenderer = ({
|
|
|
37594
37918
|
uniqueKey
|
|
37595
37919
|
);
|
|
37596
37920
|
} else {
|
|
37597
|
-
return /* @__PURE__ */
|
|
37921
|
+
return /* @__PURE__ */ jsx131(
|
|
37598
37922
|
TargetComponent,
|
|
37599
37923
|
{
|
|
37600
37924
|
...finalProps,
|
|
@@ -37606,7 +37930,7 @@ var PXEngineRenderer = ({
|
|
|
37606
37930
|
);
|
|
37607
37931
|
}
|
|
37608
37932
|
};
|
|
37609
|
-
return /* @__PURE__ */
|
|
37933
|
+
return /* @__PURE__ */ jsx131("div", { className: "px-engine-root relative w-full h-full", children: renderRecursive(root) });
|
|
37610
37934
|
};
|
|
37611
37935
|
export {
|
|
37612
37936
|
Accordion,
|
|
@@ -37652,6 +37976,7 @@ export {
|
|
|
37652
37976
|
ButtonAtom,
|
|
37653
37977
|
Calendar2 as Calendar,
|
|
37654
37978
|
CalendarAtom,
|
|
37979
|
+
CampaignConceptCard,
|
|
37655
37980
|
CampaignSeedCard,
|
|
37656
37981
|
Card,
|
|
37657
37982
|
CardAtom,
|
|
@@ -37699,6 +38024,7 @@ export {
|
|
|
37699
38024
|
CreatorActionHeader,
|
|
37700
38025
|
CreatorGridCard,
|
|
37701
38026
|
CreatorProfileSummary,
|
|
38027
|
+
CreatorSearch,
|
|
37702
38028
|
DataGrid,
|
|
37703
38029
|
Dialog,
|
|
37704
38030
|
DialogAtom,
|