@use 'iro-sass/src/index' as iro; @use '../functions' as fn; $themes: accent positive negative warning; @include iro.props-namespace('badge') { @include iro.props-store(( --dims: ( --pad-b: fn.global-dim(--size --100), --pad-i: fn.global-dim(--size --150), --pad-i-pill: fn.global-dim(--size --200), --rounding: fn.global-dim(--rounding), --font-size: fn.global-dim(--font-size --100), --sm: ( --pad-b: fn.global-dim(--size --50), --pad-i: fn.global-dim(--size --115), --pad-i-pill: fn.global-dim(--size --150), --font-size: fn.global-dim(--font-size --75), ), --lg: ( --pad-b: fn.global-dim(--size --125), --pad-i: fn.global-dim(--size --175), --pad-i-pill: fn.global-dim(--size --225), --font-size: fn.global-dim(--font-size --150), ), --xl: ( --pad-b: fn.global-dim(--size --160), --pad-i: fn.global-dim(--size --225), --pad-i-pill: fn.global-dim(--size --300), --font-size: fn.global-dim(--font-size --200), ), ), --colors: ( --bg: fn.global-color(--heading), --label: fn.global-color(--bg-l2), --hover: ( --bg: fn.global-color(--text), ), --active: ( --bg: fn.global-color(--text), ), --key-focus: ( --bg: fn.global-color(--base --50), --label: fn.global-color(--heading), --border: fn.global-color(--yellow-static --400), ), --quiet: ( --bg: fn.global-color(--border-mute), --label: fn.global-color(--heading), --hover: ( --bg: fn.global-color(--border), ), --active: ( --bg: fn.global-color(--border-strong), ), ), ), )); @each $theme in $themes { @include iro.props-store(( --colors: ( --#{$theme}: ( --bg: fn.global-color(--#{$theme} --800), --label: fn.global-color(--#{$theme} --800-text), --hover: ( --bg: fn.global-color(--#{$theme} --900), ), --active: ( --bg: fn.global-color(--#{$theme} --900), ), ), --#{$theme}-quiet: ( --bg: fn.global-color(--#{$theme} --200), --label: fn.global-color(--#{$theme} --1100), --hover: ( --bg: fn.global-color(--#{$theme} --300), ), --active: ( --bg: fn.global-color(--#{$theme} --300), ), ) ), )); } @include iro.bem-object(iro.props-namespace()) { display: inline-block; padding-block: fn.dim(--pad-b); padding-inline: fn.dim(--pad-i); border-radius: fn.dim(--rounding); background-color: fn.color(--bg); color: fn.color(--label); font-size: fn.dim(--font-size); line-height: fn.global-dim(--font --standard --line-height); text-align: center; text-decoration: none; &:link, &:visited, &:enabled { &:hover { background-color: fn.color(--hover --bg); } &:active { background-color: fn.color(--active --bg); } } @include iro.bem-modifier('quiet') { background-color: fn.color(--quiet --bg); color: fn.color(--quiet --label); &:link, &:visited, &:enabled { &:hover { background-color: fn.color(--quiet --hover --bg); } &:active { background-color: fn.color(--quiet --active --bg); } } } @each $theme in $themes { @include iro.bem-modifier($theme) { background-color: fn.color(--#{$theme} --bg); color: fn.color(--#{$theme} --label); &:link, &:visited, &:enabled { &:hover { background-color: fn.color(--#{$theme} --hover --bg); } &:active { background-color: fn.color(--#{$theme} --active --bg); } } @include iro.bem-modifier('quiet') { background-color: fn.color(--#{$theme}-quiet --bg); color: fn.color(--#{$theme}-quiet --label); &:link, &:visited, &:enabled { &:hover { background-color: fn.color(--#{$theme}-quiet --hover --bg); } &:active { background-color: fn.color(--#{$theme}-quiet --active --bg); } } } } } &:link, &:visited, &:enabled { &:focus-visible { background-color: fn.color(--key-focus --bg); box-shadow: 0 0 0 fn.global-dim(--border --thick) fn.color(--key-focus --border); color: fn.color(--key-focus --label); } } @include iro.bem-modifier('pill') { padding-inline: fn.dim(--pad-i-pill); border-radius: 10em; } @each $size in sm lg xl { @include iro.bem-modifier($size) { padding-block: fn.dim(--#{$size} --pad-b); padding-inline: fn.dim(--#{$size} --pad-i); font-size: fn.dim(--#{$size} --font-size); @include iro.bem-modifier('pill') { padding-inline: fn.dim(--#{$size} --pad-i-pill); } } } } }