UNPKG

@vela-ui/react

Version:

Vela UI React components

60 lines (58 loc) 1.88 kB
// 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 };