@dust-tt/sparkle 0.2.242 → 0.2.244-rc
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/cjs/index.js +32 -9
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/components/Input.d.ts.map +1 -1
- package/dist/esm/components/Input.js +4 -2
- package/dist/esm/components/Input.js.map +1 -1
- package/dist/esm/components/Tooltip.d.ts.map +1 -1
- package/dist/esm/components/Tooltip.js +29 -8
- package/dist/esm/components/Tooltip.js.map +1 -1
- package/dist/sparkle.css +0 -20
- package/package.json +1 -1
- package/src/components/Input.tsx +6 -3
- package/src/components/Tooltip.tsx +31 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,KAAK,UAAU,GAAG;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAOF,wBAAgB,KAAK,CAAC,EACpB,WAAW,EACX,KAAK,EACL,IAAW,EACX,QAAQ,EACR,KAAK,EACL,cAAsB,EACtB,IAAI,EACJ,UAAkB,EAClB,QAAgB,EAChB,SAAc,EACd,KAAK,GACN,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,KAAK,UAAU,GAAG;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAOF,wBAAgB,KAAK,CAAC,EACpB,WAAW,EACX,KAAK,EACL,IAAW,EACX,QAAQ,EACR,KAAK,EACL,cAAsB,EACtB,IAAI,EACJ,UAAkB,EAClB,QAAgB,EAChB,SAAc,EACd,KAAK,GACN,EAAE,UAAU,qBAgDZ"}
|
|
@@ -8,9 +8,11 @@ export function Input(_a) {
|
|
|
8
8
|
var placeholder = _a.placeholder, value = _a.value, _b = _a.size, size = _b === void 0 ? "sm" : _b, onChange = _a.onChange, error = _a.error, _c = _a.showErrorLabel, showErrorLabel = _c === void 0 ? false : _c, name = _a.name, _d = _a.isPassword, isPassword = _d === void 0 ? false : _d, _e = _a.disabled, disabled = _e === void 0 ? false : _e, _f = _a.className, className = _f === void 0 ? "" : _f, label = _a.label;
|
|
9
9
|
return (React.createElement("div", { className: "s-flex s-flex-col s-gap-1 s-p-px" },
|
|
10
10
|
label && (React.createElement("label", { htmlFor: name, className: "s-pb-1 s-text-sm s-font-medium s-text-element-700 dark:s-text-element-700-dark" }, label)),
|
|
11
|
-
React.createElement("input", { type: isPassword ? "password" : "text", name: name, id: name, className: classNames("s-w-full s-border-0 s-outline-none s-ring-1 focus:s-outline-none focus:s-ring-2", "s-bg-structure-50 s-
|
|
11
|
+
React.createElement("input", { type: isPassword ? "password" : "text", name: name, id: name, className: classNames("s-w-full s-border-0 s-outline-none s-ring-1 focus:s-outline-none focus:s-ring-2", "s-bg-structure-50 s-placeholder-element-700", "dark:s-bg-structure-50-dark dark:s-placeholder-element-700-dark", sizeInputClasses[size], "s-transition-all s-duration-300 s-ease-out", className !== null && className !== void 0 ? className : "", !error
|
|
12
12
|
? classNames("s-ring-structure-200 focus:s-ring-action-300", "dark:s-ring-structure-300-dark dark:focus:s-ring-action-300-dark")
|
|
13
|
-
: classNames("s-ring-warning-200 focus:s-ring-warning-300", "dark:s-ring-warning-200-dark dark:focus:s-ring-warning-300-dark")
|
|
13
|
+
: classNames("s-ring-warning-200 focus:s-ring-warning-300", "dark:s-ring-warning-200-dark dark:focus:s-ring-warning-300-dark"), disabled
|
|
14
|
+
? "s-text-element-500 hover:s-cursor-not-allowed"
|
|
15
|
+
: "s-text-element-900 dark:s-text-element-800-dark"), placeholder: placeholder, value: value !== null && value !== void 0 ? value : "", onChange: function (e) {
|
|
14
16
|
onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value);
|
|
15
17
|
}, "data-1p-ignore": !isPassword, disabled: disabled }),
|
|
16
18
|
React.createElement("div", { className: "s-ml-2 s-text-sm s-text-warning-500" }, showErrorLabel && error ? error : null)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/components/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAgBhD,IAAM,gBAAgB,GAAG;IACvB,EAAE,EAAE,iDAAiD;IACrD,EAAE,EAAE,8CAA8C;CACnD,CAAC;AAEF,MAAM,UAAU,KAAK,CAAC,EAYT;QAXX,WAAW,iBAAA,EACX,KAAK,WAAA,EACL,YAAW,EAAX,IAAI,mBAAG,IAAI,KAAA,EACX,QAAQ,cAAA,EACR,KAAK,WAAA,EACL,sBAAsB,EAAtB,cAAc,mBAAG,KAAK,KAAA,EACtB,IAAI,UAAA,EACJ,kBAAkB,EAAlB,UAAU,mBAAG,KAAK,KAAA,EAClB,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA,EACd,KAAK,WAAA;IAEL,OAAO,CACL,6BAAK,SAAS,EAAC,kCAAkC;QAC9C,KAAK,IAAI,CACR,+BACE,OAAO,EAAE,IAAI,EACb,SAAS,EAAC,gFAAgF,IAEzF,KAAK,CACA,CACT;QACD,+BACE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EACtC,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,IAAI,EACR,SAAS,EAAE,UAAU,CACnB,iFAAiF,EACjF,
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/components/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAgBhD,IAAM,gBAAgB,GAAG;IACvB,EAAE,EAAE,iDAAiD;IACrD,EAAE,EAAE,8CAA8C;CACnD,CAAC;AAEF,MAAM,UAAU,KAAK,CAAC,EAYT;QAXX,WAAW,iBAAA,EACX,KAAK,WAAA,EACL,YAAW,EAAX,IAAI,mBAAG,IAAI,KAAA,EACX,QAAQ,cAAA,EACR,KAAK,WAAA,EACL,sBAAsB,EAAtB,cAAc,mBAAG,KAAK,KAAA,EACtB,IAAI,UAAA,EACJ,kBAAkB,EAAlB,UAAU,mBAAG,KAAK,KAAA,EAClB,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA,EACd,KAAK,WAAA;IAEL,OAAO,CACL,6BAAK,SAAS,EAAC,kCAAkC;QAC9C,KAAK,IAAI,CACR,+BACE,OAAO,EAAE,IAAI,EACb,SAAS,EAAC,gFAAgF,IAEzF,KAAK,CACA,CACT;QACD,+BACE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EACtC,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,IAAI,EACR,SAAS,EAAE,UAAU,CACnB,iFAAiF,EACjF,6CAA6C,EAC7C,iEAAiE,EACjE,gBAAgB,CAAC,IAAI,CAAC,EACtB,4CAA4C,EAC5C,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,EACf,CAAC,KAAK;gBACJ,CAAC,CAAC,UAAU,CACR,8CAA8C,EAC9C,kEAAkE,CACnE;gBACH,CAAC,CAAC,UAAU,CACR,6CAA6C,EAC7C,iEAAiE,CAClE,EACL,QAAQ;gBACN,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,iDAAiD,CACtD,EACD,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,EAClB,QAAQ,EAAE,UAAC,CAAC;gBACV,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC,oBACe,CAAC,UAAU,EAC3B,QAAQ,EAAE,QAAQ,GAClB;QACF,6BAAK,SAAS,EAAC,qCAAqC,IACjD,cAAc,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CACnC,CACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,QAAkB,EAClB,eAAe,GAChB,EAAE,YAAY,qBA4Fd"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { __read } from "tslib";
|
|
2
|
-
import React, { useEffect, useState } from "react";
|
|
2
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
3
3
|
import { classNames } from "../lib/utils";
|
|
4
4
|
export function Tooltip(_a) {
|
|
5
5
|
var children = _a.children, label = _a.label, _b = _a.position, position = _b === void 0 ? "above" : _b, contentChildren = _a.contentChildren;
|
|
6
6
|
var _c = __read(useState(false), 2), isHovered = _c[0], setIsHovered = _c[1];
|
|
7
7
|
var _d = __read(useState(null), 2), timerId = _d[0], setTimerId = _d[1];
|
|
8
8
|
var _e = __read(useState(false), 2), isTouchDevice = _e[0], setIsTouchDevice = _e[1];
|
|
9
|
+
var _f = __read(useState({ top: 0, left: 0 }), 2), tooltipPosition = _f[0], setTooltipPosition = _f[1];
|
|
10
|
+
var triggerRef = useRef(null);
|
|
9
11
|
var handleMouseOver = function () {
|
|
10
12
|
var id = window.setTimeout(function () {
|
|
11
13
|
setIsHovered(true);
|
|
14
|
+
updateTooltipPosition();
|
|
12
15
|
}, 600);
|
|
13
16
|
setTimerId(id);
|
|
14
17
|
};
|
|
@@ -18,6 +21,15 @@ export function Tooltip(_a) {
|
|
|
18
21
|
}
|
|
19
22
|
setIsHovered(false);
|
|
20
23
|
};
|
|
24
|
+
var updateTooltipPosition = function () {
|
|
25
|
+
if (triggerRef.current) {
|
|
26
|
+
var rect = triggerRef.current.getBoundingClientRect();
|
|
27
|
+
setTooltipPosition({
|
|
28
|
+
top: position === "above" ? rect.top - 10 : rect.bottom + 10,
|
|
29
|
+
left: rect.left + rect.width / 2,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
};
|
|
21
33
|
useEffect(function () {
|
|
22
34
|
setIsTouchDevice("ontouchstart" in window || navigator.maxTouchPoints > 0);
|
|
23
35
|
return function () {
|
|
@@ -26,20 +38,29 @@ export function Tooltip(_a) {
|
|
|
26
38
|
}
|
|
27
39
|
};
|
|
28
40
|
}, [timerId]);
|
|
41
|
+
useEffect(function () {
|
|
42
|
+
window.addEventListener("scroll", updateTooltipPosition);
|
|
43
|
+
window.addEventListener("resize", updateTooltipPosition);
|
|
44
|
+
return function () {
|
|
45
|
+
window.removeEventListener("scroll", updateTooltipPosition);
|
|
46
|
+
window.removeEventListener("resize", updateTooltipPosition);
|
|
47
|
+
};
|
|
48
|
+
}, []);
|
|
29
49
|
if (isTouchDevice) {
|
|
30
50
|
return React.createElement(React.Fragment, null, children);
|
|
31
51
|
}
|
|
32
|
-
var baseClasses = classNames("s-
|
|
33
|
-
var hiddenClasses = "s-translate-y-2 s-opacity-0 s-pointer-events-none";
|
|
52
|
+
var baseClasses = classNames("s-fixed s-z-50 s-px-3 s-py-2 s-text-sm s-rounded-xl s-border s-shadow-md s-transition-all s-duration-500 s-ease-out s-transform", "s-border-structure-100 dark:s-border-structure-50-dark s-bg-structure-0 dark:s-bg-structure-100-dark s-text-element-700 dark:s-text-element-600-dark");
|
|
53
|
+
var hiddenClasses = "s-translate-y-2 s-opacity-0 s-pointer-events-none";
|
|
34
54
|
var visibleClasses = "-s-translate-y-0 s-opacity-100";
|
|
35
55
|
var hiddenOnMobileClasses = "s-hidden sm:s-block";
|
|
36
|
-
var tooltipCenterClasses = "
|
|
37
|
-
var tooltipPositionClasses = position === "above" ? "s-bottom-full s-mb-2" : "s-top-full s-mt-2";
|
|
38
|
-
// if tooltip text is too long we need to wrap it
|
|
56
|
+
var tooltipCenterClasses = "-s-translate-x-1/2";
|
|
39
57
|
var labelLength = (label === null || label === void 0 ? void 0 : label.length) || 0;
|
|
40
58
|
var labelClasses = labelLength > 80 ? "s-w-[38em]" : "s-whitespace-nowrap";
|
|
41
|
-
return (React.createElement("div", { onMouseEnter: handleMouseOver, onMouseLeave: handleMouseLeave, className: "s-relative s-inline-block" },
|
|
59
|
+
return (React.createElement("div", { ref: triggerRef, onMouseEnter: handleMouseOver, onMouseLeave: handleMouseLeave, className: "s-relative s-inline-block" },
|
|
42
60
|
children,
|
|
43
|
-
React.createElement("div", { className: classNames("".concat(isHovered ? visibleClasses : hiddenClasses), baseClasses, hiddenOnMobileClasses,
|
|
61
|
+
React.createElement("div", { className: classNames("".concat(isHovered ? visibleClasses : hiddenClasses), baseClasses, hiddenOnMobileClasses, tooltipCenterClasses, contentChildren ? "" : labelClasses), style: {
|
|
62
|
+
top: "".concat(tooltipPosition.top, "px"),
|
|
63
|
+
left: "".concat(tooltipPosition.left, "px"),
|
|
64
|
+
}, onAnimationEnd: function () { return setIsHovered(false); } }, contentChildren || label)));
|
|
44
65
|
}
|
|
45
66
|
//# sourceMappingURL=Tooltip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../src/components/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../src/components/Tooltip.tsx"],"names":[],"mappings":"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"}
|
package/dist/sparkle.css
CHANGED
|
@@ -805,18 +805,10 @@ select {
|
|
|
805
805
|
bottom: 1.5rem;
|
|
806
806
|
}
|
|
807
807
|
|
|
808
|
-
.s-bottom-full {
|
|
809
|
-
bottom: 100%;
|
|
810
|
-
}
|
|
811
|
-
|
|
812
808
|
.s-left-0 {
|
|
813
809
|
left: 0px;
|
|
814
810
|
}
|
|
815
811
|
|
|
816
|
-
.s-left-1\/2 {
|
|
817
|
-
left: 50%;
|
|
818
|
-
}
|
|
819
|
-
|
|
820
812
|
.s-right-0 {
|
|
821
813
|
right: 0px;
|
|
822
814
|
}
|
|
@@ -829,10 +821,6 @@ select {
|
|
|
829
821
|
top: 0px;
|
|
830
822
|
}
|
|
831
823
|
|
|
832
|
-
.s-top-full {
|
|
833
|
-
top: 100%;
|
|
834
|
-
}
|
|
835
|
-
|
|
836
824
|
.s-z-0 {
|
|
837
825
|
z-index: 0;
|
|
838
826
|
}
|
|
@@ -905,10 +893,6 @@ select {
|
|
|
905
893
|
margin-bottom: 0.25rem;
|
|
906
894
|
}
|
|
907
895
|
|
|
908
|
-
.s-mb-2 {
|
|
909
|
-
margin-bottom: 0.5rem;
|
|
910
|
-
}
|
|
911
|
-
|
|
912
896
|
.s-ml-1 {
|
|
913
897
|
margin-left: 0.25rem;
|
|
914
898
|
}
|
|
@@ -949,10 +933,6 @@ select {
|
|
|
949
933
|
margin-top: 4rem;
|
|
950
934
|
}
|
|
951
935
|
|
|
952
|
-
.s-mt-2 {
|
|
953
|
-
margin-top: 0.5rem;
|
|
954
|
-
}
|
|
955
|
-
|
|
956
936
|
.s-mt-4 {
|
|
957
937
|
margin-top: 1rem;
|
|
958
938
|
}
|
package/package.json
CHANGED
package/src/components/Input.tsx
CHANGED
|
@@ -50,8 +50,8 @@ export function Input({
|
|
|
50
50
|
id={name}
|
|
51
51
|
className={classNames(
|
|
52
52
|
"s-w-full s-border-0 s-outline-none s-ring-1 focus:s-outline-none focus:s-ring-2",
|
|
53
|
-
"s-bg-structure-50 s-
|
|
54
|
-
"dark:s-bg-structure-50-dark dark:s-
|
|
53
|
+
"s-bg-structure-50 s-placeholder-element-700",
|
|
54
|
+
"dark:s-bg-structure-50-dark dark:s-placeholder-element-700-dark",
|
|
55
55
|
sizeInputClasses[size],
|
|
56
56
|
"s-transition-all s-duration-300 s-ease-out",
|
|
57
57
|
className ?? "",
|
|
@@ -63,7 +63,10 @@ export function Input({
|
|
|
63
63
|
: classNames(
|
|
64
64
|
"s-ring-warning-200 focus:s-ring-warning-300",
|
|
65
65
|
"dark:s-ring-warning-200-dark dark:focus:s-ring-warning-300-dark"
|
|
66
|
-
)
|
|
66
|
+
),
|
|
67
|
+
disabled
|
|
68
|
+
? "s-text-element-500 hover:s-cursor-not-allowed"
|
|
69
|
+
: "s-text-element-900 dark:s-text-element-800-dark"
|
|
67
70
|
)}
|
|
68
71
|
placeholder={placeholder}
|
|
69
72
|
value={value ?? ""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useState } from "react";
|
|
1
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
2
2
|
|
|
3
3
|
import { classNames } from "@sparkle/lib/utils";
|
|
4
4
|
|
|
@@ -18,10 +18,13 @@ export function Tooltip({
|
|
|
18
18
|
const [isHovered, setIsHovered] = useState(false);
|
|
19
19
|
const [timerId, setTimerId] = useState<number | null>(null);
|
|
20
20
|
const [isTouchDevice, setIsTouchDevice] = useState(false);
|
|
21
|
+
const [tooltipPosition, setTooltipPosition] = useState({ top: 0, left: 0 });
|
|
22
|
+
const triggerRef = useRef<HTMLDivElement>(null);
|
|
21
23
|
|
|
22
24
|
const handleMouseOver = () => {
|
|
23
25
|
const id = window.setTimeout(() => {
|
|
24
26
|
setIsHovered(true);
|
|
27
|
+
updateTooltipPosition();
|
|
25
28
|
}, 600);
|
|
26
29
|
setTimerId(id);
|
|
27
30
|
};
|
|
@@ -33,6 +36,16 @@ export function Tooltip({
|
|
|
33
36
|
setIsHovered(false);
|
|
34
37
|
};
|
|
35
38
|
|
|
39
|
+
const updateTooltipPosition = () => {
|
|
40
|
+
if (triggerRef.current) {
|
|
41
|
+
const rect = triggerRef.current.getBoundingClientRect();
|
|
42
|
+
setTooltipPosition({
|
|
43
|
+
top: position === "above" ? rect.top - 10 : rect.bottom + 10,
|
|
44
|
+
left: rect.left + rect.width / 2,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
36
49
|
useEffect(() => {
|
|
37
50
|
setIsTouchDevice("ontouchstart" in window || navigator.maxTouchPoints > 0);
|
|
38
51
|
return () => {
|
|
@@ -42,27 +55,34 @@ export function Tooltip({
|
|
|
42
55
|
};
|
|
43
56
|
}, [timerId]);
|
|
44
57
|
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
window.addEventListener("scroll", updateTooltipPosition);
|
|
60
|
+
window.addEventListener("resize", updateTooltipPosition);
|
|
61
|
+
return () => {
|
|
62
|
+
window.removeEventListener("scroll", updateTooltipPosition);
|
|
63
|
+
window.removeEventListener("resize", updateTooltipPosition);
|
|
64
|
+
};
|
|
65
|
+
}, []);
|
|
66
|
+
|
|
45
67
|
if (isTouchDevice) {
|
|
46
68
|
return <>{children}</>;
|
|
47
69
|
}
|
|
48
70
|
|
|
49
71
|
const baseClasses = classNames(
|
|
50
|
-
"s-
|
|
72
|
+
"s-fixed s-z-50 s-px-3 s-py-2 s-text-sm s-rounded-xl s-border s-shadow-md s-transition-all s-duration-500 s-ease-out s-transform",
|
|
51
73
|
"s-border-structure-100 dark:s-border-structure-50-dark s-bg-structure-0 dark:s-bg-structure-100-dark s-text-element-700 dark:s-text-element-600-dark"
|
|
52
74
|
);
|
|
53
|
-
const hiddenClasses = "s-translate-y-2 s-opacity-0 s-pointer-events-none";
|
|
75
|
+
const hiddenClasses = "s-translate-y-2 s-opacity-0 s-pointer-events-none";
|
|
54
76
|
const visibleClasses = "-s-translate-y-0 s-opacity-100";
|
|
55
77
|
const hiddenOnMobileClasses = "s-hidden sm:s-block";
|
|
56
|
-
const tooltipCenterClasses = "
|
|
57
|
-
const tooltipPositionClasses =
|
|
58
|
-
position === "above" ? "s-bottom-full s-mb-2" : "s-top-full s-mt-2";
|
|
78
|
+
const tooltipCenterClasses = "-s-translate-x-1/2";
|
|
59
79
|
|
|
60
|
-
// if tooltip text is too long we need to wrap it
|
|
61
80
|
const labelLength = label?.length || 0;
|
|
62
81
|
const labelClasses = labelLength > 80 ? "s-w-[38em]" : "s-whitespace-nowrap";
|
|
63
82
|
|
|
64
83
|
return (
|
|
65
84
|
<div
|
|
85
|
+
ref={triggerRef}
|
|
66
86
|
onMouseEnter={handleMouseOver}
|
|
67
87
|
onMouseLeave={handleMouseLeave}
|
|
68
88
|
className="s-relative s-inline-block"
|
|
@@ -73,10 +93,13 @@ export function Tooltip({
|
|
|
73
93
|
`${isHovered ? visibleClasses : hiddenClasses}`,
|
|
74
94
|
baseClasses,
|
|
75
95
|
hiddenOnMobileClasses,
|
|
76
|
-
tooltipPositionClasses,
|
|
77
96
|
tooltipCenterClasses,
|
|
78
97
|
contentChildren ? "" : labelClasses
|
|
79
98
|
)}
|
|
99
|
+
style={{
|
|
100
|
+
top: `${tooltipPosition.top}px`,
|
|
101
|
+
left: `${tooltipPosition.left}px`,
|
|
102
|
+
}}
|
|
80
103
|
onAnimationEnd={() => setIsHovered(false)}
|
|
81
104
|
>
|
|
82
105
|
{contentChildren || label}
|