lucid-ui
Version:
A UI component library from AppNexus.
238 lines (192 loc) • 5.54 kB
text/less
@import (reference) '../../styles/variables.less';
@import (reference) '../../styles/mixins.less';
@Sidebar-Divider-width: @size-XS;
@Sidebar-transition-duration: @timing-animation-fade;
@Sidebar-transition-half-duration: @Sidebar-transition-duration / 2;
@Sidebar-transition-third-duration: @Sidebar-transition-duration / 3;
@Sidebar-zIndex: 10;
.@{prefix}-Sidebar {
display: flex;
align-items: stretch;
height: 100%;
width: 100%;
& > .@{prefix}-SplitVertical-inner {
width: 100%;
& > .@{prefix}-Sidebar-Bar {
position: relative;
z-index: @Sidebar-zIndex;
background-color: @color-white;
overflow: auto;
display: flex;
flex-direction: column;
.@{prefix}-Sidebar-is-position-left& {
border-right: @size-borderWidth solid @color-neutral-4;
}
.@{prefix}-Sidebar-is-position-right& {
border-left: @size-borderWidth solid @color-neutral-4;
}
& > .@{prefix}-Sidebar-Bar-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: @color-neutral-3;
opacity: 1;
z-index: @Sidebar-zIndex;
.@{prefix}-SplitVertical-is-expanded& {
opacity: 0;
pointer-events: none;
}
}
& > .@{prefix}-Sidebar-Bar-header {
background-color: @color-neutral-3;
color: @color-textColor;
font-size: 16px;
line-height: 20px;
font-weight: @font-weight-medium;
display: flex;
flex-shrink: 0;
.@{prefix}-Sidebar-is-position-left& {
flex-direction: row;
}
.@{prefix}-Sidebar-is-position-right& {
flex-direction: row-reverse;
}
& > .@{prefix}-Sidebar-Bar-Title {
.@{prefix}-Sidebar-is-position-left& {
margin: @size-XS auto @size-XS @size-standard;
}
.@{prefix}-Sidebar-is-position-right& {
margin: @size-XS auto @size-XS 0;
}
}
& > .@{prefix}-Sidebar-expander {
.no-safari-flicker();
.box-sizing();
align-self: flex-start;
display: flex;
justify-content: center;
align-items: center;
flex-shrink: 0;
height: @size-expander-button;
width: @size-expander-button;
margin-top: 2px;
cursor: pointer;
z-index: @Sidebar-zIndex + 1;
&:focus {
background: none;
}
.@{prefix}-ChevronIcon {
stroke: @color-neutral-6;
}
}
}
& > .@{prefix}-Sidebar-Bar-content {
overflow: auto;
flex: 1;
}
& > .@{prefix}-Sidebar-Bar-content.@{prefix}-Sidebar-Bar-content-has-gutters {
padding: @size-XS;
}
}
// Triple specificity to beat some styles in SplitVertical.less
& > .@{prefix}-SplitVertical-Divider.@{prefix}-Sidebar-Divider.@{prefix}-Sidebar-Divider {
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: @color-neutral-3;
width: @Sidebar-Divider-width;
z-index: @Sidebar-zIndex - 1;
.@{prefix}-Sidebar-is-position-left& {
transform: translateX(-@Sidebar-Divider-width);
border-right: @color-neutral-4;
}
.@{prefix}-Sidebar-is-position-right& {
transform: translateX(@Sidebar-Divider-width);
border-left: @color-neutral-4;
}
.@{prefix}-SplitVertical-is-expanded& {
transform: translateX(0);
}
.@{prefix}-Sidebar-is-resize-disabled& {
display: none;
}
.@{prefix}-Sidebar-Divider-gripper {
cursor: grab;
transform: translateX(-0.5px);
}
&:hover {
background-color: @color-neutral-4;
cursor: grab;
.@{prefix}-Sidebar-Divider-gripper {
stroke: @color-darkGray;
}
}
&:active {
cursor: grabbing;
}
}
& > .@{prefix}-Sidebar-Primary {
overflow: auto;
display: flex;
flex-direction: column;
.@{prefix}-Sidebar-is-position-left& {
margin-left: -@Sidebar-Divider-width;
.@{prefix}-Sidebar-is-resize-disabled& {
margin-left: 0;
}
.@{prefix}-SplitVertical-is-expanded& {
margin-left: 0;
}
}
.@{prefix}-Sidebar-is-position-right& {
margin-right: -@Sidebar-Divider-width;
.@{prefix}-Sidebar-is-resize-disabled& {
margin-right: 0;
}
.@{prefix}-SplitVertical-is-expanded& {
margin-right: 0;
}
}
& > .@{prefix}-Sidebar {
flex: 1;
}
// Addresses a Firefox specific rendering issue with a Submarine nested in a Sidebar.
& > .@{prefix}-Submarine,
x:-moz-any-link,
x:default {
display: block;
height: 100%;
}
}
}
&.@{prefix}-SplitVertical-is-animated.@{prefix}-SplitVertical-is-animated {
& > .@{prefix}-SplitVertical-inner {
& > .@{prefix}-Sidebar-Bar {
& > .@{prefix}-Sidebar-Bar-overlay {
transition: opacity @Sidebar-transition-half-duration;
}
}
& > .@{prefix}-SplitVertical-Divider.@{prefix}-Sidebar-Divider {
transition: transform @Sidebar-transition-third-duration, background-color @Sidebar-transition-third-duration;
.@{prefix}-SplitVertical-is-expanded& {
transition: transform @Sidebar-transition-third-duration @Sidebar-transition-duration, background-color @Sidebar-transition-third-duration;
}
}
& > .@{prefix}-Sidebar-Primary {
.@{prefix}-Sidebar-is-position-left& {
transition: margin-left @Sidebar-transition-half-duration linear;
}
.@{prefix}-Sidebar-is-position-right& {
transition: margin-right @Sidebar-transition-third-duration;
.@{prefix}-SplitVertical-is-expanded& {
transition: margin-right @Sidebar-transition-third-duration @Sidebar-transition-duration;
}
}
}
}
}
}