@use '../base' as *; /* -------------------------------- File#: _1_responsive-sidebar Title: Responsive Sidebar Descr: Responsive sidebar container Usage: codyhouse.co/license -------------------------------- */ /* mobile version only (--default) 👇 */ .sidebar:not(.sidebar--static) { position: fixed; top: 0; left: 0; z-index: var(--z-index-fixed-element, 10); width: 100%; height: 100%; visibility: hidden; transition: visibility 0s 0.3s; &::after { /* overlay layer */ content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: alpha(var(--color-black), 0); transition: background-color .3s; z-index: 1; } .sidebar__panel { /* content */ position: absolute; top: 0; left: 0; z-index: 2; width: 100%; max-width: 380px; height: 100%; overflow: auto; -webkit-overflow-scrolling: touch; background-color: var(--color-bg); transform: translateX(-100%); transition: box-shadow 0.3s, transform 0.3s; } &.sidebar--right-on-mobile { .sidebar__panel { left: auto; right: 0; transform: translateX(100%); } } &.sidebar--is-visible { visibility: visible; transition: none; &::after { background-color: alpha(var(--color-black), 0.85); } .sidebar__panel { transform: translateX(0); box-shadow: var(--shadow-md); } } } /* end mobile version */ .sidebar__header { display: flex; align-items: center; justify-content: space-between; position: sticky; top: 0; } .sidebar__close-btn { --size: 32px; width: var(--size); height: var(--size); display: flex; border-radius: 50%; background-color: var(--color-bg-light); box-shadow: var(--inner-glow), var(--shadow-sm); transition: .2s; flex-shrink: 0; .icon { display: block; margin: auto; } &:hover { background-color: var(--color-bg-lighter); box-shadow: var(--inner-glow), var(--shadow-md); } } .sidebar__footer { background-color: var(--color-bg); } /* desktop version only (--static) 👇 */ .sidebar--static { flex-shrink: 0; flex-grow: 1; width: 100%; max-width: 320px; .sidebar__header { display: none; } .sidebar__footer { background-color: var(--color-bg-dark); } } .sidebar--sticky-on-desktop { position: sticky; top: var(--space-sm); max-height: calc(100vh - var(--space-sm)); overflow: auto; -webkit-overflow-scrolling: touch; } /* end desktop version */ .sidebar--static::before { content: 'static'; } @each $breakpoint, $value in $breakpoints { .sidebar--static\@#{$breakpoint}::before { content: 'mobile'; @include breakpoint(#{$breakpoint}) { content: 'static'; } } }