@use 'iro-sass/src/index' as iro; @include iro.props-namespace('action-button') { @include iro.props-store(( --dims: ( --padding-x: .6rem, --padding-y: .6rem, --rounding: 3px, ), --colors: ( --bg: iro.props-get(--colors --bg-hi, $global: true), --label: iro.props-get(--colors --fg, $global: true), --border: iro.props-get(--colors --obj-lo, $global: true), --shadow: 0 0 0 0 transparent, --hover: ( --bg: iro.props-get(--colors --bg-hi2, $global: true), --label: iro.props-get(--colors --fg-lo, $global: true), --border: iro.props-get(--colors --fg-hi2, $global: true), --shadow: 0 0 0 0 transparent, ), --active: ( --bg: iro.props-get(--colors --obj-hi, $global: true), --label: iro.props-get(--colors --fg-lo, $global: true), --border: iro.props-get(--colors --fg-hi2, $global: true), --shadow: 0 0 0 0 transparent, ), --selected: ( --bg: iro.props-get(--colors --obj-hi, $global: true), --label: iro.props-get(--colors --fg, $global: true), --border: iro.props-get(--colors --fg-hi3, $global: true), --shadow: 0 0 0 0 transparent, --hover: ( --label: iro.props-get(--colors --fg-lo, $global: true), --border: iro.props-get(--colors --fg-hi2, $global: true), --shadow: 0 0 0 0 transparent, ), --key-focus: ( --bg: iro.props-get(--colors --obj-hi, $global: true), ), ), --disabled: ( --bg: iro.props-get(--colors --obj-hi, $global: true), --label: iro.props-get(--colors --fg-hi3, $global: true), --border: iro.props-get(--colors --obj-hi, $global: true), --shadow: 0 0 0 0 transparent, ), --key-focus: ( --bg: iro.props-get(--colors --bg-hi2, $global: true), --label: iro.props-get(--colors --fg-lo, $global: true), --border: iro.props-get(--colors --focus --fill, $global: true), --shadow: iro.props-get(--colors --focus --shadow, $global: true), ), --quiet: ( --label: iro.props-get(--colors --fg, $global: true), --hover: ( --bg: iro.props-get(--colors --obj-hi, $global: true), --label: iro.props-get(--colors --fg-lo, $global: true), ), --active: ( --bg: iro.props-get(--colors --obj, $global: true), --label: iro.props-get(--colors --fg-lo, $global: true), ), --selected: ( --bg: iro.props-get(--colors --obj-hi, $global: true), --label: iro.props-get(--colors --fg, $global: true), --hover: ( --label: iro.props-get(--colors --fg-lo, $global: true), ), --key-focus: ( --bg: iro.props-get(--colors --obj, $global: true), ), ), --disabled: ( --label: iro.props-get(--colors --fg-hi3, $global: true), ), --key-focus: ( --bg: iro.props-get(--colors --bg-hi2, $global: true), --label: iro.props-get(--colors --fg-lo, $global: true), --border: iro.props-get(--colors --focus --fill, $global: true), --shadow: iro.props-get(--colors --focus --shadow, $global: true), ), ), ), )); @include iro.bem-object(iro.props-namespace()) { display: inline-block; padding: iro.props-get(--dims --padding-y) iro.props-get(--dims --padding-x); border: 1px solid iro.props-get(--colors --border); border-radius: iro.props-get(--dims --rounding); background-color: iro.props-get(--colors --bg); box-shadow: iro.props-get(--colors --shadow); color: iro.props-get(--colors --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: iro.props-get(--colors --hover --border); background-color: iro.props-get(--colors --hover --bg); box-shadow: iro.props-get(--colors --hover --shadow); color: iro.props-get(--colors --hover --label); } &:active { border-color: iro.props-get(--colors --active --border); background-color: iro.props-get(--colors --active --bg); box-shadow: iro.props-get(--colors --active --shadow); color: iro.props-get(--colors --active --label); } } @include iro.bem-at-theme('keyboard') { &:focus { border-color: iro.props-get(--colors --key-focus --border); background-color: iro.props-get(--colors --key-focus --bg); box-shadow: inset 0 0 0 1px iro.props-get(--colors --key-focus --border), iro.props-get(--colors --key-focus --shadow); color: iro.props-get(--colors --key-focus --label); } } @include iro.bem-is('selected') { border-color: iro.props-get(--colors --selected --border); background-color: iro.props-get(--colors --selected --bg); box-shadow: iro.props-get(--colors --selected --shadow); color: iro.props-get(--colors --selected --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover, &:active { border-color: iro.props-get(--colors --selected --hover --border); background-color: iro.props-get(--colors --selected --bg); box-shadow: iro.props-get(--colors --selected --hover --shadow); color: iro.props-get(--colors --selected --hover --label); } } @include iro.bem-at-theme('keyboard') { &:focus { border-color: iro.props-get(--colors --key-focus --border); background-color: iro.props-get(--colors --selected --key-focus --bg); box-shadow: inset 0 0 0 1px iro.props-get(--colors --key-focus --border), iro.props-get(--colors --key-focus --shadow); color: iro.props-get(--colors --key-focus --label); } } } @include iro.bem-modifier('quiet') { border-color: transparent; background-color: transparent; box-shadow: none; color: iro.props-get(--colors --quiet --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover { border-color: transparent; background-color: iro.props-get(--colors --quiet --hover --bg); box-shadow: none; color: iro.props-get(--colors --quiet --hover --label); } &:active { border-color: transparent; background-color: iro.props-get(--colors --quiet --active --bg); box-shadow: none; color: iro.props-get(--colors --quiet --active --label); } } @include iro.bem-at-theme('keyboard') { &:focus { border-color: iro.props-get(--colors --quiet --key-focus --border); background-color: iro.props-get(--colors --quiet --key-focus --bg); box-shadow: inset 0 0 0 1px iro.props-get(--colors --quiet --key-focus --border), iro.props-get(--colors --quiet --key-focus --shadow); color: iro.props-get(--colors --quiet --key-focus --label); } } @include iro.bem-is('selected') { border-color: transparent; background-color: iro.props-get(--colors --quiet --selected --bg); box-shadow: none; color: iro.props-get(--colors --quiet --selected --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover, &:active { border-color: transparent; background-color: iro.props-get(--colors --quiet --selected --bg); box-shadow: none; color: iro.props-get(--colors --quiet --selected --hover --label); } } @include iro.bem-at-theme('keyboard') { &:focus { border-color: iro.props-get(--colors --quiet --key-focus --border); background-color: iro.props-get(--colors --quiet --selected --key-focus --bg); box-shadow: inset 0 0 0 1px iro.props-get(--colors --quiet --key-focus --border), iro.props-get(--colors --quiet --key-focus --shadow); color: iro.props-get(--colors --quiet --key-focus --label); } } } } @include iro.bem-is('disabled') { border-color: iro.props-get(--colors --disabled --border); background-color: iro.props-get(--colors --disabled --bg); box-shadow: iro.props-get(--colors --disabled --shadow); color: iro.props-get(--colors --disabled --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover, &:active { border-color: iro.props-get(--colors --disabled --border); background-color: iro.props-get(--colors --disabled --bg); box-shadow: iro.props-get(--colors --disabled --shadow); color: iro.props-get(--colors --disabled --label); } } @include iro.bem-modifier('quiet') { border-color: transparent; background-color: transparent; box-shadow: none; color: iro.props-get(--colors --quiet --disabled --label); @include iro.bem-multi('&:link, &:visited', 'modifier' 'native') { &:hover, &:active { border-color: transparent; background-color: transparent; box-shadow: none; color: iro.props-get(--colors --quiet --disabled --label); } } @include iro.bem-is('selected') { background-color: iro.props-get(--colors --quiet --selected --bg); } } } } }