@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
45 lines (44 loc) • 1.4 kB
JavaScript
"use client";
import _extends from "@babel/runtime/helpers/esm/extends";
import React, { useContext } from 'react';
import classnames from 'classnames';
import E from "../Element.js";
import { setNextLevel, getHeadingSize } from "../../components/heading/HeadingHelpers.js";
import { useTheme } from "../../shared/index.js";
import { TypographyContext } from "./Typography.js";
const H = ({
as = 'h1',
is,
level,
size,
proseMaxWidth: proseMaxWidthProp,
className,
...props
}) => {
const numSiz = parseFloat(String(as || is).substring(1));
if (level === 'use') {
setNextLevel(numSiz);
}
const theme = useTheme();
const targetSize = size === 'auto' && getHeadingSize(theme?.name)[numSiz] || size || 'xx-large';
const {
proseMaxWidth: proseMaxWidthContext
} = useContext(TypographyContext);
const proseMaxWidth = proseMaxWidthProp !== null && proseMaxWidthProp !== void 0 ? proseMaxWidthProp : proseMaxWidthContext;
const style = proseMaxWidth ? {
maxWidth: `${proseMaxWidth === true ? 60 : proseMaxWidth}ch`
} : undefined;
return React.createElement(E, _extends({
as: as || is,
internalClass: classnames(className, targetSize && `dnb-h--${targetSize}`)
}, props, {
style: {
...style,
...props.style
}
}));
};
H._isHeadingElement = true;
H._supportsSpacingProps = true;
export default H;
//# sourceMappingURL=H.js.map