From 990a2cd28ed8814442546c749c35c63f231df59d Mon Sep 17 00:00:00 2001 From: Volpeon Date: Sat, 8 Nov 2025 11:50:57 +0100 Subject: Heading: Add static theme colors --- src/objects/_heading.scss | 22 +++++++++++++++++ src/objects/_heading.vars.scss | 54 ++++++++++++++++++++++++++++++++++++++++++ src/scopes/_headings.scss | 21 ++++++++++++++++ 3 files changed, 97 insertions(+) (limited to 'src') diff --git a/src/objects/_heading.scss b/src/objects/_heading.scss index 2d27658..1d6e2dc 100644 --- a/src/objects/_heading.scss +++ b/src/objects/_heading.scss @@ -1,4 +1,6 @@ +@use 'sass:map'; @use 'sass:meta'; +@use 'sass:string'; @use 'iro-sass/src/bem'; @use 'iro-sass/src/props'; @use '../props' as *; @@ -60,5 +62,25 @@ } } } + + @each $theme in map.keys(props.get(vars.$static-themes)) { + @include bem.modifier(string.slice($theme, 3)) { + color: props.get(vars.$static-themes, $theme, --text-color); + + @each $mod, $value in vars.$sizes { + @include bem.modifier($mod) { + color: props.get(vars.$static-themes, $theme, --#{$mod}, --text-color); + } + } + + @include bem.modifier('display') { + @each $mod, $value in vars.$sizes { + @include bem.modifier($mod) { + color: props.get(vars.$static-themes, $theme, --display, --#{$mod}, --text-color); + } + } + } + } + } } } diff --git a/src/objects/_heading.vars.scss b/src/objects/_heading.vars.scss index ccef017..cf07488 100644 --- a/src/objects/_heading.vars.scss +++ b/src/objects/_heading.vars.scss @@ -1,3 +1,5 @@ +@use 'sass:map'; +@use 'sass:string'; @use 'iro-sass/src/props'; @use '../core.vars' as core; @@ -151,3 +153,55 @@ $display--sizes: ( 'xl' $display--font-family--xl $display--line-height--xl $display--font-size--xl $display--font-weight--xl $display--letter-spacing--xl $display--feature-settings--xl $display--text-transform--xl $display--text-color--xl, 'xxl' $display--font-family--xxl $display--line-height--xxl $display--font-size--xxl $display--font-weight--xxl $display--letter-spacing--xxl $display--feature-settings--xxl $display--text-transform--xxl $display--text-color--xxl, ) !default; + +$static-themes: props.def(--o-heading, (), 'color'); + +@each $theme in map.keys(props.get(core.$transparent-colors)) { + $heading-theme: --static-#{string.slice($theme, 3)}; + + $static-themes: props.merge($static-themes, ( + $heading-theme: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + + --xxl: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + ), + --xl: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + ), + --lg: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + ), + --md: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + ), + --sm: ( + --text-color: props.get(core.$transparent-colors, $theme, --500), + ), + --xs: ( + --text-color: props.get(core.$transparent-colors, $theme, --500), + ), + + --display: ( + --xxl: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + ), + --xl: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + ), + --lg: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + ), + --md: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + ), + --sm: ( + --text-color: props.get(core.$transparent-colors, $theme, --900), + ), + --xs: ( + --text-color: props.get(core.$transparent-colors, $theme, --500), + ), + ), + ) + )); +} diff --git a/src/scopes/_headings.scss b/src/scopes/_headings.scss index 0a56ef1..362b116 100644 --- a/src/scopes/_headings.scss +++ b/src/scopes/_headings.scss @@ -1,4 +1,5 @@ @use 'sass:map'; +@use 'sass:string'; @use 'iro-sass/src/bem'; @use 'iro-sass/src/props'; @use '../objects/heading.vars' as heading; @@ -67,5 +68,25 @@ } } } + + @each $theme in map.keys(props.get(heading.$static-themes)) { + @include bem.modifier(string.slice($theme, 3)) { + color: props.get(heading.$static-themes, $theme, --text-color); + + @each $mod, $value in heading.$sizes { + #{map.get($-size-map, $mod)} { + color: props.get(heading.$static-themes, $theme, --#{$mod}, --text-color); + } + } + + @include bem.modifier('display') { + @each $mod, $value in heading.$sizes { + #{map.get($-size-map, $mod)} { + color: props.get(heading.$static-themes, $theme, --display, --#{$mod}, --text-color); + } + } + } + } + } } } -- cgit v1.2.3-70-g09d2