@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.
@@ -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,qBA6CZ"}
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-text-element-900 s-placeholder-element-700", "dark:s-bg-structure-50-dark dark:s-text-element-800-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
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")), placeholder: placeholder, value: value !== null && value !== void 0 ? value : "", onChange: function (e) {
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,gEAAgE,EAChE,8FAA8F,EAC9F,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,CACN,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
+ {"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,KAA8B,MAAM,OAAO,CAAC;AAInD,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,qBAqEd"}
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-absolute s-z-10 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");
33
- var hiddenClasses = "s-translate-y-2 s-opacity-0 s-pointer-events-none"; // Added 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 = "s-left-1/2 -s-translate-x-1/2";
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, tooltipPositionClasses, tooltipCenterClasses, contentChildren ? "" : labelClasses), onAnimationEnd: function () { return setIsHovered(false); } }, contentChildren || label)));
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;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAShD,MAAM,UAAU,OAAO,CAAC,EAKT;QAJb,QAAQ,cAAA,EACR,KAAK,WAAA,EACL,gBAAkB,EAAlB,QAAQ,mBAAG,OAAO,KAAA,EAClB,eAAe,qBAAA;IAET,IAAA,KAAA,OAA4B,QAAQ,CAAC,KAAK,CAAC,IAAA,EAA1C,SAAS,QAAA,EAAE,YAAY,QAAmB,CAAC;IAC5C,IAAA,KAAA,OAAwB,QAAQ,CAAgB,IAAI,CAAC,IAAA,EAApD,OAAO,QAAA,EAAE,UAAU,QAAiC,CAAC;IACtD,IAAA,KAAA,OAAoC,QAAQ,CAAC,KAAK,CAAC,IAAA,EAAlD,aAAa,QAAA,EAAE,gBAAgB,QAAmB,CAAC;IAE1D,IAAM,eAAe,GAAG;QACtB,IAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,UAAU,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,IAAM,gBAAgB,GAAG;QACvB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,SAAS,CAAC;QACR,gBAAgB,CAAC,cAAc,IAAI,MAAM,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAC3E,OAAO;YACL,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,0CAAG,QAAQ,CAAI,CAAC;IACzB,CAAC;IAED,IAAM,WAAW,GAAG,UAAU,CAC5B,oIAAoI,EACpI,sJAAsJ,CACvJ,CAAC;IACF,IAAM,aAAa,GAAG,mDAAmD,CAAC,CAAC,8BAA8B;IACzG,IAAM,cAAc,GAAG,gCAAgC,CAAC;IACxD,IAAM,qBAAqB,GAAG,qBAAqB,CAAC;IACpD,IAAM,oBAAoB,GAAG,+BAA+B,CAAC;IAC7D,IAAM,sBAAsB,GAC1B,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAEtE,iDAAiD;IACjD,IAAM,WAAW,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,KAAI,CAAC,CAAC;IACvC,IAAM,YAAY,GAAG,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAE7E,OAAO,CACL,6BACE,YAAY,EAAE,eAAe,EAC7B,YAAY,EAAE,gBAAgB,EAC9B,SAAS,EAAC,2BAA2B;QAEpC,QAAQ;QACT,6BACE,SAAS,EAAE,UAAU,CACnB,UAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAE,EAC/C,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CACpC,EACD,cAAc,EAAE,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB,IAExC,eAAe,IAAI,KAAK,CACrB,CACF,CACP,CAAC;AACJ,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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dust-tt/sparkle",
3
- "version": "0.2.242",
3
+ "version": "0.2.244-rc",
4
4
  "scripts": {
5
5
  "build": "rm -rf dist && npm run tailwind && npm run build:esm && npm run build:cjs",
6
6
  "tailwind": "tailwindcss -i ./src/styles/tailwind.css -o dist/sparkle.css",
@@ -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-text-element-900 s-placeholder-element-700",
54
- "dark:s-bg-structure-50-dark dark:s-text-element-800-dark dark:s-placeholder-element-700-dark",
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-absolute s-z-10 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",
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"; // Added 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 = "s-left-1/2 -s-translate-x-1/2";
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}