pxengine 0.1.101 → 0.1.103
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 +319 -246
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -3
- package/dist/index.d.ts +12 -3
- package/dist/index.mjs +319 -246
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -25042,7 +25042,7 @@ var LayoutAtom = ({
|
|
|
25042
25042
|
gapMap[gap],
|
|
25043
25043
|
className
|
|
25044
25044
|
);
|
|
25045
|
-
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: classes, children: children.map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react3.default.Fragment, { children: renderComponent(child, index) }, child.id || `layout-item-${index}`)) });
|
|
25045
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: classes, children: (Array.isArray(children) ? children : []).map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react3.default.Fragment, { children: renderComponent(child, index) }, child.id || `layout-item-${index}`)) });
|
|
25046
25046
|
};
|
|
25047
25047
|
|
|
25048
25048
|
// src/atoms/CardAtom.tsx
|
|
@@ -25139,8 +25139,8 @@ var CardAtom = ({
|
|
|
25139
25139
|
title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-xl font-bold text-gray900", children: title }),
|
|
25140
25140
|
description && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardDescription, { children: description })
|
|
25141
25141
|
] }),
|
|
25142
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardContent, { className: "space-y-4", children: (children
|
|
25143
|
-
footer && footer.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardFooter, { className: "bg-gray50/50 border-t border-gray200 flex flex-wrap gap-2 pt-6", children: footer.map((footerChild, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react4.default.Fragment, { children: renderComponent(footerChild, index) }, footerChild.id || `card-footer-${index}`)) })
|
|
25142
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardContent, { className: "space-y-4", children: (Array.isArray(children) ? children : []).map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react4.default.Fragment, { children: renderComponent(child, index) }, child.id || `card-content-${index}`)) }),
|
|
25143
|
+
Array.isArray(footer) && footer.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardFooter, { className: "bg-gray50/50 border-t border-gray200 flex flex-wrap gap-2 pt-6", children: footer.map((footerChild, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react4.default.Fragment, { children: renderComponent(footerChild, index) }, footerChild.id || `card-footer-${index}`)) })
|
|
25144
25144
|
]
|
|
25145
25145
|
}
|
|
25146
25146
|
);
|
|
@@ -25577,7 +25577,7 @@ var InputAtom = ({
|
|
|
25577
25577
|
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectValue, { placeholder: placeholder || "Select option" })
|
|
25578
25578
|
}
|
|
25579
25579
|
),
|
|
25580
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectContent, { className: "rounded-xl border-border shadow-xl", children: options
|
|
25580
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectContent, { className: "rounded-xl border-border shadow-xl", children: (Array.isArray(options) ? options : []).map((opt) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
25581
25581
|
]
|
|
25582
25582
|
}
|
|
25583
25583
|
);
|
|
@@ -25647,7 +25647,7 @@ var InputAtom = ({
|
|
|
25647
25647
|
className: cn("gap-2.5 bg-transparent", className),
|
|
25648
25648
|
style: remainingStyle,
|
|
25649
25649
|
onValueChange: isInteractive ? (val) => handleChange(val) : void 0,
|
|
25650
|
-
children: options
|
|
25650
|
+
children: (Array.isArray(options) ? options : []).map((opt) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex items-center space-x-3 bg-transparent", children: [
|
|
25651
25651
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
25652
25652
|
RadioGroupItem,
|
|
25653
25653
|
{
|
|
@@ -25885,8 +25885,9 @@ var TabsAtom = ({
|
|
|
25885
25885
|
className,
|
|
25886
25886
|
renderComponent
|
|
25887
25887
|
}) => {
|
|
25888
|
+
const safeTabs = Array.isArray(tabs) ? tabs : [];
|
|
25888
25889
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Tabs, { defaultValue, className: cn("w-full", className), children: [
|
|
25889
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(TabsList, { className: "bg-gray-100/50 p-1 rounded-xl", children:
|
|
25890
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(TabsList, { className: "bg-gray-100/50 p-1 rounded-xl", children: safeTabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
25890
25891
|
TabsTrigger,
|
|
25891
25892
|
{
|
|
25892
25893
|
value: tab.value,
|
|
@@ -25895,7 +25896,7 @@ var TabsAtom = ({
|
|
|
25895
25896
|
},
|
|
25896
25897
|
tab.value
|
|
25897
25898
|
)) }),
|
|
25898
|
-
|
|
25899
|
+
safeTabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(TabsContent, { value: tab.value, className: "mt-4", children: (Array.isArray(tab.content) ? tab.content : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react6.default.Fragment, { children: renderComponent(child) }, child.id)) }, tab.value))
|
|
25899
25900
|
] });
|
|
25900
25901
|
};
|
|
25901
25902
|
|
|
@@ -25950,14 +25951,15 @@ var AccordionAtom = ({
|
|
|
25950
25951
|
className,
|
|
25951
25952
|
renderComponent
|
|
25952
25953
|
}) => {
|
|
25953
|
-
|
|
25954
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
25955
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Accordion, { type: "single", collapsible: true, className: cn("w-full", className), children: safeItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
25954
25956
|
AccordionItem,
|
|
25955
25957
|
{
|
|
25956
25958
|
value: item.value,
|
|
25957
25959
|
className: "border-gray-100",
|
|
25958
25960
|
children: [
|
|
25959
25961
|
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(AccordionTrigger, { className: "text-sm font-semibold hover:no-underline hover:text-purple600 py-4", children: item.trigger }),
|
|
25960
|
-
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(AccordionContent, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "pt-2 pb-4", children: item.content.map((child) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react7.default.Fragment, { children: renderComponent(child) }, child.id)) }) })
|
|
25962
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(AccordionContent, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "pt-2 pb-4", children: (Array.isArray(item.content) ? item.content : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react7.default.Fragment, { children: renderComponent(child) }, child.id)) }) })
|
|
25961
25963
|
]
|
|
25962
25964
|
},
|
|
25963
25965
|
item.value
|
|
@@ -26392,7 +26394,7 @@ var ScrollAreaAtom = ({
|
|
|
26392
26394
|
className: cn("rounded-xl border", className),
|
|
26393
26395
|
style: { height: maxHeight },
|
|
26394
26396
|
children: [
|
|
26395
|
-
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "p-4", children: children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react8.default.Fragment, { children: renderComponent(child) }, child.id)) }),
|
|
26397
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "p-4", children: (Array.isArray(children) ? children : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react8.default.Fragment, { children: renderComponent(child) }, child.id)) }),
|
|
26396
26398
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ScrollBar, { orientation: "vertical" })
|
|
26397
26399
|
]
|
|
26398
26400
|
}
|
|
@@ -26595,8 +26597,9 @@ var CarouselAtom = ({
|
|
|
26595
26597
|
className,
|
|
26596
26598
|
renderComponent
|
|
26597
26599
|
}) => {
|
|
26600
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
26598
26601
|
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(Carousel, { className: cn("w-full max-w-xs mx-auto", className), children: [
|
|
26599
|
-
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(CarouselContent, { children:
|
|
26602
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(CarouselContent, { children: safeItems.map((slide, index) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(CarouselItem, { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "p-1", children: (Array.isArray(slide) ? slide : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react9.default.Fragment, { children: renderComponent(child) }, child.id)) }) }, index)) }),
|
|
26600
26603
|
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(CarouselPrevious, {}),
|
|
26601
26604
|
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(CarouselNext, {})
|
|
26602
26605
|
] });
|
|
@@ -26617,7 +26620,7 @@ var AspectRatioAtom = ({
|
|
|
26617
26620
|
className,
|
|
26618
26621
|
renderComponent
|
|
26619
26622
|
}) => {
|
|
26620
|
-
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: cn("w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(AspectRatio, { ratio, children: children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_react10.default.Fragment, { children: renderComponent(child) }, child.id)) }) });
|
|
26623
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: cn("w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(AspectRatio, { ratio, children: (Array.isArray(children) ? children : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_react10.default.Fragment, { children: renderComponent(child) }, child.id)) }) });
|
|
26621
26624
|
};
|
|
26622
26625
|
|
|
26623
26626
|
// src/atoms/CollapsibleAtom.tsx
|
|
@@ -26644,8 +26647,8 @@ var CollapsibleAtom = ({
|
|
|
26644
26647
|
defaultOpen,
|
|
26645
26648
|
className: cn("w-full space-y-2", className),
|
|
26646
26649
|
children: [
|
|
26647
|
-
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CollapsibleTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "flex items-center justify-between space-x-4 px-4 py-2 bg-gray-50 rounded-lg cursor-pointer hover:bg-gray-100 transition-colors", children: trigger.map((child) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_react11.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26648
|
-
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CollapsibleContent2, { className: "space-y-2", children: content.map((child) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_react11.default.Fragment, { children: renderComponent(child) }, child.id)) })
|
|
26650
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CollapsibleTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "flex items-center justify-between space-x-4 px-4 py-2 bg-gray-50 rounded-lg cursor-pointer hover:bg-gray-100 transition-colors", children: (Array.isArray(trigger) ? trigger : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_react11.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26651
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(CollapsibleContent2, { className: "space-y-2", children: (Array.isArray(content) ? content : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_react11.default.Fragment, { children: renderComponent(child) }, child.id)) })
|
|
26649
26652
|
]
|
|
26650
26653
|
}
|
|
26651
26654
|
);
|
|
@@ -26684,7 +26687,7 @@ var TooltipAtom = ({
|
|
|
26684
26687
|
renderComponent
|
|
26685
26688
|
}) => {
|
|
26686
26689
|
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Tooltip, { children: [
|
|
26687
|
-
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: cn("inline-block", className), children: children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react12.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26690
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: cn("inline-block", className), children: (Array.isArray(children) ? children : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react12.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26688
26691
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TooltipContent, { className: "bg-gray-900 text-white border-none rounded-lg shadow-xl px-3 py-1.5 text-xs", children: content })
|
|
26689
26692
|
] }) });
|
|
26690
26693
|
};
|
|
@@ -26722,8 +26725,8 @@ var PopoverAtom = ({
|
|
|
26722
26725
|
renderComponent
|
|
26723
26726
|
}) => {
|
|
26724
26727
|
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Popover, { children: [
|
|
26725
|
-
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: cn("inline-block cursor-pointer", className), children: trigger.map((child) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react13.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26726
|
-
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(PopoverContent, { className: "w-80 rounded-2xl shadow-2xl border-gray-100 p-4 bg-white/95 backdrop-blur-sm", children: content.map((child) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react13.default.Fragment, { children: renderComponent(child) }, child.id)) })
|
|
26728
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: cn("inline-block cursor-pointer", className), children: (Array.isArray(trigger) ? trigger : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react13.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26729
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(PopoverContent, { className: "w-80 rounded-2xl shadow-2xl border-gray-100 p-4 bg-white/95 backdrop-blur-sm", children: (Array.isArray(content) ? content : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react13.default.Fragment, { children: renderComponent(child) }, child.id)) })
|
|
26727
26730
|
] });
|
|
26728
26731
|
};
|
|
26729
26732
|
|
|
@@ -26834,14 +26837,14 @@ var DialogAtom = ({
|
|
|
26834
26837
|
renderComponent
|
|
26835
26838
|
}) => {
|
|
26836
26839
|
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Dialog, { children: [
|
|
26837
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DialogTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: cn("inline-block cursor-pointer", className), children: trigger.map((child) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react14.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26840
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DialogTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: cn("inline-block cursor-pointer", className), children: (Array.isArray(trigger) ? trigger : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react14.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26838
26841
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(DialogContent, { className: "sm:max-w-[425px] rounded-3xl p-6 bg-white/95 backdrop-blur-md shadow-3xl border-gray-100", children: [
|
|
26839
26842
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(DialogHeader, { children: [
|
|
26840
26843
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DialogTitle, { className: "text-xl font-bold bg-gradient-to-r from-purple600 to-indigo-600 bg-clip-text text-transparent", children: title }),
|
|
26841
26844
|
description && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DialogDescription, { className: "text-gray-500 font-medium pt-1", children: description })
|
|
26842
26845
|
] }),
|
|
26843
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "py-4", children: children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react14.default.Fragment, { children: renderComponent(child) }, child.id)) }),
|
|
26844
|
-
footer && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DialogFooter, { className: "pt-2", children: footer.map((child) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react14.default.Fragment, { children: renderComponent(child) }, child.id)) })
|
|
26846
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "py-4", children: (Array.isArray(children) ? children : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react14.default.Fragment, { children: renderComponent(child) }, child.id)) }),
|
|
26847
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DialogFooter, { className: "pt-2", children: (Array.isArray(footer) ? footer : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react14.default.Fragment, { children: renderComponent(child) }, child.id)) })
|
|
26845
26848
|
] })
|
|
26846
26849
|
] });
|
|
26847
26850
|
};
|
|
@@ -26965,7 +26968,7 @@ var SheetAtom = ({
|
|
|
26965
26968
|
renderComponent
|
|
26966
26969
|
}) => {
|
|
26967
26970
|
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Sheet2, { children: [
|
|
26968
|
-
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SheetTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: cn("inline-block cursor-pointer", className), children: trigger.map((child) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react15.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26971
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SheetTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: cn("inline-block cursor-pointer", className), children: (Array.isArray(trigger) ? trigger : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react15.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
26969
26972
|
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
26970
26973
|
SheetContent,
|
|
26971
26974
|
{
|
|
@@ -26976,8 +26979,8 @@ var SheetAtom = ({
|
|
|
26976
26979
|
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SheetTitle, { className: "text-xl font-bold text-gray-900", children: title }),
|
|
26977
26980
|
description && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SheetDescription, { className: "text-gray-500 font-medium", children: description })
|
|
26978
26981
|
] }),
|
|
26979
|
-
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "py-8", children: children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react15.default.Fragment, { children: renderComponent(child) }, child.id)) }),
|
|
26980
|
-
footer && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SheetFooter, { className: "absolute bottom-6 left-6 right-6", children: footer.map((child) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react15.default.Fragment, { children: renderComponent(child) }, child.id)) })
|
|
26982
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "py-8", children: (Array.isArray(children) ? children : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react15.default.Fragment, { children: renderComponent(child) }, child.id)) }),
|
|
26983
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SheetFooter, { className: "absolute bottom-6 left-6 right-6", children: (Array.isArray(footer) ? footer : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react15.default.Fragment, { children: renderComponent(child) }, child.id)) })
|
|
26981
26984
|
]
|
|
26982
26985
|
}
|
|
26983
26986
|
)
|
|
@@ -27104,7 +27107,7 @@ var AlertDialogAtom = ({
|
|
|
27104
27107
|
renderComponent
|
|
27105
27108
|
}) => {
|
|
27106
27109
|
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(AlertDialog, { children: [
|
|
27107
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AlertDialogTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: cn("inline-block cursor-pointer", className), children: trigger.map((child) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react16.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
27110
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AlertDialogTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: cn("inline-block cursor-pointer", className), children: (Array.isArray(trigger) ? trigger : []).map((child) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react16.default.Fragment, { children: renderComponent(child) }, child.id)) }) }),
|
|
27108
27111
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(AlertDialogContent, { className: "rounded-3xl p-6 bg-white shadow-3xl border-gray-100", children: [
|
|
27109
27112
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(AlertDialogHeader, { children: [
|
|
27110
27113
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AlertDialogTitle, { className: "text-lg font-bold text-gray-900", children: title }),
|
|
@@ -27218,9 +27221,10 @@ var BreadcrumbAtom = ({
|
|
|
27218
27221
|
items,
|
|
27219
27222
|
className
|
|
27220
27223
|
}) => {
|
|
27221
|
-
|
|
27224
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
27225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Breadcrumb, { className, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(BreadcrumbList, { children: safeItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_react17.default.Fragment, { children: [
|
|
27222
27226
|
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(BreadcrumbItem, { children: item.isCurrent ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(BreadcrumbPage, { children: item.label }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(BreadcrumbLink, { href: item.href || "#", children: item.label }) }),
|
|
27223
|
-
index <
|
|
27227
|
+
index < safeItems.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(BreadcrumbSeparator, {})
|
|
27224
27228
|
] }, index)) }) });
|
|
27225
27229
|
};
|
|
27226
27230
|
|
|
@@ -32180,6 +32184,7 @@ var CommandAtom = ({
|
|
|
32180
32184
|
groups,
|
|
32181
32185
|
className
|
|
32182
32186
|
}) => {
|
|
32187
|
+
const safeGroups = Array.isArray(groups) ? groups : [];
|
|
32183
32188
|
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
32184
32189
|
"div",
|
|
32185
32190
|
{
|
|
@@ -32191,9 +32196,9 @@ var CommandAtom = ({
|
|
|
32191
32196
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(CommandInput, { placeholder }),
|
|
32192
32197
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(CommandList, { children: [
|
|
32193
32198
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(CommandEmpty, { children: "No results found." }),
|
|
32194
|
-
|
|
32195
|
-
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(CommandGroup, { heading: group.heading, children: group.items.map((item, j) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(CommandItem, { value: item.value, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { children: item.label }) }, j)) }),
|
|
32196
|
-
i <
|
|
32199
|
+
safeGroups.map((group, i) => /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react50.default.Fragment, { children: [
|
|
32200
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(CommandGroup, { heading: group.heading, children: (Array.isArray(group.items) ? group.items : []).map((item, j) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(CommandItem, { value: item.value, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { children: item.label }) }, j)) }),
|
|
32201
|
+
i < safeGroups.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(CommandSeparator, {})
|
|
32197
32202
|
] }, i))
|
|
32198
32203
|
] })
|
|
32199
32204
|
] })
|
|
@@ -32377,7 +32382,7 @@ var FormSelectAtom = ({
|
|
|
32377
32382
|
label && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(FormLabel, { children: label }),
|
|
32378
32383
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Select, { onValueChange: field.onChange, defaultValue: field.value, children: [
|
|
32379
32384
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(FormControl, { children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(SelectTrigger, { id: id || `form-select-${fieldName}`, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(SelectValue, { placeholder }) }) }),
|
|
32380
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(SelectContent, { children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(SelectItem, { value: option.value, children: option.label }, option.value)) })
|
|
32385
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(SelectContent, { children: (Array.isArray(options) ? options : []).map((option) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(SelectItem, { value: option.value, children: option.label }, option.value)) })
|
|
32381
32386
|
] }),
|
|
32382
32387
|
description && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(FormDescription, { children: description }),
|
|
32383
32388
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(FormMessage, {})
|
|
@@ -32672,6 +32677,7 @@ var SliderAtom = ({
|
|
|
32672
32677
|
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
32673
32678
|
var RadioGroupAtom = ({ id, label, options, defaultValue, disabled, className, style, onValueChange }) => {
|
|
32674
32679
|
const hasPxVars = style && Object.keys(style).some((key) => key.startsWith("--px-"));
|
|
32680
|
+
const safeOptions = Array.isArray(options) ? options : [];
|
|
32675
32681
|
return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "flex flex-col gap-2 w-full", children: [
|
|
32676
32682
|
label && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
32677
32683
|
Label,
|
|
@@ -32691,7 +32697,7 @@ var RadioGroupAtom = ({ id, label, options, defaultValue, disabled, className, s
|
|
|
32691
32697
|
className: cn("grid gap-2", className),
|
|
32692
32698
|
style,
|
|
32693
32699
|
"data-px-styled": hasPxVars ? "" : void 0,
|
|
32694
|
-
children:
|
|
32700
|
+
children: safeOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "flex items-center space-x-2", children: [
|
|
32695
32701
|
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
32696
32702
|
RadioGroupItem,
|
|
32697
32703
|
{
|
|
@@ -32895,6 +32901,7 @@ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
|
32895
32901
|
// src/atoms/DropdownMenuAtom.tsx
|
|
32896
32902
|
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
32897
32903
|
var DropdownMenuAtom = ({ trigger, items, className, onAction }) => {
|
|
32904
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
32898
32905
|
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(DropdownMenu, { children: [
|
|
32899
32906
|
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(DropdownMenuTrigger, { asChild: true, children: trigger }),
|
|
32900
32907
|
/* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
@@ -32904,7 +32911,7 @@ var DropdownMenuAtom = ({ trigger, items, className, onAction }) => {
|
|
|
32904
32911
|
"w-56 bg-white/80 backdrop-blur-md border-purple-100",
|
|
32905
32912
|
className
|
|
32906
32913
|
),
|
|
32907
|
-
children:
|
|
32914
|
+
children: safeItems.map((item) => {
|
|
32908
32915
|
const Icon3 = item.icon ? lucide_react_exports[item.icon] : null;
|
|
32909
32916
|
return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(
|
|
32910
32917
|
DropdownMenuItem,
|
|
@@ -33067,6 +33074,7 @@ ContextMenuShortcut.displayName = "ContextMenuShortcut";
|
|
|
33067
33074
|
// src/atoms/ContextMenuAtom.tsx
|
|
33068
33075
|
var import_jsx_runtime77 = require("react/jsx-runtime");
|
|
33069
33076
|
var ContextMenuAtom = ({ trigger, items, className, onAction }) => {
|
|
33077
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
33070
33078
|
return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(ContextMenu, { children: [
|
|
33071
33079
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(ContextMenuTrigger, { asChild: true, children: trigger }),
|
|
33072
33080
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
@@ -33076,7 +33084,7 @@ var ContextMenuAtom = ({ trigger, items, className, onAction }) => {
|
|
|
33076
33084
|
"w-64 bg-white/80 backdrop-blur-md border-purple-100",
|
|
33077
33085
|
className
|
|
33078
33086
|
),
|
|
33079
|
-
children:
|
|
33087
|
+
children: safeItems.map((item) => {
|
|
33080
33088
|
const Icon3 = item.icon ? lucide_react_exports[item.icon] : null;
|
|
33081
33089
|
return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
|
|
33082
33090
|
ContextMenuItem,
|
|
@@ -33258,6 +33266,7 @@ var InputOTPAtom = ({ length, className, onChange }) => {
|
|
|
33258
33266
|
var import_react51 = __toESM(require("react"), 1);
|
|
33259
33267
|
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
33260
33268
|
var KbdAtom = ({ keys, className }) => {
|
|
33269
|
+
const safeKeys = Array.isArray(keys) ? keys : [];
|
|
33261
33270
|
return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
|
|
33262
33271
|
"kbd",
|
|
33263
33272
|
{
|
|
@@ -33265,9 +33274,9 @@ var KbdAtom = ({ keys, className }) => {
|
|
|
33265
33274
|
"pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100",
|
|
33266
33275
|
className
|
|
33267
33276
|
),
|
|
33268
|
-
children:
|
|
33277
|
+
children: safeKeys.map((key, i) => /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(import_react51.default.Fragment, { children: [
|
|
33269
33278
|
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "text-xs", children: key }),
|
|
33270
|
-
i <
|
|
33279
|
+
i < safeKeys.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { children: "+" })
|
|
33271
33280
|
] }, i))
|
|
33272
33281
|
}
|
|
33273
33282
|
);
|
|
@@ -33315,6 +33324,7 @@ var ResizableAtom = ({
|
|
|
33315
33324
|
renderComponent
|
|
33316
33325
|
}) => {
|
|
33317
33326
|
const Group7 = ResizablePanelGroup;
|
|
33327
|
+
const safePanels = Array.isArray(panels) ? panels : [];
|
|
33318
33328
|
return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
33319
33329
|
Group7,
|
|
33320
33330
|
{
|
|
@@ -33323,15 +33333,15 @@ var ResizableAtom = ({
|
|
|
33323
33333
|
"min-h-[200px] w-full rounded-lg border border-purple-100",
|
|
33324
33334
|
className
|
|
33325
33335
|
),
|
|
33326
|
-
children:
|
|
33327
|
-
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ResizablePanel, { defaultSize: panel.defaultSize, className: "p-4", children: panel.children.map((child, childIdx) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
33336
|
+
children: safePanels.map((panel, i) => /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_react52.default.Fragment, { children: [
|
|
33337
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ResizablePanel, { defaultSize: panel.defaultSize, className: "p-4", children: (Array.isArray(panel.children) ? panel.children : []).map((child, childIdx) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
33328
33338
|
import_react52.default.Fragment,
|
|
33329
33339
|
{
|
|
33330
33340
|
children: renderComponent(child)
|
|
33331
33341
|
},
|
|
33332
33342
|
child.id || `resizable-child-${i}-${childIdx}`
|
|
33333
33343
|
)) }),
|
|
33334
|
-
i <
|
|
33344
|
+
i < safePanels.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ResizableHandle, { withHandle: true })
|
|
33335
33345
|
] }, i))
|
|
33336
33346
|
}
|
|
33337
33347
|
);
|
|
@@ -33854,6 +33864,7 @@ var TimelineAtom = ({
|
|
|
33854
33864
|
items,
|
|
33855
33865
|
className
|
|
33856
33866
|
}) => {
|
|
33867
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
33857
33868
|
return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
|
|
33858
33869
|
"div",
|
|
33859
33870
|
{
|
|
@@ -33861,7 +33872,7 @@ var TimelineAtom = ({
|
|
|
33861
33872
|
"space-y-6 relative before:absolute before:inset-0 before:ml-5 before:-translate-x-px before:h-full before:w-0.5 before:bg-gradient-to-b before:from-purple-500 before:via-indigo-500 before:to-gray-200 before:pointer-events-none",
|
|
33862
33873
|
className
|
|
33863
33874
|
),
|
|
33864
|
-
children:
|
|
33875
|
+
children: safeItems.map((item, i) => {
|
|
33865
33876
|
const Icon3 = item.icon ? lucide_react_exports[item.icon] : null;
|
|
33866
33877
|
const isCompleted = item.status === "completed";
|
|
33867
33878
|
const isActive = item.status === "active";
|
|
@@ -34559,7 +34570,7 @@ var EditableField = import_react56.default.memo(
|
|
|
34559
34570
|
if (!value) {
|
|
34560
34571
|
return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "opacity-0", children: "-" });
|
|
34561
34572
|
}
|
|
34562
|
-
return value.
|
|
34573
|
+
return typeof value === "object" ? JSON.stringify(value) : String(value ?? "");
|
|
34563
34574
|
};
|
|
34564
34575
|
return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
|
|
34565
34576
|
"div",
|
|
@@ -34668,7 +34679,7 @@ var ActionButton = import_react57.default.memo(
|
|
|
34668
34679
|
setTimeLeft((prev) => {
|
|
34669
34680
|
if (prev <= 1) {
|
|
34670
34681
|
clearInterval(timer);
|
|
34671
|
-
onProceed();
|
|
34682
|
+
onProceed?.();
|
|
34672
34683
|
return 0;
|
|
34673
34684
|
}
|
|
34674
34685
|
return prev - 1;
|
|
@@ -34684,7 +34695,7 @@ var ActionButton = import_react57.default.memo(
|
|
|
34684
34695
|
variant,
|
|
34685
34696
|
size,
|
|
34686
34697
|
disabled: disabled || isLoading,
|
|
34687
|
-
onClick: onProceed,
|
|
34698
|
+
onClick: () => onProceed?.(),
|
|
34688
34699
|
className: cn(
|
|
34689
34700
|
"relative min-w-[140px] overflow-hidden group transition-all duration-300",
|
|
34690
34701
|
"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%)]",
|
|
@@ -35010,7 +35021,7 @@ var DynamicFormCard = import_react59.default.memo(
|
|
|
35010
35021
|
...rest
|
|
35011
35022
|
}) => {
|
|
35012
35023
|
const fields = (0, import_react59.useMemo)(
|
|
35013
|
-
() => providedFields
|
|
35024
|
+
() => Array.isArray(providedFields) ? providedFields : generateFieldsFromData(data),
|
|
35014
35025
|
[providedFields, data]
|
|
35015
35026
|
);
|
|
35016
35027
|
const handleProceed = () => {
|
|
@@ -35082,7 +35093,7 @@ var StatsGrid = ({
|
|
|
35082
35093
|
{
|
|
35083
35094
|
id: `stat-label-${index}`,
|
|
35084
35095
|
type: "text",
|
|
35085
|
-
content: item.label,
|
|
35096
|
+
content: typeof item.label === "object" ? JSON.stringify(item.label) : String(item.label ?? ""),
|
|
35086
35097
|
variant: "small",
|
|
35087
35098
|
className: cn(!hasPxVars && "text-muted-foreground", "font-medium tracking-wide uppercase text-[10px]"),
|
|
35088
35099
|
style: textColor ? { color: textColor } : void 0
|
|
@@ -35122,7 +35133,7 @@ var StatsGrid = ({
|
|
|
35122
35133
|
),
|
|
35123
35134
|
children: [
|
|
35124
35135
|
TrendIcon && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(TrendIcon, { className: "w-3 h-3 mr-0.5" }),
|
|
35125
|
-
item.trend
|
|
35136
|
+
typeof item.trend === "object" ? JSON.stringify(item.trend) : String(item.trend ?? "")
|
|
35126
35137
|
]
|
|
35127
35138
|
}
|
|
35128
35139
|
)
|
|
@@ -35234,6 +35245,7 @@ var LoadingOverlay = ({
|
|
|
35234
35245
|
// src/molecules/generic/FilterBar/FilterBar.tsx
|
|
35235
35246
|
var import_jsx_runtime101 = require("react/jsx-runtime");
|
|
35236
35247
|
var FilterBar = ({ filters, showSearch = true, className, onFilterToggle, onSearch }) => {
|
|
35248
|
+
const safeFilters = Array.isArray(filters) ? filters : [];
|
|
35237
35249
|
return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
|
|
35238
35250
|
"div",
|
|
35239
35251
|
{
|
|
@@ -35253,7 +35265,7 @@ var FilterBar = ({ filters, showSearch = true, className, onFilterToggle, onSear
|
|
|
35253
35265
|
}
|
|
35254
35266
|
)
|
|
35255
35267
|
] }),
|
|
35256
|
-
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "flex flex-wrap gap-2", children:
|
|
35268
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "flex flex-wrap gap-2", children: safeFilters.map((filter) => /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
|
|
35257
35269
|
Badge2,
|
|
35258
35270
|
{
|
|
35259
35271
|
variant: filter.active ? "default" : "outline",
|
|
@@ -35353,7 +35365,8 @@ var FileUpload = ({ title, accept, multiple, className, style, onFilesSelected }
|
|
|
35353
35365
|
// src/molecules/generic/TagCloud/TagCloud.tsx
|
|
35354
35366
|
var import_jsx_runtime103 = require("react/jsx-runtime");
|
|
35355
35367
|
var TagCloud = ({ tags = [], className, onTagClick }) => {
|
|
35356
|
-
const
|
|
35368
|
+
const safeTags = Array.isArray(tags) ? tags : [];
|
|
35369
|
+
const normalizedTags = safeTags.map(
|
|
35357
35370
|
(t) => typeof t === "string" ? { label: t, value: t } : t
|
|
35358
35371
|
);
|
|
35359
35372
|
return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: cn("flex flex-wrap gap-3.5", className), children: normalizedTags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
|
|
@@ -35379,6 +35392,8 @@ var DataGrid = ({
|
|
|
35379
35392
|
pageSize = 10,
|
|
35380
35393
|
className
|
|
35381
35394
|
}) => {
|
|
35395
|
+
const safeColumns = Array.isArray(columns) ? columns : [];
|
|
35396
|
+
const safeData = Array.isArray(data) ? data : [];
|
|
35382
35397
|
const renderCell = (item, column) => {
|
|
35383
35398
|
const value = item[column.accessorKey];
|
|
35384
35399
|
switch (column.type) {
|
|
@@ -35388,7 +35403,7 @@ var DataGrid = ({
|
|
|
35388
35403
|
{
|
|
35389
35404
|
variant: "secondary",
|
|
35390
35405
|
className: "bg-purple-50 text-purple-700 border-purple-100",
|
|
35391
|
-
children: value
|
|
35406
|
+
children: typeof value === "object" ? JSON.stringify(value) : String(value ?? "")
|
|
35392
35407
|
}
|
|
35393
35408
|
);
|
|
35394
35409
|
case "avatar":
|
|
@@ -35402,9 +35417,9 @@ var DataGrid = ({
|
|
|
35402
35417
|
case "date":
|
|
35403
35418
|
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "text-muted-foreground", children: new Date(value).toLocaleDateString() });
|
|
35404
35419
|
case "number":
|
|
35405
|
-
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "font-mono font-medium", children: value.toLocaleString() });
|
|
35420
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "font-mono font-medium", children: Number(value ?? 0).toLocaleString() });
|
|
35406
35421
|
default:
|
|
35407
|
-
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { children: value });
|
|
35422
|
+
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { children: typeof value === "object" ? JSON.stringify(value) : String(value ?? "") });
|
|
35408
35423
|
}
|
|
35409
35424
|
};
|
|
35410
35425
|
return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
@@ -35415,7 +35430,7 @@ var DataGrid = ({
|
|
|
35415
35430
|
className
|
|
35416
35431
|
),
|
|
35417
35432
|
children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Table3, { children: [
|
|
35418
|
-
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(TableHeader, { className: "bg-gray-50/50", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(TableRow, { children:
|
|
35433
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(TableHeader, { className: "bg-gray-50/50", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(TableRow, { children: safeColumns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
35419
35434
|
TableHead,
|
|
35420
35435
|
{
|
|
35421
35436
|
className: "font-bold text-gray-900 h-12",
|
|
@@ -35423,11 +35438,11 @@ var DataGrid = ({
|
|
|
35423
35438
|
},
|
|
35424
35439
|
col.accessorKey
|
|
35425
35440
|
)) }) }),
|
|
35426
|
-
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(TableBody, { children:
|
|
35441
|
+
/* @__PURE__ */ (0, import_jsx_runtime104.jsx)(TableBody, { children: safeData.slice(0, pageSize).map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
35427
35442
|
TableRow,
|
|
35428
35443
|
{
|
|
35429
35444
|
className: "hover:bg-purple-50/30 transition-colors border-gray-50",
|
|
35430
|
-
children:
|
|
35445
|
+
children: safeColumns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(TableCell, { className: "py-4", children: renderCell(item, col) }, col.accessorKey))
|
|
35431
35446
|
},
|
|
35432
35447
|
idx
|
|
35433
35448
|
)) })
|
|
@@ -35444,10 +35459,11 @@ var StepWizard = ({
|
|
|
35444
35459
|
currentStep,
|
|
35445
35460
|
className
|
|
35446
35461
|
}) => {
|
|
35447
|
-
|
|
35462
|
+
const safeSteps = Array.isArray(steps) ? steps : [];
|
|
35463
|
+
return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: cn("flex items-center w-full", className), children: safeSteps.map((step, i) => {
|
|
35448
35464
|
const isCompleted = i < currentStep;
|
|
35449
35465
|
const isActive = i === currentStep;
|
|
35450
|
-
const isLast = i ===
|
|
35466
|
+
const isLast = i === safeSteps.length - 1;
|
|
35451
35467
|
return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_react61.default.Fragment, { children: [
|
|
35452
35468
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "flex flex-col items-center relative group", children: [
|
|
35453
35469
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
@@ -35490,6 +35506,7 @@ var NotificationList = ({
|
|
|
35490
35506
|
notifications,
|
|
35491
35507
|
className
|
|
35492
35508
|
}) => {
|
|
35509
|
+
const safeNotifications = Array.isArray(notifications) ? notifications : [];
|
|
35493
35510
|
const getIcon = (type) => {
|
|
35494
35511
|
switch (type) {
|
|
35495
35512
|
case "success":
|
|
@@ -35514,7 +35531,7 @@ var NotificationList = ({
|
|
|
35514
35531
|
return "bg-blue-50";
|
|
35515
35532
|
}
|
|
35516
35533
|
};
|
|
35517
|
-
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: cn("flex flex-col gap-2", className), children:
|
|
35534
|
+
return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: cn("flex flex-col gap-2", className), children: safeNotifications.map((n) => /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
|
|
35518
35535
|
"div",
|
|
35519
35536
|
{
|
|
35520
35537
|
className: cn(
|
|
@@ -35577,15 +35594,16 @@ var PLATFORM_STYLES = {
|
|
|
35577
35594
|
};
|
|
35578
35595
|
var PlatformPost = ({ post, loading, className }) => {
|
|
35579
35596
|
const [copied, setCopied] = (0, import_react62.useState)(false);
|
|
35580
|
-
const [caption, setCaption] = (0, import_react62.useState)(post
|
|
35597
|
+
const [caption, setCaption] = (0, import_react62.useState)(post?.caption ?? "");
|
|
35598
|
+
const safeHashtags = Array.isArray(post.hashtags) ? post.hashtags : [];
|
|
35581
35599
|
const style = PLATFORM_STYLES[post.platform] || PLATFORM_STYLES.twitter;
|
|
35582
35600
|
const charCount = caption.length;
|
|
35583
35601
|
const isOverLimit = charCount > post.character_limit;
|
|
35584
35602
|
const isInstagram = post.platform === "instagram";
|
|
35585
35603
|
const handleCopy = async () => {
|
|
35586
|
-
const fullText = isInstagram ?
|
|
35604
|
+
const fullText = isInstagram ? safeHashtags.join(" ") : `${caption}
|
|
35587
35605
|
|
|
35588
|
-
${
|
|
35606
|
+
${safeHashtags.join(" ")}`;
|
|
35589
35607
|
try {
|
|
35590
35608
|
await navigator.clipboard.writeText(fullText);
|
|
35591
35609
|
setCopied(true);
|
|
@@ -35639,7 +35657,7 @@ ${post.hashtags.join(" ")}`;
|
|
|
35639
35657
|
}
|
|
35640
35658
|
) }),
|
|
35641
35659
|
/* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "px-4 pt-3 pb-4 space-y-2.5", children: [
|
|
35642
|
-
loading ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "h-3 w-[50%] rounded bg-[#27272a] animate-pulse" }) :
|
|
35660
|
+
loading ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "h-3 w-[50%] rounded bg-[#27272a] animate-pulse" }) : safeHashtags.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("p", { className: cn("text-xs font-medium leading-relaxed", style.hashtagColor), children: safeHashtags.join(" ") }) : null,
|
|
35643
35661
|
!isInstagram && (loading ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "h-2.5 w-[30%] rounded bg-[#27272a] animate-pulse" }) : /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
|
|
35644
35662
|
"p",
|
|
35645
35663
|
{
|
|
@@ -35844,6 +35862,7 @@ var hideScrollbar = {
|
|
|
35844
35862
|
var CIStatusSection = ({
|
|
35845
35863
|
branches
|
|
35846
35864
|
}) => {
|
|
35865
|
+
const safeBranches = Array.isArray(branches) ? branches : [];
|
|
35847
35866
|
return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
35848
35867
|
"div",
|
|
35849
35868
|
{
|
|
@@ -35864,7 +35883,7 @@ var CIStatusSection = ({
|
|
|
35864
35883
|
className: "space-y-1.5 max-h-[220px] overflow-y-auto slim-scrollbar",
|
|
35865
35884
|
style: hideScrollbar,
|
|
35866
35885
|
children: [
|
|
35867
|
-
|
|
35886
|
+
safeBranches.map((branch) => {
|
|
35868
35887
|
const cfg = STATUS_CONFIG[branch.status] || STATUS_CONFIG.none;
|
|
35869
35888
|
return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
|
|
35870
35889
|
"div",
|
|
@@ -35886,7 +35905,7 @@ var CIStatusSection = ({
|
|
|
35886
35905
|
branch.branch
|
|
35887
35906
|
);
|
|
35888
35907
|
}),
|
|
35889
|
-
|
|
35908
|
+
safeBranches.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("p", { className: "text-xs text-gray-500 italic py-2", children: "No branches found" })
|
|
35890
35909
|
]
|
|
35891
35910
|
}
|
|
35892
35911
|
)
|
|
@@ -35927,6 +35946,7 @@ var hideScrollbar2 = {
|
|
|
35927
35946
|
var PRListSection = ({
|
|
35928
35947
|
pullRequests
|
|
35929
35948
|
}) => {
|
|
35949
|
+
const safePullRequests = Array.isArray(pullRequests) ? pullRequests : [];
|
|
35930
35950
|
return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
35931
35951
|
"div",
|
|
35932
35952
|
{
|
|
@@ -35947,7 +35967,7 @@ var PRListSection = ({
|
|
|
35947
35967
|
className: "space-y-2 max-h-[220px] overflow-y-auto slim-scrollbar",
|
|
35948
35968
|
style: hideScrollbar2,
|
|
35949
35969
|
children: [
|
|
35950
|
-
|
|
35970
|
+
safePullRequests.map((pr) => {
|
|
35951
35971
|
const cfg = REVIEW_CONFIG[pr.review_status] || REVIEW_CONFIG.needs_review;
|
|
35952
35972
|
return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
|
|
35953
35973
|
"div",
|
|
@@ -35989,7 +36009,7 @@ var PRListSection = ({
|
|
|
35989
36009
|
pr.number
|
|
35990
36010
|
);
|
|
35991
36011
|
}),
|
|
35992
|
-
|
|
36012
|
+
safePullRequests.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("p", { className: "text-xs text-gray-500 italic py-2", children: "No open pull requests" })
|
|
35993
36013
|
]
|
|
35994
36014
|
}
|
|
35995
36015
|
)
|
|
@@ -36053,6 +36073,7 @@ var hideScrollbar3 = {
|
|
|
36053
36073
|
WebkitOverflowScrolling: "touch"
|
|
36054
36074
|
};
|
|
36055
36075
|
var StaleIssueList = ({ issues }) => {
|
|
36076
|
+
const safeIssues = Array.isArray(issues) ? issues : [];
|
|
36056
36077
|
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
|
|
36057
36078
|
"div",
|
|
36058
36079
|
{
|
|
@@ -36073,14 +36094,14 @@ var StaleIssueList = ({ issues }) => {
|
|
|
36073
36094
|
className: "space-y-2 max-h-[220px] overflow-y-auto slim-scrollbar",
|
|
36074
36095
|
style: hideScrollbar3,
|
|
36075
36096
|
children: [
|
|
36076
|
-
|
|
36097
|
+
safeIssues.map((issue) => /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
|
|
36077
36098
|
"div",
|
|
36078
36099
|
{
|
|
36079
36100
|
className: "flex items-center justify-between rounded-lg px-3 py-2.5",
|
|
36080
36101
|
style: { backgroundColor: "rgba(40, 40, 40, 0.7)" },
|
|
36081
36102
|
children: [
|
|
36082
36103
|
/* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
|
|
36083
|
-
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { className: "flex shrink-0 gap-1", children: issue.labels.slice(0, 2).map((label) => /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
36104
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { className: "flex shrink-0 gap-1", children: (Array.isArray(issue.labels) ? issue.labels : []).slice(0, 2).map((label) => /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
36084
36105
|
"span",
|
|
36085
36106
|
{
|
|
36086
36107
|
className: cn(
|
|
@@ -36101,7 +36122,7 @@ var StaleIssueList = ({ issues }) => {
|
|
|
36101
36122
|
},
|
|
36102
36123
|
issue.number
|
|
36103
36124
|
)),
|
|
36104
|
-
|
|
36125
|
+
safeIssues.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("p", { className: "text-xs text-gray-500 italic py-2", children: "No stale issues" })
|
|
36105
36126
|
]
|
|
36106
36127
|
}
|
|
36107
36128
|
)
|
|
@@ -36161,7 +36182,7 @@ var GitHubIssueTrackerCard = ({ owner, repo, open_bugs, velocity_per_week, stale
|
|
|
36161
36182
|
}
|
|
36162
36183
|
)
|
|
36163
36184
|
] }),
|
|
36164
|
-
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(StaleIssueList, { issues: stale_issues })
|
|
36185
|
+
/* @__PURE__ */ (0, import_jsx_runtime114.jsx)(StaleIssueList, { issues: Array.isArray(stale_issues) ? stale_issues : [] })
|
|
36165
36186
|
] })
|
|
36166
36187
|
] });
|
|
36167
36188
|
};
|
|
@@ -36204,6 +36225,8 @@ var DataTable = ({
|
|
|
36204
36225
|
rows,
|
|
36205
36226
|
loading
|
|
36206
36227
|
}) => {
|
|
36228
|
+
const safeColumns = Array.isArray(columns) ? columns : [];
|
|
36229
|
+
const safeRows = Array.isArray(rows) ? rows : [];
|
|
36207
36230
|
return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
|
|
36208
36231
|
"div",
|
|
36209
36232
|
{
|
|
@@ -36222,7 +36245,7 @@ var DataTable = ({
|
|
|
36222
36245
|
}
|
|
36223
36246
|
) }),
|
|
36224
36247
|
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { className: "px-3 pb-3 overflow-x-auto", style: hideScrollbar4, children: loading ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { className: "space-y-3 p-2", children: [...Array(3)].map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { className: "h-8 rounded bg-[#27272a] animate-pulse" }, i)) }) : /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("table", { className: "w-full text-sm", children: [
|
|
36225
|
-
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("tr", { className: "border-b border-[#3f3f46]/40", children:
|
|
36248
|
+
/* @__PURE__ */ (0, import_jsx_runtime115.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("tr", { className: "border-b border-[#3f3f46]/40", children: safeColumns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
36226
36249
|
"th",
|
|
36227
36250
|
{
|
|
36228
36251
|
className: cn(
|
|
@@ -36234,14 +36257,14 @@ var DataTable = ({
|
|
|
36234
36257
|
col.key
|
|
36235
36258
|
)) }) }),
|
|
36236
36259
|
/* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("tbody", { children: [
|
|
36237
|
-
|
|
36260
|
+
safeRows.map((row, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
36238
36261
|
"tr",
|
|
36239
36262
|
{
|
|
36240
36263
|
className: cn(
|
|
36241
36264
|
"transition-colors hover:bg-[#27272a]/40",
|
|
36242
|
-
rowIdx !==
|
|
36265
|
+
rowIdx !== safeRows.length - 1 && "border-b border-[#27272a]/50"
|
|
36243
36266
|
),
|
|
36244
|
-
children:
|
|
36267
|
+
children: safeColumns.map((col) => {
|
|
36245
36268
|
const cellColor = getCellColor(col.type, row[col.key]);
|
|
36246
36269
|
return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
36247
36270
|
"td",
|
|
@@ -36260,10 +36283,10 @@ var DataTable = ({
|
|
|
36260
36283
|
},
|
|
36261
36284
|
rowIdx
|
|
36262
36285
|
)),
|
|
36263
|
-
|
|
36286
|
+
safeRows.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
|
|
36264
36287
|
"td",
|
|
36265
36288
|
{
|
|
36266
|
-
colSpan:
|
|
36289
|
+
colSpan: safeColumns.length,
|
|
36267
36290
|
className: "px-3 py-6 text-center text-xs text-gray-500 italic",
|
|
36268
36291
|
children: "No data available"
|
|
36269
36292
|
}
|
|
@@ -36295,7 +36318,8 @@ var AutoChart = ({
|
|
|
36295
36318
|
type = "bar",
|
|
36296
36319
|
loading
|
|
36297
36320
|
}) => {
|
|
36298
|
-
const
|
|
36321
|
+
const safeData = Array.isArray(data) ? data : [];
|
|
36322
|
+
const maxValue = safeData.length ? Math.max(...safeData.map((d) => d.value), 1) : 1;
|
|
36299
36323
|
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
36300
36324
|
"div",
|
|
36301
36325
|
{
|
|
@@ -36320,7 +36344,7 @@ var AutoChart = ({
|
|
|
36320
36344
|
style: { height: `${40 + i * 25}%` }
|
|
36321
36345
|
},
|
|
36322
36346
|
i
|
|
36323
|
-
)) }) : type === "bar" ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { className: "flex items-end gap-3 h-[140px] w-full justify-center", children:
|
|
36347
|
+
)) }) : type === "bar" ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { className: "flex items-end gap-3 h-[140px] w-full justify-center", children: safeData.map((point, idx) => {
|
|
36324
36348
|
const heightPercent = point.value / maxValue * 100;
|
|
36325
36349
|
const color = point.color || DEFAULT_COLORS[idx % DEFAULT_COLORS.length];
|
|
36326
36350
|
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
|
|
@@ -36346,7 +36370,7 @@ var AutoChart = ({
|
|
|
36346
36370
|
);
|
|
36347
36371
|
}) }) : (
|
|
36348
36372
|
/* Horizontal bar chart */
|
|
36349
|
-
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { className: "flex flex-col gap-2.5 w-full", children:
|
|
36373
|
+
/* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { className: "flex flex-col gap-2.5 w-full", children: safeData.map((point, idx) => {
|
|
36350
36374
|
const widthPercent = point.value / maxValue * 100;
|
|
36351
36375
|
const color = point.color || DEFAULT_COLORS[idx % DEFAULT_COLORS.length];
|
|
36352
36376
|
return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "space-y-1", children: [
|
|
@@ -36440,7 +36464,7 @@ var GoogleSheetsCard = ({
|
|
|
36440
36464
|
] });
|
|
36441
36465
|
};
|
|
36442
36466
|
function autoGenerateChart(columns, rows) {
|
|
36443
|
-
if (!rows.length || !columns.length) return null;
|
|
36467
|
+
if (!Array.isArray(rows) || !Array.isArray(columns) || !rows.length || !columns.length) return null;
|
|
36444
36468
|
const labelCol = columns.find(
|
|
36445
36469
|
(c) => c.type === "text" || c.type === void 0
|
|
36446
36470
|
);
|
|
@@ -36659,6 +36683,7 @@ var GitHubReposListCard = ({
|
|
|
36659
36683
|
className,
|
|
36660
36684
|
sendMessage
|
|
36661
36685
|
}) => {
|
|
36686
|
+
const safeRepos = Array.isArray(repos) ? repos : [];
|
|
36662
36687
|
const handleRepoClick = (repo) => {
|
|
36663
36688
|
sendMessage?.(`Use repo ${repo.full_name}`);
|
|
36664
36689
|
};
|
|
@@ -36678,7 +36703,7 @@ var GitHubReposListCard = ({
|
|
|
36678
36703
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("span", { className: "text-sm font-semibold text-white", children: "Your Repositories" }),
|
|
36679
36704
|
/* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("span", { className: "text-xs text-gray-500", children: [
|
|
36680
36705
|
"(",
|
|
36681
|
-
|
|
36706
|
+
safeRepos.length,
|
|
36682
36707
|
")"
|
|
36683
36708
|
] })
|
|
36684
36709
|
] }),
|
|
@@ -36692,7 +36717,7 @@ var GitHubReposListCard = ({
|
|
|
36692
36717
|
maxHeight: 380,
|
|
36693
36718
|
overflowY: "auto"
|
|
36694
36719
|
},
|
|
36695
|
-
children:
|
|
36720
|
+
children: safeRepos.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { className: "px-4 py-8 text-center text-sm text-gray-500", children: "No repositories found." }) : /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("div", { className: "divide-y divide-white/5 py-1", children: safeRepos.map((repo) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
|
|
36696
36721
|
RepoRow,
|
|
36697
36722
|
{
|
|
36698
36723
|
repo,
|
|
@@ -36750,6 +36775,7 @@ function timeAgo2(dateStr) {
|
|
|
36750
36775
|
return `${months}mo ago`;
|
|
36751
36776
|
}
|
|
36752
36777
|
var SpreadsheetRow = ({ spreadsheet, onClick }) => {
|
|
36778
|
+
const safeSheets = Array.isArray(spreadsheet.sheets) ? spreadsheet.sheets : [];
|
|
36753
36779
|
return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
36754
36780
|
"button",
|
|
36755
36781
|
{
|
|
@@ -36769,7 +36795,7 @@ var SpreadsheetRow = ({ spreadsheet, onClick }) => {
|
|
|
36769
36795
|
timeAgo2(spreadsheet.modified_time)
|
|
36770
36796
|
] })
|
|
36771
36797
|
] }),
|
|
36772
|
-
|
|
36798
|
+
safeSheets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "mt-1.5 flex flex-wrap gap-1", children: safeSheets.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
36773
36799
|
"span",
|
|
36774
36800
|
{
|
|
36775
36801
|
className: "inline-block rounded px-1.5 py-0.5 text-[10px] font-medium",
|
|
@@ -36802,8 +36828,10 @@ var GoogleSheetsListCard = ({
|
|
|
36802
36828
|
className,
|
|
36803
36829
|
sendMessage
|
|
36804
36830
|
}) => {
|
|
36831
|
+
const safeSpreadsheets = Array.isArray(spreadsheets) ? spreadsheets : [];
|
|
36805
36832
|
const handleSheetClick = (spreadsheet) => {
|
|
36806
|
-
const
|
|
36833
|
+
const safeSheets = Array.isArray(spreadsheet.sheets) ? spreadsheet.sheets : [];
|
|
36834
|
+
const firstTab = safeSheets.length > 0 ? safeSheets[0].title : "Sheet1";
|
|
36807
36835
|
sendMessage?.(
|
|
36808
36836
|
`Read spreadsheet "${spreadsheet.name}" (ID: ${spreadsheet.id}), tab: ${firstTab}`
|
|
36809
36837
|
);
|
|
@@ -36814,7 +36842,7 @@ var GoogleSheetsListCard = ({
|
|
|
36814
36842
|
/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { className: "text-sm font-semibold text-white", children: "Your Spreadsheets" }),
|
|
36815
36843
|
/* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("span", { className: "text-xs text-gray-500", children: [
|
|
36816
36844
|
"(",
|
|
36817
|
-
|
|
36845
|
+
safeSpreadsheets.length,
|
|
36818
36846
|
")"
|
|
36819
36847
|
] })
|
|
36820
36848
|
] }),
|
|
@@ -36828,7 +36856,7 @@ var GoogleSheetsListCard = ({
|
|
|
36828
36856
|
maxHeight: 380,
|
|
36829
36857
|
overflowY: "auto"
|
|
36830
36858
|
},
|
|
36831
|
-
children:
|
|
36859
|
+
children: safeSpreadsheets.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "px-4 py-8 text-center text-sm text-gray-500", children: "No spreadsheets found." }) : /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: "divide-y divide-white/5 py-1", children: safeSpreadsheets.map((spreadsheet) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
|
|
36832
36860
|
SpreadsheetRow,
|
|
36833
36861
|
{
|
|
36834
36862
|
spreadsheet,
|
|
@@ -37214,9 +37242,10 @@ var InputWidget = ({
|
|
|
37214
37242
|
onAction,
|
|
37215
37243
|
isSubmitting = false
|
|
37216
37244
|
}) => {
|
|
37245
|
+
const safeFields = Array.isArray(fields) ? fields : [];
|
|
37217
37246
|
const [values, setValues] = import_react66.default.useState(() => {
|
|
37218
37247
|
const initial = {};
|
|
37219
|
-
for (const f of
|
|
37248
|
+
for (const f of safeFields) {
|
|
37220
37249
|
initial[f.key] = f.defaultValue ?? defaultForKind(f.kind);
|
|
37221
37250
|
}
|
|
37222
37251
|
return initial;
|
|
@@ -37224,7 +37253,7 @@ var InputWidget = ({
|
|
|
37224
37253
|
const update = (key, v) => {
|
|
37225
37254
|
setValues((prev) => ({ ...prev, [key]: v }));
|
|
37226
37255
|
};
|
|
37227
|
-
const buildElementsForSubmission = () =>
|
|
37256
|
+
const buildElementsForSubmission = () => safeFields.map((f) => ({
|
|
37228
37257
|
id: `${id}-${f.key}`,
|
|
37229
37258
|
atomName: kindToAtomName(f.kind),
|
|
37230
37259
|
props: {
|
|
@@ -37256,7 +37285,7 @@ var InputWidget = ({
|
|
|
37256
37285
|
}
|
|
37257
37286
|
if (action === "reset") {
|
|
37258
37287
|
const reset = {};
|
|
37259
|
-
for (const f of
|
|
37288
|
+
for (const f of safeFields) reset[f.key] = f.defaultValue ?? defaultForKind(f.kind);
|
|
37260
37289
|
setValues(reset);
|
|
37261
37290
|
}
|
|
37262
37291
|
onAction?.(action, payload);
|
|
@@ -37272,7 +37301,7 @@ var InputWidget = ({
|
|
|
37272
37301
|
title && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("h3", { className: "text-base font-semibold", style: { color: "var(--px-text-color, inherit)" }, children: title }),
|
|
37273
37302
|
description && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("p", { className: "text-sm opacity-80", style: { color: "var(--px-text-color, inherit)" }, children: description })
|
|
37274
37303
|
] }),
|
|
37275
|
-
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { className: "flex flex-col gap-4", children:
|
|
37304
|
+
/* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { className: "flex flex-col gap-4", children: safeFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
|
|
37276
37305
|
FieldRenderer,
|
|
37277
37306
|
{
|
|
37278
37307
|
field,
|
|
@@ -37490,7 +37519,7 @@ var TrendBadge = ({ item }) => {
|
|
|
37490
37519
|
var KPIStatsCard = import_react67.default.memo(
|
|
37491
37520
|
({ title, subtitle, stats, items, theme, className, onAction: _onAction }) => {
|
|
37492
37521
|
const s = th(theme);
|
|
37493
|
-
const displayStats = stats
|
|
37522
|
+
const displayStats = Array.isArray(stats) ? stats : Array.isArray(items) ? items : [];
|
|
37494
37523
|
return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
|
|
37495
37524
|
"div",
|
|
37496
37525
|
{
|
|
@@ -37592,7 +37621,7 @@ var ApprovalCard = import_react68.default.memo(
|
|
|
37592
37621
|
sendMessage?.(`${labels[next]}: ${title}`);
|
|
37593
37622
|
onAction?.({ type: "approval", value: next, title });
|
|
37594
37623
|
};
|
|
37595
|
-
const config = STATUS_CONFIG2[status];
|
|
37624
|
+
const config = STATUS_CONFIG2[status] ?? STATUS_CONFIG2.pending;
|
|
37596
37625
|
const StatusIcon = config.icon;
|
|
37597
37626
|
return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
|
|
37598
37627
|
"div",
|
|
@@ -37620,7 +37649,7 @@ var ApprovalCard = import_react68.default.memo(
|
|
|
37620
37649
|
style: i < details.length - 1 ? { borderBottomColor: theme?.border } : {},
|
|
37621
37650
|
children: [
|
|
37622
37651
|
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "text-cardText/50", style: s.muted, children: d.label }),
|
|
37623
|
-
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "font-medium text-cardText", style: s.text, children: d.value })
|
|
37652
|
+
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "font-medium text-cardText", style: s.text, children: typeof d.value === "object" ? JSON.stringify(d.value) : String(d.value ?? "") })
|
|
37624
37653
|
]
|
|
37625
37654
|
},
|
|
37626
37655
|
i
|
|
@@ -37684,7 +37713,7 @@ var StepDot = ({ step, accentColor }) => {
|
|
|
37684
37713
|
var TimelineCard = import_react69.default.memo(
|
|
37685
37714
|
({ title, steps, milestones, theme, className, onAction: _onAction }) => {
|
|
37686
37715
|
const s = th(theme);
|
|
37687
|
-
const displaySteps = steps
|
|
37716
|
+
const displaySteps = Array.isArray(steps) ? steps : Array.isArray(milestones) ? milestones : [];
|
|
37688
37717
|
return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: cn("w-full rounded-[16px] border border-gray400 bg-cardSurface p-4", className), style: s.root, children: [
|
|
37689
37718
|
title && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("h3", { className: "mb-4 text-sm font-semibold text-cardText", style: s.text, children: title }),
|
|
37690
37719
|
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "space-y-0", children: displaySteps.map((step, idx) => {
|
|
@@ -37842,31 +37871,41 @@ FeedbackRatingCard.displayName = "FeedbackRatingCard";
|
|
|
37842
37871
|
var import_react71 = __toESM(require("react"), 1);
|
|
37843
37872
|
var import_jsx_runtime128 = require("react/jsx-runtime");
|
|
37844
37873
|
var DataTableCard = import_react71.default.memo(
|
|
37845
|
-
({ title, caption, columns, rows, highlight_column, theme, className, onAction: _onAction }) => {
|
|
37874
|
+
({ title, caption, columns, rows, highlight_column, highlightColumn, theme, className, onAction: _onAction }) => {
|
|
37846
37875
|
const s = th(theme);
|
|
37876
|
+
const cols = (Array.isArray(columns) ? columns : []).map((c, i) => {
|
|
37877
|
+
if (typeof c === "string") return { key: c, label: c };
|
|
37878
|
+
return {
|
|
37879
|
+
key: c?.key ?? c?.label ?? String(i),
|
|
37880
|
+
label: c?.label ?? c?.key ?? String(i)
|
|
37881
|
+
};
|
|
37882
|
+
});
|
|
37883
|
+
const safeRows = Array.isArray(rows) ? rows : [];
|
|
37884
|
+
const highlight = highlight_column ?? highlightColumn;
|
|
37847
37885
|
return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: cn("w-full rounded-[16px] border border-gray400 bg-cardSurface overflow-hidden", className), style: s.root, children: [
|
|
37848
37886
|
(title || caption) && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "border-b border-gray400 px-4 py-3", style: { borderBottomColor: theme?.border }, children: [
|
|
37849
37887
|
title && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("h3", { className: "text-sm font-semibold text-cardText", style: s.text, children: title }),
|
|
37850
37888
|
caption && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("p", { className: "mt-0.5 text-[10px] text-cardText/40", style: s.muted, children: caption })
|
|
37851
37889
|
] }),
|
|
37852
37890
|
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "overflow-x-auto", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("table", { className: "w-full min-w-full border-collapse text-xs", children: [
|
|
37853
|
-
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("tr", { className: "border-b border-gray400 bg-black/20", style: { borderBottomColor: theme?.border, ...s.surface }, children:
|
|
37891
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("tr", { className: "border-b border-gray400 bg-black/20", style: { borderBottomColor: theme?.border, ...s.surface }, children: cols.map((col, idx) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
37854
37892
|
"th",
|
|
37855
37893
|
{
|
|
37856
37894
|
className: "px-4 py-2.5 text-left font-semibold uppercase tracking-widest text-[10px] text-cardText/40",
|
|
37857
37895
|
style: s.muted,
|
|
37858
|
-
children: col
|
|
37896
|
+
children: col.label
|
|
37859
37897
|
},
|
|
37860
37898
|
idx
|
|
37861
37899
|
)) }) }),
|
|
37862
|
-
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("tbody", { children:
|
|
37900
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("tbody", { children: safeRows.map((row, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
37863
37901
|
"tr",
|
|
37864
37902
|
{
|
|
37865
|
-
className: cn("border-b border-gray400/40 transition-colors hover:bg-white/[0.02]", rowIdx ===
|
|
37903
|
+
className: cn("border-b border-gray400/40 transition-colors hover:bg-white/[0.02]", rowIdx === safeRows.length - 1 && "border-b-0"),
|
|
37866
37904
|
style: { borderBottomColor: theme?.border },
|
|
37867
|
-
children:
|
|
37868
|
-
const
|
|
37869
|
-
const
|
|
37905
|
+
children: cols.map((col, colIdx) => {
|
|
37906
|
+
const raw = row?.[col.key] ?? row?.[col.label];
|
|
37907
|
+
const cell = raw ?? "\u2014";
|
|
37908
|
+
const isHighlight = highlight != null && (col.key === highlight || col.label === highlight);
|
|
37870
37909
|
return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
37871
37910
|
"td",
|
|
37872
37911
|
{
|
|
@@ -37875,7 +37914,7 @@ var DataTableCard = import_react71.default.memo(
|
|
|
37875
37914
|
isHighlight ? "font-semibold text-gold" : colIdx === 0 ? "font-medium text-cardText" : "text-cardText/60"
|
|
37876
37915
|
),
|
|
37877
37916
|
style: isHighlight ? s.accent : colIdx === 0 ? s.text : s.muted,
|
|
37878
|
-
children: String(cell)
|
|
37917
|
+
children: typeof cell === "object" ? JSON.stringify(cell) : String(cell)
|
|
37879
37918
|
},
|
|
37880
37919
|
colIdx
|
|
37881
37920
|
);
|
|
@@ -37884,7 +37923,7 @@ var DataTableCard = import_react71.default.memo(
|
|
|
37884
37923
|
rowIdx
|
|
37885
37924
|
)) })
|
|
37886
37925
|
] }) }),
|
|
37887
|
-
|
|
37926
|
+
safeRows.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "flex items-center justify-center py-10 text-xs text-cardText/30", style: s.muted, children: "No data available" })
|
|
37888
37927
|
] });
|
|
37889
37928
|
}
|
|
37890
37929
|
);
|
|
@@ -37909,7 +37948,7 @@ var ChecklistCard = import_react72.default.memo(
|
|
|
37909
37948
|
onAction
|
|
37910
37949
|
}) => {
|
|
37911
37950
|
const s = th(theme);
|
|
37912
|
-
const source = items
|
|
37951
|
+
const source = Array.isArray(items) ? items : Array.isArray(tasks) ? tasks : [];
|
|
37913
37952
|
const [checked, setChecked] = import_react72.default.useState(
|
|
37914
37953
|
() => new Set(source.filter((i) => i.checked).map((i) => i.id))
|
|
37915
37954
|
);
|
|
@@ -38044,7 +38083,7 @@ var PollCard = import_react73.default.memo(
|
|
|
38044
38083
|
onAction
|
|
38045
38084
|
}) => {
|
|
38046
38085
|
const s = th(theme);
|
|
38047
|
-
const source = options
|
|
38086
|
+
const source = Array.isArray(options) ? options : Array.isArray(choices) ? choices : [];
|
|
38048
38087
|
const [selected, setSelected] = import_react73.default.useState(/* @__PURE__ */ new Set());
|
|
38049
38088
|
const [hasVoted, setHasVoted] = import_react73.default.useState(false);
|
|
38050
38089
|
const [voteCounts, setVoteCounts] = import_react73.default.useState(
|
|
@@ -38091,7 +38130,9 @@ Selected: ${labels.join(", ")}`);
|
|
|
38091
38130
|
const isSelected = selected.has(opt.id);
|
|
38092
38131
|
const count = voteCounts[opt.id] ?? 0;
|
|
38093
38132
|
const pct = hasVoted && displayTotal > 0 ? Math.round(count / displayTotal * 100) : 0;
|
|
38094
|
-
const
|
|
38133
|
+
const voteCountValues = Object.values(voteCounts);
|
|
38134
|
+
const maxVotes = voteCountValues.length ? Math.max(...voteCountValues) : 0;
|
|
38135
|
+
const isWinner = hasVoted && count === maxVotes;
|
|
38095
38136
|
const accentSubtleBg = theme?.accent ? withAlpha(theme.accent, 0.1) : void 0;
|
|
38096
38137
|
return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
|
|
38097
38138
|
"div",
|
|
@@ -38195,8 +38236,8 @@ var STATUS_STYLES = {
|
|
|
38195
38236
|
cancelled: { label: "Cancelled", className: "text-rose-400 bg-rose-500/10 border-rose-500/20", dot: "bg-rose-400" }
|
|
38196
38237
|
};
|
|
38197
38238
|
function AvatarInitials({ name }) {
|
|
38198
|
-
const initials = name.split(" ").map((p) => p[0]).slice(0, 2).join("").toUpperCase();
|
|
38199
|
-
const hue = name.split("").reduce((acc, ch) => acc + ch.charCodeAt(0), 0) % 360;
|
|
38239
|
+
const initials = (name ?? "").split(" ").map((p) => p[0]).slice(0, 2).join("").toUpperCase();
|
|
38240
|
+
const hue = (name ?? "").split("").reduce((acc, ch) => acc + ch.charCodeAt(0), 0) % 360;
|
|
38200
38241
|
return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
|
|
38201
38242
|
"div",
|
|
38202
38243
|
{
|
|
@@ -38223,17 +38264,18 @@ var CalendarEventCard = import_react74.default.memo(
|
|
|
38223
38264
|
onAction
|
|
38224
38265
|
}) => {
|
|
38225
38266
|
const s = th(theme);
|
|
38226
|
-
const cfg = STATUS_STYLES[status];
|
|
38267
|
+
const cfg = STATUS_STYLES[status] ?? STATUS_STYLES.upcoming;
|
|
38227
38268
|
const parsedDate = import_react74.default.useMemo(() => {
|
|
38228
38269
|
try {
|
|
38229
|
-
const
|
|
38270
|
+
const safeDate = date ?? "";
|
|
38271
|
+
const d = new Date(safeDate);
|
|
38230
38272
|
if (isNaN(d.getTime())) {
|
|
38231
|
-
const parts =
|
|
38232
|
-
return { day: parts[1] ||
|
|
38273
|
+
const parts = safeDate.split(/[\s,]+/);
|
|
38274
|
+
return { day: parts[1] || safeDate, month: parts[0] || "" };
|
|
38233
38275
|
}
|
|
38234
38276
|
return { day: d.getDate().toString(), month: d.toLocaleString("en", { month: "short" }) };
|
|
38235
38277
|
} catch {
|
|
38236
|
-
return { day: date, month: "" };
|
|
38278
|
+
return { day: date ?? "", month: "" };
|
|
38237
38279
|
}
|
|
38238
38280
|
}, [date]);
|
|
38239
38281
|
const handleJoin = (e) => {
|
|
@@ -38349,13 +38391,13 @@ var BudgetAllocCard = import_react75.default.memo(
|
|
|
38349
38391
|
onAction: _onAction
|
|
38350
38392
|
}) => {
|
|
38351
38393
|
const s = th(theme);
|
|
38352
|
-
const source = items
|
|
38353
|
-
const computedTotal = total ?? source.reduce((sum, i) => sum + i.amount, 0);
|
|
38394
|
+
const source = Array.isArray(items) ? items : Array.isArray(allocations) ? allocations : [];
|
|
38395
|
+
const computedTotal = total ?? source.reduce((sum, i) => sum + (Number(i.amount) || 0), 0);
|
|
38354
38396
|
const paletteWithAccent = [theme?.accent ?? PALETTE[0], ...PALETTE.slice(1)];
|
|
38355
38397
|
const segments = source.map((item, idx) => ({
|
|
38356
38398
|
...item,
|
|
38357
38399
|
color: item.color || paletteWithAccent[idx % paletteWithAccent.length],
|
|
38358
|
-
pct: computedTotal > 0 ? item.amount / computedTotal * 100 : 0
|
|
38400
|
+
pct: computedTotal > 0 ? (Number(item.amount) || 0) / computedTotal * 100 : 0
|
|
38359
38401
|
}));
|
|
38360
38402
|
return /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(
|
|
38361
38403
|
"div",
|
|
@@ -38476,6 +38518,8 @@ var ComparisonCard = import_react76.default.memo(
|
|
|
38476
38518
|
onAction
|
|
38477
38519
|
}) => {
|
|
38478
38520
|
const s = th(theme);
|
|
38521
|
+
const safeOptions = Array.isArray(options) ? options : [];
|
|
38522
|
+
const safeAttributeLabels = Array.isArray(attribute_labels) ? attribute_labels : [];
|
|
38479
38523
|
const [selected, setSelected] = import_react76.default.useState(null);
|
|
38480
38524
|
const [isSubmitted, setIsSubmitted] = import_react76.default.useState(false);
|
|
38481
38525
|
const isInteractive = isLatestMessage && !disabled && !isSubmitted;
|
|
@@ -38512,8 +38556,8 @@ var ComparisonCard = import_react76.default.memo(
|
|
|
38512
38556
|
"div",
|
|
38513
38557
|
{
|
|
38514
38558
|
className: "grid gap-3",
|
|
38515
|
-
style: { gridTemplateColumns: `repeat(${
|
|
38516
|
-
children:
|
|
38559
|
+
style: { gridTemplateColumns: `repeat(${safeOptions.length}, minmax(0, 1fr))` },
|
|
38560
|
+
children: safeOptions.map((opt) => {
|
|
38517
38561
|
const isChosen = selected === opt.id;
|
|
38518
38562
|
const isGoldBadge = !opt.badge_color || opt.badge_color === "gold";
|
|
38519
38563
|
const badgeColor = opt.badge_color ? BADGE_COLORS[opt.badge_color] : BADGE_COLORS.gold;
|
|
@@ -38558,8 +38602,8 @@ var ComparisonCard = import_react76.default.memo(
|
|
|
38558
38602
|
]
|
|
38559
38603
|
}
|
|
38560
38604
|
),
|
|
38561
|
-
/* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "flex flex-col divide-y divide-gray400/30 flex-1", children:
|
|
38562
|
-
const attr = opt.attributes[rowIdx];
|
|
38605
|
+
/* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "flex flex-col divide-y divide-gray400/30 flex-1", children: safeAttributeLabels.map((attrLabel, rowIdx) => {
|
|
38606
|
+
const attr = opt.attributes?.[rowIdx];
|
|
38563
38607
|
return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
|
|
38564
38608
|
"div",
|
|
38565
38609
|
{
|
|
@@ -38769,7 +38813,7 @@ var ResearchBriefCard = ({
|
|
|
38769
38813
|
item.label,
|
|
38770
38814
|
": "
|
|
38771
38815
|
] }),
|
|
38772
|
-
/* @__PURE__ */ (0, import_jsx_runtime135.jsx)("span", { className: "text-muted-foreground", children: item.value })
|
|
38816
|
+
/* @__PURE__ */ (0, import_jsx_runtime135.jsx)("span", { className: "text-muted-foreground", children: typeof item.value === "object" ? JSON.stringify(item.value) : String(item.value ?? "") })
|
|
38773
38817
|
] }, `${item.label}-${idx}`)) })
|
|
38774
38818
|
] })
|
|
38775
38819
|
]
|
|
@@ -38790,6 +38834,7 @@ var PriorityActionsCard = ({
|
|
|
38790
38834
|
actions,
|
|
38791
38835
|
className
|
|
38792
38836
|
}) => {
|
|
38837
|
+
const safeActions = Array.isArray(actions) ? actions : [];
|
|
38793
38838
|
return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
|
|
38794
38839
|
"div",
|
|
38795
38840
|
{
|
|
@@ -38800,7 +38845,7 @@ var PriorityActionsCard = ({
|
|
|
38800
38845
|
children: [
|
|
38801
38846
|
/* @__PURE__ */ (0, import_jsx_runtime136.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
38802
38847
|
summary ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "mt-2 text-sm leading-relaxed text-muted-foreground", children: summary }) : null,
|
|
38803
|
-
/* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "mt-4 space-y-2.5", children:
|
|
38848
|
+
/* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "mt-4 space-y-2.5", children: safeActions.map((action, idx) => /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
|
|
38804
38849
|
"div",
|
|
38805
38850
|
{
|
|
38806
38851
|
className: "rounded-xl border border-border/70 bg-background/50 p-3",
|
|
@@ -38863,7 +38908,7 @@ var CampaignBriefCard = ({
|
|
|
38863
38908
|
] }),
|
|
38864
38909
|
constraints.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("ul", { className: "mt-4 space-y-1.5 text-sm text-foreground/90", children: constraints.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("li", { children: [
|
|
38865
38910
|
"- ",
|
|
38866
|
-
item
|
|
38911
|
+
typeof item === "object" ? JSON.stringify(item) : String(item ?? "")
|
|
38867
38912
|
] }, `${item}-${i}`)) }) : null
|
|
38868
38913
|
] });
|
|
38869
38914
|
};
|
|
@@ -38878,16 +38923,17 @@ var DataSourceChecklistCard = ({
|
|
|
38878
38923
|
className,
|
|
38879
38924
|
onAction
|
|
38880
38925
|
}) => {
|
|
38881
|
-
const
|
|
38926
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
38927
|
+
const connectedCount = safeItems.filter((i) => i.connected).length;
|
|
38882
38928
|
return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: cn("rounded-2xl border border-border bg-card/70 p-5 shadow-sm", className), children: [
|
|
38883
38929
|
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
38884
38930
|
/* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("p", { className: "mt-1 text-xs text-muted-foreground", children: [
|
|
38885
38931
|
connectedCount,
|
|
38886
38932
|
"/",
|
|
38887
|
-
|
|
38933
|
+
safeItems.length,
|
|
38888
38934
|
" connected"
|
|
38889
38935
|
] }),
|
|
38890
|
-
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "mt-3 space-y-2", children:
|
|
38936
|
+
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "mt-3 space-y-2", children: safeItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/60 p-3", children: [
|
|
38891
38937
|
/* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
38892
38938
|
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)("p", { className: "text-sm font-medium text-foreground", children: item.source }),
|
|
38893
38939
|
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)("span", { className: cn("text-xs font-semibold", item.connected ? "text-emerald-600" : "text-amber-600"), children: item.connected ? "Connected" : "Pending" })
|
|
@@ -38920,7 +38966,7 @@ var GoalAlignmentCard = ({
|
|
|
38920
38966
|
className
|
|
38921
38967
|
}) => /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { className: cn("rounded-2xl border border-border bg-card/70 p-5 shadow-sm", className), children: [
|
|
38922
38968
|
/* @__PURE__ */ (0, import_jsx_runtime139.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
38923
|
-
/* @__PURE__ */ (0, import_jsx_runtime139.jsx)("div", { className: "mt-3 space-y-2", children: goals.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3", children: [
|
|
38969
|
+
/* @__PURE__ */ (0, import_jsx_runtime139.jsx)("div", { className: "mt-3 space-y-2", children: (Array.isArray(goals) ? goals : []).map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3", children: [
|
|
38924
38970
|
/* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
38925
38971
|
/* @__PURE__ */ (0, import_jsx_runtime139.jsx)("p", { className: "text-sm font-medium text-foreground", children: item.goal }),
|
|
38926
38972
|
item.status ? /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("span", { className: cn("text-xs font-semibold", statusColor[item.status]), children: item.status }) : null
|
|
@@ -38937,7 +38983,7 @@ var AudiencePersonaCard = ({
|
|
|
38937
38983
|
className
|
|
38938
38984
|
}) => /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)("div", { className: cn("rounded-2xl border border-border bg-card/70 p-5 shadow-sm", className), children: [
|
|
38939
38985
|
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
38940
|
-
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)("div", { className: "mt-3 space-y-2", children: segments.map((segment, i) => /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3", children: [
|
|
38986
|
+
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)("div", { className: "mt-3 space-y-2", children: (Array.isArray(segments) ? segments : []).map((segment, i) => /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3", children: [
|
|
38941
38987
|
/* @__PURE__ */ (0, import_jsx_runtime140.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
38942
38988
|
/* @__PURE__ */ (0, import_jsx_runtime140.jsx)("p", { className: "text-sm font-medium text-foreground", children: segment.name }),
|
|
38943
38989
|
segment.percentage !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)("span", { className: "text-xs text-muted-foreground", children: [
|
|
@@ -38958,20 +39004,23 @@ var ChannelPlanCard = ({
|
|
|
38958
39004
|
title,
|
|
38959
39005
|
plans,
|
|
38960
39006
|
className
|
|
38961
|
-
}) =>
|
|
38962
|
-
|
|
38963
|
-
|
|
38964
|
-
/* @__PURE__ */ (0, import_jsx_runtime141.jsx)("
|
|
38965
|
-
|
|
38966
|
-
"
|
|
38967
|
-
plan.objective
|
|
38968
|
-
|
|
38969
|
-
|
|
38970
|
-
|
|
38971
|
-
plan.cadence
|
|
38972
|
-
|
|
38973
|
-
|
|
38974
|
-
] })
|
|
39007
|
+
}) => {
|
|
39008
|
+
const safePlans = Array.isArray(plans) ? plans : [];
|
|
39009
|
+
return /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)("div", { className: cn("rounded-2xl border border-border bg-card/70 p-5 shadow-sm", className), children: [
|
|
39010
|
+
/* @__PURE__ */ (0, import_jsx_runtime141.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
39011
|
+
/* @__PURE__ */ (0, import_jsx_runtime141.jsx)("div", { className: "mt-3 space-y-2", children: safePlans.map((plan, i) => /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3", children: [
|
|
39012
|
+
/* @__PURE__ */ (0, import_jsx_runtime141.jsx)("p", { className: "text-sm font-medium text-foreground", children: plan.channel }),
|
|
39013
|
+
plan.objective ? /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)("p", { className: "mt-1 text-xs text-muted-foreground", children: [
|
|
39014
|
+
"Objective: ",
|
|
39015
|
+
plan.objective
|
|
39016
|
+
] }) : null,
|
|
39017
|
+
plan.cadence ? /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
|
|
39018
|
+
"Cadence: ",
|
|
39019
|
+
plan.cadence
|
|
39020
|
+
] }) : null
|
|
39021
|
+
] }, `${plan.channel}-${i}`)) })
|
|
39022
|
+
] });
|
|
39023
|
+
};
|
|
38975
39024
|
|
|
38976
39025
|
// src/molecules/generic/InsightDigestCard/InsightDigestCard.tsx
|
|
38977
39026
|
var import_jsx_runtime142 = require("react/jsx-runtime");
|
|
@@ -38985,17 +39034,20 @@ var InsightDigestCard = ({
|
|
|
38985
39034
|
summary,
|
|
38986
39035
|
insights,
|
|
38987
39036
|
className
|
|
38988
|
-
}) =>
|
|
38989
|
-
|
|
38990
|
-
|
|
38991
|
-
|
|
38992
|
-
/* @__PURE__ */ (0, import_jsx_runtime142.
|
|
38993
|
-
|
|
38994
|
-
|
|
38995
|
-
|
|
38996
|
-
|
|
38997
|
-
|
|
38998
|
-
|
|
39037
|
+
}) => {
|
|
39038
|
+
const safeInsights = Array.isArray(insights) ? insights : [];
|
|
39039
|
+
return /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)("div", { className: cn("rounded-2xl border border-border bg-card/70 p-5 shadow-sm", className), children: [
|
|
39040
|
+
/* @__PURE__ */ (0, import_jsx_runtime142.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
39041
|
+
summary ? /* @__PURE__ */ (0, import_jsx_runtime142.jsx)("p", { className: "mt-2 text-sm text-muted-foreground", children: summary }) : null,
|
|
39042
|
+
/* @__PURE__ */ (0, import_jsx_runtime142.jsx)("div", { className: "mt-3 space-y-2", children: safeInsights.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3", children: [
|
|
39043
|
+
/* @__PURE__ */ (0, import_jsx_runtime142.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
39044
|
+
/* @__PURE__ */ (0, import_jsx_runtime142.jsx)("p", { className: "text-sm font-medium text-foreground", children: item.label }),
|
|
39045
|
+
item.confidence ? /* @__PURE__ */ (0, import_jsx_runtime142.jsx)("span", { className: cn("text-xs font-semibold", confidenceColor[item.confidence]), children: item.confidence }) : null
|
|
39046
|
+
] }),
|
|
39047
|
+
/* @__PURE__ */ (0, import_jsx_runtime142.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: item.detail })
|
|
39048
|
+
] }, `${item.label}-${i}`)) })
|
|
39049
|
+
] });
|
|
39050
|
+
};
|
|
38999
39051
|
|
|
39000
39052
|
// src/molecules/generic/ActionPriorityCard/ActionPriorityCard.tsx
|
|
39001
39053
|
var import_jsx_runtime143 = require("react/jsx-runtime");
|
|
@@ -39008,20 +39060,23 @@ var ActionPriorityCard = ({
|
|
|
39008
39060
|
title,
|
|
39009
39061
|
actions,
|
|
39010
39062
|
className
|
|
39011
|
-
}) =>
|
|
39012
|
-
|
|
39013
|
-
|
|
39014
|
-
/* @__PURE__ */ (0, import_jsx_runtime143.
|
|
39015
|
-
|
|
39016
|
-
|
|
39017
|
-
|
|
39018
|
-
|
|
39019
|
-
|
|
39020
|
-
action.owner
|
|
39021
|
-
|
|
39022
|
-
|
|
39023
|
-
|
|
39024
|
-
] })
|
|
39063
|
+
}) => {
|
|
39064
|
+
const safeActions = Array.isArray(actions) ? actions : [];
|
|
39065
|
+
return /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)("div", { className: cn("rounded-2xl border border-border bg-card/70 p-5 shadow-sm", className), children: [
|
|
39066
|
+
/* @__PURE__ */ (0, import_jsx_runtime143.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
39067
|
+
/* @__PURE__ */ (0, import_jsx_runtime143.jsx)("div", { className: "mt-3 space-y-2", children: safeActions.map((action, i) => /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3", children: [
|
|
39068
|
+
/* @__PURE__ */ (0, import_jsx_runtime143.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
39069
|
+
/* @__PURE__ */ (0, import_jsx_runtime143.jsx)("p", { className: "text-sm font-medium text-foreground", children: action.title }),
|
|
39070
|
+
action.priority ? /* @__PURE__ */ (0, import_jsx_runtime143.jsx)("span", { className: cn("rounded-full px-2.5 py-1 text-[11px] font-semibold", priorityBadge[action.priority]), children: action.priority }) : null
|
|
39071
|
+
] }),
|
|
39072
|
+
action.owner || action.timeline ? /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)("p", { className: "mt-1 text-xs text-muted-foreground", children: [
|
|
39073
|
+
action.owner ? `Owner: ${action.owner}` : "",
|
|
39074
|
+
action.owner && action.timeline ? " \u2022 " : "",
|
|
39075
|
+
action.timeline ? `Timeline: ${action.timeline}` : ""
|
|
39076
|
+
] }) : null
|
|
39077
|
+
] }, `${action.title}-${i}`)) })
|
|
39078
|
+
] });
|
|
39079
|
+
};
|
|
39025
39080
|
|
|
39026
39081
|
// src/molecules/generic/RiskSignalCard/RiskSignalCard.tsx
|
|
39027
39082
|
var import_jsx_runtime144 = require("react/jsx-runtime");
|
|
@@ -39034,19 +39089,22 @@ var RiskSignalCard = ({
|
|
|
39034
39089
|
title,
|
|
39035
39090
|
risks,
|
|
39036
39091
|
className
|
|
39037
|
-
}) =>
|
|
39038
|
-
|
|
39039
|
-
|
|
39040
|
-
/* @__PURE__ */ (0, import_jsx_runtime144.
|
|
39041
|
-
|
|
39042
|
-
|
|
39043
|
-
|
|
39044
|
-
|
|
39045
|
-
|
|
39046
|
-
risk.impact
|
|
39047
|
-
|
|
39048
|
-
|
|
39049
|
-
] })
|
|
39092
|
+
}) => {
|
|
39093
|
+
const safeRisks = Array.isArray(risks) ? risks : [];
|
|
39094
|
+
return /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)("div", { className: cn("rounded-2xl border border-border bg-card/70 p-5 shadow-sm", className), children: [
|
|
39095
|
+
/* @__PURE__ */ (0, import_jsx_runtime144.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
39096
|
+
/* @__PURE__ */ (0, import_jsx_runtime144.jsx)("div", { className: "mt-3 space-y-2", children: safeRisks.map((risk, i) => /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3", children: [
|
|
39097
|
+
/* @__PURE__ */ (0, import_jsx_runtime144.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
39098
|
+
/* @__PURE__ */ (0, import_jsx_runtime144.jsx)("p", { className: "text-sm font-medium text-foreground", children: risk.signal }),
|
|
39099
|
+
risk.severity ? /* @__PURE__ */ (0, import_jsx_runtime144.jsx)("span", { className: cn("text-xs font-semibold", severityColor[risk.severity]), children: risk.severity }) : null
|
|
39100
|
+
] }),
|
|
39101
|
+
risk.impact ? /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)("p", { className: "mt-1 text-xs text-muted-foreground", children: [
|
|
39102
|
+
"Impact: ",
|
|
39103
|
+
risk.impact
|
|
39104
|
+
] }) : null
|
|
39105
|
+
] }, `${risk.signal}-${i}`)) })
|
|
39106
|
+
] });
|
|
39107
|
+
};
|
|
39050
39108
|
|
|
39051
39109
|
// src/molecules/generic/ScoreBreakdownCard/ScoreBreakdownCard.tsx
|
|
39052
39110
|
var import_jsx_runtime145 = require("react/jsx-runtime");
|
|
@@ -39056,24 +39114,27 @@ var ScoreBreakdownCard = ({
|
|
|
39056
39114
|
outOf = 100,
|
|
39057
39115
|
items,
|
|
39058
39116
|
className
|
|
39059
|
-
}) =>
|
|
39060
|
-
|
|
39061
|
-
|
|
39062
|
-
|
|
39063
|
-
|
|
39064
|
-
"
|
|
39065
|
-
|
|
39066
|
-
|
|
39067
|
-
|
|
39068
|
-
|
|
39069
|
-
|
|
39070
|
-
/* @__PURE__ */ (0, import_jsx_runtime145.
|
|
39071
|
-
item.
|
|
39072
|
-
"
|
|
39073
|
-
|
|
39074
|
-
|
|
39075
|
-
|
|
39076
|
-
] })
|
|
39117
|
+
}) => {
|
|
39118
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
39119
|
+
return /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)("div", { className: cn("rounded-2xl border border-border bg-card/70 p-5 shadow-sm", className), children: [
|
|
39120
|
+
/* @__PURE__ */ (0, import_jsx_runtime145.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
39121
|
+
/* @__PURE__ */ (0, import_jsx_runtime145.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
39122
|
+
totalScore !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)("span", { className: "rounded-full border border-border px-2.5 py-1 text-xs text-muted-foreground", children: [
|
|
39123
|
+
totalScore,
|
|
39124
|
+
"/",
|
|
39125
|
+
outOf
|
|
39126
|
+
] }) : null
|
|
39127
|
+
] }),
|
|
39128
|
+
/* @__PURE__ */ (0, import_jsx_runtime145.jsx)("div", { className: "mt-3 space-y-2", children: safeItems.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime145.jsx)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3", children: /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)("div", { className: "flex items-center justify-between gap-2 text-sm", children: [
|
|
39129
|
+
/* @__PURE__ */ (0, import_jsx_runtime145.jsx)("p", { className: "font-medium text-foreground", children: item.label }),
|
|
39130
|
+
/* @__PURE__ */ (0, import_jsx_runtime145.jsxs)("p", { className: "text-muted-foreground", children: [
|
|
39131
|
+
item.score,
|
|
39132
|
+
"/",
|
|
39133
|
+
item.outOf ?? outOf
|
|
39134
|
+
] })
|
|
39135
|
+
] }) }, `${item.label}-${i}`)) })
|
|
39136
|
+
] });
|
|
39137
|
+
};
|
|
39077
39138
|
|
|
39078
39139
|
// src/molecules/generic/NextStepCard/NextStepCard.tsx
|
|
39079
39140
|
var import_jsx_runtime146 = require("react/jsx-runtime");
|
|
@@ -39083,26 +39144,29 @@ var NextStepCard = ({
|
|
|
39083
39144
|
ctaLabel = "Proceed",
|
|
39084
39145
|
className,
|
|
39085
39146
|
onAction
|
|
39086
|
-
}) =>
|
|
39087
|
-
|
|
39088
|
-
|
|
39089
|
-
/* @__PURE__ */ (0, import_jsx_runtime146.jsx)("
|
|
39090
|
-
|
|
39091
|
-
|
|
39092
|
-
item.owner
|
|
39093
|
-
|
|
39094
|
-
|
|
39095
|
-
|
|
39096
|
-
|
|
39097
|
-
|
|
39098
|
-
|
|
39099
|
-
|
|
39100
|
-
|
|
39101
|
-
|
|
39102
|
-
|
|
39103
|
-
|
|
39104
|
-
|
|
39105
|
-
|
|
39147
|
+
}) => {
|
|
39148
|
+
const safeSteps = Array.isArray(steps) ? steps : [];
|
|
39149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)("div", { className: cn("rounded-2xl border border-border bg-card/70 p-5 shadow-sm", className), children: [
|
|
39150
|
+
/* @__PURE__ */ (0, import_jsx_runtime146.jsx)("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
39151
|
+
/* @__PURE__ */ (0, import_jsx_runtime146.jsx)("div", { className: "mt-3 space-y-2", children: safeSteps.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)("div", { className: "rounded-xl border border-border/70 bg-background/50 p-3 text-sm", children: [
|
|
39152
|
+
/* @__PURE__ */ (0, import_jsx_runtime146.jsx)("p", { className: "font-medium text-foreground", children: item.step }),
|
|
39153
|
+
item.owner || item.due ? /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)("p", { className: "mt-1 text-xs text-muted-foreground", children: [
|
|
39154
|
+
item.owner ? `Owner: ${item.owner}` : "",
|
|
39155
|
+
item.owner && item.due ? " \u2022 " : "",
|
|
39156
|
+
item.due ? `Due: ${item.due}` : ""
|
|
39157
|
+
] }) : null
|
|
39158
|
+
] }, `${item.step}-${i}`)) }),
|
|
39159
|
+
/* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
|
|
39160
|
+
"button",
|
|
39161
|
+
{
|
|
39162
|
+
type: "button",
|
|
39163
|
+
onClick: () => onAction?.({ type: "next_step_continue", stepsCount: safeSteps.length }),
|
|
39164
|
+
className: "mt-4 rounded-full border border-border px-4 py-2 text-sm text-foreground",
|
|
39165
|
+
children: ctaLabel
|
|
39166
|
+
}
|
|
39167
|
+
)
|
|
39168
|
+
] });
|
|
39169
|
+
};
|
|
39106
39170
|
|
|
39107
39171
|
// src/molecules/generic/PresentationJobCard/PresentationJobCard.tsx
|
|
39108
39172
|
var import_react77 = require("react");
|
|
@@ -39160,8 +39224,8 @@ var FORMATS = [
|
|
|
39160
39224
|
}
|
|
39161
39225
|
];
|
|
39162
39226
|
var ExportModal = ({ formats, title, onClose }) => {
|
|
39163
|
-
const available = FORMATS.filter((f) => formats[f.key]);
|
|
39164
|
-
const filename = title.replace(/[^a-z0-9]/gi, "-").toLowerCase();
|
|
39227
|
+
const available = FORMATS.filter((f) => (formats ?? {})[f.key]);
|
|
39228
|
+
const filename = (title ?? "").replace(/[^a-z0-9]/gi, "-").toLowerCase();
|
|
39165
39229
|
const [downloadingKey, setDownloadingKey] = (0, import_react77.useState)(null);
|
|
39166
39230
|
const handleDownload = async (fmtKey, url, ext) => {
|
|
39167
39231
|
if (downloadingKey) return;
|
|
@@ -40122,7 +40186,7 @@ var ResearchReportJobCard = (props) => {
|
|
|
40122
40186
|
}
|
|
40123
40187
|
const handleDownload = async () => {
|
|
40124
40188
|
if (!htmlUrl) return;
|
|
40125
|
-
const filename = `${title.replace(/[^a-z0-9]/gi, "-").toLowerCase()}.html`;
|
|
40189
|
+
const filename = `${(title ?? "").replace(/[^a-z0-9]/gi, "-").toLowerCase()}.html`;
|
|
40126
40190
|
const href = `/api/download?url=${encodeURIComponent(htmlUrl)}&filename=${encodeURIComponent(filename)}`;
|
|
40127
40191
|
try {
|
|
40128
40192
|
const response = await fetch(href);
|
|
@@ -40470,6 +40534,7 @@ var WebSearchJobCard = ({
|
|
|
40470
40534
|
] })
|
|
40471
40535
|
] }) }) });
|
|
40472
40536
|
}
|
|
40537
|
+
const safeResults = Array.isArray(results) ? results : [];
|
|
40473
40538
|
const displayQuery = query || initialTitle || "Web Search";
|
|
40474
40539
|
const statsText = [
|
|
40475
40540
|
resultCount > 0 && `${resultCount} result${resultCount !== 1 ? "s" : ""}`,
|
|
@@ -40492,7 +40557,7 @@ var WebSearchJobCard = ({
|
|
|
40492
40557
|
] })
|
|
40493
40558
|
] }),
|
|
40494
40559
|
summary && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)("p", { className: "mt-3 text-xs text-zinc-400 leading-relaxed line-clamp-3", children: summary }),
|
|
40495
|
-
!compact &&
|
|
40560
|
+
!compact && safeResults.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)("div", { className: "mt-4 space-y-2", children: safeResults.map((result, i) => /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(
|
|
40496
40561
|
"a",
|
|
40497
40562
|
{
|
|
40498
40563
|
href: result.url,
|
|
@@ -41859,6 +41924,7 @@ var PlatformIconGroup = ({
|
|
|
41859
41924
|
platforms,
|
|
41860
41925
|
className
|
|
41861
41926
|
}) => {
|
|
41927
|
+
const safePlatforms = Array.isArray(platforms) ? platforms : [];
|
|
41862
41928
|
const getIcon = (platform) => {
|
|
41863
41929
|
switch (platform) {
|
|
41864
41930
|
case "instagram":
|
|
@@ -41887,7 +41953,7 @@ var PlatformIconGroup = ({
|
|
|
41887
41953
|
return "text-gray-500 bg-gray-50 border-gray-100";
|
|
41888
41954
|
}
|
|
41889
41955
|
};
|
|
41890
|
-
return /* @__PURE__ */ (0, import_jsx_runtime154.jsx)("div", { className: cn("flex gap-2", className), children:
|
|
41956
|
+
return /* @__PURE__ */ (0, import_jsx_runtime154.jsx)("div", { className: cn("flex gap-2", className), children: safePlatforms.map((p, i) => {
|
|
41891
41957
|
const Icon3 = getIcon(p.platform);
|
|
41892
41958
|
if (!Icon3) return null;
|
|
41893
41959
|
return /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
|
|
@@ -41931,7 +41997,7 @@ var CreatorProfileSummary = ({
|
|
|
41931
41997
|
id: `avatar-${name}`,
|
|
41932
41998
|
type: "avatar",
|
|
41933
41999
|
src: avatarSrc,
|
|
41934
|
-
fallback: name.charAt(0),
|
|
42000
|
+
fallback: (name ?? "").charAt(0),
|
|
41935
42001
|
className: "w-12 h-12 ring-2 ring-purple-100"
|
|
41936
42002
|
}
|
|
41937
42003
|
),
|
|
@@ -41949,11 +42015,11 @@ var CreatorProfileSummary = ({
|
|
|
41949
42015
|
/* @__PURE__ */ (0, import_jsx_runtime155.jsxs)("div", { className: "flex gap-3 mt-1", children: [
|
|
41950
42016
|
followerCount && /* @__PURE__ */ (0, import_jsx_runtime155.jsxs)("div", { className: "flex flex-col", children: [
|
|
41951
42017
|
/* @__PURE__ */ (0, import_jsx_runtime155.jsx)("span", { className: "text-[10px] uppercase tracking-wider text-muted-foreground font-bold", children: "Followers" }),
|
|
41952
|
-
/* @__PURE__ */ (0, import_jsx_runtime155.jsx)("span", { className: "text-xs font-semibold text-purple-700", children: followerCount })
|
|
42018
|
+
/* @__PURE__ */ (0, import_jsx_runtime155.jsx)("span", { className: "text-xs font-semibold text-purple-700", children: String(followerCount ?? "") })
|
|
41953
42019
|
] }),
|
|
41954
42020
|
engagementRate && /* @__PURE__ */ (0, import_jsx_runtime155.jsxs)("div", { className: "flex flex-col border-l border-purple-100 pl-3", children: [
|
|
41955
42021
|
/* @__PURE__ */ (0, import_jsx_runtime155.jsx)("span", { className: "text-[10px] uppercase tracking-wider text-muted-foreground font-bold", children: "Engagement" }),
|
|
41956
|
-
/* @__PURE__ */ (0, import_jsx_runtime155.jsx)("span", { className: "text-xs font-semibold text-indigo-600", children: engagementRate })
|
|
42022
|
+
/* @__PURE__ */ (0, import_jsx_runtime155.jsx)("span", { className: "text-xs font-semibold text-indigo-600", children: String(engagementRate ?? "") })
|
|
41957
42023
|
] })
|
|
41958
42024
|
] })
|
|
41959
42025
|
] })
|
|
@@ -41969,6 +42035,7 @@ var AudienceMetricCard = ({
|
|
|
41969
42035
|
metrics,
|
|
41970
42036
|
className
|
|
41971
42037
|
}) => {
|
|
42038
|
+
const safeMetrics = Array.isArray(metrics) ? metrics : [];
|
|
41972
42039
|
return /* @__PURE__ */ (0, import_jsx_runtime156.jsxs)(
|
|
41973
42040
|
Card,
|
|
41974
42041
|
{
|
|
@@ -41978,10 +42045,10 @@ var AudienceMetricCard = ({
|
|
|
41978
42045
|
),
|
|
41979
42046
|
children: [
|
|
41980
42047
|
/* @__PURE__ */ (0, import_jsx_runtime156.jsx)(CardHeader, { className: "pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime156.jsx)(CardTitle, { className: "text-lg font-bold text-gray-900", children: title }) }),
|
|
41981
|
-
/* @__PURE__ */ (0, import_jsx_runtime156.jsx)(CardContent, { className: "space-y-4", children:
|
|
42048
|
+
/* @__PURE__ */ (0, import_jsx_runtime156.jsx)(CardContent, { className: "space-y-4", children: safeMetrics.map((metric, i) => /* @__PURE__ */ (0, import_jsx_runtime156.jsxs)("div", { className: "space-y-1.5", children: [
|
|
41982
42049
|
/* @__PURE__ */ (0, import_jsx_runtime156.jsxs)("div", { className: "flex justify-between items-center text-sm", children: [
|
|
41983
|
-
/* @__PURE__ */ (0, import_jsx_runtime156.jsx)("span", { className: "font-medium text-gray-700", children: metric.label }),
|
|
41984
|
-
/* @__PURE__ */ (0, import_jsx_runtime156.jsx)("span", { className: "font-bold text-gray-900", children: metric.value })
|
|
42050
|
+
/* @__PURE__ */ (0, import_jsx_runtime156.jsx)("span", { className: "font-medium text-gray-700", children: String(metric.label ?? "") }),
|
|
42051
|
+
/* @__PURE__ */ (0, import_jsx_runtime156.jsx)("span", { className: "font-bold text-gray-900", children: String(metric.value ?? "") })
|
|
41985
42052
|
] }),
|
|
41986
42053
|
metric.percentage !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime156.jsx)(
|
|
41987
42054
|
ProgressAtom,
|
|
@@ -42087,9 +42154,10 @@ var BrandAffinityGroup = ({
|
|
|
42087
42154
|
brands,
|
|
42088
42155
|
className
|
|
42089
42156
|
}) => {
|
|
42157
|
+
const safeBrands = Array.isArray(brands) ? brands : [];
|
|
42090
42158
|
return /* @__PURE__ */ (0, import_jsx_runtime158.jsxs)("div", { className: cn("flex flex-col gap-3", className), children: [
|
|
42091
42159
|
/* @__PURE__ */ (0, import_jsx_runtime158.jsx)("h5", { className: "text-[10px] font-bold uppercase tracking-widest text-muted-foreground", children: "Recent Collaborations" }),
|
|
42092
|
-
/* @__PURE__ */ (0, import_jsx_runtime158.jsx)("div", { className: "flex flex-wrap gap-4 items-center", children:
|
|
42160
|
+
/* @__PURE__ */ (0, import_jsx_runtime158.jsx)("div", { className: "flex flex-wrap gap-4 items-center", children: safeBrands.map((brand, i) => /* @__PURE__ */ (0, import_jsx_runtime158.jsxs)("div", { className: "group relative", children: [
|
|
42093
42161
|
/* @__PURE__ */ (0, import_jsx_runtime158.jsx)("div", { className: "h-10 w-10 overflow-hidden rounded-xl bg-white border border-gray-100 p-1.5 flex items-center justify-center grayscale hover:grayscale-0 transition-all duration-300 hover:scale-110 shadow-sm hover:shadow-md", children: /* @__PURE__ */ (0, import_jsx_runtime158.jsx)(
|
|
42094
42162
|
"img",
|
|
42095
42163
|
{
|
|
@@ -42098,7 +42166,7 @@ var BrandAffinityGroup = ({
|
|
|
42098
42166
|
className: "max-h-full max-w-full object-contain"
|
|
42099
42167
|
}
|
|
42100
42168
|
) }),
|
|
42101
|
-
/* @__PURE__ */ (0, import_jsx_runtime158.jsx)("div", { className: "absolute -bottom-6 left-1/2 -translate-x-1/2 px-2 py-0.5 bg-gray-900 text-white text-[10px] rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-50 pointer-events-none", children: brand.name })
|
|
42169
|
+
/* @__PURE__ */ (0, import_jsx_runtime158.jsx)("div", { className: "absolute -bottom-6 left-1/2 -translate-x-1/2 px-2 py-0.5 bg-gray-900 text-white text-[10px] rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-50 pointer-events-none", children: String(brand.name ?? "") })
|
|
42102
42170
|
] }, i)) })
|
|
42103
42171
|
] });
|
|
42104
42172
|
};
|
|
@@ -42109,7 +42177,8 @@ var ContentPreviewGallery = ({
|
|
|
42109
42177
|
items,
|
|
42110
42178
|
className
|
|
42111
42179
|
}) => {
|
|
42112
|
-
|
|
42180
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
42181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime159.jsx)("div", { className: cn("grid grid-cols-2 gap-2", className), children: safeItems.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime159.jsxs)(
|
|
42113
42182
|
"a",
|
|
42114
42183
|
{
|
|
42115
42184
|
href: item.url || "#",
|
|
@@ -42219,6 +42288,7 @@ var TopPostsGrid = ({
|
|
|
42219
42288
|
posts,
|
|
42220
42289
|
className
|
|
42221
42290
|
}) => {
|
|
42291
|
+
const safePosts = Array.isArray(posts) ? posts : [];
|
|
42222
42292
|
return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
|
|
42223
42293
|
"div",
|
|
42224
42294
|
{
|
|
@@ -42226,7 +42296,7 @@ var TopPostsGrid = ({
|
|
|
42226
42296
|
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
42227
42297
|
className
|
|
42228
42298
|
),
|
|
42229
|
-
children:
|
|
42299
|
+
children: safePosts.map((post, i) => /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)(
|
|
42230
42300
|
"div",
|
|
42231
42301
|
{
|
|
42232
42302
|
className: "group relative aspect-square overflow-hidden rounded-2xl bg-gray-100 border border-purple-50",
|
|
@@ -42244,20 +42314,20 @@ var TopPostsGrid = ({
|
|
|
42244
42314
|
/* @__PURE__ */ (0, import_jsx_runtime162.jsxs)("span", { className: "flex items-center gap-1", children: [
|
|
42245
42315
|
/* @__PURE__ */ (0, import_jsx_runtime162.jsx)(Heart, { className: "w-3 h-3 fill-white" }),
|
|
42246
42316
|
" ",
|
|
42247
|
-
post.likes
|
|
42317
|
+
String(post.likes ?? "")
|
|
42248
42318
|
] }),
|
|
42249
42319
|
/* @__PURE__ */ (0, import_jsx_runtime162.jsxs)("span", { className: "flex items-center gap-1", children: [
|
|
42250
42320
|
/* @__PURE__ */ (0, import_jsx_runtime162.jsx)(MessageCircle, { className: "w-3 h-3 fill-white" }),
|
|
42251
42321
|
" ",
|
|
42252
|
-
post.comments
|
|
42322
|
+
String(post.comments ?? "")
|
|
42253
42323
|
] }),
|
|
42254
42324
|
/* @__PURE__ */ (0, import_jsx_runtime162.jsxs)("span", { className: "flex items-center gap-1", children: [
|
|
42255
42325
|
/* @__PURE__ */ (0, import_jsx_runtime162.jsx)(ChartColumn, { className: "w-3 h-3" }),
|
|
42256
42326
|
" ",
|
|
42257
|
-
post.engagement
|
|
42327
|
+
String(post.engagement ?? "")
|
|
42258
42328
|
] })
|
|
42259
42329
|
] }),
|
|
42260
|
-
/* @__PURE__ */ (0, import_jsx_runtime162.jsx)("span", { className: "text-[10px] text-gray-300 mt-2", children: post.date })
|
|
42330
|
+
/* @__PURE__ */ (0, import_jsx_runtime162.jsx)("span", { className: "text-[10px] text-gray-300 mt-2", children: String(post.date ?? "") })
|
|
42261
42331
|
] })
|
|
42262
42332
|
]
|
|
42263
42333
|
},
|
|
@@ -42277,6 +42347,7 @@ var CreatorActionHeader = ({
|
|
|
42277
42347
|
actions,
|
|
42278
42348
|
className
|
|
42279
42349
|
}) => {
|
|
42350
|
+
const safeActions = Array.isArray(actions) ? actions : [];
|
|
42280
42351
|
return /* @__PURE__ */ (0, import_jsx_runtime163.jsxs)(
|
|
42281
42352
|
"div",
|
|
42282
42353
|
{
|
|
@@ -42300,17 +42371,17 @@ var CreatorActionHeader = ({
|
|
|
42300
42371
|
/* @__PURE__ */ (0, import_jsx_runtime163.jsxs)("div", { className: "flex flex-col md:flex-row items-start md:items-end gap-6", children: [
|
|
42301
42372
|
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)("div", { className: "p-2 bg-white rounded-[32px] shadow-lg", children: /* @__PURE__ */ (0, import_jsx_runtime163.jsxs)(Avatar, { className: "h-32 w-32 rounded-[24px] border-4 border-white", children: [
|
|
42302
42373
|
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)(AvatarImage, { src: avatarSrc, className: "rounded-[24px]" }),
|
|
42303
|
-
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)(AvatarFallback, { className: "rounded-[24px] bg-purple-50 text-purple-600 text-3xl font-bold", children: name.charAt(0) })
|
|
42374
|
+
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)(AvatarFallback, { className: "rounded-[24px] bg-purple-50 text-purple-600 text-3xl font-bold", children: (name ?? "").charAt(0) })
|
|
42304
42375
|
] }) }),
|
|
42305
42376
|
/* @__PURE__ */ (0, import_jsx_runtime163.jsxs)("div", { className: "mb-2", children: [
|
|
42306
|
-
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)("h1", { className: "text-3xl font-bold text-gray-900 tracking-tight", children: name }),
|
|
42377
|
+
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)("h1", { className: "text-3xl font-bold text-gray-900 tracking-tight", children: String(name ?? "") }),
|
|
42307
42378
|
/* @__PURE__ */ (0, import_jsx_runtime163.jsxs)("p", { className: "text-purple-600 font-medium tracking-wide", children: [
|
|
42308
42379
|
"@",
|
|
42309
|
-
handle
|
|
42380
|
+
String(handle ?? "")
|
|
42310
42381
|
] })
|
|
42311
42382
|
] })
|
|
42312
42383
|
] }),
|
|
42313
|
-
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)("div", { className: "flex items-center gap-3 mb-2", children:
|
|
42384
|
+
/* @__PURE__ */ (0, import_jsx_runtime163.jsx)("div", { className: "flex items-center gap-3 mb-2", children: safeActions.map((action, i) => /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(
|
|
42314
42385
|
Button,
|
|
42315
42386
|
{
|
|
42316
42387
|
variant: action.variant || "default",
|
|
@@ -42318,7 +42389,7 @@ var CreatorActionHeader = ({
|
|
|
42318
42389
|
"rounded-2xl px-6 h-11 font-bold transition-all",
|
|
42319
42390
|
action.variant === "default" && "bg-purple-600 hover:bg-purple-700 shadow-md hover:shadow-purple-200"
|
|
42320
42391
|
),
|
|
42321
|
-
children: action.label
|
|
42392
|
+
children: String(action.label ?? "")
|
|
42322
42393
|
},
|
|
42323
42394
|
i
|
|
42324
42395
|
)) })
|
|
@@ -42353,7 +42424,7 @@ var CreatorSearch = import_react84.default.memo(
|
|
|
42353
42424
|
{
|
|
42354
42425
|
id: `platform-${p}`,
|
|
42355
42426
|
type: "badge",
|
|
42356
|
-
label: p,
|
|
42427
|
+
label: String(p ?? ""),
|
|
42357
42428
|
variant: "outline",
|
|
42358
42429
|
className: "bg-background bg-gray200 border-gray400 text-white font-medium"
|
|
42359
42430
|
},
|
|
@@ -42950,6 +43021,7 @@ function CreatorCompactView({
|
|
|
42950
43021
|
timeDisplay,
|
|
42951
43022
|
isLoading
|
|
42952
43023
|
}) {
|
|
43024
|
+
const safeVersions = Array.isArray(versions) ? versions : [];
|
|
42953
43025
|
const isComplete = versionStatus === "completed" || versionStatus === "complete";
|
|
42954
43026
|
const statusTitle = isComplete ? "Creator Search Complete" : versionStatus === "failed" ? "Creator Search Failed" : "Creator Search Processing";
|
|
42955
43027
|
if (isLoading) {
|
|
@@ -42961,7 +43033,7 @@ function CreatorCompactView({
|
|
|
42961
43033
|
/* @__PURE__ */ (0, import_jsx_runtime169.jsx)("h4", { className: "w-fit rounded-md bg-purple200 px-2 py-[4px] text-xs font-medium text-purpleText", children: "VERIFIED CREATORS LIST" }),
|
|
42962
43034
|
/* @__PURE__ */ (0, import_jsx_runtime169.jsx)("h3", { className: "text-gray900 md:text-lg font-bold", children: statusTitle })
|
|
42963
43035
|
] }),
|
|
42964
|
-
|
|
43036
|
+
safeVersions.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime169.jsx)("div", { className: "relative md:self-start", children: /* @__PURE__ */ (0, import_jsx_runtime169.jsxs)(DropdownMenu, { children: [
|
|
42965
43037
|
/* @__PURE__ */ (0, import_jsx_runtime169.jsxs)(
|
|
42966
43038
|
DropdownMenuTrigger,
|
|
42967
43039
|
{
|
|
@@ -42974,7 +43046,7 @@ function CreatorCompactView({
|
|
|
42974
43046
|
]
|
|
42975
43047
|
}
|
|
42976
43048
|
),
|
|
42977
|
-
/* @__PURE__ */ (0, import_jsx_runtime169.jsx)(DropdownMenuContent, { className: "bg-[var(--creator-dropdown-bg)] border-2 border-gray400 min-w-[120px] max-h-[150px] overflow-y-auto", children:
|
|
43049
|
+
/* @__PURE__ */ (0, import_jsx_runtime169.jsx)(DropdownMenuContent, { className: "bg-[var(--creator-dropdown-bg)] border-2 border-gray400 min-w-[120px] max-h-[150px] overflow-y-auto", children: safeVersions.map((v) => /* @__PURE__ */ (0, import_jsx_runtime169.jsxs)(
|
|
42978
43050
|
DropdownMenuItem,
|
|
42979
43051
|
{
|
|
42980
43052
|
onClick: () => onVersionSelect(v),
|
|
@@ -43663,8 +43735,9 @@ function filterPostsByPlatform(posts, platform) {
|
|
|
43663
43735
|
}
|
|
43664
43736
|
function PlatformMetricsBanner({
|
|
43665
43737
|
platform,
|
|
43666
|
-
metrics
|
|
43738
|
+
metrics: metricsProp
|
|
43667
43739
|
}) {
|
|
43740
|
+
const metrics = metricsProp ?? {};
|
|
43668
43741
|
const platformName = getPlatformName(platform);
|
|
43669
43742
|
const bgColor = getPlatformBgColor(platform);
|
|
43670
43743
|
const IconComponent = getPlatformIcon(platform);
|
|
@@ -43694,7 +43767,7 @@ function PlatformMetricsBanner({
|
|
|
43694
43767
|
] }),
|
|
43695
43768
|
/* @__PURE__ */ (0, import_jsx_runtime173.jsxs)("div", { className: "flex flex-col items-start md:min-w-0", children: [
|
|
43696
43769
|
/* @__PURE__ */ (0, import_jsx_runtime173.jsxs)("span", { className: "text-xs md:text-md font-semibold text-gray900", children: [
|
|
43697
|
-
(metrics
|
|
43770
|
+
((metrics?.engagementRate ?? 0) * 100).toFixed(2),
|
|
43698
43771
|
"%"
|
|
43699
43772
|
] }),
|
|
43700
43773
|
/* @__PURE__ */ (0, import_jsx_runtime173.jsx)("span", { className: "text-xs text-gray900 opacity-80", children: "Engagement Rate" })
|