rsuite
Version:
A suite of react components
354 lines (294 loc) • 5.96 kB
text/less
@import '../../styles/common';
@import '../../internals/Ripple/styles/mixins';
@import '../../Dropdown/styles/index';
//
// Navs
// --------------------------------------------------
// Base class
// --------------------------------------------------
.rs-nav {
position: relative;
outline: 0;
// Rest dropdown height
.rs-dropdown > .rs-dropdown-toggle {
height: 36px;
vertical-align: bottom;
}
// Ripple
.rs-nav-default &-item,
.rs-nav-tabs &-item {
.with-ripple();
transition: @nav-item-transition;
}
}
// Nav item
.rs-nav-item {
padding: 8px 12px;
cursor: pointer;
color: var(--rs-navs-text);
background: transparent;
transition: @nav-item-transition;
.ellipsis-basic();
.safari-border-radius-overflow-hidden();
outline: none;
.reset-link-text-decoration(none);
.high-contrast-mode({
transition: none;
});
&:hover,
&:focus,
&&-focus {
color: var(--rs-navs-text-hover);
.high-contrast-mode({
text-decoration: underline;
});
}
&:focus-visible {
.focus-ring(slim);
z-index: 2;
}
&:active {
color: var(--rs-navs-text-active);
.high-contrast-mode({
text-decoration: underline;
});
}
&.rs-nav-item-disabled {
cursor: not-allowed;
pointer-events: none;
color: var(--rs-text-disabled);
}
&.rs-nav-item-active {
position: relative;
color: var(--rs-navs-selected);
z-index: 1;
.high-contrast-mode({
text-decoration: underline;
});
}
&-icon {
margin-right: 6px;
}
&-caret {
font-size: 16px;
vertical-align: text-bottom;
margin-left: 6px;
}
}
// Orientations
.rs-nav-horizontal {
white-space: nowrap;
> .rs-nav-item {
display: inline-flex;
align-items: center;
justify-content: center;
vertical-align: top;
}
// Waterline
.rs-nav-bar {
position: absolute;
bottom: 0;
width: 100%;
// ** Reversed
.rs-nav-reversed& {
bottom: auto;
top: 0;
}
}
}
.rs-nav-vertical {
> .rs-nav-item {
display: flex;
align-items: center;
}
> .rs-dropdown {
width: 100%;
> .rs-dropdown-toggle {
width: 100%;
text-align: left;
z-index: 0;
}
}
// Waterline
.rs-nav-bar {
display: block;
position: absolute;
top: 0;
bottom: 0;
right: 0;
.rs-nav-reversed& {
right: auto;
}
}
}
// Alternate Navs
// --------------------------------------------------
// Default Nav
.rs-nav-default {
.rs-nav-item {
border-radius: 6px;
&:hover {
background: var(--rs-navs-bg-hover);
}
}
}
// Tab Nav
.rs-nav-tabs {
.rs-nav-item {
&:hover,
&:focus {
background: var(--rs-navs-bg-hover);
}
&.rs-nav-item-active {
border: 1px solid var(--rs-navs-tab-border);
background-color: var(--rs-bg-card);
z-index: 1;
}
}
// Horizontal
&.rs-nav-horizontal {
//Nav content
> .rs-nav-item,
> .rs-dropdown .rs-dropdown-toggle {
border-radius: 6px 6px 0 0;
.rs-nav-reversed& {
border-radius: 0 0 6px 6px;
}
}
// ** Waterline
.rs-nav-bar {
border-top: 1px solid var(--rs-navs-tab-border);
}
// ** Active
.rs-nav-item.rs-nav-item-active {
border-bottom-width: 0;
// Reversed
.rs-nav-reversed& {
border-bottom-width: 1px;
border-top-width: 0;
}
}
}
// Vertical
&.rs-nav-vertical {
//Nav content
> .rs-nav-item,
> .rs-dropdown .rs-dropdown-toggle {
border-radius: 6px 0 0 6px;
.rs-nav-reversed& {
border-radius: 0 6px 6px 0;
}
}
// ** Waterline
.rs-nav-bar {
width: 1px;
background: var(--rs-navs-tab-border);
}
// ** Active
.rs-nav-item.rs-nav-item-active {
border-right-width: 0;
// Reversed
.rs-nav-reversed& {
border-right-width: 1px;
border-left-width: 0;
}
}
}
}
// Subtle Nav
.rs-nav-subtle {
.rs-nav-item {
position: relative;
&:hover,
&:focus {
color: var(--rs-navs-selected);
}
&.rs-nav-item-active::before {
content: '';
position: absolute;
background-color: var(--rs-navs-selected);
display: block;
z-index: 1;
}
}
// Horizontal
&.rs-nav-horizontal {
//Waterline
.rs-nav-bar {
border-top: 2px solid var(--rs-navs-subtle-border);
}
// Active item
.rs-nav-item.rs-nav-item-active::before {
bottom: 0;
left: 0;
right: 0;
height: 2px;
// Reversed
.rs-nav-reversed& {
bottom: auto;
top: 0;
}
}
}
// Vertical
&.rs-nav-vertical {
// Waterline
.rs-nav-bar {
width: 2px;
background: var(--rs-navs-subtle-border);
}
// Active item
.rs-nav-item.rs-nav-item-active::before {
right: 0;
top: 0;
bottom: 0;
width: 2px;
// Reversed
.rs-nav-reversed& {
right: auto;
left: 0;
}
}
}
}
// Pills Nav
.rs-nav-pills {
display: inline-flex;
background-color: var(--rs-navs-pills-bg);
border-radius: 6px;
padding: 4px;
width: max-content;
.rs-nav-item {
border-radius: 6px;
position: relative;
padding: 4px 12px;
color: var(--rs-navs-pills-item-color);
&-active {
background-color: var(--rs-navs-pills-item-active-bg);
color: var(--rs-navs-pills-item-active-color);
box-shadow: var(--rs-navs-pills-item-shadow);
}
&-disabled {
color: var(--rs-navs-pills-item-disabled-color);
}
}
&.rs-nav-vertical {
flex-direction: column;
.rs-nav-item {
padding: 6px 12px;
justify-content: center;
}
}
}
// Justified
.rs-nav-justified {
display: flex;
> .rs-nav-item,
> .rs-dropdown {
flex: 1 1 1%;
}
> .rs-dropdown .rs-dropdown-toggle {
width: 100%;
text-align: left;
}
}