204 lines
4.9 KiB
SCSS
204 lines
4.9 KiB
SCSS
// Extend default Bootstrap's .nav, .nav-item, .nav-link classes
|
|
|
|
.nav {
|
|
--#{$prefix}nav-link-line-height: #{$nav-link-line-height};
|
|
--#{$prefix}nav-link-active-color: #{$nav-link-active-color};
|
|
|
|
flex-direction: row;
|
|
gap: 0;
|
|
}
|
|
|
|
.nav-link {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
&.show {
|
|
color: var(--#{$prefix}nav-link-hover-color);
|
|
}
|
|
|
|
&.active {
|
|
color: var(--#{$prefix}nav-link-active-color);
|
|
}
|
|
|
|
&.disabled,
|
|
&:disabled {
|
|
color: var(--#{$prefix}nav-link-disabled-color);
|
|
}
|
|
|
|
&.text-body,
|
|
&.text-body-secondary,
|
|
&.text-body-tertiary {
|
|
&:hover,
|
|
&:focus-visible,
|
|
&.show {
|
|
color: var(--#{$prefix}nav-link-hover-color) !important;
|
|
}
|
|
&.active {
|
|
color: var(--#{$prefix}nav-link-active-color) !important;
|
|
}
|
|
&.disabled,
|
|
&:disabled {
|
|
color: var(--#{$prefix}nav-link-disabled-color) !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// Tabs
|
|
|
|
.nav-tabs {
|
|
--#{$prefix}nav-tabs-padding: #{$nav-tabs-padding};
|
|
--#{$prefix}nav-tabs-bg: #{$nav-tabs-bg};
|
|
--#{$prefix}nav-tabs-link-hover-bg: #{$nav-tabs-link-hover-bg};
|
|
--#{$prefix}nav-tabs-link-active-box-shadow: #{$nav-tabs-link-active-box-shadow};
|
|
|
|
gap: var(--#{$prefix}nav-tabs-padding);
|
|
padding: var(--#{$prefix}nav-tabs-padding);
|
|
background-color: var(--#{$prefix}nav-tabs-bg);
|
|
@include border-radius(var(--#{$prefix}nav-tabs-border-radius));
|
|
|
|
.nav-item {
|
|
flex-grow: 1;
|
|
flex-basis: 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.nav-link {
|
|
justify-content: center;
|
|
width: 100%;
|
|
line-height: var(--#{$prefix}nav-link-line-height);
|
|
@include border-radius(var(--#{$prefix}nav-tabs-border-radius));
|
|
|
|
&:hover,
|
|
&.show,
|
|
&:focus-visible {
|
|
background-color: var(--#{$prefix}nav-tabs-link-hover-bg);
|
|
}
|
|
|
|
&:focus-visible {
|
|
box-shadow: $nav-link-focus-box-shadow !important;
|
|
}
|
|
|
|
&.active {
|
|
background-color: var(--#{$prefix}nav-tabs-link-active-bg);
|
|
@include box-shadow(var(--#{$prefix}nav-tabs-link-active-box-shadow));
|
|
}
|
|
|
|
&.disabled,
|
|
&:disabled {
|
|
background: none;
|
|
}
|
|
}
|
|
|
|
&.flex-column .nav-link {
|
|
justify-content: start;
|
|
}
|
|
|
|
.dropdown-menu {
|
|
@include border-radius(var(--#{$prefix}dropdown-border-radius));
|
|
}
|
|
}
|
|
|
|
|
|
// Pills
|
|
|
|
.nav-pills {
|
|
--#{$prefix}nav-pills-gap: #{$nav-pills-gap};
|
|
--#{$prefix}nav-pills-link-border-width: #{$nav-pills-link-border-width};
|
|
--#{$prefix}nav-pills-link-border-color: #{$nav-pills-link-border-color};
|
|
--#{$prefix}nav-pills-link-hover-color: #{$nav-pills-link-hover-color};
|
|
--#{$prefix}nav-pills-link-hover-border-color: #{$nav-pills-link-hover-border-color};
|
|
--#{$prefix}nav-pills-link-active-border-color: #{$nav-pills-link-active-border-color};
|
|
--#{$prefix}nav-pills-link-disabled-color: #{$nav-pills-link-disabled-color};
|
|
--#{$prefix}nav-pills-link-disabled-border-color: #{$nav-pills-link-border-color};
|
|
|
|
gap: var(--#{$prefix}nav-pills-gap);
|
|
|
|
.nav-link {
|
|
line-height: var(--#{$prefix}nav-link-line-height);
|
|
border: var(--#{$prefix}nav-pills-link-border-width) solid var(--#{$prefix}nav-pills-link-border-color);
|
|
|
|
&:hover,
|
|
&.show,
|
|
&:focus-visible {
|
|
color: var(--#{$prefix}nav-pills-link-hover-color);
|
|
border-color: var(--#{$prefix}nav-pills-link-hover-border-color);
|
|
}
|
|
|
|
&.active {
|
|
border-color: var(--#{$prefix}nav-pills-link-active-border-color);
|
|
}
|
|
|
|
&.disabled,
|
|
&:disabled {
|
|
color: var(--#{$prefix}nav-pills-link-disabled-color);
|
|
border-color: var(--#{$prefix}nav-pills-link-disabled-border-color);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// Underline
|
|
|
|
.nav-underline {
|
|
gap: var(--#{$prefix}nav-underline-gap);
|
|
|
|
.nav-link {
|
|
line-height: var(--#{$prefix}nav-link-line-height);
|
|
border: 0;
|
|
|
|
@include underline(var(--#{$prefix}nav-underline-border-width), before);
|
|
|
|
&::before {
|
|
bottom: calc(var(--#{$prefix}nav-underline-border-width) * -1);
|
|
}
|
|
|
|
&.active {
|
|
font-weight: $nav-link-font-weight;
|
|
background-color: transparent;
|
|
@include underline-action(before);
|
|
}
|
|
}
|
|
|
|
&.flex-column .nav-link {
|
|
padding: calc(var(--#{$prefix}nav-link-padding-y) * .5) var(--#{$prefix}nav-link-padding-x);
|
|
|
|
&::before {
|
|
top: 0;
|
|
left: calc(var(--#{$prefix}nav-underline-border-width) * -1);
|
|
width: var(--#{$prefix}nav-underline-border-width);
|
|
height: 100%;
|
|
transform: scaleY(0);
|
|
transform-origin: bottom left;
|
|
}
|
|
|
|
&.active::before {
|
|
transform: scaleY(1);
|
|
transform-origin: top left;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// Fill and justify
|
|
|
|
.nav-fill:not(.flex-column) .nav-link,
|
|
.nav-justified:not(.flex-column) .nav-link {
|
|
justify-content: center;
|
|
}
|
|
|
|
|
|
// Dark mode
|
|
|
|
@if $enable-dark-mode {
|
|
@include color-mode(dark) {
|
|
.nav-tabs:not([data-bs-theme="light"]) {
|
|
.nav-link {
|
|
--#{$prefix}nav-tabs-link-hover-bg: #{$nav-tabs-link-hover-bg-dark};
|
|
--#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg-dark};
|
|
--#{$prefix}nav-tabs-link-active-box-shadow: #{$nav-tabs-link-active-box-shadow-dark};
|
|
}
|
|
}
|
|
}
|
|
}
|