@use 'sass:map'; @use 'iro-sass/src/bem'; @use 'iro-sass/src/props'; @use '../objects/heading.vars' as heading; @mixin styles { /* stylelint-disable-next-line scss/dollar-variable-pattern */ $-size-map: ( xs: h6, sm: h5, md: h4, lg: h3, xl: h2, xxl: h1, ); @include bem.scope('headings') { h1, h2, h3, h4, h5, h6 { display: block; margin-block-start: props.get(heading.$margin-bs); font-family: props.get(heading.$font-family); font-weight: props.get(heading.$font-weight); font-feature-settings: props.get(heading.$feature-settings); line-height: props.get(heading.$line-height); text-transform: none; letter-spacing: normal; transform: translateX(props.get(heading.$offset)); } @include bem.elem('highlight') { background-image: linear-gradient(to top, transparent .15em, props.get(heading.$bg-color) .15em, props.get(heading.$bg-color) .6em, transparent .6em); } @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings in heading.$sizes { #{map.get($-size-map, $mod)} { font-family: props.get($font-family); font-size: props.get($font-size); font-weight: props.get($font-weight); font-feature-settings: props.get($feature-settings); line-height: props.get($line-height); letter-spacing: props.get($letter-spacing); } } @include bem.modifier('display') { @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings in heading.$display--sizes { #{map.get($-size-map, $mod)} { font-family: props.get($font-family); font-size: props.get($font-size); font-weight: props.get($font-weight); font-feature-settings: props.get($feature-settings); line-height: props.get($line-height); letter-spacing: props.get($letter-spacing); } } } } }