UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

62 lines (61 loc) 2.2 kB
"use client"; import React, { useContext } from 'react'; import classnames from 'classnames'; import { createSpacingClasses } from "../space/SpacingHelper.js"; import { getHeadingLineHeightSize } from "../../elements/typography/Typography.js"; import { validateDOMAttributes, warn } from "../../shared/component-helper.js"; import StatRootContext from "./StatRootContext.js"; import useStatSkeleton from "./useStatSkeleton.js"; import Provider from "../../shared/Provider.js"; function Label(props) { const { inRoot, skeleton: rootSkeleton } = useContext(StatRootContext); const { children, element: elementProp, className = null, srOnly = false, fontSize = 'basis', fontWeight = 'regular', variant: variantProp = 'plain', skeleton = null, style = null, ...rest } = props; const Element = elementProp !== null && elementProp !== void 0 ? elementProp : inRoot ? 'dt' : 'span'; const { hasSkeleton, skeletonClass, applySkeletonAttributes } = useStatSkeleton(skeleton); const childSkeleton = skeleton !== null && skeleton !== undefined ? hasSkeleton : rootSkeleton; const resolvedLineHeight = getHeadingLineHeightSize(fontSize); let variant = variantProp; if (variant === 'default') { warn('Stat.Label variant="default" is deprecated. Use variant="plain" instead.'); variant = 'plain'; } if (!inRoot) { warn('Stat.Label should be used inside Stat.Root'); } const attributes = validateDOMAttributes(props, { ...rest, style, className: classnames(`dnb-stat dnb-stat__label dnb-stat__label--${variant} dnb-t__size--${fontSize} dnb-t__line-height--${resolvedLineHeight} dnb-t__weight--${fontWeight}`, createSpacingClasses(props), skeletonClass, className, srOnly && 'dnb-sr-only') }); applySkeletonAttributes(attributes); return React.createElement(StatRootContext.Provider, { value: { inRoot, skeleton: childSkeleton } }, React.createElement(Provider, { skeleton: hasSkeleton }, React.createElement(Element, attributes, children))); } Label._supportsSpacingProps = true; Label._statRole = 'label'; export default Label; //# sourceMappingURL=Label.js.map