@use 'iro-sass/src/index' as iro; @use '../functions' as fn; @include iro.props-namespace('badge') { @include iro.props-store(( --dims: ( --pad-x: fn.global-dim(--size --50), --pad-y: 0, --rounding: 3px, --fixed-100: 1em, --fixed-200: 1.5em, --200: ( --pad-x: fn.global-dim(--size --75), --pad-y: fn.global-dim(--size --25), ), --pill: ( --pad-x: fn.global-dim(--size --115), --200: ( --pad-x: fn.global-dim(--size --125), ), ), ), ), 'dims'); @include iro.props-store(( --colors: ( --bg: fn.global-color(--obj-hi), --label: fn.global-color(--fg-lo), --hover: ( --bg: fn.global-color(--obj), ), --active: ( --bg: fn.global-color(--obj-lo), ), --key-focus: ( --border: fn.global-color(--focus --fill), --shadow: fn.global-color(--focus --shadow), ), --primary: ( --bg: fn.global-color(--fg-lo), --label: fn.global-color(--bg), --hover: ( --bg: fn.global-color(--fg), ), --active: ( --bg: fn.global-color(--fg), ), ), --accent: ( --bg: fn.global-color(--accent --primary --solid --bg), --label: fn.global-color(--accent --primary --solid --fg), --hover: ( --bg: fn.global-color(--accent --primary --solid --obj), ), --active: ( --bg: fn.global-color(--accent --primary --solid --obj-lo), ), ), --accent-quiet: ( --bg: fn.global-color(--accent --primary --quiet --bg), --label: fn.global-color(--accent --primary --quiet --fg), --hover: ( --bg: fn.global-color(--accent --primary --quiet --obj), ), --active: ( --bg: fn.global-color(--accent --primary --quiet --obj-lo), ), ) ), ), 'colors'); @include iro.bem-object(iro.props-namespace()) { display: inline-block; padding: fn.dim(--pad-y) fn.dim(--pad-x); border-radius: fn.dim(--rounding); background-color: fn.color(--bg); color: fn.color(--label); 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); } } @each $variant in 'primary' 'accent' 'accent-quiet' { @include iro.bem-modifier($variant) { background-color: fn.color(--#{$variant} --bg); color: fn.color(--#{$variant} --label); &:link, &:visited, &:enabled { &:hover { background-color: fn.color(--#{$variant} --hover --bg); } &:active { background-color: fn.color(--#{$variant} --active --bg); } } } } &:link, &:visited, &:enabled { @include iro.bem-at-theme('keyboard') { &:focus { background-color: transparent; box-shadow: inset 0 0 0 2px fn.color(--key-focus --border), fn.color(--key-focus --shadow); color: currentColor; } } } @include iro.bem-modifier('pill') { padding-right: fn.dim(--pill --pad-x); padding-left: fn.dim(--pill --pad-x); border-radius: 10em; } @include iro.bem-modifier('200') { padding: fn.dim(--200 --pad-y) fn.dim(--200 --pad-x); @include iro.bem-modifier('pill') { padding-right: fn.dim(--pill --200 --pad-x); padding-left: fn.dim(--pill --200 --pad-x); } } @include iro.bem-modifier('fixed-100') { width: fn.dim(--fixed-100); } @include iro.bem-modifier('fixed-200') { width: fn.dim(--fixed-200); } @include iro.bem-modifier('small') { font-size: fn.global-dim(--font-size --75); } } }