@underverse-ui/underverse 0.2.35 → 0.2.37
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 +47 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +47 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -542,7 +542,27 @@ var Badge_default = Badge;
|
|
|
542
542
|
// ../../components/ui/Card.tsx
|
|
543
543
|
var import_react2 = require("react");
|
|
544
544
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
545
|
-
var
|
|
545
|
+
var getPaddingInfo = (className) => {
|
|
546
|
+
if (!className) return { hasAll: false, hasX: false, hasY: false };
|
|
547
|
+
const hasAll = /\b(p)-\d+|\b(p)-\[/.test(className) || /\bmd:p-|lg:p-|sm:p-|xl:p-/.test(className);
|
|
548
|
+
const hasX = /\b(px|pl|pr|ps|pe)-/.test(className);
|
|
549
|
+
const hasY = /\b(py|pt|pb)-/.test(className);
|
|
550
|
+
return { hasAll, hasX, hasY };
|
|
551
|
+
};
|
|
552
|
+
var Card = ({
|
|
553
|
+
title,
|
|
554
|
+
description,
|
|
555
|
+
children,
|
|
556
|
+
footer,
|
|
557
|
+
className,
|
|
558
|
+
hoverable = false,
|
|
559
|
+
clickable = false,
|
|
560
|
+
innerClassName,
|
|
561
|
+
contentClassName,
|
|
562
|
+
noPadding = false,
|
|
563
|
+
onClick,
|
|
564
|
+
...rest
|
|
565
|
+
}) => {
|
|
546
566
|
const [isHovered, setIsHovered] = (0, import_react2.useState)(false);
|
|
547
567
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
548
568
|
"div",
|
|
@@ -582,7 +602,13 @@ var Card = ({ title, description, children, footer, className, hoverable = false
|
|
|
582
602
|
),
|
|
583
603
|
description && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm md:text-base text-muted-foreground leading-relaxed", children: description })
|
|
584
604
|
] }),
|
|
585
|
-
children &&
|
|
605
|
+
children && (() => {
|
|
606
|
+
const padding = getPaddingInfo(contentClassName);
|
|
607
|
+
const skipAllPadding = noPadding || padding.hasAll;
|
|
608
|
+
const defaultPaddingX = !skipAllPadding && !padding.hasX ? "px-4 md:px-6" : "";
|
|
609
|
+
const defaultPaddingY = !skipAllPadding && !padding.hasY ? "pt-0 pb-4 md:pb-6" : "";
|
|
610
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn("relative", defaultPaddingX, defaultPaddingY, contentClassName), children });
|
|
611
|
+
})(),
|
|
586
612
|
footer && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "relative flex items-center p-4 md:p-6 pt-0 border-t border-border mt-4", children: footer })
|
|
587
613
|
] })
|
|
588
614
|
}
|
|
@@ -2580,13 +2606,30 @@ var Modal = ({
|
|
|
2580
2606
|
document.body.style.overflow = "unset";
|
|
2581
2607
|
};
|
|
2582
2608
|
}, [isOpen]);
|
|
2609
|
+
const isInsidePortal = (element) => {
|
|
2610
|
+
if (!element) return false;
|
|
2611
|
+
let current = element;
|
|
2612
|
+
while (current) {
|
|
2613
|
+
if (current.hasAttribute?.("data-datepicker") || current.hasAttribute?.("data-popover") || current.hasAttribute?.("data-dropdown") || current.hasAttribute?.("data-dropdown-menu") || current.hasAttribute?.("data-radix-popper-content-wrapper") || current.hasAttribute?.("data-radix-portal") || current.getAttribute?.("role") === "listbox" || current.getAttribute?.("role") === "dialog" || current.classList?.contains("datepicker-portal") || current.classList?.contains("popover-portal")) {
|
|
2614
|
+
return true;
|
|
2615
|
+
}
|
|
2616
|
+
current = current.parentElement;
|
|
2617
|
+
}
|
|
2618
|
+
return false;
|
|
2619
|
+
};
|
|
2583
2620
|
const handleOverlayMouseDown = (event) => {
|
|
2584
2621
|
mouseDownTarget.current = event.target;
|
|
2585
2622
|
};
|
|
2586
2623
|
const handleOverlayMouseUp = (event) => {
|
|
2587
2624
|
const modalContent2 = modalContentRef.current;
|
|
2588
|
-
const
|
|
2589
|
-
const
|
|
2625
|
+
const mouseDownTarget_ = mouseDownTarget.current;
|
|
2626
|
+
const mouseUpTarget = event.target;
|
|
2627
|
+
if (isInsidePortal(mouseDownTarget_) || isInsidePortal(mouseUpTarget)) {
|
|
2628
|
+
mouseDownTarget.current = null;
|
|
2629
|
+
return;
|
|
2630
|
+
}
|
|
2631
|
+
const mouseDownOutside = modalContent2 && !modalContent2.contains(mouseDownTarget_);
|
|
2632
|
+
const mouseUpOutside = modalContent2 && !modalContent2.contains(mouseUpTarget);
|
|
2590
2633
|
if (closeOnOverlayClick && mouseDownOutside && mouseUpOutside) {
|
|
2591
2634
|
onClose();
|
|
2592
2635
|
}
|