bulma/sass/components/tabs.scss

274 lines
8.6 KiB
SCSS
Raw Normal View History

2024-03-21 16:11:54 +00:00
@use "../utilities/css-variables" as cv;
@use "../utilities/initial-variables" as iv;
@use "../utilities/derived-variables" as dv;
@use "../utilities/extends";
@use "../utilities/mixins" as mx;
$tabs-border-bottom-color: cv.getVar("border") !default;
$tabs-border-bottom-style: solid !default;
$tabs-border-bottom-width: 1px !default;
$tabs-link-color: cv.getVar("text") !default;
$tabs-link-hover-border-bottom-color: cv.getVar("text-strong") !default;
$tabs-link-hover-color: cv.getVar("text-strong") !default;
$tabs-link-active-border-bottom-color: cv.getVar("link-text") !default;
$tabs-link-active-color: cv.getVar("link-text") !default;
$tabs-link-padding: 0.5em 1em !default;
$tabs-boxed-link-radius: cv.getVar("radius") !default;
$tabs-boxed-link-hover-background-color: cv.getVar("background") !default;
$tabs-boxed-link-hover-border-bottom-color: cv.getVar("border") !default;
$tabs-boxed-link-active-background-color: cv.getVar("scheme-main") !default;
$tabs-boxed-link-active-border-color: cv.getVar("border") !default;
$tabs-boxed-link-active-border-bottom-color: transparent !default;
$tabs-toggle-link-border-color: cv.getVar("border") !default;
$tabs-toggle-link-border-style: solid !default;
$tabs-toggle-link-border-width: 1px !default;
$tabs-toggle-link-hover-background-color: cv.getVar("background") !default;
$tabs-toggle-link-hover-border-color: cv.getVar("border-hover") !default;
$tabs-toggle-link-radius: cv.getVar("radius") !default;
$tabs-toggle-link-active-background-color: cv.getVar("link") !default;
$tabs-toggle-link-active-border-color: cv.getVar("link") !default;
$tabs-toggle-link-active-color: cv.getVar("link-invert") !default;
.#{iv.$class-prefix}tabs {
@include cv.register-vars(
(
"tabs-border-bottom-color": #{$tabs-border-bottom-color},
"tabs-border-bottom-style": #{$tabs-border-bottom-style},
"tabs-border-bottom-width": #{$tabs-border-bottom-width},
"tabs-link-color": #{$tabs-link-color},
"tabs-link-hover-border-bottom-color": #{$tabs-link-hover-border-bottom-color},
"tabs-link-hover-color": #{$tabs-link-hover-color},
"tabs-link-active-border-bottom-color": #{$tabs-link-active-border-bottom-color},
"tabs-link-active-color": #{$tabs-link-active-color},
"tabs-link-padding": #{$tabs-link-padding},
"tabs-boxed-link-radius": #{$tabs-boxed-link-radius},
"tabs-boxed-link-hover-background-color": #{$tabs-boxed-link-hover-background-color},
"tabs-boxed-link-hover-border-bottom-color": #{$tabs-boxed-link-hover-border-bottom-color},
"tabs-boxed-link-active-background-color": #{$tabs-boxed-link-active-background-color},
"tabs-boxed-link-active-border-color": #{$tabs-boxed-link-active-border-color},
"tabs-boxed-link-active-border-bottom-color": #{$tabs-boxed-link-active-border-bottom-color},
"tabs-toggle-link-border-color": #{$tabs-toggle-link-border-color},
"tabs-toggle-link-border-style": #{$tabs-toggle-link-border-style},
"tabs-toggle-link-border-width": #{$tabs-toggle-link-border-width},
"tabs-toggle-link-hover-background-color": #{$tabs-toggle-link-hover-background-color},
"tabs-toggle-link-hover-border-color": #{$tabs-toggle-link-hover-border-color},
"tabs-toggle-link-radius": #{$tabs-toggle-link-radius},
"tabs-toggle-link-active-background-color": #{$tabs-toggle-link-active-background-color},
"tabs-toggle-link-active-border-color": #{$tabs-toggle-link-active-border-color},
"tabs-toggle-link-active-color": #{$tabs-toggle-link-active-color},
)
);
}
.#{iv.$class-prefix}tabs {
@extend %block;
@extend %unselectable;
@include mx.overflow-touch;
align-items: stretch;
display: flex;
font-size: cv.getVar("size-normal");
justify-content: space-between;
overflow: hidden;
overflow-x: auto;
white-space: nowrap;
a {
align-items: center;
border-bottom-color: cv.getVar("tabs-border-bottom-color");
border-bottom-style: cv.getVar("tabs-border-bottom-style");
border-bottom-width: cv.getVar("tabs-border-bottom-width");
color: cv.getVar("tabs-link-color");
display: flex;
justify-content: center;
margin-bottom: calc(-1 * #{cv.getVar("tabs-border-bottom-width")});
padding: cv.getVar("tabs-link-padding");
transition-duration: cv.getVar("duration");
transition-property: background-color, border-color, color;
vertical-align: top;
&:hover {
border-bottom-color: cv.getVar("tabs-link-hover-border-bottom-color");
color: cv.getVar("tabs-link-hover-color");
}
}
li {
display: block;
&.#{iv.$class-prefix}is-active {
a {
border-bottom-color: cv.getVar("tabs-link-active-border-bottom-color");
color: cv.getVar("tabs-link-active-color");
}
}
}
ul {
align-items: center;
border-bottom-color: cv.getVar("tabs-border-bottom-color");
border-bottom-style: cv.getVar("tabs-border-bottom-style");
border-bottom-width: cv.getVar("tabs-border-bottom-width");
display: flex;
flex-grow: 1;
flex-shrink: 0;
justify-content: flex-start;
&.#{iv.$class-prefix}is-left {
padding-right: 0.75em;
}
&.#{iv.$class-prefix}is-center {
flex: none;
justify-content: center;
padding-left: 0.75em;
padding-right: 0.75em;
}
&.#{iv.$class-prefix}is-right {
justify-content: flex-end;
padding-left: 0.75em;
}
}
.#{iv.$class-prefix}icon {
&:first-child {
margin-inline-end: 0.5em;
}
&:last-child {
margin-inline-start: 0.5em;
}
}
// Alignment
&.#{iv.$class-prefix}is-centered {
ul {
justify-content: center;
}
}
&.#{iv.$class-prefix}is-right {
ul {
justify-content: flex-end;
}
}
// Styles
&.#{iv.$class-prefix}is-boxed {
a {
border: 1px solid transparent;
border-start-start-radius: cv.getVar("tabs-boxed-link-radius");
border-start-end-radius: cv.getVar("tabs-boxed-link-radius");
&:hover {
background-color: cv.getVar("tabs-boxed-link-hover-background-color");
border-bottom-color: cv.getVar(
"tabs-boxed-link-hover-border-bottom-color"
);
}
}
li {
&.#{iv.$class-prefix}is-active {
a {
background-color: cv.getVar(
"tabs-boxed-link-active-background-color"
);
border-color: cv.getVar("tabs-boxed-link-active-border-color");
border-bottom-color: cv.getVar(
"tabs-boxed-link-active-border-bottom-color"
) !important;
}
}
}
}
&.#{iv.$class-prefix}is-fullwidth {
li {
flex-grow: 1;
flex-shrink: 0;
}
}
&.#{iv.$class-prefix}is-toggle {
a {
border-color: cv.getVar("tabs-toggle-link-border-color");
border-style: cv.getVar("tabs-toggle-link-border-style");
border-width: cv.getVar("tabs-toggle-link-border-width");
margin-bottom: 0;
position: relative;
&:hover {
background-color: cv.getVar("tabs-toggle-link-hover-background-color");
border-color: cv.getVar("tabs-toggle-link-hover-border-color");
z-index: 2;
}
}
li {
& + li {
margin-inline-start: calc(
-1 * #{cv.getVar("tabs-toggle-link-border-width")}
);
}
&:first-child a {
border-start-start-radius: cv.getVar("tabs-toggle-link-radius");
border-end-start-radius: cv.getVar("tabs-toggle-link-radius");
}
&:last-child a {
border-start-end-radius: cv.getVar("tabs-toggle-link-radius");
border-end-end-radius: cv.getVar("tabs-toggle-link-radius");
}
&.#{iv.$class-prefix}is-active {
a {
background-color: cv.getVar(
"tabs-toggle-link-active-background-color"
);
border-color: cv.getVar("tabs-toggle-link-active-border-color");
color: cv.getVar("tabs-toggle-link-active-color");
z-index: 1;
}
}
}
ul {
border-bottom: none;
}
&.#{iv.$class-prefix}is-toggle-rounded {
li {
&:first-child a {
border-start-start-radius: cv.getVar("radius-rounded");
border-end-start-radius: cv.getVar("radius-rounded");
padding-inline-start: 1.25em;
}
&:last-child a {
border-start-end-radius: cv.getVar("radius-rounded");
border-end-end-radius: cv.getVar("radius-rounded");
padding-inline-end: 1.25em;
}
}
}
}
// Sizes
&.#{iv.$class-prefix}is-small {
font-size: cv.getVar("size-small");
}
&.#{iv.$class-prefix}is-medium {
font-size: cv.getVar("size-medium");
}
&.#{iv.$class-prefix}is-large {
font-size: cv.getVar("size-large");
}
}