frontend/css/layout/_sidebar.scss in trestle-0.10.0.pre vs frontend/css/layout/_sidebar.scss in trestle-0.10.0.pre2
- old
+ new
@@ -1,11 +1,19 @@
@use "sass:math";
+.app-wrapper {
+ --sidebar-width: #{$sidebar-width};
+ --sidebar-width-collapsed: #{$sidebar-width-collapsed};
+ --sidebar-transition-duration: #{$sidebar-transition-duration};
+ --sidebar-transition-timing: ease-out;
+ --sidebar-bg: #{$sidebar-bg};
+}
+
.app-sidebar {
- background: $sidebar-bg;
+ background: var(--sidebar-bg);
- width: $sidebar-width;
+ width: var(--sidebar-width);
padding: 0;
flex-shrink: 0;
position: relative;
@@ -13,54 +21,59 @@
display: flex;
flex-direction: column;
flex-wrap: nowrap;
align-items: stretch;
+
+ transition: width var(--sidebar-transition-duration) var(--sidebar-transition-timing);
}
.app-sidebar-header {
@extend .theme-bg;
height: $header-height;
display: flex;
align-items: stretch;
+ overflow: hidden;
+
.navbar-toggler {
- --bs-navbar-toggler-bg: #{$sidebar-mobile-toggle-bg};
- --bs-navbar-toggler-color: #{$sidebar-mobile-toggle-border-color};
- --bs-navbar-toggler-border-color: #{$sidebar-mobile-toggle-border-color};
+ --#{$prefix}navbar-toggler-bg: #{$sidebar-mobile-toggle-bg};
+ --#{$prefix}navbar-toggler-color: #{$sidebar-mobile-toggle-border-color};
+ --#{$prefix}navbar-toggler-border-color: #{$sidebar-mobile-toggle-border-color};
outline: none;
align-self: center;
margin-left: math.div($grid-gutter-width, 2);
margin-right: math.div($grid-gutter-width, 2);
- background: var(--bs-navbar-toggler-bg);
+ background: var(--#{$prefix}navbar-toggler-bg);
&:hover, &:focus {
- --bs-navbar-toggler-border-color: #{$sidebar-mobile-toggle-active-border-color};
- --bs-navbar-toggler-bg: #{$sidebar-mobile-toggle-active-bg};
+ --#{$prefix}navbar-toggler-border-color: #{$sidebar-mobile-toggle-active-border-color};
+ --#{$prefix}navbar-toggler-bg: #{$sidebar-mobile-toggle-active-bg};
}
}
.navbar-toggler-icon {
- --bs-navbar-toggler-icon-bg: #{$sidebar-mobile-toggle-icon-bg};
+ --#{$prefix}navbar-toggler-icon-bg: #{$sidebar-mobile-toggle-icon-bg};
}
}
.app-sidebar-title {
- flex: 1;
+ flex: 1 0 var(--sidebar-width);
+ width: var(--sidebar-width);
display: flex;
align-items: center;
- padding: 10px 15px;
+ padding: 0.5rem 0.875rem;
- font-size: 1.4rem;
+ font-size: 1.25rem;
font-weight: 500;
text-shadow: rgba(black, 0.5) 0 1px 1px;
color: white;
&:hover, &:focus {
@@ -70,11 +83,11 @@
img {
max-height: 100%;
& + .title-large {
- margin-left: 10px;
+ margin-left: 0.75rem;
}
}
.title-small {
display: none;
@@ -110,12 +123,13 @@
background: $sidebar-toggle-bg;
color: $sidebar-toggle-color;
border: none;
- font-size: 1.4rem;
- padding: 10px 20px;
+ font-size: 1.25rem;
+ width: var(--sidebar-width-collapsed);
+ padding: 0.625rem;
cursor: pointer;
opacity: 0.75;
@@ -136,41 +150,35 @@
html, body {
overflow-x: hidden;
}
.app-wrapper {
- margin-left: -$sidebar-width;
- margin-right: 0;
+ width: calc(100% + var(--sidebar-width));
- &.animate {
- transition: all $sidebar-transition-duration ease-out;
- transition-property: margin-left, margin-right;
- }
- }
+ translate: calc(var(--sidebar-width) * -1);
+ transition: translate var(--sidebar-transition-duration) ease-out;
- .mobile-nav-expanded {
- .app-wrapper {
- margin-left: 0;
- margin-right: -$sidebar-width;
+ .mobile-nav-expanded & {
+ translate: 0;
}
}
.app-sidebar {
position: static;
}
.app-sidebar-header {
position: absolute;
top: 0;
- left: $sidebar-width;
+ left: var(--sidebar-width);
right: 0;
z-index: 1;
}
.app-sidebar-title {
justify-content: center;
- padding: 10px 5px;
+ padding: 0.5rem 0.25rem;
// Match right margin with navbar toggler width:
// (margin + border + font-size * icon-width + padding)
margin-right: calc(#{$grid-gutter-width} + #{$border-width} + #{$navbar-toggler-font-size} * 1.5 + #{$navbar-toggler-padding-x} * 2);
}
@@ -180,18 +188,21 @@
}
}
@include media-breakpoint-between(md, xl) {
.app-sidebar {
- width: $sidebar-width-collapsed;
+ width: var(--sidebar-width-collapsed);
.app-sidebar-header {
text-align: center;
}
.app-sidebar-title {
- padding: 10px 5px;
+ width: var(--sidebar-width-collapsed);
+ flex-basis: var(--sidebar-width-collapsed);
+
+ padding: 0.5rem 0.25rem;
justify-content: center;
img {
margin: auto;
}
@@ -208,18 +219,21 @@
.toggle-sidebar:after {
@include icon-fa($fa-var-angle-double-right);
}
.sidebar-expanded & {
- width: $sidebar-width;
+ width: var(--sidebar-width);
.app-sidebar-header {
text-align: left;
}
.app-sidebar-title {
- padding: 10px 15px;
+ width: var(--sidebar-width);
+ flex-basis: var(--sidebar-width);
+
+ padding: 0.5rem 0.25rem;
justify-content: flex-start;
img {
margin: 0;
}
@@ -241,18 +255,21 @@
}
@include media-breakpoint-up(xl) {
.app-sidebar {
.sidebar-collapsed & {
- width: $sidebar-width-collapsed;
+ width: var(--sidebar-width-collapsed);
.app-sidebar-header {
text-align: center;
}
.app-sidebar-title {
- padding: 10px 5px;
+ width: var(--sidebar-width-collapsed);
+ flex-basis: var(--sidebar-width-collapsed);
+
+ padding: 0.5rem 0.25rem;
justify-content: center;
img {
margin: auto;
}
@@ -268,7 +285,14 @@
.toggle-sidebar:after {
@include icon-fa($fa-var-angle-double-right);
}
}
+ }
+}
+
+@media (prefers-reduced-motion) {
+ .app-sidebar,
+ .app-wrapper {
+ transition: none;
}
}