@dust-tt/sparkle 0.2.610 → 0.2.611-rc-2
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 +1 -1
- package/dist/esm/components/ToolCard.d.ts +2 -0
- package/dist/esm/components/ToolCard.d.ts.map +1 -1
- package/dist/esm/components/ToolCard.js +2 -2
- package/dist/esm/components/ToolCard.js.map +1 -1
- package/dist/esm/components/Tooltip.d.ts +2 -0
- package/dist/esm/components/Tooltip.d.ts.map +1 -1
- package/dist/esm/components/Tooltip.js +14 -5
- package/dist/esm/components/Tooltip.js.map +1 -1
- package/dist/esm/components/TruncatedText.d.ts +2 -0
- package/dist/esm/components/TruncatedText.d.ts.map +1 -1
- package/dist/esm/components/TruncatedText.js +2 -2
- package/dist/esm/components/TruncatedText.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ToolCard.tsx +9 -1
- package/src/components/Tooltip.tsx +49 -23
- package/src/components/TruncatedText.tsx +6 -0
|
@@ -8,6 +8,8 @@ export interface ToolCardProps {
|
|
|
8
8
|
cantAddReason?: string;
|
|
9
9
|
onClick?: () => void;
|
|
10
10
|
className?: string;
|
|
11
|
+
mountPortal?: boolean;
|
|
12
|
+
mountPortalContainer?: HTMLElement;
|
|
11
13
|
}
|
|
12
14
|
export declare const ToolCard: React.ForwardRefExoticComponent<ToolCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
13
15
|
//# sourceMappingURL=ToolCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCard.d.ts","sourceRoot":"","sources":["../../../src/components/ToolCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolCard.d.ts","sourceRoot":"","sources":["../../../src/components/ToolCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,eAAO,MAAM,QAAQ,sFAgEpB,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { PlusIcon } from "../icons/app";
|
|
|
5
5
|
import { cn } from "../lib/utils";
|
|
6
6
|
var FADE_TRANSITION_CLASSES = "s-transition-opacity s-duration-300 s-ease-in-out";
|
|
7
7
|
export var ToolCard = React.forwardRef(function (_a, ref) {
|
|
8
|
-
var icon = _a.icon, label = _a.label, description = _a.description, isSelected = _a.isSelected, canAdd = _a.canAdd, cantAddReason = _a.cantAddReason, onClick = _a.onClick, className = _a.className;
|
|
8
|
+
var icon = _a.icon, label = _a.label, description = _a.description, isSelected = _a.isSelected, canAdd = _a.canAdd, cantAddReason = _a.cantAddReason, onClick = _a.onClick, className = _a.className, mountPortal = _a.mountPortal, mountPortalContainer = _a.mountPortalContainer;
|
|
9
9
|
return (React.createElement(Card, { ref: ref, variant: isSelected ? "secondary" : "primary", onClick: onClick, disabled: !canAdd, className: cn("s-h-24 s-p-3", className) },
|
|
10
10
|
React.createElement("div", { className: "s-flex s-w-full s-flex-col" },
|
|
11
11
|
React.createElement("div", { className: "s-mb-2 s-flex s-items-start s-justify-between s-gap-2" },
|
|
@@ -15,7 +15,7 @@ export var ToolCard = React.forwardRef(function (_a, ref) {
|
|
|
15
15
|
isSelected && (React.createElement(Chip, { size: "xs", color: "green", label: "ADDED", className: cn(FADE_TRANSITION_CLASSES, "s-opacity-100") }))),
|
|
16
16
|
canAdd && (React.createElement(Button, { size: "xs", variant: "outline", icon: PlusIcon, label: "Add", className: cn(FADE_TRANSITION_CLASSES, "s-flex-shrink-0") })),
|
|
17
17
|
cantAddReason && (React.createElement("div", { className: "s-flex-shrink-0 s-text-xs s-italic s-text-muted-foreground dark:s-text-muted-foreground-night" }, cantAddReason))),
|
|
18
|
-
React.createElement(TruncatedText, { className: "s-text-sm s-text-muted-foreground dark:s-text-muted-foreground-night" }, description))));
|
|
18
|
+
React.createElement(TruncatedText, { className: "s-text-sm s-text-muted-foreground dark:s-text-muted-foreground-night", mountPortal: mountPortal, mountPortalContainer: mountPortalContainer }, description))));
|
|
19
19
|
});
|
|
20
20
|
ToolCard.displayName = "ToolCard";
|
|
21
21
|
//# sourceMappingURL=ToolCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCard.js","sourceRoot":"","sources":["../../../src/components/ToolCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,IAAM,uBAAuB,GAC3B,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolCard.js","sourceRoot":"","sources":["../../../src/components/ToolCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,IAAM,uBAAuB,GAC3B,mDAAmD,CAAC;AAetD,MAAM,CAAC,IAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CACtC,UACE,EAWC,EACD,GAAG;QAXD,IAAI,UAAA,EACJ,KAAK,WAAA,EACL,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,OAAO,aAAA,EACP,SAAS,eAAA,EACT,WAAW,iBAAA,EACX,oBAAoB,0BAAA;IAItB,OAAO,CACL,oBAAC,IAAI,IACH,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAC7C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,MAAM,EACjB,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC;QAExC,6BAAK,SAAS,EAAC,4BAA4B;YACzC,6BAAK,SAAS,EAAC,uDAAuD;gBACpE,6BAAK,SAAS,EAAC,+BAA+B;oBAC5C,oBAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,IAAI,GAAG;oBAChC,8BAAM,SAAS,EAAC,yBAAyB,IAAE,KAAK,CAAQ;oBACvD,UAAU,IAAI,CACb,oBAAC,IAAI,IACH,IAAI,EAAC,IAAI,EACT,KAAK,EAAC,OAAO,EACb,KAAK,EAAC,OAAO,EACb,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,eAAe,CAAC,GACvD,CACH,CACG;gBACL,MAAM,IAAI,CACT,oBAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,SAAS,EACjB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAC,KAAK,EACX,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,GACzD,CACH;gBACA,aAAa,IAAI,CAChB,6BAAK,SAAS,EAAC,+FAA+F,IAC3G,aAAa,CACV,CACP,CACG;YACN,oBAAC,aAAa,IACZ,SAAS,EAAC,sEAAsE,EAChF,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,oBAAoB,IAEzC,WAAW,CACE,CACZ,CACD,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AACF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC"}
|
|
@@ -5,6 +5,8 @@ declare const TooltipRoot: React.FC<TooltipPrimitive.TooltipProps>;
|
|
|
5
5
|
declare const TooltipPortal: React.FC<TooltipPrimitive.TooltipPortalProps>;
|
|
6
6
|
declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
7
7
|
interface TooltipContentProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {
|
|
8
|
+
mountPortal?: boolean;
|
|
9
|
+
mountPortalContainer?: HTMLElement;
|
|
8
10
|
}
|
|
9
11
|
declare const TooltipContent: React.ForwardRefExoticComponent<TooltipContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
10
12
|
interface TooltipProps extends TooltipContentProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,QAAA,MAAM,eAAe,iDAA4B,CAAC;AAElD,QAAA,MAAM,WAAW,yCAAwB,CAAC;AAC1C,QAAA,MAAM,aAAa,+CAA0B,CAAC;AAE9C,QAAA,MAAM,cAAc,gHAA2B,CAAC;AAEhD,UAAU,mBACR,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,QAAA,MAAM,cAAc,4FA2ClB,CAAC;AAEH,UAAU,YAAa,SAAQ,mBAAmB;IAChD,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,QAAA,MAAM,OAAO,qFAgBZ,CAAC;AAIF,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,cAAc,GACf,CAAC"}
|
|
@@ -1,22 +1,31 @@
|
|
|
1
|
-
import { __assign, __rest } from "tslib";
|
|
1
|
+
import { __assign, __read, __rest } from "tslib";
|
|
2
2
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
3
3
|
import * as React from "react";
|
|
4
|
+
import { useEffect, useState } from "react";
|
|
4
5
|
import { classNames } from "../lib/utils";
|
|
5
6
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
6
7
|
var TooltipRoot = TooltipPrimitive.Root;
|
|
7
8
|
var TooltipPortal = TooltipPrimitive.Portal;
|
|
8
9
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
9
10
|
var TooltipContent = React.forwardRef(function (_a, ref) {
|
|
10
|
-
var className = _a.className, _b = _a.sideOffset, sideOffset = _b === void 0 ? 4 : _b, props = __rest(_a, ["className", "sideOffset"]);
|
|
11
|
-
|
|
11
|
+
var className = _a.className, _b = _a.sideOffset, sideOffset = _b === void 0 ? 4 : _b, _c = _a.mountPortal, mountPortal = _c === void 0 ? true : _c, mountPortalContainer = _a.mountPortalContainer, props = __rest(_a, ["className", "sideOffset", "mountPortal", "mountPortalContainer"]);
|
|
12
|
+
var content = (React.createElement(TooltipPrimitive.Content, __assign({ ref: ref, sideOffset: sideOffset, className: classNames("s-z-50 s-max-w-sm s-overflow-hidden s-whitespace-pre-wrap s-break-words s-rounded-md s-border", "s-bg-background dark:s-bg-background-night", "s-text-foreground dark:s-text-foreground-night", "s-border-border dark:s-border-border-night", "s-px-3 s-py-1.5 s-text-sm s-shadow-md", "s-animate-in s-fade-in-0 s-zoom-in-95", "data-[state=closed]:s-animate-out data-[state=closed]:s-fade-out-0 data-[state=closed]:s-zoom-out-95 data-[side=bottom]:s-slide-in-from-top-2 data-[side=left]:s-slide-in-from-right-2 data-[side=right]:s-slide-in-from-left-2 data-[side=top]:s-slide-in-from-bottom-2", className || "") }, props)));
|
|
13
|
+
var _d = __read(useState(mountPortalContainer), 2), container = _d[0], setContainer = _d[1];
|
|
14
|
+
useEffect(function () {
|
|
15
|
+
if (mountPortal && !container) {
|
|
16
|
+
var dialogElements = document.querySelectorAll(".s-sheet[role=dialog][data-state=open]");
|
|
17
|
+
var defaultContainer = dialogElements[dialogElements.length - 1];
|
|
18
|
+
setContainer(defaultContainer);
|
|
19
|
+
}
|
|
20
|
+
}, [mountPortal, container]);
|
|
21
|
+
return mountPortal ? (React.createElement(TooltipPrimitive.Portal, { container: container }, content)) : (content);
|
|
12
22
|
});
|
|
13
23
|
var Tooltip = React.forwardRef(function (_a, ref) {
|
|
14
24
|
var trigger = _a.trigger, _b = _a.tooltipTriggerAsChild, tooltipTriggerAsChild = _b === void 0 ? false : _b, label = _a.label, props = __rest(_a, ["trigger", "tooltipTriggerAsChild", "label"]);
|
|
15
25
|
return (React.createElement(TooltipProvider, null,
|
|
16
26
|
React.createElement(TooltipRoot, null,
|
|
17
27
|
React.createElement(TooltipTrigger, { asChild: tooltipTriggerAsChild }, trigger),
|
|
18
|
-
React.createElement(
|
|
19
|
-
React.createElement(TooltipContent, __assign({}, props, { ref: ref }), label)))));
|
|
28
|
+
React.createElement(TooltipContent, __assign({}, props, { ref: ref }), label))));
|
|
20
29
|
});
|
|
21
30
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
22
31
|
export { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../src/components/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../src/components/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,IAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAElD,IAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAC1C,IAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAE9C,IAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAQhD,IAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAGrC,UAAC,EAAiF,EAAE,GAAG;IAApF,IAAA,SAAS,eAAA,EAAE,kBAAc,EAAd,UAAU,mBAAG,CAAC,KAAA,EAAE,mBAAkB,EAAlB,WAAW,mBAAG,IAAI,KAAA,EAAE,oBAAoB,0BAAA,EAAK,KAAK,cAA/E,kEAAiF,CAAF;IAChF,IAAM,OAAO,GAAG,CACd,oBAAC,gBAAgB,CAAC,OAAO,aACvB,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,CACnB,+FAA+F,EAC/F,4CAA4C,EAC5C,gDAAgD,EAChD,4CAA4C,EAC5C,uCAAuC,EACvC,uCAAuC,EACvC,0QAA0Q,EAC1Q,SAAS,IAAI,EAAE,CAChB,IACG,KAAK,EACT,CACH,CAAC;IAEI,IAAA,KAAA,OAA4B,QAAQ,CACxC,oBAAoB,CACrB,IAAA,EAFM,SAAS,QAAA,EAAE,YAAY,QAE7B,CAAC;IAEF,SAAS,CAAC;QACR,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,IAAM,cAAc,GAAG,QAAQ,CAAC,gBAAgB,CAC9C,wCAAwC,CACzC,CAAC;YACF,IAAM,gBAAgB,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnE,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAE7B,OAAO,WAAW,CAAC,CAAC,CAAC,CACnB,oBAAC,gBAAgB,CAAC,MAAM,IAAC,SAAS,EAAE,SAAS,IAC1C,OAAO,CACgB,CAC3B,CAAC,CAAC,CAAC,CACF,OAAO,CACR,CAAC;AACJ,CAAC,CAAC,CAAC;AASH,IAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAC9B,UACE,EAAyE,EACzE,GAAG;IADD,IAAA,OAAO,aAAA,EAAE,6BAA6B,EAA7B,qBAAqB,mBAAG,KAAK,KAAA,EAAE,KAAK,WAAA,EAAK,KAAK,cAAzD,6CAA2D,CAAF;IAEtD,OAAA,CACH,oBAAC,eAAe;QACd,oBAAC,WAAW;YACV,oBAAC,cAAc,IAAC,OAAO,EAAE,qBAAqB,IAC3C,OAAO,CACO;YACjB,oBAAC,cAAc,eAAK,KAAK,IAAE,GAAG,EAAE,GAAG,KAChC,KAAK,CACS,CACL,CACE,CACnB,CAAA;CAAA,CACF,CAAC;AAEF,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC;AAElE,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,cAAc,GACf,CAAC"}
|
|
@@ -2,6 +2,8 @@ import React from "react";
|
|
|
2
2
|
interface TruncatedTextProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
3
|
children: string | React.ReactNode;
|
|
4
4
|
lineClamp?: number;
|
|
5
|
+
mountPortal?: boolean;
|
|
6
|
+
mountPortalContainer?: HTMLElement;
|
|
5
7
|
}
|
|
6
8
|
export declare const TruncatedText: React.FC<TruncatedTextProps>;
|
|
7
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TruncatedText.d.ts","sourceRoot":"","sources":["../../../src/components/TruncatedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACvE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"TruncatedText.d.ts","sourceRoot":"","sources":["../../../src/components/TruncatedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACvE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgDtD,CAAC"}
|
|
@@ -3,7 +3,7 @@ import React from "react";
|
|
|
3
3
|
import { Tooltip } from "../components/Tooltip";
|
|
4
4
|
import { cn } from "../lib/utils";
|
|
5
5
|
export var TruncatedText = function (_a) {
|
|
6
|
-
var children = _a.children, className = _a.className, _b = _a.lineClamp, lineClamp = _b === void 0 ? 2 : _b, props = __rest(_a, ["children", "className", "lineClamp"]);
|
|
6
|
+
var children = _a.children, className = _a.className, _b = _a.lineClamp, lineClamp = _b === void 0 ? 2 : _b, mountPortal = _a.mountPortal, mountPortalContainer = _a.mountPortalContainer, props = __rest(_a, ["children", "className", "lineClamp", "mountPortal", "mountPortalContainer"]);
|
|
7
7
|
var _c = __read(React.useState(false), 2), isTruncated = _c[0], setIsTruncated = _c[1];
|
|
8
8
|
var textRef = React.useRef(null);
|
|
9
9
|
// Check if content is actually truncated by comparing scroll height to
|
|
@@ -18,7 +18,7 @@ export var TruncatedText = function (_a) {
|
|
|
18
18
|
});
|
|
19
19
|
var textElement = (React.createElement("div", __assign({ ref: textRef, className: cn("s-line-clamp-".concat(lineClamp, " s-cursor-pointer s-select-none"), className) }, props), children));
|
|
20
20
|
if (isTruncated) {
|
|
21
|
-
return (React.createElement(Tooltip, { trigger: textElement, label: children, tooltipTriggerAsChild: true }));
|
|
21
|
+
return (React.createElement(Tooltip, { trigger: textElement, label: children, tooltipTriggerAsChild: true, mountPortal: mountPortal, mountPortalContainer: mountPortalContainer }));
|
|
22
22
|
}
|
|
23
23
|
return textElement;
|
|
24
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TruncatedText.js","sourceRoot":"","sources":["../../../src/components/TruncatedText.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"TruncatedText.js","sourceRoot":"","sources":["../../../src/components/TruncatedText.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AASxC,MAAM,CAAC,IAAM,aAAa,GAAiC,UAAC,EAO3D;IANC,IAAA,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,iBAAa,EAAb,SAAS,mBAAG,CAAC,KAAA,EACb,WAAW,iBAAA,EACX,oBAAoB,0BAAA,EACjB,KAAK,cANkD,6EAO3D,CADS;IAEF,IAAA,KAAA,OAAgC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAA,EAApD,WAAW,QAAA,EAAE,cAAc,QAAyB,CAAC;IAC5D,IAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEnD,uEAAuE;IACvE,gBAAgB;IAChB,4EAA4E;IAC5E,KAAK,CAAC,eAAe,CAAC;QACpB,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAM,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YAClE,cAAc,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAM,WAAW,GAAG,CAClB,sCACE,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,EAAE,CACX,uBAAgB,SAAS,oCAAiC,EAC1D,SAAS,CACV,IACG,KAAK,GAER,QAAQ,CACL,CACP,CAAC;IAEF,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CACL,oBAAC,OAAO,IACN,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,QAAQ,EACf,qBAAqB,EAAE,IAAI,EAC3B,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,oBAAoB,GAC1C,CACH,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -17,6 +17,8 @@ export interface ToolCardProps {
|
|
|
17
17
|
cantAddReason?: string;
|
|
18
18
|
onClick?: () => void;
|
|
19
19
|
className?: string;
|
|
20
|
+
mountPortal?: boolean;
|
|
21
|
+
mountPortalContainer?: HTMLElement;
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
export const ToolCard = React.forwardRef<HTMLDivElement, ToolCardProps>(
|
|
@@ -30,6 +32,8 @@ export const ToolCard = React.forwardRef<HTMLDivElement, ToolCardProps>(
|
|
|
30
32
|
cantAddReason,
|
|
31
33
|
onClick,
|
|
32
34
|
className,
|
|
35
|
+
mountPortal,
|
|
36
|
+
mountPortalContainer,
|
|
33
37
|
},
|
|
34
38
|
ref
|
|
35
39
|
) => {
|
|
@@ -70,7 +74,11 @@ export const ToolCard = React.forwardRef<HTMLDivElement, ToolCardProps>(
|
|
|
70
74
|
</div>
|
|
71
75
|
)}
|
|
72
76
|
</div>
|
|
73
|
-
<TruncatedText
|
|
77
|
+
<TruncatedText
|
|
78
|
+
className="s-text-sm s-text-muted-foreground dark:s-text-muted-foreground-night"
|
|
79
|
+
mountPortal={mountPortal}
|
|
80
|
+
mountPortalContainer={mountPortalContainer}
|
|
81
|
+
>
|
|
74
82
|
{description}
|
|
75
83
|
</TruncatedText>
|
|
76
84
|
</div>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
2
2
|
import * as React from "react";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
3
4
|
|
|
4
5
|
import { classNames } from "@sparkle/lib/utils";
|
|
5
6
|
|
|
@@ -11,28 +12,55 @@ const TooltipPortal = TooltipPrimitive.Portal;
|
|
|
11
12
|
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
12
13
|
|
|
13
14
|
interface TooltipContentProps
|
|
14
|
-
extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {
|
|
15
|
+
extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {
|
|
16
|
+
mountPortal?: boolean;
|
|
17
|
+
mountPortalContainer?: HTMLElement;
|
|
18
|
+
}
|
|
15
19
|
|
|
16
20
|
const TooltipContent = React.forwardRef<
|
|
17
21
|
React.ElementRef<typeof TooltipPrimitive.Content>,
|
|
18
22
|
TooltipContentProps
|
|
19
|
-
>(({ className, sideOffset = 4, ...props }, ref) =>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
>(({ className, sideOffset = 4, mountPortal = true, mountPortalContainer, ...props }, ref) => {
|
|
24
|
+
const content = (
|
|
25
|
+
<TooltipPrimitive.Content
|
|
26
|
+
ref={ref}
|
|
27
|
+
sideOffset={sideOffset}
|
|
28
|
+
className={classNames(
|
|
29
|
+
"s-z-50 s-max-w-sm s-overflow-hidden s-whitespace-pre-wrap s-break-words s-rounded-md s-border",
|
|
30
|
+
"s-bg-background dark:s-bg-background-night",
|
|
31
|
+
"s-text-foreground dark:s-text-foreground-night",
|
|
32
|
+
"s-border-border dark:s-border-border-night",
|
|
33
|
+
"s-px-3 s-py-1.5 s-text-sm s-shadow-md",
|
|
34
|
+
"s-animate-in s-fade-in-0 s-zoom-in-95",
|
|
35
|
+
"data-[state=closed]:s-animate-out data-[state=closed]:s-fade-out-0 data-[state=closed]:s-zoom-out-95 data-[side=bottom]:s-slide-in-from-top-2 data-[side=left]:s-slide-in-from-right-2 data-[side=right]:s-slide-in-from-left-2 data-[side=top]:s-slide-in-from-bottom-2",
|
|
36
|
+
className || ""
|
|
37
|
+
)}
|
|
38
|
+
{...props}
|
|
39
|
+
/>
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
const [container, setContainer] = useState<Element | undefined>(
|
|
43
|
+
mountPortalContainer
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (mountPortal && !container) {
|
|
48
|
+
const dialogElements = document.querySelectorAll(
|
|
49
|
+
".s-sheet[role=dialog][data-state=open]"
|
|
50
|
+
);
|
|
51
|
+
const defaultContainer = dialogElements[dialogElements.length - 1];
|
|
52
|
+
setContainer(defaultContainer);
|
|
53
|
+
}
|
|
54
|
+
}, [mountPortal, container]);
|
|
55
|
+
|
|
56
|
+
return mountPortal ? (
|
|
57
|
+
<TooltipPrimitive.Portal container={container}>
|
|
58
|
+
{content}
|
|
59
|
+
</TooltipPrimitive.Portal>
|
|
60
|
+
) : (
|
|
61
|
+
content
|
|
62
|
+
);
|
|
63
|
+
});
|
|
36
64
|
|
|
37
65
|
interface TooltipProps extends TooltipContentProps {
|
|
38
66
|
trigger: React.ReactNode;
|
|
@@ -51,11 +79,9 @@ const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(
|
|
|
51
79
|
<TooltipTrigger asChild={tooltipTriggerAsChild}>
|
|
52
80
|
{trigger}
|
|
53
81
|
</TooltipTrigger>
|
|
54
|
-
<
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
</TooltipContent>
|
|
58
|
-
</TooltipPortal>
|
|
82
|
+
<TooltipContent {...props} ref={ref}>
|
|
83
|
+
{label}
|
|
84
|
+
</TooltipContent>
|
|
59
85
|
</TooltipRoot>
|
|
60
86
|
</TooltipProvider>
|
|
61
87
|
)
|
|
@@ -6,12 +6,16 @@ import { cn } from "@sparkle/lib/utils";
|
|
|
6
6
|
interface TruncatedTextProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
7
7
|
children: string | React.ReactNode;
|
|
8
8
|
lineClamp?: number;
|
|
9
|
+
mountPortal?: boolean;
|
|
10
|
+
mountPortalContainer?: HTMLElement;
|
|
9
11
|
}
|
|
10
12
|
|
|
11
13
|
export const TruncatedText: React.FC<TruncatedTextProps> = ({
|
|
12
14
|
children,
|
|
13
15
|
className,
|
|
14
16
|
lineClamp = 2,
|
|
17
|
+
mountPortal,
|
|
18
|
+
mountPortalContainer,
|
|
15
19
|
...props
|
|
16
20
|
}) => {
|
|
17
21
|
const [isTruncated, setIsTruncated] = React.useState(false);
|
|
@@ -47,6 +51,8 @@ export const TruncatedText: React.FC<TruncatedTextProps> = ({
|
|
|
47
51
|
trigger={textElement}
|
|
48
52
|
label={children}
|
|
49
53
|
tooltipTriggerAsChild={true}
|
|
54
|
+
mountPortal={mountPortal}
|
|
55
|
+
mountPortalContainer={mountPortalContainer}
|
|
50
56
|
/>
|
|
51
57
|
);
|
|
52
58
|
}
|