@primer/react
Version:
An implementation of GitHub's Primer Design System using React
58 lines (52 loc) • 2.06 kB
JavaScript
var clsx = require('clsx');
var React = require('react');
var Heading_module = require('./Heading.module.css.js');
var jsxRuntime = require('react/jsx-runtime');
var useRefObjectAsForwardedRef = require('../hooks/useRefObjectAsForwardedRef.js');
var Box = require('../Box/Box.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
const Heading = /*#__PURE__*/React.forwardRef(({
as: Component = 'h2',
className,
variant,
...props
}, forwardedRef) => {
const innerRef = React__default.default.useRef(null);
useRefObjectAsForwardedRef.useRefObjectAsForwardedRef(forwardedRef, innerRef);
if (process.env.NODE_ENV !== "production") {
/**
* The Linter yells because it thinks this conditionally calls an effect,
* but since this is a compile-time flag and not a runtime conditional
* this is safe, and ensures the entire effect is kept out of prod builds
* shaving precious bytes from the output, and avoiding mounting a noop effect
*/
// eslint-disable-next-line react-compiler/react-compiler
// eslint-disable-next-line react-hooks/rules-of-hooks
React.useEffect(() => {
if (innerRef.current && !(innerRef.current instanceof HTMLHeadingElement)) {
// eslint-disable-next-line no-console
console.warn('This Heading component should be an instanceof of h1-h6');
}
}, [innerRef]);
}
if (props.sx) {
return /*#__PURE__*/jsxRuntime.jsx(Box, {
as: Component,
className: clsx.clsx(className, Heading_module.Heading),
"data-variant": variant,
...props,
// @ts-ignore temporary disable as we migrate to css modules, until we remove PolymorphicForwardRefComponent
ref: innerRef
});
}
return /*#__PURE__*/jsxRuntime.jsx(Component, {
className: clsx.clsx(className, Heading_module.Heading),
"data-variant": variant,
...props,
ref: innerRef
});
});
Heading.displayName = 'Heading';
module.exports = Heading;
;