import React, { forwardRef } from "react";
import { applySpacing } from "../../mixins/applySpacing";
import { cx } from "../../utils";
import { classes } from "./tokens";
export const typographyRootCompose = (defaultArgs)=>(Root)=>/*#__PURE__*/ forwardRef((props, ref)=>{
            const { size, children, breakWord, noWrap, medium, bold = defaultArgs?.defaultBold, extraBold, color, isNumeric, isItalic, className, style, ...rest } = props;
            // TODO: Временное решение. Основное решение будет основано на указание тега по-умолчанию в конфигурации
            // TODO: компонента и сбросе стилей по-умолчанию для тега
            const isHeading = defaultArgs?.type === 'heading';
            const ariaHeadingLevel = isHeading ? size?.split('')[1] : null;
            // Порядок определяет приоритет: extraBold и medium перебивают дефолтный bold
            // TODO: Нужно менять поведение, не должен быть bold по-умолчанию
            const fontWeightClass = [
                extraBold && classes.typoExtraBold,
                medium && classes.typoMedium,
                bold && classes.typoBold
            ].find(Boolean);
            return /*#__PURE__*/ React.createElement(Root, {
                size: size,
                ref: ref,
                className: cx(noWrap && classes.typoWithNoWrap, breakWord && classes.typoWithBreakWord, fontWeightClass, isNumeric && classes.typoIsNumeric, isItalic && classes.typoIsItalic, className),
                style: {
                    color,
                    ...style,
                    ...applySpacing(rest)
                },
                "aria-level": ariaHeadingLevel,
                role: isHeading ? 'heading' : undefined,
                ...rest
            }, children);
        });
