From 6de1156129ed89e84d36c3b5ccd9f8cb799df790 Mon Sep 17 00:00:00 2001 From: Volpeon Date: Thu, 14 Nov 2024 18:10:54 +0100 Subject: Add tabs --- src/objects/_tabs.scss | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/objects/_tabs.scss (limited to 'src/objects/_tabs.scss') diff --git a/src/objects/_tabs.scss b/src/objects/_tabs.scss new file mode 100644 index 0000000..25894d5 --- /dev/null +++ b/src/objects/_tabs.scss @@ -0,0 +1,90 @@ +@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); + + @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); + + &::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); + } + } + } + } +} -- cgit v1.2.3-70-g09d2