@use 'sass:map'; @use 'sass:meta'; @use 'sass:string'; @use 'iro-sass/src/bem'; @use 'iro-sass/src/props'; @use '../props' as *; @forward 'tabs.vars'; @use 'tabs.vars' as vars; @mixin styles { @include materialize-at-root(meta.module-variables('vars')); @include bem.object('tabs') { display: flex; gap: props.get(vars.$spacing); min-inline-size: 0; padding-inline: props.get(vars.$tab--pad-i); @include bem.elem('tab') { position: relative; display: flex; align-items: center; padding-inline: props.get(vars.$tab--pad-i); margin-inline: calc(-1 * props.get(vars.$tab--pad-i)); color: props.get(vars.$tab--text-color); white-space: nowrap; &::before, &::after { position: absolute; z-index: -10; content: ''; } &::before { inset-block-start: 50%; inset-inline: 0; block-size: 1.5em; border-radius: props.get(vars.$rounding); transform: translateY(-50%); } &::after { inset-block-end: 0; inset-inline: props.get(vars.$tab--pad-i); display: none; block-size: props.get(vars.$indicator--width); background-color: props.get(vars.$tab--selected--text-color); } &:link, &:visited { &:hover, &:active, &:focus-visible { color: props.get(vars.$tab--selected--text-color); } &:focus-visible { &::before { color: props.get(vars.$key-focus--text-color); text-decoration: none; outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); box-shadow: 0 0 0 calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) props.get(vars.$key-focus--outline-color); } } } @include bem.is('selected') { color: props.get(vars.$tab--selected--text-color); &::after { display: block; } } } @include bem.modifier('accent') { @include bem.elem('tab') { &::after { background-color: props.get(vars.$tab--accent--text-color); } @include bem.is('selected') { color: props.get(vars.$tab--accent--text-color); } } } } }