docbrown/app/assets/stylesheets/components/tabs.scss
Ben Halpern f811f17830
Fix irrelevant flag numbers (#20204)
* Fix irrelevent numbers in admin display

* Remove unused possible_spam_users_count

* Fix tab styles
2023-10-02 15:01:50 +07:00

202 lines
4.2 KiB
SCSS

@import '../config/import';
.crayons-tabs {
// Setup
--border-width: 3px;
--tab-vertical-padding: var(--su-2);
--tab-horizontal-padding: var(--su-2);
--font-size: var(--fs-base);
display: flex;
@media (min-width: $breakpoint-s) {
--tab-vertical-padding: var(--su-2);
}
&--scrollable {
overflow-x: auto;
flex-wrap: nowrap;
-webkit-overflow-scrolling: touch;
white-space: nowrap;
}
&__list {
list-style: none;
display: flex;
width: 100%;
li {
width: 100%;
}
}
&__item {
padding: var(--tab-vertical-padding) var(--tab-horizontal-padding);
display: inline-flex;
flex-direction: column;
align-items: center;
font-size: var(--font-size);
line-height: var(--su-6);
text-decoration: none;
cursor: pointer;
color: var(--tab-color);
position: relative;
border-radius: var(--radius);
transition: all var(--transition-props);
width: 100%;
border: none;
background: transparent;
@media (min-width: $breakpoint-s) {
width: auto;
margin: 0 var(--su-1);
}
/*
Add a, hidden, bold version of the text to get width.
This prevents the minor layout shift on tab change.
*/
&::before {
content: attr(data-text);
height: 0;
visibility: hidden;
overflow: hidden;
user-select: none;
pointer-events: none;
font-weight: var(--fw-medium);
@media speech {
display: none;
}
}
&::after {
display: none;
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: var(--border-width);
content: '';
background: var(--tab-bg-current);
border-radius: var(--radius);
transition: all var(--transition-props);
@media (min-width: $breakpoint-s) {
left: var(--tab-horizontal-padding);
right: var(--tab-horizontal-padding);
}
}
&:hover {
background: var(--tab-bg-hover);
color: var(--tab-color-hover);
&:after {
left: 0;
right: 0;
border-radius: 0 0 var(--radius) var(--radius);
}
}
&--current {
font-weight: var(--fw-medium);
color: var(--tab-color-current);
&::after {
display: block;
}
}
}
&--wrapped {
flex-wrap: wrap;
.crayons-tabs__list {
li {
width: auto;
}
}
.crayons-tabs__item {
margin: var(--su-1);
width: auto;
}
}
}
.crayons-navigation {
--tab-horizontal-padding: var(--su-3);
--tab-vertical-padding: var(--su-2);
display: flex;
overflow-x: auto;
flex-wrap: nowrap;
// !important here because reset.scss is screwed up a little for ul,ol elements... gotta fix it one day...
padding: var(--su-1) 0 !important; // padding to improve tapping area
margin: calc(-1 * var(--su-1)) 0 !important;
@media (min-width: $breakpoint-s) {
display: block;
overflow-x: unset;
}
&__item {
display: inline-flex;
white-space: nowrap;
padding: var(--tab-vertical-padding) var(--tab-horizontal-padding);
color: var(--base-70);
position: relative;
border-radius: var(--radius);
@media (min-width: $breakpoint-s) {
display: flex;
color: var(--base-90);
white-space: unset;
padding: var(--tab-vertical-padding) var(--tab-vertical-padding);
&:hover {
color: var(--accent-brand);
background: var(--base-inverted);
}
}
&--current {
font-weight: var(--fw-bold);
color: var(--base-100);
@media (min-width: $breakpoint-s) {
background: var(--link-bg-current);
&:hover {
background: var(--link-bg-current);
}
}
}
}
}
.crayons-navigation--horizontal {
@media (min-width: $breakpoint-s) {
display: flex;
}
.crayons-navigation__item {
@media (min-width: $breakpoint-s) {
display: inline-flex;
color: var(--base-70);
padding: var(--tab-vertical-padding) var(--tab-horizontal-padding);
}
&:hover {
color: var(--accent-brand);
}
&--current {
color: var(--base-100);
background: none;
&:hover {
background: var(--base-inverted);
}
}
}
}