@use 'iro-sass/src/index' as iro; @use '../functions' as fn; @include iro.props-namespace('action-button') { @include iro.props-store(( --dims: ( --pad-x: .6rem, --pad-y: .6rem, --rounding: 3px, ), ), 'dims'); @include iro.props-store(( --colors: ( --bg: fn.global-color(--bg-hi), --label: fn.global-color(--fg), --border: fn.global-color(--obj-lo), --shadow: 0 0 0 0 transparent, --hover: ( --bg: fn.global-color(--bg-hi2), --label: fn.global-color(--fg-lo), --border: fn.global-color(--fg-hi2), --shadow: 0 0 0 0 transparent, ), --active: ( --bg: fn.global-color(--obj-hi), --label: fn.global-color(--fg-lo), --border: fn.global-color(--fg-hi2), --shadow: 0 0 0 0 transparent, ), --selected: ( --bg: fn.global-color(--obj-hi), --label: fn.global-color(--fg), --border: fn.global-color(--fg-hi3), --shadow: 0 0 0 0 transparent, --hover: ( --label: fn.global-color(--fg-lo), --border: fn.global-color(--fg-hi2), --shadow: 0 0 0 0 transparent, ), --key-focus: ( --bg: fn.global-color(--obj-hi), ), ), --disabled: ( --bg: fn.global-color(--obj-hi), --label: fn.global-color(--fg-hi3), --border: fn.global-color(--obj-hi), --shadow: 0 0 0 0 transparent, ), --key-focus: ( --bg: fn.global-color(--bg-hi2), --label: fn.global-color(--fg-lo), --border: fn.global-color(--focus --fill), --shadow: fn.global-color(--focus --shadow), ), --quiet: ( --label: fn.global-color(--fg), --hover: ( --bg: fn.global-color(--obj-hi), --label: fn.global-color(--fg-lo), ), --active: ( --bg: fn.global-color(--obj), --label: fn.global-color(--fg-lo), ), --selected: ( --bg: fn.global-color(--obj-hi), --label: fn.global-color(--fg), --hover: ( --label: fn.global-color(--fg-lo), ), --key-focus: ( --bg: fn.global-color(--obj), ), ), --disabled: ( --label: fn.global-color(--fg-hi3), ), --key-focus: ( --bg: fn.global-color(--bg-hi2), --label: fn.global-color(--fg-lo), --border: fn.global-color(--focus --fill), --shadow: fn.global-color(--focus --shadow), ), ), ), ), 'colors'); @include iro.bem-object(iro.props-namespace()) { display: inline-block; padding: fn.dim(--pad-y) fn.dim(--pad-x); border: 1px solid fn.color(--border); border-radius: fn.dim(--rounding); background-color: fn.color(--bg); box-shadow: fn.color(--shadow); color: fn.color(--label); line-height: 1; text-align: center; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover { border-color: fn.color(--hover --border); background-color: fn.color(--hover --bg); box-shadow: fn.color(--hover --shadow); color: fn.color(--hover --label); } &:active { border-color: fn.color(--active --border); background-color: fn.color(--active --bg); box-shadow: fn.color(--active --shadow); color: fn.color(--active --label); } } @include iro.bem-at-theme('keyboard') { &:focus { border-color: fn.color(--key-focus --border); background-color: fn.color(--key-focus --bg); box-shadow: inset 0 0 0 1px fn.color(--key-focus --border), fn.color(--key-focus --shadow); color: fn.color(--key-focus --label); } } @include iro.bem-is('selected') { border-color: fn.color(--selected --border); background-color: fn.color(--selected --bg); box-shadow: fn.color(--selected --shadow); color: fn.color(--selected --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover, &:active { border-color: fn.color(--selected --hover --border); background-color: fn.color(--selected --bg); box-shadow: fn.color(--selected --hover --shadow); color: fn.color(--selected --hover --label); } } @include iro.bem-at-theme('keyboard') { &:focus { border-color: fn.color(--key-focus --border); background-color: fn.color(--selected --key-focus --bg); box-shadow: inset 0 0 0 1px fn.color(--key-focus --border), fn.color(--key-focus --shadow); color: fn.color(--key-focus --label); } } } @include iro.bem-modifier('quiet') { border-color: transparent; background-color: transparent; box-shadow: none; color: fn.color(--quiet --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover { border-color: transparent; background-color: fn.color(--quiet --hover --bg); box-shadow: none; color: fn.color(--quiet --hover --label); } &:active { border-color: transparent; background-color: fn.color(--quiet --active --bg); box-shadow: none; color: fn.color(--quiet --active --label); } } @include iro.bem-at-theme('keyboard') { &:focus { border-color: fn.color(--quiet --key-focus --border); background-color: fn.color(--quiet --key-focus --bg); box-shadow: inset 0 0 0 1px fn.color(--quiet --key-focus --border), fn.color(--quiet --key-focus --shadow); color: fn.color(--quiet --key-focus --label); } } @include iro.bem-is('selected') { border-color: transparent; background-color: fn.color(--quiet --selected --bg); box-shadow: none; color: fn.color(--quiet --selected --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover, &:active { border-color: transparent; background-color: fn.color(--quiet --selected --bg); box-shadow: none; color: fn.color(--quiet --selected --hover --label); } } @include iro.bem-at-theme('keyboard') { &:focus { border-color: fn.color(--quiet --key-focus --border); background-color: fn.color(--quiet --selected --key-focus --bg); box-shadow: inset 0 0 0 1px fn.color(--quiet --key-focus --border), fn.color(--quiet --key-focus --shadow); color: fn.color(--quiet --key-focus --label); } } } } @include iro.bem-is('disabled') { border-color: fn.color(--disabled --border); background-color: fn.color(--disabled --bg); box-shadow: fn.color(--disabled --shadow); color: fn.color(--disabled --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover, &:active { border-color: fn.color(--disabled --border); background-color: fn.color(--disabled --bg); box-shadow: fn.color(--disabled --shadow); color: fn.color(--disabled --label); } } @include iro.bem-modifier('quiet') { border-color: transparent; background-color: transparent; box-shadow: none; color: fn.color(--quiet --disabled --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover, &:active { border-color: transparent; background-color: transparent; box-shadow: none; color: fn.color(--quiet --disabled --label); } } @include iro.bem-is('selected') { background-color: fn.color(--quiet --selected --bg); } } } } }