Sidenav Component
A CSS implementation of the Sprout sidenav component.
Related
Sprout Sidenav documentation
Example
html
<div style="height: 400px;">
<div class="spr-side-drawer-overlay-container spr-side-drawer-overlay-dark-background">
<div class="spr-side-drawer-wrapper">
<div class="spr-side-drawer spr-side-drawer-open">
<div class="spr-side-drawer-header">
<div><i class="spr-icon spr-icon-close"></i></div>
</div>
<div class="spr-sidenav">
<div class="spr-sidenav-nav-group">
<div class="spr-accordion-list">
<div class="spr-accordion">
<div class="spr-accordion-panel">
<div class="spr-accordion-panel-header">
<div
class="spr-accordion-list-item spr-accordion-list-item-expandable spr-sidenav-selected-list-item">
<div class="spr-accordion-list-item-content-text">
Canines
</div>
<div class="spr-accordion-list-item-indicator">
<i class="spr-icon spr-icon-carat-up"></i>
</div>
</div>
</div>
<div class="spr-accordion-panel-content">
<div class="spr-accordion-list-item spr-accordion-list-sub-item">
Dogs
</div>
<div class="spr-accordion-list-item spr-accordion-list-sub-item">
Wolves
</div>
<div class="spr-accordion-list-item spr-accordion-list-sub-item">
Maybe Foxes
</div>
</div>
</div>
<div class="spr-accordion-panel">
<div class="spr-accordion-panel-header">
<div
class="spr-accordion-list-item spr-accordion-list-item-expandable">
<div class="spr-accordion-list-item-content-text">
Felines
</div>
<div class="spr-accordion-list-item-indicator">
<i class="spr-icon spr-icon-carat-down"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="spr-sidenav-nav-group spr-sidenav-footer">
<div class="spr-accordion-list">
<div class="spr-accordion">
<div class="spr-accordion-panel">
<div class="spr-accordion-panel-header">
<div class="spr-accordion-list-item">
<div class="spr-accordion-list-item-content-text">
Cat Facts
</div>
</div>
</div>
</div>
<div class="spr-accordion-panel">
<div class="spr-accordion-panel-header">
<div class="spr-accordion-list-item">
<div class="spr-accordion-list-item-content-text">
Log Out
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Compiled CSS
Example
scss
@import 'components/sidenav';
css
compiled
@keyframes openPopover {
from {
transform: scale(0.9);
}
to {
transform: scale(1);
}
}
.spr-sidenav {
background-color: #18191b;
height: 100%;
display: flex;
flex-direction: column;
position: relative;
justify-content: space-between;
}
.spr-sidenav .spr-icon {
/* override the color and of the icons
that are children of the sidenav */
background-color: #f7f7f8 !important;
}
.spr-sidenav .spr-accordion-list-item {
/* This is a modified squish where we have slightly less right
padding to accommodate for the optional indicator arrows */
padding: 0.75rem 1.5rem;
padding-right: 1.5rem;
color: #fff;
text-decoration: none;
/* override the background color and text color of list items
that are children of the sidenav */
background-color: #18191b;
color: #f7f7f8 !important;
/* Convenience for resetting default link styles, since these will
likely be included in the nav, either as the direct item or
nested under */
}
.spr-sidenav .spr-accordion-list-item, .spr-sidenav .spr-accordion-list-item.spr-accordion-list-item-expandable {
font-weight: 600;
}
.spr-sidenav .spr-accordion-list-item.spr-accordion-list-sub-item {
padding-left: 2.25rem;
font-weight: 400;
}
.spr-sidenav .spr-accordion-list-item.a,
.spr-sidenav .spr-accordion-list-item a {
font-weight: 400;
color: #fff;
text-decoration: none;
}
.spr-sidenav .spr-accordion-list-item:hover {
background-color: rgba(255, 255, 255, 0.08) !important;
}
.spr-sidenav .spr-accordion-list-item:active {
background-color: rgba(255, 255, 255, 0.16) !important;
}
.spr-sidenav .spr-sidenav-nav-group {
/* override the background color of nav groups
for future integration of light vs dark mode */
background-color: #18191b !important;
flex: 1;
}
.spr-sidenav .spr-sidenav-footer {
border-top: #6b6f7b solid 1px;
flex: 0;
}
.spr-sidenav .spr-sidenav-selected-list-item {
box-shadow: inset 0.25rem 0 0 0 #67d683;
transition-property: box-shadow;
transition-duration: 0.11s;
transition-timing-function: ease-in-out;
}