mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-18 23:21:30 +08:00
145 lines
4 KiB
SCSS
145 lines
4 KiB
SCSS
// scss-lint:disable SelectorDepth QualifyingElement NestingDepth
|
|
|
|
.sci-toggle-checkbox-container {
|
|
--sci-toggle-check-size: .625rem;
|
|
--sci-toggle-container-height: 1.5rem;
|
|
--sci-toggle-container-width: 2.25rem;
|
|
--sci-toggle-label-border: .0625rem;
|
|
--sci-toggle-label-height: .875rem;
|
|
--sci-toggle-label-width: 1.875rem;
|
|
display: inline-block;
|
|
height: var(--sci-toggle-container-height);
|
|
position: relative;
|
|
width: var(--sci-toggle-container-width);
|
|
}
|
|
|
|
input[type="checkbox"].sci-toggle-checkbox {
|
|
cursor: pointer;
|
|
flex-shrink: 0;
|
|
height: var(--sci-toggle-container-height);
|
|
margin: 0;
|
|
opacity: 0;
|
|
position: relative;
|
|
width: var(--sci-toggle-container-width);
|
|
z-index: 2;
|
|
|
|
+ .sci-toggle-checkbox-label {
|
|
animation-timing-function: $timing-function-sharp;
|
|
background: var(--sn-white);
|
|
border: var(--sci-toggle-label-border) solid var(--sn-grey);
|
|
border-radius: calc(var(--sci-toggle-label-height) / 2);
|
|
display: inline-block;
|
|
flex-shrink: 0;
|
|
font-weight: normal;
|
|
height: var(--sci-toggle-label-height);
|
|
left: calc((var(--sci-toggle-container-width) - var(--sci-toggle-label-width))/2);
|
|
position: absolute;
|
|
top: calc((var(--sci-toggle-container-height) - var(--sci-toggle-label-height))/2);
|
|
transition: .4s;
|
|
width: var(--sci-toggle-label-width);
|
|
|
|
&::before {
|
|
animation-timing-function: $timing-function-sharp;
|
|
background: var(--sn-grey);
|
|
border-radius: 50%;
|
|
bottom: calc(var(--sci-toggle-label-height) / 2 - var(--sci-toggle-check-size) / 2);
|
|
content: "";
|
|
left: calc(var(--sci-toggle-label-height) / 2 - var(--sci-toggle-check-size) / 2);
|
|
position: absolute;
|
|
right: calc(var(--sci-toggle-label-width) - var(--sci-toggle-label-height) / 2 - var(--sci-toggle-check-size) / 2);
|
|
top: calc(var(--sci-toggle-label-height) / 2 - var(--sci-toggle-check-size) / 2);
|
|
transition: .6s;
|
|
}
|
|
}
|
|
|
|
&:focus + .sci-toggle-checkbox-label {
|
|
box-shadow: 0 0 0 4px var(--sn-science-blue-hover);
|
|
outline: 2px solid transparent;
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
&.hidden + .sci-toggle-checkbox-label {
|
|
display: none;
|
|
}
|
|
|
|
&:checked + .sci-toggle-checkbox-label {
|
|
border-color: var(--sn-blue);
|
|
|
|
&::before {
|
|
background-color: var(--sn-science-blue);
|
|
left: calc(var(--sci-toggle-label-width) - var(--sci-toggle-label-height) / 2 - var(--sci-toggle-check-size) / 2);
|
|
right: calc(var(--sci-toggle-label-height) / 2 - var(--sci-toggle-check-size) / 2);
|
|
}
|
|
}
|
|
|
|
&:disabled + .sci-toggle-checkbox-label {
|
|
border-color: var(--sn-light-grey);
|
|
|
|
&::before {
|
|
background-color: var(--sn-light-grey);
|
|
}
|
|
}
|
|
|
|
&:disabled:checked + .sci-toggle-checkbox-label {
|
|
background-color: var(--sn-super-light-grey);
|
|
}
|
|
}
|
|
|
|
.sci-toggles-group {
|
|
align-items: center;
|
|
display: flex;
|
|
position: relative;
|
|
|
|
input[type="radio"].sci-toggle-item {
|
|
cursor: pointer;
|
|
height: 36px;
|
|
margin: 0;
|
|
opacity: 0;
|
|
position: relative;
|
|
width: 48px;
|
|
z-index: 2;
|
|
|
|
+ .sci-toggle-item-label {
|
|
animation-timing-function: $timing-function-sharp;
|
|
background: $color-white;
|
|
border: $border-default;
|
|
border-left-color: transparent;
|
|
color: $color-black;
|
|
display: inline-block;
|
|
font-weight: normal;
|
|
height: 36px;
|
|
line-height: 34px;
|
|
margin-left: -48px;
|
|
position: relative;
|
|
text-align: center;
|
|
transition: .2s;
|
|
width: 48px;
|
|
|
|
svg,
|
|
svg path {
|
|
fill: $color-black;
|
|
display: initial;
|
|
}
|
|
|
|
&:first-of-type {
|
|
border-left-color: $color-silver-chalice;
|
|
border-radius: $border-radius-default 0 0 $border-radius-default;
|
|
}
|
|
|
|
&:last-of-type {
|
|
border-radius: 0 $border-radius-default $border-radius-default 0;
|
|
}
|
|
}
|
|
|
|
&:checked + .sci-toggle-item-label {
|
|
background: $brand-primary;
|
|
border: 1px solid $brand-primary;
|
|
color: $color-white;
|
|
|
|
svg,
|
|
svg path {
|
|
fill: $color-white;
|
|
}
|
|
}
|
|
}
|
|
}
|