@vela-ui/react
Version:
Vela UI React components
60 lines (58 loc) • 1.88 kB
JavaScript
// src/components/tooltip.tsx
import {
Tooltip as AriaTooltip,
TooltipTrigger as AriaTooltipTrigger,
composeRenderProps,
OverlayArrow
} from "react-aria-components";
import { tv } from "tailwind-variants";
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
var tooltipVariants = tv({
base: "bg-primary text-primary-foreground z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance",
variants: {
isEntering: {
true: [
"animate-in fade-in-0 zoom-in-95",
"data-[placement=left]:slide-in-from-right-2 data-[placement=right]:slide-in-from-left-2 data-[placement=top]:slide-in-from-bottom-2 data-[placement=bottom]:slide-in-from-top-2"
]
},
isExiting: {
true: "animate-out fade-out-0 zoom-out-95"
}
}
});
var TooltipTrigger = AriaTooltipTrigger;
function Tooltip({ className, showArrow, offset = 10, ...props }) {
return /* @__PURE__ */ jsx(
AriaTooltip,
{
"data-slot": "tooltip",
offset,
className: composeRenderProps(
className,
(className2, renderProps) => tooltipVariants({
...renderProps,
className: className2
})
),
...props,
children: composeRenderProps(props.children, (children) => /* @__PURE__ */ jsxs(Fragment, { children: [
showArrow && /* @__PURE__ */ jsx(OverlayArrow, { className: "group", children: /* @__PURE__ */ jsx(
"svg",
{
width: 12,
height: 12,
viewBox: "0 0 12 12",
className: "fill-primary stroke-border block stroke-1 group-data-[placement=bottom]:rotate-180 group-data-[placement=left]:-rotate-90 group-data-[placement=right]:rotate-90",
children: /* @__PURE__ */ jsx("path", { d: "M0 0 L6 6 L12 0" })
}
) }),
children
] }))
}
);
}
export {
TooltipTrigger,
Tooltip
};