Files
sibedas/resources/scss/structure/_sidebar.scss
2025-01-16 17:16:14 +07:00

582 lines
16 KiB
SCSS
Executable File

//
// _vertical.scss
//
// Logo
.logo-box {
position: sticky;
overflow: hidden;
text-align: center;
white-space: nowrap;
transition: all 0.3s ease-in-out;
line-height: $topbar-height;
padding: 0 calc($sidebar-width-sm * 0.5 - $logo-sm-height * 0.5);
.logo-sm {
display: none;
height: $logo-sm-height;
}
.logo-lg {
height: $logo-lg-height;
}
.logo-light {
display: none;
}
.logo-dark {
display: block;
}
}
// Main Nav
.app-sidebar {
top: 0;
bottom: 0;
z-index: 1010;
margin-left: 0;
position: fixed;
transition: all 0.3s ease-in-out;
width: $sidebar-width;
font-family: $font-family-secondary;
background: $sidebar-bg;
// background-image: url("../images/bg-pattern.svg") no-repeat;
min-width: $sidebar-width;
padding-bottom: $spacer;
border-right: $card-border-width solid $sidebar-border-color;
border-left: $card-border-width solid $sidebar-border-color;
.scrollbar {
height: calc(100% - $topbar-height);
}
.menu-arrow {
&::after {
right: calc($sidebar-item-padding-x * 1.5);
display: flex;
content: "\ea4a";
font-family: boxicons;
margin-left: auto;
position: absolute;
transition: transform 0.2s;
color: inherit;
font-size: calc($sidebar-item-font-size * 1.25);
opacity: 0.6;
}
&[aria-expanded="true"] {
&::after {
transform: rotate(-180deg);
}
&::before {
opacity: 1;
}
}
}
.menu-title {
cursor: default;
font-size: 11px;
letter-spacing: 0.05em;
text-transform: uppercase;
color: $sidebar-item-color;
opacity: .6;
font-weight: $font-weight-semibold;
padding: $sidebar-item-padding-y calc($sidebar-item-padding-x * 1.25);
transition: all 0.3s ease-in-out;
height: 36px;
}
.navbar-nav {
margin: 0 15px;
.nav-item {
padding: calc($sidebar-item-padding-y * 0.1) 0;
.nav-link {
display: flex;
gap: 12px;
line-height: 1;
font-weight: 400;
align-items: center;
white-space: nowrap;
transition: all 0.3s ease-in-out;
border-radius: 8px;
color: $sidebar-item-color;
font-size: $sidebar-item-font-size;
padding: $sidebar-item-padding-y $sidebar-item-padding-x;
margin: $sidebar-item-margin-y 0;
&.show,
&:active,
&.active,
&:hover,
&:focus {
color: $sidebar-item-hover-color;
}
&.active {
background-color: $sidebar-item-hover-bg;
font-weight: $font-weight-medium;
}
.nav-icon {
display: flex;
align-items: center;
justify-content: center;
font-size: $sidebar-item-icon-size;
}
.badge {
margin-left: auto;
}
}
}
.sub-navbar-nav {
flex-direction: column;
padding-left: $sidebar-item-padding-x;
.menu-arrow {
&::after {
right: 0;
}
}
.sub-nav-item {
padding: calc($sidebar-item-padding-y * 0.5) $sidebar-item-padding-x;
.sub-nav-link {
display: flex;
align-items: center;
position: relative;
white-space: nowrap;
transition: all 0.3s ease-in-out;
color: $sidebar-item-color;
font-size: calc($sidebar-item-font-size * 0.95);
padding: calc($sidebar-item-padding-y * 0.25) $sidebar-item-padding-x;
&.active {
font-weight: $font-weight-medium;
}
.badge {
margin-left: auto;
}
&.active,
&:active,
&:hover,
&:focus {
color: $sidebar-item-hover-color;
&::before {
background-color: $sidebar-item-hover-color;
opacity: 1;
}
}
}
}
.sub-navbar-nav {
padding-left: calc($sidebar-width-sm - $sidebar-item-padding-x * 5.25);
}
}
.disabled {
opacity: 0.5;
pointer-events: none;
cursor: default;
}
}
}
// Sidenav Condensed
html[data-sidebar-size="condensed"] {
.app-sidebar {
position: absolute;
width: $sidebar-width-sm;
min-width: $sidebar-width-sm;
.logo-box {
top: 0;
z-index: 1020 !important;
background: $sidebar-bg;
.logo-lg {
display: none;
}
.logo-sm {
display: inline-block;
}
}
.menu-title {
height: 0;
opacity: 0;
padding: 0;
}
.badge {
display: none;
}
.simplebar-mask,
.simplebar-content-wrapper {
overflow: visible !important;
}
.simplebar-scrollbar {
display: none !important;
}
.simplebar-offset {
bottom: 0 !important;
}
// Sidenav Menu
.navbar-nav {
padding: 10px;
margin: 0;
.nav-link {
justify-content: center;
.nav-text,
&.menu-arrow::after {
display: none;
}
.nav-icon {
font-size: 22px !important;
}
}
.collapse,
.collapsing {
display: none;
height: auto !important;
}
.sub-nav-item,
.nav-item {
position: relative;
white-space: nowrap;
&:hover {
>.collapse,
>.collapsing {
display: block;
left: 100%;
margin-top: -4px;
position: absolute;
height: inherit !important;
transition: none !important;
>.sub-navbar-nav {
padding-left: 0;
background: $dropdown-bg;
box-shadow: var(--#{$prefix}box-shadow);
width: calc($sidebar-width - $sidebar-width-sm);
border: $card-border-width solid $card-border-color;
>.sub-nav-item {
padding: 0;
>.sub-nav-link {
padding: calc($sidebar-item-padding-y * 0.75) $sidebar-item-padding-x;
z-index: 5;
>.nav-text {
display: block;
}
}
>.collapse,
>.collapsing {
top: 0;
}
}
.sub-nav-item {
.sub-nav-link {
color: $dropdown-color;
&[aria-expanded="true"],
&.active,
&.show,
&:focus,
&:hover {
color: var(--#{$prefix}primary);
}
}
.collapse,
.collapsing {
top: 0;
}
}
}
}
}
}
>.nav-item {
&:hover {
>.nav-link {
&::before {
content: "";
inset: 0px;
position: absolute;
width: $sidebar-width;
}
>.nav-text {
display: flex;
align-items: center;
position: absolute;
left: calc($sidebar-width-sm - 2px - 20px);
background: $dropdown-bg;
color: $dropdown-color;
line-height: $sidebar-item-icon-size;
width: calc($sidebar-width - $sidebar-width-sm);
padding: $sidebar-item-padding-y $sidebar-item-padding-x;
border: $card-border-width solid $card-border-color;
box-shadow: var(--#{$prefix}box-shadow);
font-weight: $font-weight-medium;
}
}
}
.nav-text,
.sub-navbar-nav {
margin-left: 10px;
.sub-navbar-nav {
margin-left: 0;
}
}
}
.sub-nav-item {
.menu-arrow {
&::after {
right: 10px;
transform: rotate(-90deg);
}
}
.nav-text {
margin-left: 0;
}
.badge {
display: block;
}
}
}
}
.app-topbar {
padding-left: $sidebar-width-sm;
}
.page-content {
margin-left: $sidebar-width-sm;
min-height: 1300px;
}
}
// Sidebar sm hover Toggle Menu Button
.button-sm-hover {
border: 0;
top: 17px;
z-index: 1;
right: 10px;
display: none;
text-align: end;
position: absolute;
border-radius: 50%;
background: transparent;
transition: all 0.2s ease-in-out;
color: $sidebar-item-color;
padding: 0;
.button-sm-hover-icon {
width: 35px;
height: 35px;
display: flex;
font-size: 22px;
border-radius: 50%;
align-items: center;
justify-content: center;
}
&.show,
&.active,
&:active,
&:hover,
&:focus {
color: $sidebar-item-hover-color;
background-color: $sidebar-item-hover-bg;
}
}
// Small Hover
html[data-sidebar-size="sm-hover"] {
.app-topbar {
padding-left: $sidebar-width-sm;
}
.page-content {
margin-left: $sidebar-width-sm;
position: relative;
}
.button-toggle-menu {
display: none;
}
.app-sidebar:not(:hover) {
width: $sidebar-width-sm;
min-width: $sidebar-width-sm;
.logo-box {
.logo-lg {
display: none;
}
.logo-sm {
display: inline-block;
}
}
.nav-item {
.nav-link {
justify-content: center;
.nav-text,
.badge {
display: none;
}
&.menu-arrow {
&::after {
display: none;
}
}
}
.collapse,
.collapsing {
display: none;
}
}
.menu-title {
transition: all 0.3s ease-in-out;
height: 0;
opacity: 0;
padding: 0;
}
.simplebar-track.simplebar-vertical {
visibility: hidden !important;
}
}
.app-sidebar {
width: $sidebar-width;
min-width: $sidebar-width;
.logo-box {
text-align: left;
}
&:hover {
.button-sm-hover {
display: block;
.button-sm-hover-icon {
transform: rotateY(180deg);
transition: all 0.3s ease-in-out;
}
}
}
.simplebar-track.simplebar-horizontal {
visibility: hidden !important;
}
}
}
// Small Hover Active
html[data-sidebar-size="sm-hover-active"] {
.button-toggle-menu {
display: none;
}
.app-sidebar {
.logo-box {
text-align: left;
}
.button-sm-hover {
display: block;
.button-sm-hover-icon {
transform-style: preserve-3d;
transition: all 0.3s ease-in-out;
}
}
}
}
// SideNav Hidden (Mobile View)
html[data-sidebar-size="hidden"] {
.app-sidebar {
margin-left: calc($sidebar-width * -1);
}
.page-content {
margin-left: 0;
}
&.sidebar-enable {
.app-sidebar {
margin-left: 0;
z-index: 1055;
}
}
}
// Sidenav Dark and Brand
html[data-bs-theme="dark"],
html[data-sidebar-color="dark"],
html[data-sidebar-color="brand"] {
.app-sidebar {
.logo-box {
.logo-light {
display: block;
}
.logo-dark {
display: none;
}
}
}
}