UNPKG

@ariakit/react-core

Version:

Ariakit React core

48 lines (45 loc) 1.11 kB
"use client"; import { HeadingContext } from "./CZ4GFWYL.js"; import { createElement, createHook, forwardRef } from "./ILRXHV7V.js"; import { useMergeRefs, useTagName } from "./K2XTQB3X.js"; // src/heading/heading.tsx import { useContext, useMemo, useRef } from "react"; import { jsx } from "react/jsx-runtime"; var TagName = "h1"; var useHeading = createHook( function useHeading2(props) { const ref = useRef(null); const level = useContext(HeadingContext) || 1; const Element = `h${level}`; const tagName = useTagName(ref, Element); const isNativeHeading = useMemo( () => !!tagName && /^h\d$/.test(tagName), [tagName] ); props = { render: /* @__PURE__ */ jsx(Element, {}), role: !isNativeHeading ? "heading" : void 0, "aria-level": !isNativeHeading ? level : void 0, ...props, ref: useMergeRefs(ref, props.ref) }; return props; } ); var Heading = forwardRef(function Heading2(props) { const htmlProps = useHeading(props); return createElement(TagName, htmlProps); }); export { useHeading, Heading };