@ariakit/react-core
Version:
Ariakit React core
48 lines (45 loc) • 1.11 kB
JavaScript
"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
};