@lindle/linoardo 1.0.10 → 1.0.12
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 +140 -803
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +220 -273
- package/dist/index.d.ts +220 -273
- package/dist/index.js +140 -802
- package/dist/index.js.map +1 -1
- package/dist/styles.css +117 -42
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var React3 = require('react');
|
|
4
4
|
var tailwindMerge = require('tailwind-merge');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
-
var reactDom = require('react-dom');
|
|
7
6
|
|
|
8
7
|
function _interopNamespace(e) {
|
|
9
8
|
if (e && e.__esModule) return e;
|
|
@@ -23,7 +22,7 @@ function _interopNamespace(e) {
|
|
|
23
22
|
return Object.freeze(n);
|
|
24
23
|
}
|
|
25
24
|
|
|
26
|
-
var
|
|
25
|
+
var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
|
|
27
26
|
|
|
28
27
|
// src/Containment/Button/index.tsx
|
|
29
28
|
|
|
@@ -152,7 +151,7 @@ var sizeClasses = {
|
|
|
152
151
|
large: "px-6 py-3 text-lg",
|
|
153
152
|
"x-large": "px-7 py-3.5 text-xl"
|
|
154
153
|
};
|
|
155
|
-
var Button =
|
|
154
|
+
var Button = React3__namespace.forwardRef(
|
|
156
155
|
({
|
|
157
156
|
variant = "solid",
|
|
158
157
|
color = "primary",
|
|
@@ -323,7 +322,7 @@ var resolveIconClassName2 = (icon) => {
|
|
|
323
322
|
const normalized = iconName.startsWith("mdi-") ? iconName : `mdi-${iconName}`;
|
|
324
323
|
return Array.from(/* @__PURE__ */ new Set([...baseClasses, normalized])).join(" ");
|
|
325
324
|
};
|
|
326
|
-
var Chip =
|
|
325
|
+
var Chip = React3.forwardRef(
|
|
327
326
|
({
|
|
328
327
|
variant = "solid",
|
|
329
328
|
color = "primary",
|
|
@@ -355,7 +354,7 @@ var Chip = React5__namespace.forwardRef(
|
|
|
355
354
|
const appendIconClassName = resolveIconClassName2(appendIcon);
|
|
356
355
|
const closeIconClassName = resolveIconClassName2(closeIcon);
|
|
357
356
|
const filterIconClassName = filter && selected ? resolveIconClassName2(filterIcon) : void 0;
|
|
358
|
-
const handleClick =
|
|
357
|
+
const handleClick = React3.useCallback(
|
|
359
358
|
(event) => {
|
|
360
359
|
if (disabled) {
|
|
361
360
|
event.preventDefault();
|
|
@@ -366,7 +365,7 @@ var Chip = React5__namespace.forwardRef(
|
|
|
366
365
|
},
|
|
367
366
|
[disabled, onClick]
|
|
368
367
|
);
|
|
369
|
-
const handleKeyDown =
|
|
368
|
+
const handleKeyDown = React3.useCallback(
|
|
370
369
|
(event) => {
|
|
371
370
|
onKeyDown?.(event);
|
|
372
371
|
if (event.defaultPrevented || disabled || !interactive) {
|
|
@@ -379,7 +378,7 @@ var Chip = React5__namespace.forwardRef(
|
|
|
379
378
|
},
|
|
380
379
|
[disabled, interactive, onKeyDown]
|
|
381
380
|
);
|
|
382
|
-
const handleCloseClick =
|
|
381
|
+
const handleCloseClick = React3.useCallback(
|
|
383
382
|
(event) => {
|
|
384
383
|
event.stopPropagation();
|
|
385
384
|
if (disabled) {
|
|
@@ -390,7 +389,7 @@ var Chip = React5__namespace.forwardRef(
|
|
|
390
389
|
},
|
|
391
390
|
[disabled, onClose]
|
|
392
391
|
);
|
|
393
|
-
const handleCloseKeyDown =
|
|
392
|
+
const handleCloseKeyDown = React3.useCallback((event) => {
|
|
394
393
|
if (event.key === " " || event.key === "Enter") {
|
|
395
394
|
event.stopPropagation();
|
|
396
395
|
}
|
|
@@ -462,7 +461,7 @@ var accentClasses = {
|
|
|
462
461
|
surface: { text: "text-gray-900", bg: "bg-gray-100", indicator: "bg-gray-900" },
|
|
463
462
|
bw: { text: "text-gray-900", bg: "bg-gray-100", indicator: "bg-gray-900" }
|
|
464
463
|
};
|
|
465
|
-
var ListItem =
|
|
464
|
+
var ListItem = React3__namespace.forwardRef((props, ref) => {
|
|
466
465
|
const {
|
|
467
466
|
component,
|
|
468
467
|
href,
|
|
@@ -579,13 +578,13 @@ var listRoundedClasses = {
|
|
|
579
578
|
pill: "rounded-full"
|
|
580
579
|
};
|
|
581
580
|
var isListItemElement = (element) => {
|
|
582
|
-
if (!
|
|
581
|
+
if (!React3__namespace.isValidElement(element)) {
|
|
583
582
|
return false;
|
|
584
583
|
}
|
|
585
584
|
const elementType = element.type;
|
|
586
585
|
return element.type === Item_default || elementType.displayName === Item_default.displayName;
|
|
587
586
|
};
|
|
588
|
-
var List =
|
|
587
|
+
var List = React3__namespace.forwardRef((props, ref) => {
|
|
589
588
|
const {
|
|
590
589
|
variant = "solid",
|
|
591
590
|
density = "default",
|
|
@@ -607,11 +606,11 @@ var List = React5__namespace.forwardRef((props, ref) => {
|
|
|
607
606
|
const navClass = nav ? "py-1" : void 0;
|
|
608
607
|
const accentColor = color;
|
|
609
608
|
const enhanceChild = (child) => {
|
|
610
|
-
if (!
|
|
609
|
+
if (!React3__namespace.isValidElement(child)) {
|
|
611
610
|
return child;
|
|
612
611
|
}
|
|
613
612
|
if (isListItemElement(child)) {
|
|
614
|
-
return
|
|
613
|
+
return React3__namespace.cloneElement(child, {
|
|
615
614
|
density: child.props.density ?? density,
|
|
616
615
|
lines: child.props.lines ?? lines,
|
|
617
616
|
nav: child.props.nav ?? nav,
|
|
@@ -621,14 +620,14 @@ var List = React5__namespace.forwardRef((props, ref) => {
|
|
|
621
620
|
});
|
|
622
621
|
}
|
|
623
622
|
if (child.props && typeof child.props === "object" && "children" in child.props) {
|
|
624
|
-
const nestedChildren =
|
|
623
|
+
const nestedChildren = React3__namespace.Children.map(child.props.children, enhanceChild);
|
|
625
624
|
if (nestedChildren !== child.props.children) {
|
|
626
|
-
return
|
|
625
|
+
return React3__namespace.cloneElement(child, void 0, nestedChildren);
|
|
627
626
|
}
|
|
628
627
|
}
|
|
629
628
|
return child;
|
|
630
629
|
};
|
|
631
|
-
const resolvedChildren =
|
|
630
|
+
const resolvedChildren = React3__namespace.Children.map(children, enhanceChild);
|
|
632
631
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
633
632
|
"div",
|
|
634
633
|
{
|
|
@@ -642,8 +641,6 @@ var List = React5__namespace.forwardRef((props, ref) => {
|
|
|
642
641
|
});
|
|
643
642
|
List.displayName = "List";
|
|
644
643
|
var List_default = List;
|
|
645
|
-
var isBrowser = typeof window !== "undefined";
|
|
646
|
-
var useIsomorphicLayoutEffect = isBrowser ? React5__namespace.useLayoutEffect : React5__namespace.useEffect;
|
|
647
644
|
var placementClasses = {
|
|
648
645
|
"bottom-start": "left-0 top-full origin-top-left",
|
|
649
646
|
bottom: "left-1/2 top-full -translate-x-1/2 origin-top",
|
|
@@ -656,350 +653,75 @@ var offsetClasses = {
|
|
|
656
653
|
top: "mb-2",
|
|
657
654
|
bottom: "mt-2"
|
|
658
655
|
};
|
|
659
|
-
var menuBaseClasses = "absolute z-50 min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150
|
|
656
|
+
var menuBaseClasses = "absolute z-50 min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2";
|
|
660
657
|
var overlayBaseClasses = "fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]";
|
|
661
|
-
var Menu =
|
|
658
|
+
var Menu = React3__namespace.forwardRef((props, ref) => {
|
|
662
659
|
const {
|
|
663
660
|
activator,
|
|
664
661
|
children,
|
|
665
|
-
open: openProp,
|
|
666
|
-
defaultOpen = false,
|
|
667
|
-
onOpenChange,
|
|
668
662
|
placement = "bottom-start",
|
|
669
|
-
|
|
670
|
-
|
|
663
|
+
open,
|
|
664
|
+
openOnHover = true,
|
|
665
|
+
openOnFocus = true,
|
|
671
666
|
matchActivatorWidth = false,
|
|
672
667
|
keepMounted = false,
|
|
673
|
-
disabled = false,
|
|
674
668
|
scrim = false,
|
|
675
669
|
contentClassName,
|
|
676
670
|
contentProps,
|
|
677
671
|
overlayClassName,
|
|
678
672
|
className,
|
|
679
|
-
onMouseEnter: rootMouseEnter,
|
|
680
|
-
onMouseLeave: rootMouseLeave,
|
|
681
673
|
...rest
|
|
682
674
|
} = props;
|
|
683
|
-
const
|
|
684
|
-
const
|
|
685
|
-
const
|
|
686
|
-
const
|
|
687
|
-
const
|
|
688
|
-
const
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
const activatorRef = React5__namespace.useRef(null);
|
|
692
|
-
const closeTimeoutRef = React5__namespace.useRef(null);
|
|
693
|
-
const mergedRootRef = React5__namespace.useCallback(
|
|
694
|
-
(node) => {
|
|
695
|
-
localRootRef.current = node;
|
|
696
|
-
if (typeof ref === "function") {
|
|
697
|
-
ref(node);
|
|
698
|
-
} else if (ref) {
|
|
699
|
-
ref.current = node;
|
|
700
|
-
}
|
|
701
|
-
},
|
|
702
|
-
[ref]
|
|
703
|
-
);
|
|
704
|
-
const [activatorWidth, setActivatorWidth] = React5__namespace.useState();
|
|
705
|
-
const updateActivatorWidth = React5__namespace.useCallback(() => {
|
|
706
|
-
if (!matchActivatorWidth) {
|
|
707
|
-
setActivatorWidth(void 0);
|
|
708
|
-
return;
|
|
709
|
-
}
|
|
710
|
-
const node = activatorRef.current;
|
|
711
|
-
if (!node) {
|
|
712
|
-
return;
|
|
713
|
-
}
|
|
714
|
-
setActivatorWidth(node.getBoundingClientRect().width);
|
|
715
|
-
}, [matchActivatorWidth]);
|
|
716
|
-
useIsomorphicLayoutEffect(() => {
|
|
717
|
-
if (!matchActivatorWidth) {
|
|
718
|
-
return;
|
|
719
|
-
}
|
|
720
|
-
updateActivatorWidth();
|
|
721
|
-
if (!activatorRef.current || typeof ResizeObserver === "undefined") {
|
|
722
|
-
return;
|
|
723
|
-
}
|
|
724
|
-
const observer = new ResizeObserver(() => updateActivatorWidth());
|
|
725
|
-
observer.observe(activatorRef.current);
|
|
726
|
-
return () => observer.disconnect();
|
|
727
|
-
}, [matchActivatorWidth, updateActivatorWidth]);
|
|
728
|
-
const setOpen = React5__namespace.useCallback(
|
|
729
|
-
(nextOpen) => {
|
|
730
|
-
if (disabled || open === nextOpen) {
|
|
731
|
-
return;
|
|
732
|
-
}
|
|
733
|
-
if (!isControlled) {
|
|
734
|
-
setInternalOpen(nextOpen);
|
|
735
|
-
}
|
|
736
|
-
onOpenChange?.(nextOpen);
|
|
737
|
-
},
|
|
738
|
-
[disabled, isControlled, onOpenChange, open]
|
|
739
|
-
);
|
|
740
|
-
React5__namespace.useEffect(() => {
|
|
741
|
-
if (!disabled || !open) {
|
|
742
|
-
return;
|
|
743
|
-
}
|
|
744
|
-
if (!isControlled) {
|
|
745
|
-
setInternalOpen(false);
|
|
746
|
-
}
|
|
747
|
-
onOpenChange?.(false);
|
|
748
|
-
}, [disabled, open, isControlled, onOpenChange]);
|
|
749
|
-
React5__namespace.useEffect(() => {
|
|
750
|
-
if (!open) {
|
|
751
|
-
return;
|
|
752
|
-
}
|
|
753
|
-
const handlePointerDown = (event) => {
|
|
754
|
-
const target = event.target;
|
|
755
|
-
if (!target) {
|
|
756
|
-
return;
|
|
757
|
-
}
|
|
758
|
-
if (localRootRef.current?.contains(target)) {
|
|
759
|
-
return;
|
|
760
|
-
}
|
|
761
|
-
setOpen(false);
|
|
762
|
-
};
|
|
763
|
-
const handleKeyDown = (event) => {
|
|
764
|
-
if (event.key === "Escape") {
|
|
765
|
-
event.stopPropagation();
|
|
766
|
-
setOpen(false);
|
|
767
|
-
activatorRef.current?.focus();
|
|
768
|
-
}
|
|
769
|
-
};
|
|
770
|
-
document.addEventListener("pointerdown", handlePointerDown);
|
|
771
|
-
document.addEventListener("keydown", handleKeyDown);
|
|
772
|
-
return () => {
|
|
773
|
-
document.removeEventListener("pointerdown", handlePointerDown);
|
|
774
|
-
document.removeEventListener("keydown", handleKeyDown);
|
|
775
|
-
};
|
|
776
|
-
}, [open, setOpen]);
|
|
777
|
-
React5__namespace.useEffect(() => {
|
|
778
|
-
if (!open) {
|
|
779
|
-
return;
|
|
780
|
-
}
|
|
781
|
-
const node = menuRef.current;
|
|
782
|
-
if (!node) {
|
|
783
|
-
return;
|
|
784
|
-
}
|
|
785
|
-
const id = window.requestAnimationFrame(() => {
|
|
786
|
-
node.focus({ preventScroll: true });
|
|
787
|
-
});
|
|
788
|
-
return () => window.cancelAnimationFrame(id);
|
|
789
|
-
}, [open]);
|
|
790
|
-
const setActivatorNode = React5__namespace.useCallback(
|
|
791
|
-
(node) => {
|
|
792
|
-
activatorRef.current = node;
|
|
793
|
-
if (node && matchActivatorWidth) {
|
|
794
|
-
setActivatorWidth(node.getBoundingClientRect().width);
|
|
795
|
-
}
|
|
796
|
-
},
|
|
797
|
-
[matchActivatorWidth]
|
|
798
|
-
);
|
|
799
|
-
const handleActivatorClick = React5__namespace.useCallback(
|
|
800
|
-
(event) => {
|
|
801
|
-
event.preventDefault();
|
|
802
|
-
if (disabled) {
|
|
803
|
-
return;
|
|
804
|
-
}
|
|
805
|
-
setOpen(!open);
|
|
806
|
-
},
|
|
807
|
-
[disabled, open, setOpen]
|
|
808
|
-
);
|
|
809
|
-
const handleActivatorKeyDown = React5__namespace.useCallback(
|
|
810
|
-
(event) => {
|
|
811
|
-
if (event.key === "Enter" || event.key === " ") {
|
|
812
|
-
event.preventDefault();
|
|
813
|
-
setOpen(!open);
|
|
814
|
-
}
|
|
815
|
-
if (event.key === "ArrowDown") {
|
|
816
|
-
event.preventDefault();
|
|
817
|
-
setOpen(true);
|
|
818
|
-
}
|
|
819
|
-
},
|
|
820
|
-
[open, setOpen]
|
|
821
|
-
);
|
|
822
|
-
const clearCloseTimeout = React5__namespace.useCallback(() => {
|
|
823
|
-
if (closeTimeoutRef.current !== null) {
|
|
824
|
-
if (isBrowser) {
|
|
825
|
-
window.clearTimeout(closeTimeoutRef.current);
|
|
826
|
-
}
|
|
827
|
-
closeTimeoutRef.current = null;
|
|
828
|
-
}
|
|
829
|
-
}, []);
|
|
830
|
-
const scheduleClose = React5__namespace.useCallback(() => {
|
|
831
|
-
if (!isBrowser) {
|
|
832
|
-
setOpen(false);
|
|
833
|
-
return;
|
|
675
|
+
const hasContent = children !== void 0 && children !== null;
|
|
676
|
+
const manual = typeof open === "boolean";
|
|
677
|
+
const visible = Boolean(open);
|
|
678
|
+
const shouldRenderContent = hasContent && (keepMounted || visible || !manual && (openOnHover || openOnFocus));
|
|
679
|
+
const verticalPlacement = placement.startsWith("top") ? "top" : "bottom";
|
|
680
|
+
const visibilityClasses = (() => {
|
|
681
|
+
if (manual) {
|
|
682
|
+
return visible ? "pointer-events-auto opacity-100 scale-100" : "pointer-events-none opacity-0 scale-95";
|
|
834
683
|
}
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
}, [clearCloseTimeout, setOpen]);
|
|
841
|
-
React5__namespace.useEffect(() => {
|
|
842
|
-
return () => clearCloseTimeout();
|
|
843
|
-
}, [clearCloseTimeout]);
|
|
844
|
-
const isMovingWithinMenu = React5__namespace.useCallback(
|
|
845
|
-
(event) => {
|
|
846
|
-
const nextTarget = event.relatedTarget;
|
|
847
|
-
if (!nextTarget || !localRootRef.current) {
|
|
848
|
-
return false;
|
|
849
|
-
}
|
|
850
|
-
return localRootRef.current.contains(nextTarget);
|
|
851
|
-
},
|
|
852
|
-
[localRootRef]
|
|
853
|
-
);
|
|
854
|
-
const handleRootMouseEnter = React5__namespace.useCallback(
|
|
855
|
-
(event) => {
|
|
856
|
-
rootMouseEnter?.(event);
|
|
857
|
-
if (event.defaultPrevented) {
|
|
858
|
-
return;
|
|
859
|
-
}
|
|
860
|
-
if (openOnHover) {
|
|
861
|
-
clearCloseTimeout();
|
|
862
|
-
setOpen(true);
|
|
863
|
-
}
|
|
864
|
-
},
|
|
865
|
-
[clearCloseTimeout, openOnHover, rootMouseEnter, setOpen]
|
|
866
|
-
);
|
|
867
|
-
const handleRootMouseLeave = React5__namespace.useCallback(
|
|
868
|
-
(event) => {
|
|
869
|
-
rootMouseLeave?.(event);
|
|
870
|
-
if (event.defaultPrevented) {
|
|
871
|
-
return;
|
|
872
|
-
}
|
|
873
|
-
if (openOnHover) {
|
|
874
|
-
if (isMovingWithinMenu(event)) {
|
|
875
|
-
return;
|
|
876
|
-
}
|
|
877
|
-
scheduleClose();
|
|
878
|
-
}
|
|
879
|
-
},
|
|
880
|
-
[isMovingWithinMenu, openOnHover, rootMouseLeave, scheduleClose]
|
|
881
|
-
);
|
|
882
|
-
const handleActivatorMouseEnter = React5__namespace.useCallback(
|
|
883
|
-
(_event) => {
|
|
884
|
-
if (disabled) {
|
|
885
|
-
return;
|
|
886
|
-
}
|
|
887
|
-
clearCloseTimeout();
|
|
888
|
-
setOpen(true);
|
|
889
|
-
},
|
|
890
|
-
[clearCloseTimeout, disabled, setOpen]
|
|
891
|
-
);
|
|
892
|
-
const handleActivatorMouseLeave = React5__namespace.useCallback(
|
|
893
|
-
(event) => {
|
|
894
|
-
if (disabled || !openOnHover) {
|
|
895
|
-
return;
|
|
896
|
-
}
|
|
897
|
-
if (isMovingWithinMenu(event)) {
|
|
898
|
-
return;
|
|
899
|
-
}
|
|
900
|
-
scheduleClose();
|
|
901
|
-
},
|
|
902
|
-
[disabled, isMovingWithinMenu, openOnHover, scheduleClose]
|
|
903
|
-
);
|
|
684
|
+
const base2 = "pointer-events-none opacity-0 scale-95";
|
|
685
|
+
const hover = openOnHover ? " group-hover/menu:pointer-events-auto group-hover/menu:opacity-100 group-hover/menu:scale-100" : "";
|
|
686
|
+
const focus = openOnFocus ? " group-focus-within/menu:pointer-events-auto group-focus-within/menu:opacity-100 group-focus-within/menu:scale-100" : "";
|
|
687
|
+
return `${base2}${hover}${focus}`;
|
|
688
|
+
})();
|
|
904
689
|
const {
|
|
905
|
-
className:
|
|
690
|
+
className: contentExtraClassName,
|
|
906
691
|
style: contentStyle,
|
|
907
|
-
onClick: contentOnClick,
|
|
908
|
-
onMouseEnter: contentOnMouseEnter,
|
|
909
|
-
onMouseLeave: contentOnMouseLeave,
|
|
910
692
|
role: contentRole,
|
|
911
693
|
tabIndex: contentTabIndex,
|
|
912
|
-
["aria-labelledby"]: ariaLabelledBy,
|
|
913
694
|
...restContentProps
|
|
914
695
|
} = contentProps ?? {};
|
|
915
|
-
const
|
|
916
|
-
const verticalPlacement = placement.startsWith("top") ? "top" : "bottom";
|
|
917
|
-
const activatorElement = activator({
|
|
918
|
-
ref: setActivatorNode,
|
|
919
|
-
id: activatorId,
|
|
920
|
-
"aria-haspopup": "menu",
|
|
921
|
-
"aria-expanded": open,
|
|
922
|
-
"aria-controls": menuId,
|
|
923
|
-
onClick: handleActivatorClick,
|
|
924
|
-
onKeyDown: handleActivatorKeyDown,
|
|
925
|
-
onMouseEnter: openOnHover ? handleActivatorMouseEnter : void 0,
|
|
926
|
-
onMouseLeave: openOnHover ? handleActivatorMouseLeave : void 0,
|
|
927
|
-
disabled,
|
|
928
|
-
open
|
|
929
|
-
});
|
|
696
|
+
const overlayNode = scrim && visible ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: tailwindMerge.twMerge(overlayBaseClasses, overlayClassName), "aria-hidden": true }) : null;
|
|
930
697
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
931
|
-
|
|
932
|
-
"div",
|
|
933
|
-
{
|
|
934
|
-
className: tailwindMerge.twMerge(overlayBaseClasses, overlayClassName),
|
|
935
|
-
"aria-hidden": true,
|
|
936
|
-
onClick: () => setOpen(false),
|
|
937
|
-
onMouseDown: (event) => event.preventDefault()
|
|
938
|
-
}
|
|
939
|
-
) : null,
|
|
698
|
+
overlayNode,
|
|
940
699
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
941
700
|
"div",
|
|
942
701
|
{
|
|
943
702
|
...rest,
|
|
944
|
-
ref
|
|
945
|
-
className: tailwindMerge.twMerge("relative inline-flex min-w-0", className),
|
|
946
|
-
"data-open":
|
|
947
|
-
onMouseEnter: openOnHover ? handleRootMouseEnter : rootMouseEnter,
|
|
948
|
-
onMouseLeave: openOnHover ? handleRootMouseLeave : rootMouseLeave,
|
|
703
|
+
ref,
|
|
704
|
+
className: tailwindMerge.twMerge("relative inline-flex min-w-0 group/menu", className),
|
|
705
|
+
"data-open": visible || void 0,
|
|
949
706
|
children: [
|
|
950
|
-
|
|
707
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex w-full min-w-0", children: activator }),
|
|
951
708
|
shouldRenderContent ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
952
709
|
"div",
|
|
953
710
|
{
|
|
954
711
|
...restContentProps,
|
|
955
|
-
ref: menuRef,
|
|
956
|
-
id: menuId,
|
|
957
|
-
role: contentRole ?? "menu",
|
|
958
|
-
tabIndex: contentTabIndex ?? -1,
|
|
959
|
-
"aria-labelledby": ariaLabelledBy ?? activatorId,
|
|
960
|
-
"data-state": open ? "open" : "closed",
|
|
961
712
|
className: tailwindMerge.twMerge(
|
|
962
713
|
menuBaseClasses,
|
|
963
714
|
placementClasses[placement],
|
|
964
715
|
offsetClasses[verticalPlacement],
|
|
716
|
+
matchActivatorWidth ? "min-w-full" : void 0,
|
|
717
|
+
visibilityClasses,
|
|
965
718
|
contentClassName,
|
|
966
|
-
|
|
719
|
+
contentExtraClassName
|
|
967
720
|
),
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
onMouseEnter: (event) => {
|
|
973
|
-
contentOnMouseEnter?.(event);
|
|
974
|
-
if (event.defaultPrevented) {
|
|
975
|
-
return;
|
|
976
|
-
}
|
|
977
|
-
if (openOnHover) {
|
|
978
|
-
clearCloseTimeout();
|
|
979
|
-
setOpen(true);
|
|
980
|
-
}
|
|
981
|
-
},
|
|
982
|
-
onMouseLeave: (event) => {
|
|
983
|
-
contentOnMouseLeave?.(event);
|
|
984
|
-
if (event.defaultPrevented) {
|
|
985
|
-
return;
|
|
986
|
-
}
|
|
987
|
-
if (openOnHover) {
|
|
988
|
-
if (isMovingWithinMenu(event)) {
|
|
989
|
-
return;
|
|
990
|
-
}
|
|
991
|
-
scheduleClose();
|
|
992
|
-
}
|
|
993
|
-
},
|
|
994
|
-
onClick: (event) => {
|
|
995
|
-
contentOnClick?.(event);
|
|
996
|
-
if (event.defaultPrevented) {
|
|
997
|
-
return;
|
|
998
|
-
}
|
|
999
|
-
if (closeOnContentClick) {
|
|
1000
|
-
setOpen(false);
|
|
1001
|
-
}
|
|
1002
|
-
},
|
|
721
|
+
"data-state": visible ? "open" : "closed",
|
|
722
|
+
role: contentRole ?? "menu",
|
|
723
|
+
tabIndex: contentTabIndex ?? -1,
|
|
724
|
+
style: contentStyle,
|
|
1003
725
|
children
|
|
1004
726
|
}
|
|
1005
727
|
) : null
|
|
@@ -1010,7 +732,7 @@ var Menu = React5__namespace.forwardRef((props, ref) => {
|
|
|
1010
732
|
});
|
|
1011
733
|
Menu.displayName = "Menu";
|
|
1012
734
|
var Menu_default = Menu;
|
|
1013
|
-
var ExpansionPanelContext =
|
|
735
|
+
var ExpansionPanelContext = React3__namespace.createContext(null);
|
|
1014
736
|
var densityClasses2 = {
|
|
1015
737
|
comfortable: "py-5",
|
|
1016
738
|
default: "py-4",
|
|
@@ -1039,7 +761,7 @@ var accentClasses2 = {
|
|
|
1039
761
|
surface: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
|
|
1040
762
|
bw: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" }
|
|
1041
763
|
};
|
|
1042
|
-
var ExpansionPanelItem =
|
|
764
|
+
var ExpansionPanelItem = React3.forwardRef((props, ref) => {
|
|
1043
765
|
const {
|
|
1044
766
|
value,
|
|
1045
767
|
title,
|
|
@@ -1058,8 +780,8 @@ var ExpansionPanelItem = React5__namespace.forwardRef((props, ref) => {
|
|
|
1058
780
|
color: colorOverride,
|
|
1059
781
|
...rest
|
|
1060
782
|
} = props;
|
|
1061
|
-
const context =
|
|
1062
|
-
const generatedValue =
|
|
783
|
+
const context = React3.useContext(ExpansionPanelContext);
|
|
784
|
+
const generatedValue = React3.useId();
|
|
1063
785
|
const panelValue = value ?? generatedValue;
|
|
1064
786
|
const density = context?.density ?? "default";
|
|
1065
787
|
const color = colorOverride ?? context?.color ?? "primary";
|
|
@@ -1067,9 +789,9 @@ var ExpansionPanelItem = React5__namespace.forwardRef((props, ref) => {
|
|
|
1067
789
|
const variant = context?.variant ?? "elevated";
|
|
1068
790
|
const rounded = context?.rounded ?? "lg";
|
|
1069
791
|
const accent = accentClasses2[color] ?? accentClasses2.primary;
|
|
1070
|
-
const headerId =
|
|
1071
|
-
const contentId =
|
|
1072
|
-
const [standaloneExpanded, setStandaloneExpanded] =
|
|
792
|
+
const headerId = React3.useId();
|
|
793
|
+
const contentId = React3.useId();
|
|
794
|
+
const [standaloneExpanded, setStandaloneExpanded] = React3.useState(false);
|
|
1073
795
|
const isExpanded = context ? context.expandedValues.includes(panelValue) : standaloneExpanded;
|
|
1074
796
|
const handleToggle = () => {
|
|
1075
797
|
if (disabled) {
|
|
@@ -1195,7 +917,7 @@ var normalizeValues = (value, allowMultiple) => {
|
|
|
1195
917
|
return normalized.length ? [normalized[0]] : [];
|
|
1196
918
|
};
|
|
1197
919
|
var clampValues = (values, allowMultiple) => allowMultiple ? uniqueValues(values) : values.length ? [values[0]] : [];
|
|
1198
|
-
var ExpansionPanel =
|
|
920
|
+
var ExpansionPanel = React3.forwardRef((props, ref) => {
|
|
1199
921
|
const {
|
|
1200
922
|
variant = "elevated",
|
|
1201
923
|
rounded = "lg",
|
|
@@ -1211,22 +933,22 @@ var ExpansionPanel = React5__namespace.forwardRef((props, ref) => {
|
|
|
1211
933
|
...rest
|
|
1212
934
|
} = props;
|
|
1213
935
|
const isControlled = value !== void 0;
|
|
1214
|
-
const controlledValues =
|
|
936
|
+
const controlledValues = React3.useMemo(() => {
|
|
1215
937
|
if (!isControlled) {
|
|
1216
938
|
return void 0;
|
|
1217
939
|
}
|
|
1218
940
|
return normalizeValues(value, multiple);
|
|
1219
941
|
}, [isControlled, value, multiple]);
|
|
1220
|
-
const [internalValues, setInternalValues] =
|
|
942
|
+
const [internalValues, setInternalValues] = React3.useState(
|
|
1221
943
|
() => normalizeValues(defaultValue, multiple)
|
|
1222
944
|
);
|
|
1223
945
|
const expandedValues = controlledValues ?? internalValues;
|
|
1224
|
-
|
|
946
|
+
React3.useEffect(() => {
|
|
1225
947
|
if (!isControlled) {
|
|
1226
948
|
setInternalValues((prev) => clampValues(prev, multiple));
|
|
1227
949
|
}
|
|
1228
950
|
}, [multiple, isControlled]);
|
|
1229
|
-
const handleValueChange =
|
|
951
|
+
const handleValueChange = React3.useCallback(
|
|
1230
952
|
(next) => {
|
|
1231
953
|
if (!isControlled) {
|
|
1232
954
|
setInternalValues(next);
|
|
@@ -1241,7 +963,7 @@ var ExpansionPanel = React5__namespace.forwardRef((props, ref) => {
|
|
|
1241
963
|
},
|
|
1242
964
|
[isControlled, multiple, onChange]
|
|
1243
965
|
);
|
|
1244
|
-
const toggle =
|
|
966
|
+
const toggle = React3.useCallback(
|
|
1245
967
|
(panelValue, disabled) => {
|
|
1246
968
|
if (disabled) {
|
|
1247
969
|
return;
|
|
@@ -1252,7 +974,7 @@ var ExpansionPanel = React5__namespace.forwardRef((props, ref) => {
|
|
|
1252
974
|
},
|
|
1253
975
|
[expandedValues, handleValueChange, multiple]
|
|
1254
976
|
);
|
|
1255
|
-
const providerValue =
|
|
977
|
+
const providerValue = React3.useMemo(
|
|
1256
978
|
() => ({ expandedValues, toggle, density, color, divider, rounded, variant }),
|
|
1257
979
|
[expandedValues, toggle, density, color, divider, rounded, variant]
|
|
1258
980
|
);
|
|
@@ -1271,8 +993,6 @@ var ExpansionPanel = React5__namespace.forwardRef((props, ref) => {
|
|
|
1271
993
|
});
|
|
1272
994
|
ExpansionPanel.displayName = "ExpansionPanel";
|
|
1273
995
|
var ExpansionPanel_default = ExpansionPanel;
|
|
1274
|
-
var isBrowser2 = typeof window !== "undefined";
|
|
1275
|
-
var useIsomorphicLayoutEffect2 = isBrowser2 ? React5__namespace.useLayoutEffect : React5__namespace.useEffect;
|
|
1276
996
|
var containerBaseClasses = "fixed inset-0 z-[70] flex items-center justify-center p-4 sm:p-8 data-[state=closed]:pointer-events-none";
|
|
1277
997
|
var overlayBaseClasses2 = "absolute inset-0 bg-gray-900/55 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100";
|
|
1278
998
|
var panelWrapperClasses = "relative z-10 flex w-full max-h-[95vh] justify-center transition-transform transition-opacity duration-200 data-[state=closed]:translate-y-4 data-[state=closed]:opacity-0 data-[state=open]:translate-y-0 data-[state=open]:opacity-100";
|
|
@@ -1283,281 +1003,87 @@ var resolveSizeValue = (value) => {
|
|
|
1283
1003
|
}
|
|
1284
1004
|
return typeof value === "number" ? `${value}px` : value;
|
|
1285
1005
|
};
|
|
1286
|
-
var Dialog =
|
|
1006
|
+
var Dialog = React3__namespace.forwardRef((props, forwardedRef) => {
|
|
1287
1007
|
const {
|
|
1288
1008
|
activator,
|
|
1289
1009
|
children,
|
|
1290
|
-
open
|
|
1291
|
-
defaultOpen = false,
|
|
1292
|
-
onOpenChange,
|
|
1293
|
-
persistent = false,
|
|
1294
|
-
closeOnEsc = true,
|
|
1295
|
-
closeOnOutsideClick = true,
|
|
1296
|
-
closeOnContentClick = false,
|
|
1297
|
-
scrim = true,
|
|
1010
|
+
open = false,
|
|
1298
1011
|
keepMounted = false,
|
|
1012
|
+
scrim = true,
|
|
1299
1013
|
fullscreen = false,
|
|
1300
1014
|
maxWidth = "32rem",
|
|
1301
1015
|
width,
|
|
1302
1016
|
containerClassName,
|
|
1303
1017
|
overlayClassName,
|
|
1304
1018
|
overlayProps,
|
|
1305
|
-
scrollLock = true,
|
|
1306
|
-
disabled = false,
|
|
1307
1019
|
className,
|
|
1308
1020
|
style,
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
id
|
|
1021
|
+
role: roleProp = "dialog",
|
|
1022
|
+
tabIndex = -1,
|
|
1023
|
+
id,
|
|
1312
1024
|
["aria-modal"]: ariaModalProp,
|
|
1313
1025
|
...rest
|
|
1314
1026
|
} = props;
|
|
1315
|
-
const { onClick: panelOnClick, ...panelProps } = rest;
|
|
1316
|
-
const {
|
|
1317
|
-
className: overlayPropsClassName,
|
|
1318
|
-
onPointerDown: overlayOnPointerDown,
|
|
1319
|
-
...overlayRestProps
|
|
1320
|
-
} = overlayProps ?? {};
|
|
1321
|
-
const baseId = React5__namespace.useId();
|
|
1322
|
-
const panelId = idProp ?? `${baseId}-dialog`;
|
|
1323
|
-
const activatorId = `${panelId}-activator`;
|
|
1324
|
-
const role = roleProp ?? "dialog";
|
|
1325
|
-
const resolvedTabIndex = tabIndexProp ?? -1;
|
|
1326
|
-
const isControlled = typeof openProp === "boolean";
|
|
1327
|
-
const [internalOpen, setInternalOpen] = React5__namespace.useState(defaultOpen);
|
|
1328
|
-
const open = isControlled ? Boolean(openProp) : internalOpen;
|
|
1329
1027
|
const state = open ? "open" : "closed";
|
|
1330
|
-
const
|
|
1331
|
-
const
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
setMounted(true);
|
|
1336
|
-
}, []);
|
|
1337
|
-
const setPanelRef = React5__namespace.useCallback(
|
|
1338
|
-
(node) => {
|
|
1339
|
-
panelRef.current = node;
|
|
1340
|
-
if (typeof forwardedRef === "function") {
|
|
1341
|
-
forwardedRef(node);
|
|
1342
|
-
} else if (forwardedRef) {
|
|
1343
|
-
forwardedRef.current = node;
|
|
1344
|
-
}
|
|
1345
|
-
},
|
|
1346
|
-
[forwardedRef]
|
|
1347
|
-
);
|
|
1348
|
-
const setActivatorNode = React5__namespace.useCallback((node) => {
|
|
1349
|
-
activatorRef.current = node;
|
|
1350
|
-
}, []);
|
|
1351
|
-
const updateOpen = React5__namespace.useCallback(
|
|
1352
|
-
(nextOpen, options) => {
|
|
1353
|
-
if (disabled && nextOpen) {
|
|
1354
|
-
return;
|
|
1355
|
-
}
|
|
1356
|
-
if (!options?.force && !nextOpen && persistent) {
|
|
1357
|
-
return;
|
|
1358
|
-
}
|
|
1359
|
-
if (!isControlled) {
|
|
1360
|
-
setInternalOpen(nextOpen);
|
|
1361
|
-
}
|
|
1362
|
-
onOpenChange?.(nextOpen);
|
|
1363
|
-
},
|
|
1364
|
-
[disabled, isControlled, onOpenChange, persistent]
|
|
1365
|
-
);
|
|
1366
|
-
React5__namespace.useEffect(() => {
|
|
1367
|
-
if (!disabled || !open) {
|
|
1368
|
-
return;
|
|
1369
|
-
}
|
|
1370
|
-
updateOpen(false, { force: true });
|
|
1371
|
-
}, [disabled, open, updateOpen]);
|
|
1372
|
-
React5__namespace.useEffect(() => {
|
|
1373
|
-
if (!isBrowser2) {
|
|
1374
|
-
return;
|
|
1375
|
-
}
|
|
1376
|
-
if (open) {
|
|
1377
|
-
previouslyFocusedElement.current = document.activeElement;
|
|
1378
|
-
const node = panelRef.current;
|
|
1379
|
-
if (node) {
|
|
1380
|
-
if (!node.hasAttribute("tabindex")) {
|
|
1381
|
-
node.setAttribute("tabindex", resolvedTabIndex.toString());
|
|
1382
|
-
}
|
|
1383
|
-
requestAnimationFrame(() => node.focus({ preventScroll: true }));
|
|
1384
|
-
}
|
|
1385
|
-
return;
|
|
1028
|
+
const shouldRenderDialog = keepMounted || open;
|
|
1029
|
+
const resolvedStyle = { ...style };
|
|
1030
|
+
if (fullscreen) {
|
|
1031
|
+
if (resolvedStyle.maxWidth === void 0) {
|
|
1032
|
+
resolvedStyle.maxWidth = "none";
|
|
1386
1033
|
}
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
previous.focus();
|
|
1034
|
+
if (resolvedStyle.width === void 0) {
|
|
1035
|
+
resolvedStyle.width = "100%";
|
|
1390
1036
|
}
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
if (!open || !closeOnEsc || persistent || !isBrowser2) {
|
|
1394
|
-
return;
|
|
1037
|
+
if (resolvedStyle.height === void 0) {
|
|
1038
|
+
resolvedStyle.height = "100%";
|
|
1395
1039
|
}
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
return;
|
|
1399
|
-
}
|
|
1400
|
-
event.stopPropagation();
|
|
1401
|
-
updateOpen(false);
|
|
1402
|
-
};
|
|
1403
|
-
document.addEventListener("keydown", handleKeyDown);
|
|
1404
|
-
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
1405
|
-
}, [closeOnEsc, open, persistent, updateOpen]);
|
|
1406
|
-
React5__namespace.useEffect(() => {
|
|
1407
|
-
if (!scrollLock || !open || !isBrowser2) {
|
|
1408
|
-
return;
|
|
1040
|
+
if (resolvedStyle.maxHeight === void 0) {
|
|
1041
|
+
resolvedStyle.maxHeight = "100%";
|
|
1409
1042
|
}
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
const scrollbarWidth = window.innerWidth - documentElement.clientWidth;
|
|
1414
|
-
body.style.overflow = "hidden";
|
|
1415
|
-
if (scrollbarWidth > 0) {
|
|
1416
|
-
const computedPaddingRight = parseFloat(window.getComputedStyle(body).paddingRight) || 0;
|
|
1417
|
-
body.style.paddingRight = `${computedPaddingRight + scrollbarWidth}px`;
|
|
1043
|
+
} else {
|
|
1044
|
+
if (resolvedStyle.maxWidth === void 0) {
|
|
1045
|
+
resolvedStyle.maxWidth = resolveSizeValue(maxWidth);
|
|
1418
1046
|
}
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
body.style.paddingRight = previousPaddingRight;
|
|
1422
|
-
};
|
|
1423
|
-
}, [open, scrollLock]);
|
|
1424
|
-
const handleOverlayPointerDown = React5__namespace.useCallback(
|
|
1425
|
-
(event) => {
|
|
1426
|
-
overlayOnPointerDown?.(event);
|
|
1427
|
-
if (event.defaultPrevented) {
|
|
1428
|
-
return;
|
|
1429
|
-
}
|
|
1430
|
-
if (!closeOnOutsideClick || event.button > 0) {
|
|
1431
|
-
return;
|
|
1432
|
-
}
|
|
1433
|
-
updateOpen(false);
|
|
1434
|
-
},
|
|
1435
|
-
[closeOnOutsideClick, overlayOnPointerDown, updateOpen]
|
|
1436
|
-
);
|
|
1437
|
-
const handleContentClick = React5__namespace.useCallback(
|
|
1438
|
-
(event) => {
|
|
1439
|
-
panelOnClick?.(event);
|
|
1440
|
-
if (event.defaultPrevented) {
|
|
1441
|
-
return;
|
|
1442
|
-
}
|
|
1443
|
-
if (closeOnContentClick) {
|
|
1444
|
-
updateOpen(false, { force: true });
|
|
1445
|
-
}
|
|
1446
|
-
},
|
|
1447
|
-
[closeOnContentClick, panelOnClick, updateOpen]
|
|
1448
|
-
);
|
|
1449
|
-
const handleActivatorClick = React5__namespace.useCallback(
|
|
1450
|
-
(event) => {
|
|
1451
|
-
if (disabled) {
|
|
1452
|
-
event.preventDefault();
|
|
1453
|
-
event.stopPropagation();
|
|
1454
|
-
return;
|
|
1455
|
-
}
|
|
1456
|
-
updateOpen(!open, { force: true });
|
|
1457
|
-
},
|
|
1458
|
-
[disabled, open, updateOpen]
|
|
1459
|
-
);
|
|
1460
|
-
const handleActivatorKeyDown = React5__namespace.useCallback(
|
|
1461
|
-
(event) => {
|
|
1462
|
-
if (event.key !== "Enter" && event.key !== " ") {
|
|
1463
|
-
return;
|
|
1464
|
-
}
|
|
1465
|
-
event.preventDefault();
|
|
1466
|
-
if (disabled) {
|
|
1467
|
-
return;
|
|
1468
|
-
}
|
|
1469
|
-
updateOpen(!open, { force: true });
|
|
1470
|
-
},
|
|
1471
|
-
[disabled, open, updateOpen]
|
|
1472
|
-
);
|
|
1473
|
-
const shouldRenderOverlay = (scrim || closeOnOutsideClick) && isBrowser2;
|
|
1474
|
-
const portalReady = mounted && isBrowser2 && (open || keepMounted);
|
|
1475
|
-
const resolvedPanelStyle = React5__namespace.useMemo(() => {
|
|
1476
|
-
const nextStyle = { ...style };
|
|
1477
|
-
if (fullscreen) {
|
|
1478
|
-
if (nextStyle.maxWidth === void 0) {
|
|
1479
|
-
nextStyle.maxWidth = "none";
|
|
1480
|
-
}
|
|
1481
|
-
if (nextStyle.width === void 0) {
|
|
1482
|
-
nextStyle.width = "100%";
|
|
1483
|
-
}
|
|
1484
|
-
if (nextStyle.height === void 0) {
|
|
1485
|
-
nextStyle.height = "100%";
|
|
1486
|
-
}
|
|
1487
|
-
if (nextStyle.maxHeight === void 0) {
|
|
1488
|
-
nextStyle.maxHeight = "100%";
|
|
1489
|
-
}
|
|
1490
|
-
} else {
|
|
1491
|
-
if (nextStyle.maxWidth === void 0) {
|
|
1492
|
-
nextStyle.maxWidth = resolveSizeValue(maxWidth);
|
|
1493
|
-
}
|
|
1494
|
-
if (width !== void 0 && nextStyle.width === void 0) {
|
|
1495
|
-
nextStyle.width = resolveSizeValue(width);
|
|
1496
|
-
}
|
|
1047
|
+
if (width !== void 0 && resolvedStyle.width === void 0) {
|
|
1048
|
+
resolvedStyle.width = resolveSizeValue(width);
|
|
1497
1049
|
}
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
const
|
|
1501
|
-
const overlayNode =
|
|
1050
|
+
}
|
|
1051
|
+
const ariaModal = ariaModalProp ?? (roleProp === "dialog" || roleProp === "alertdialog" ? true : void 0);
|
|
1052
|
+
const { className: overlayExtraClassName, ...restOverlayProps } = overlayProps ?? {};
|
|
1053
|
+
const overlayNode = shouldRenderDialog && scrim ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1502
1054
|
"div",
|
|
1503
1055
|
{
|
|
1504
|
-
...
|
|
1505
|
-
className: tailwindMerge.twMerge(
|
|
1506
|
-
overlayBaseClasses2,
|
|
1507
|
-
scrim ? void 0 : "bg-transparent backdrop-blur-none",
|
|
1508
|
-
overlayClassName,
|
|
1509
|
-
overlayPropsClassName
|
|
1510
|
-
),
|
|
1056
|
+
...restOverlayProps,
|
|
1057
|
+
className: tailwindMerge.twMerge(overlayBaseClasses2, overlayClassName, overlayExtraClassName),
|
|
1511
1058
|
"data-state": state,
|
|
1512
|
-
"aria-hidden": true
|
|
1513
|
-
onPointerDown: handleOverlayPointerDown
|
|
1059
|
+
"aria-hidden": true
|
|
1514
1060
|
}
|
|
1515
1061
|
) : null;
|
|
1516
|
-
|
|
1517
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1062
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1063
|
+
activator ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex", children: activator }) : null,
|
|
1064
|
+
shouldRenderDialog ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: tailwindMerge.twMerge(containerBaseClasses, containerClassName), "data-state": state, "aria-hidden": !open, children: [
|
|
1518
1065
|
overlayNode,
|
|
1519
1066
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: tailwindMerge.twMerge(panelWrapperClasses, fullscreen ? "h-full items-stretch" : "mx-auto"), "data-state": state, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1520
1067
|
"div",
|
|
1521
1068
|
{
|
|
1522
|
-
...
|
|
1523
|
-
ref:
|
|
1524
|
-
id
|
|
1525
|
-
role,
|
|
1526
|
-
tabIndex
|
|
1069
|
+
...rest,
|
|
1070
|
+
ref: forwardedRef,
|
|
1071
|
+
id,
|
|
1072
|
+
role: roleProp,
|
|
1073
|
+
tabIndex,
|
|
1527
1074
|
"aria-modal": ariaModal,
|
|
1528
|
-
className: tailwindMerge.twMerge(
|
|
1529
|
-
|
|
1530
|
-
fullscreen ? "h-full w-full max-w-none rounded-none" : void 0,
|
|
1531
|
-
className
|
|
1532
|
-
),
|
|
1533
|
-
style: resolvedPanelStyle,
|
|
1075
|
+
className: tailwindMerge.twMerge(panelBaseClasses, fullscreen ? "h-full w-full max-w-none rounded-none" : void 0, className),
|
|
1076
|
+
style: resolvedStyle,
|
|
1534
1077
|
"data-state": state,
|
|
1535
|
-
onClick: handleContentClick,
|
|
1536
1078
|
children
|
|
1537
1079
|
}
|
|
1538
1080
|
) })
|
|
1539
|
-
] })
|
|
1540
|
-
document.body
|
|
1541
|
-
) : null;
|
|
1542
|
-
const activatorNode = activator ? activator({
|
|
1543
|
-
ref: setActivatorNode,
|
|
1544
|
-
id: activatorId,
|
|
1545
|
-
disabled,
|
|
1546
|
-
open,
|
|
1547
|
-
"aria-haspopup": "dialog",
|
|
1548
|
-
"aria-expanded": open,
|
|
1549
|
-
"aria-controls": panelId,
|
|
1550
|
-
onClick: handleActivatorClick,
|
|
1551
|
-
onKeyDown: handleActivatorKeyDown
|
|
1552
|
-
}) : null;
|
|
1553
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1554
|
-
activatorNode,
|
|
1555
|
-
dialogNode
|
|
1081
|
+
] }) : null
|
|
1556
1082
|
] });
|
|
1557
1083
|
});
|
|
1558
1084
|
Dialog.displayName = "Dialog";
|
|
1559
1085
|
var Dialog_default = Dialog;
|
|
1560
|
-
var tooltipBaseClasses = "absolute z-[60] max-w-xs rounded-lg border border-white/10 bg-gray-900 px-3 py-2 text-xs font-medium text-white shadow-lg shadow-black/30 ring-1 ring-black/40 transition-all duration-150
|
|
1086
|
+
var tooltipBaseClasses = "absolute z-[60] max-w-xs rounded-lg border border-white/10 bg-gray-900 px-3 py-2 text-xs font-medium text-white shadow-lg shadow-black/30 ring-1 ring-black/40 transition-all duration-150";
|
|
1561
1087
|
var wrapperBaseClasses = "relative inline-flex max-w-full align-middle";
|
|
1562
1088
|
var arrowBaseClasses = "pointer-events-none absolute h-2 w-2 rotate-45 border border-white/10 bg-gray-900 shadow-lg shadow-black/20";
|
|
1563
1089
|
var resolveSizeValue2 = (value) => {
|
|
@@ -1594,259 +1120,70 @@ var arrowPlacementClasses = {
|
|
|
1594
1120
|
"right-start": "left-full top-4 -translate-x-1/2",
|
|
1595
1121
|
"right-end": "left-full bottom-4 -translate-x-1/2"
|
|
1596
1122
|
};
|
|
1597
|
-
var ToolTip =
|
|
1123
|
+
var ToolTip = React3__namespace.forwardRef((props, forwardedRef) => {
|
|
1598
1124
|
const {
|
|
1599
1125
|
activator,
|
|
1600
1126
|
children,
|
|
1601
|
-
open: openProp,
|
|
1602
|
-
defaultOpen = false,
|
|
1603
|
-
onOpenChange,
|
|
1604
1127
|
placement = "top",
|
|
1605
|
-
openDelay = 120,
|
|
1606
|
-
closeDelay = 100,
|
|
1607
|
-
openOnHover = true,
|
|
1608
|
-
openOnFocus = true,
|
|
1609
|
-
openOnClick = false,
|
|
1610
|
-
interactive = false,
|
|
1611
1128
|
arrow = true,
|
|
1612
1129
|
disabled = false,
|
|
1130
|
+
persistent = false,
|
|
1131
|
+
showOnHover = true,
|
|
1132
|
+
showOnFocus = true,
|
|
1133
|
+
interactive = false,
|
|
1613
1134
|
keepMounted = false,
|
|
1614
1135
|
maxWidth = "18rem",
|
|
1615
1136
|
wrapperClassName,
|
|
1616
|
-
closeOnContentClick = false,
|
|
1617
1137
|
className,
|
|
1618
1138
|
style,
|
|
1619
|
-
id
|
|
1139
|
+
id,
|
|
1620
1140
|
...rest
|
|
1621
1141
|
} = props;
|
|
1622
|
-
const
|
|
1623
|
-
const
|
|
1624
|
-
const
|
|
1625
|
-
const
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
const
|
|
1630
|
-
const
|
|
1631
|
-
const
|
|
1632
|
-
const
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
}
|
|
1637
|
-
}, []);
|
|
1638
|
-
const clearCloseTimer = React5__namespace.useCallback(() => {
|
|
1639
|
-
if (closeTimeoutRef.current !== null) {
|
|
1640
|
-
window.clearTimeout(closeTimeoutRef.current);
|
|
1641
|
-
closeTimeoutRef.current = null;
|
|
1142
|
+
const hasRenderableContent = children !== void 0 && children !== null;
|
|
1143
|
+
const shouldEnableTriggers = !disabled && (persistent || showOnHover || showOnFocus);
|
|
1144
|
+
const shouldRenderTooltip = hasRenderableContent && (shouldEnableTriggers || keepMounted);
|
|
1145
|
+
const resolvedStyle = { ...style };
|
|
1146
|
+
if (resolvedStyle.maxWidth === void 0) {
|
|
1147
|
+
resolvedStyle.maxWidth = resolveSizeValue2(maxWidth);
|
|
1148
|
+
}
|
|
1149
|
+
const baseVisibility = persistent ? "opacity-100 scale-100" : "opacity-0 scale-95";
|
|
1150
|
+
const hoverClasses = !persistent && showOnHover ? " group-hover/tooltip:opacity-100 group-hover/tooltip:scale-100" : "";
|
|
1151
|
+
const focusClasses = !persistent && showOnFocus ? " group-focus-within/tooltip:opacity-100 group-focus-within/tooltip:scale-100" : "";
|
|
1152
|
+
const visibilityClasses = `${baseVisibility}${hoverClasses}${focusClasses}`;
|
|
1153
|
+
const pointerClasses = (() => {
|
|
1154
|
+
if (persistent) {
|
|
1155
|
+
return "pointer-events-auto";
|
|
1642
1156
|
}
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
(nextOpen) => {
|
|
1646
|
-
if (!isControlled) {
|
|
1647
|
-
setInternalOpen(nextOpen);
|
|
1648
|
-
}
|
|
1649
|
-
onOpenChange?.(nextOpen);
|
|
1650
|
-
},
|
|
1651
|
-
[isControlled, onOpenChange]
|
|
1652
|
-
);
|
|
1653
|
-
const scheduleOpen = React5__namespace.useCallback(
|
|
1654
|
-
(source) => {
|
|
1655
|
-
if (disabled) {
|
|
1656
|
-
return;
|
|
1657
|
-
}
|
|
1658
|
-
clearCloseTimer();
|
|
1659
|
-
const delay = source === "click" ? 0 : openDelay;
|
|
1660
|
-
if (delay <= 0) {
|
|
1661
|
-
setOpen(true);
|
|
1662
|
-
return;
|
|
1663
|
-
}
|
|
1664
|
-
openTimeoutRef.current = window.setTimeout(() => setOpen(true), delay);
|
|
1665
|
-
},
|
|
1666
|
-
[clearCloseTimer, disabled, openDelay, setOpen]
|
|
1667
|
-
);
|
|
1668
|
-
const scheduleClose = React5__namespace.useCallback(
|
|
1669
|
-
(source) => {
|
|
1670
|
-
clearOpenTimer();
|
|
1671
|
-
const delay = source === "click" ? 0 : closeDelay;
|
|
1672
|
-
if (delay <= 0) {
|
|
1673
|
-
setOpen(false);
|
|
1674
|
-
return;
|
|
1675
|
-
}
|
|
1676
|
-
closeTimeoutRef.current = window.setTimeout(() => setOpen(false), delay);
|
|
1677
|
-
},
|
|
1678
|
-
[clearOpenTimer, closeDelay, setOpen]
|
|
1679
|
-
);
|
|
1680
|
-
React5__namespace.useEffect(() => {
|
|
1681
|
-
if (!disabled) {
|
|
1682
|
-
return;
|
|
1157
|
+
if (!interactive) {
|
|
1158
|
+
return "pointer-events-none";
|
|
1683
1159
|
}
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
setOpen(false);
|
|
1160
|
+
const classes = ["pointer-events-none"];
|
|
1161
|
+
if (showOnHover) {
|
|
1162
|
+
classes.push("group-hover/tooltip:pointer-events-auto");
|
|
1688
1163
|
}
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
() => () => {
|
|
1692
|
-
clearOpenTimer();
|
|
1693
|
-
clearCloseTimer();
|
|
1694
|
-
},
|
|
1695
|
-
[clearCloseTimer, clearOpenTimer]
|
|
1696
|
-
);
|
|
1697
|
-
const handleActivatorPointerEnter = React5__namespace.useCallback(
|
|
1698
|
-
(event) => {
|
|
1699
|
-
if (event.pointerType === "touch") {
|
|
1700
|
-
return;
|
|
1701
|
-
}
|
|
1702
|
-
if (openOnHover) {
|
|
1703
|
-
scheduleOpen("hover");
|
|
1704
|
-
}
|
|
1705
|
-
},
|
|
1706
|
-
[openOnHover, scheduleOpen]
|
|
1707
|
-
);
|
|
1708
|
-
const handleActivatorPointerLeave = React5__namespace.useCallback(
|
|
1709
|
-
(event) => {
|
|
1710
|
-
if (event.pointerType === "touch") {
|
|
1711
|
-
return;
|
|
1712
|
-
}
|
|
1713
|
-
if (openOnHover) {
|
|
1714
|
-
scheduleClose("hover");
|
|
1715
|
-
}
|
|
1716
|
-
},
|
|
1717
|
-
[openOnHover, scheduleClose]
|
|
1718
|
-
);
|
|
1719
|
-
const handleActivatorFocus = React5__namespace.useCallback(
|
|
1720
|
-
() => {
|
|
1721
|
-
if (openOnFocus) {
|
|
1722
|
-
scheduleOpen("focus");
|
|
1723
|
-
}
|
|
1724
|
-
},
|
|
1725
|
-
[openOnFocus, scheduleOpen]
|
|
1726
|
-
);
|
|
1727
|
-
const handleActivatorBlur = React5__namespace.useCallback(
|
|
1728
|
-
() => {
|
|
1729
|
-
if (openOnFocus) {
|
|
1730
|
-
scheduleClose("focus");
|
|
1731
|
-
}
|
|
1732
|
-
},
|
|
1733
|
-
[openOnFocus, scheduleClose]
|
|
1734
|
-
);
|
|
1735
|
-
const handleActivatorClick = React5__namespace.useCallback(
|
|
1736
|
-
(event) => {
|
|
1737
|
-
if (!openOnClick) {
|
|
1738
|
-
return;
|
|
1739
|
-
}
|
|
1740
|
-
event.preventDefault();
|
|
1741
|
-
event.stopPropagation();
|
|
1742
|
-
if (disabled) {
|
|
1743
|
-
return;
|
|
1744
|
-
}
|
|
1745
|
-
if (open) {
|
|
1746
|
-
scheduleClose("click");
|
|
1747
|
-
} else {
|
|
1748
|
-
scheduleOpen("click");
|
|
1749
|
-
}
|
|
1750
|
-
},
|
|
1751
|
-
[disabled, open, openOnClick, scheduleClose, scheduleOpen]
|
|
1752
|
-
);
|
|
1753
|
-
const handleActivatorKeyDown = React5__namespace.useCallback(
|
|
1754
|
-
(event) => {
|
|
1755
|
-
if (!openOnClick) {
|
|
1756
|
-
return;
|
|
1757
|
-
}
|
|
1758
|
-
if (event.key !== "Enter" && event.key !== " ") {
|
|
1759
|
-
return;
|
|
1760
|
-
}
|
|
1761
|
-
event.preventDefault();
|
|
1762
|
-
if (open) {
|
|
1763
|
-
scheduleClose("click");
|
|
1764
|
-
} else {
|
|
1765
|
-
scheduleOpen("click");
|
|
1766
|
-
}
|
|
1767
|
-
},
|
|
1768
|
-
[open, openOnClick, scheduleClose, scheduleOpen]
|
|
1769
|
-
);
|
|
1770
|
-
const handleTooltipPointerEnter = React5__namespace.useCallback(
|
|
1771
|
-
(event) => {
|
|
1772
|
-
tooltipPointerEnter?.(event);
|
|
1773
|
-
if (event.defaultPrevented) {
|
|
1774
|
-
return;
|
|
1775
|
-
}
|
|
1776
|
-
if (interactive) {
|
|
1777
|
-
clearCloseTimer();
|
|
1778
|
-
}
|
|
1779
|
-
},
|
|
1780
|
-
[clearCloseTimer, interactive, tooltipPointerEnter]
|
|
1781
|
-
);
|
|
1782
|
-
const handleTooltipPointerLeave = React5__namespace.useCallback(
|
|
1783
|
-
(event) => {
|
|
1784
|
-
tooltipPointerLeave?.(event);
|
|
1785
|
-
if (event.defaultPrevented) {
|
|
1786
|
-
return;
|
|
1787
|
-
}
|
|
1788
|
-
if (interactive) {
|
|
1789
|
-
scheduleClose("hover");
|
|
1790
|
-
}
|
|
1791
|
-
},
|
|
1792
|
-
[interactive, scheduleClose, tooltipPointerLeave]
|
|
1793
|
-
);
|
|
1794
|
-
const handleTooltipClick = React5__namespace.useCallback(
|
|
1795
|
-
(event) => {
|
|
1796
|
-
tooltipOnClick?.(event);
|
|
1797
|
-
if (event.defaultPrevented) {
|
|
1798
|
-
return;
|
|
1799
|
-
}
|
|
1800
|
-
if (closeOnContentClick) {
|
|
1801
|
-
scheduleClose("click");
|
|
1802
|
-
}
|
|
1803
|
-
},
|
|
1804
|
-
[closeOnContentClick, scheduleClose, tooltipOnClick]
|
|
1805
|
-
);
|
|
1806
|
-
const hasRenderableContent = children !== void 0 && children !== null;
|
|
1807
|
-
const shouldRenderTooltip = hasRenderableContent && (open || keepMounted);
|
|
1808
|
-
const pointerClass = interactive ? "pointer-events-auto" : "pointer-events-none";
|
|
1809
|
-
const resolvedStyle = React5__namespace.useMemo(() => {
|
|
1810
|
-
const nextStyle = { ...style };
|
|
1811
|
-
if (nextStyle.maxWidth === void 0) {
|
|
1812
|
-
nextStyle.maxWidth = resolveSizeValue2(maxWidth);
|
|
1164
|
+
if (showOnFocus) {
|
|
1165
|
+
classes.push("group-focus-within/tooltip:pointer-events-auto");
|
|
1813
1166
|
}
|
|
1814
|
-
return
|
|
1815
|
-
}
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
disabled,
|
|
1820
|
-
"aria-describedby": describedBy,
|
|
1821
|
-
onPointerEnter: handleActivatorPointerEnter,
|
|
1822
|
-
onPointerLeave: handleActivatorPointerLeave,
|
|
1823
|
-
onFocus: handleActivatorFocus,
|
|
1824
|
-
onBlur: handleActivatorBlur,
|
|
1825
|
-
onClick: openOnClick ? handleActivatorClick : void 0,
|
|
1826
|
-
onKeyDown: openOnClick ? handleActivatorKeyDown : void 0
|
|
1827
|
-
});
|
|
1828
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: tailwindMerge.twMerge(wrapperBaseClasses, wrapperClassName), children: [
|
|
1829
|
-
activatorNode,
|
|
1830
|
-
shouldRenderTooltip && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1167
|
+
return classes.join(" ");
|
|
1168
|
+
})();
|
|
1169
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: tailwindMerge.twMerge(wrapperBaseClasses, "group/tooltip", wrapperClassName), "data-disabled": disabled || void 0, children: [
|
|
1170
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex max-w-full", children: activator }),
|
|
1171
|
+
shouldRenderTooltip ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1831
1172
|
"div",
|
|
1832
1173
|
{
|
|
1833
|
-
...
|
|
1174
|
+
...rest,
|
|
1834
1175
|
ref: forwardedRef,
|
|
1835
1176
|
role: "tooltip",
|
|
1836
|
-
id
|
|
1837
|
-
"aria-hidden":
|
|
1838
|
-
|
|
1839
|
-
className: tailwindMerge.twMerge(tooltipBaseClasses, placementClasses2[placement], pointerClass, className),
|
|
1177
|
+
id,
|
|
1178
|
+
"aria-hidden": persistent || disabled ? void 0 : true,
|
|
1179
|
+
className: tailwindMerge.twMerge(tooltipBaseClasses, placementClasses2[placement], visibilityClasses, pointerClasses, className),
|
|
1840
1180
|
style: resolvedStyle,
|
|
1841
|
-
onPointerEnter: handleTooltipPointerEnter,
|
|
1842
|
-
onPointerLeave: handleTooltipPointerLeave,
|
|
1843
|
-
onClick: handleTooltipClick,
|
|
1844
1181
|
children: [
|
|
1845
1182
|
children,
|
|
1846
1183
|
arrow && /* @__PURE__ */ jsxRuntime.jsx("span", { className: tailwindMerge.twMerge(arrowBaseClasses, arrowPlacementClasses[placement]), "aria-hidden": true, "data-arrow": true })
|
|
1847
1184
|
]
|
|
1848
1185
|
}
|
|
1849
|
-
)
|
|
1186
|
+
) : null
|
|
1850
1187
|
] });
|
|
1851
1188
|
});
|
|
1852
1189
|
ToolTip.displayName = "ToolTip";
|