@import './mixins/mixins.scss'; @import './themes/vars.scss'; @include themes-mixin{ @include b(switch) { @include once { vertical-align: middle; user-select: none; display: inline-block; outline: none; } @include e(rail) { @include once { cursor: pointer; position: relative; height: 14px; width: 30px; border-radius: 7px; margin: 3px; transition: background-color .3s $--n-ease-in-out-cubic-bezier; &::before, &::after { box-sizing: border-box; cursor: inherit; content: ""; position: absolute; height: 20px; width: 24px; max-width: 20px; border-radius: 10px; top: -3px; left: -3px; background-size: 800% 800%; transition: left .3s $--n-ease-in-out-cubic-bezier, opacity .3s $--n-ease-in-out-cubic-bezier, max-width .3s $--n-ease-in-out-cubic-bezier, background-position .3s $--n-ease-in-out-cubic-bezier, box-shadow .3s $--n-ease-in-out-cubic-bezier; } &::before { opacity: 1; } &::after { opacity: 0; } @include not-m(disabled) { &:active::before, &:active::after { max-width: 24px; } @include m(active) { &:active::before, &:active::after { left: 9px; } } } @include m(active) { &::before { left: 13px; opacity: 1; } &::after { left: 13px; opacity: 1; } } } &::before { box-shadow: $--switch-switcher-box-shadow; background-position: $--switch-background-position; background-image: map-get($map: $--switch-switcher-color, $key: 'inactive'); } &::after { background-position: $--switch-background-position; background-image: map-get($map: $--switch-switcher-color, $key: 'active'); } background-color: map-get($map: $--switch-rail-background-color, $key: 'inactive'); @include m(active) { background-color: map-get($map: $--switch-rail-background-color, $key: 'active'); } @include m(disabled) { cursor: not-allowed; opacity: .5; } } } }