UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

69 lines (68 loc) 2.52 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _clsx = _interopRequireDefault(require("clsx")); var _SpacingUtils = require("../space/SpacingUtils.js"); var _Typography = require("../../elements/typography/Typography.js"); var _componentHelper = require("../../shared/component-helper.js"); var _StatRootContext = _interopRequireDefault(require("./StatRootContext.js")); var _useStatSkeleton = _interopRequireDefault(require("./useStatSkeleton.js")); var _Provider = _interopRequireDefault(require("../../shared/Provider.js")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function Label(props) { const { inRoot, skeleton: rootSkeleton } = (0, _react.useContext)(_StatRootContext.default); const { children, element: elementProp, className = null, srOnly = false, fontSize = 'basis', fontWeight = 'regular', variant = 'plain', skeleton = null, style = null, ...rest } = props; const Element = elementProp !== null && elementProp !== void 0 ? elementProp : inRoot ? 'dt' : 'span'; const { hasSkeleton, skeletonClass, applySkeletonAttributes } = (0, _useStatSkeleton.default)(skeleton); const childSkeleton = skeleton !== null && skeleton !== undefined ? hasSkeleton : rootSkeleton; const resolvedLineHeight = (0, _Typography.getHeadingLineHeightSize)(fontSize); if (!inRoot) { (0, _componentHelper.warn)('Stat.Label should be used inside Stat.Root'); } const attributes = (0, _componentHelper.validateDOMAttributes)(props, (0, _SpacingUtils.useSpacing)(props, { ...rest, style, className: (0, _clsx.default)(`dnb-stat dnb-stat__label dnb-stat__label--${variant} dnb-t__size--${fontSize} dnb-t__line-height--${resolvedLineHeight} dnb-t__weight--${fontWeight}`, skeletonClass, className, srOnly && 'dnb-sr-only') })); applySkeletonAttributes(attributes); return (0, _jsxRuntime.jsx)(_StatRootContext.default, { value: { inRoot, skeleton: childSkeleton }, children: (0, _jsxRuntime.jsx)(_Provider.default, { skeleton: hasSkeleton, children: (0, _jsxRuntime.jsx)(Element, { ...attributes, children: children }) }) }); } Label._supportsSpacingProps = true; Label._statRole = 'label'; var _default = exports.default = Label; //# sourceMappingURL=Label.js.map