@use 'iro-sass/src/index' as iro; @use '../functions' as fn; @include iro.props-namespace('action-menu') { @include iro.props-store(( --dims: ( --x: 0, --y: 0, --pad-x: 0, --pad-y: .3rem, --separator: .3rem, --rounding: 3px, --border: 1px, --item: ( --pad-x: .8rem, --pad-y: .4rem, ), ), ), 'dims'); @include iro.props-store(( --colors: ( --shadow: 0 .2em .5em rgba(#000, .2), --border: rgba(#000, .2), --separator: fn.global-color(--obj), --icon: fn.global-color(--fg-hi), --item: ( --hover: ( --bg: fn.global-color(--obj-hi), --label: fn.global-color(--fg-lo), ), --disabled: ( --label: fn.global-color(--fg-hi3), ), ), ), ), 'colors'); @include iro.bem-object(iro.props-namespace()) { @include iro.bem-composed-of('action-button' 'object'); position: absolute; z-index: 10000; top: fn.dim(--y); left: fn.dim(--x); padding: fn.dim(--pad-y) fn.dim(--pad-x); border: fn.dim(--border) solid fn.color(--border); border-radius: fn.dim(--rounding); background-color: fn.global-color(--bg); box-shadow: fn.color(--shadow); color: fn.global-color(--fg); @include iro.bem-modifier('static') { position: static; } @include iro.bem-modifier('up-left') { transform: translate(0, -100%); } @include iro.bem-modifier('up-right') { transform: translate(-100%, -100%); } @include iro.bem-modifier('down-right') { transform: translate(-100%, 0); } @include iro.bem-elem('separator') { height: 1px; margin: fn.dim(--separator) 0; background-color: fn.color(--separator); } @include iro.bem-elem('item') { display: block; box-sizing: border-box; width: 100%; padding: fn.dim(--item --pad-y) fn.dim(--item --pad-x); color: fn.color(--item --disabled --label); &:link, &:visited, &:enabled { color: currentColor; @include iro.bem-elem('icon') { color: fn.color(--icon); } &:hover, &:active { background-color: fn.color(--item --hover --bg); color: fn.color(--item --hover --label); @include iro.bem-elem('icon') { color: currentColor; } } } } @include iro.bem-elem('icon-slot') { display: flex; justify-content: center; width: 1em; } @include iro.bem-elem('icon') { color: fn.color(--item --disabled --label); } } }