@primer/react
Version:
An implementation of GitHub's Primer Design System using React
53 lines (52 loc) • 1.6 kB
JavaScript
import { useId as useId$1 } from "../hooks/useId.js";
import { TooltipContext } from "./TooltipContext.js";
import Tooltip_module_css_default from "./Tooltip.module.css.js";
import { clsx } from "clsx";
import { jsx } from "react/jsx-runtime";
import React, { useMemo } from "react";
//#region src/Tooltip/Tooltip.tsx
/**
* @deprecated
*/
/**
* @deprecated
*/
const Tooltip = /*#__PURE__*/ React.forwardRef(function Tooltip({ as: Component = "span", direction = "n", children, className, text, noDelay, align, wrap, id, ...rest }, ref) {
const tooltipId = useId$1(id);
const tooltipClasses = clsx(className, Tooltip_module_css_default.Tooltip, Tooltip_module_css_default[`Tooltip--${direction}`], {
[Tooltip_module_css_default[`Tooltip--align${align === "left" ? "Left" : "Right"}`]]: align,
[Tooltip_module_css_default["Tooltip--noDelay"]]: noDelay,
[Tooltip_module_css_default["Tooltip--multiline"]]: wrap,
[`tooltipped-${direction}`]: true,
[`tooltipped-align-${align === "left" ? "left" : "right"}-2`]: align,
"tooltipped-no-delay": noDelay,
"tooltipped-multiline": wrap
});
const value = useMemo(() => ({ tooltipId }), [tooltipId]);
return /*#__PURE__*/ jsx(TooltipContext.Provider, {
value,
children: /*#__PURE__*/ jsx(Component, {
role: "tooltip",
"aria-label": text,
id: tooltipId,
...rest,
className: tooltipClasses,
ref,
children
})
});
});
Tooltip.alignments = ["left", "right"];
Tooltip.directions = [
"n",
"ne",
"e",
"se",
"s",
"sw",
"w",
"nw"
];
Tooltip.__SLOT__ = Symbol("Tooltip");
//#endregion
export { Tooltip as default };