@use 'sass:map';
@keyframes checkbox-tick {
0% {
transform: scale(0.7);
}
90% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
@include b(checkbox) {
@include polyfill-column-gap(8px);
position: relative;
display: inline-flex;
line-height: 1.25;
&:hover {
@include e(input) {
border-color: var(--#{$rd-prefix}color-primary-lighter);
}
}
@include when(disabled) {
color: var(--#{$rd-prefix}color-disabled);
pointer-events: none;
@include e(state-container) {
&::before {
border-color: var(--#{$rd-prefix}color-disabled);
}
&::after {
background-color: var(--#{$rd-prefix}background-color-disabled);
}
}
@include e(tick) {
&::after {
border-bottom-color: var(--#{$rd-prefix}color-disabled);
border-left-color: var(--#{$rd-prefix}color-disabled);
}
}
@include e(indeterminate) {
background-color: var(--#{$rd-prefix}color-disabled);
}
}
@include when(checked) {
&:not(.is-disabled) {
@include e(input) {
border-color: var(--#{$rd-prefix}color-primary);
}
@include e(state-container) {
&::before {
animation: wave-spread 0.36s linear;
animation-fill-mode: backwards;
}
&::after {
background-color: var(--#{$rd-prefix}color-primary);
}
}
@include e(tick) {
animation: checkbox-tick 133ms linear;
animation-fill-mode: backwards;
}
}
}
@include when(indeterminate) {
&:not(.is-disabled) {
@include e(input) {
border-color: var(--#{$rd-prefix}color-primary);
}
@include e(state-container) {
&::before {
animation: wave-spread 0.36s linear;
animation-fill-mode: backwards;
}
&::after {
background-color: var(--#{$rd-prefix}color-primary);
}
}
}
}
@include e(state-container-wrapper) {
display: inline-flex;
flex-shrink: 0;
align-items: center;
height: 1.25em;
}
@include e(state-container) {
position: relative;
width: 16px;
height: 16px;
cursor: pointer;
background-color: var(--#{$rd-prefix}background-color-input);
border-radius: var(--#{$rd-prefix}border-radius);
&::before {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
content: '';
border: 1px solid transparent;
border-radius: var(--#{$rd-prefix}border-radius);
}
&::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
content: '';
background-color: transparent;
border-radius: var(--#{$rd-prefix}border-radius);
transition: transform var(--#{$rd-prefix}animation-duration-fast) linear,
background-color var(--#{$rd-prefix}animation-duration-fast) linear;
}
}
@include e(tick) {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
overflow: hidden;
border-radius: var(--#{$rd-prefix}border-radius);
&::after {
position: absolute;
top: 3px;
left: 3px;
display: block;
width: 10px;
height: 6px;
content: '';
border-bottom: 2px solid map.get($rd-colors, 'white');
border-left: 2px solid map.get($rd-colors, 'white');
transform: rotate(-45deg);
}
}
@include e(indeterminate) {
position: absolute;
top: 7px;
left: 4px;
z-index: 1;
width: 8px;
height: 2px;
background-color: map.get($rd-colors, 'white');
}
@include e(input) {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 5;
width: 100%;
height: 100%;
margin: 0;
cursor: inherit;
border: 1px solid var(--#{$rd-prefix}color-border);
border-radius: var(--#{$rd-prefix}border-radius);
transition: border-color var(--#{$rd-prefix}animation-duration-base) linear;
appearance: none;
&:focus {
border-color: var(--#{$rd-prefix}color-primary-lighter);
box-shadow: 0 0 0 3px rgb(var(--#{$rd-prefix}color-primary-rgb) / var(--#{$rd-prefix}shadow-normal));
}
}
}
@include b(checkbox-group) {
display: flex;
flex-wrap: wrap;
align-items: center;
&:not(.#{$rd-prefix}checkbox-group--vertical) {
@include polyfill-gap(8px, 12px);
}
@include m(vertical) {
@include polyfill-row-gap(8px);
flex-direction: column;
align-items: flex-start;
}
}