signal-desktop/stylesheets/components/CircleCheckbox.scss

170 lines
3.5 KiB
SCSS

// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
.CircleCheckbox {
&__checkbox {
position: relative;
height: 20px;
width: 20px;
input {
cursor: pointer;
height: 0;
position: absolute;
width: 0;
@include keyboard-mode {
&:focus {
&::before {
border-color: $color-ultramarine;
}
outline: none;
}
}
&::before {
@include rounded-corners;
background: inherit;
content: '';
display: block;
height: 20px;
position: absolute;
width: 20px;
@include light-theme {
border: 1.5px solid $color-gray-25;
}
@include dark-theme {
border: 1.5px solid $color-gray-65;
}
}
&:disabled {
cursor: inherit;
}
@include light-theme {
&:disabled {
&::before {
border-color: $color-gray-15;
}
}
&:disabled:checked {
&::before {
background: $color-gray-15;
border-color: $color-gray-15;
}
}
}
@include dark-theme {
&:disabled {
&::before {
border-color: $color-gray-45;
}
}
&:disabled:checked {
&::before {
background: $color-gray-45;
border-color: $color-gray-45;
}
}
}
&:checked {
&::after {
content: '';
display: block;
position: absolute;
}
}
}
input[type='checkbox'] {
&:checked {
&:not([disabled])::before {
background: $color-ultramarine;
border: 1.5px solid $color-ultramarine;
}
&::after {
@include color-svg(
'../images/icons/v3/check/check-compact-bold.svg',
$color-white
);
width: 14px;
height: 14px;
top: 3px;
inset-inline-start: 3px;
}
}
}
input[type='radio'] {
&:checked {
&::before {
border: 2px solid $color-ultramarine;
}
&::after {
background: $color-ultramarine;
top: 4px;
inset-inline-start: 4px;
width: 12px;
height: 12px;
border-radius: 6px;
}
}
}
&--small {
height: 18px;
width: 18px;
input {
&::before {
height: 18px;
width: 18px;
}
}
input[type='checkbox'] {
&:checked {
&::before {
background: $color-ultramarine;
border: 1.5px solid $color-ultramarine;
}
&::after {
border: solid $color-white;
border-width: 0 2px 2px 0;
height: 10px;
/* stylelint-disable-next-line liberty/use-logical-spec */
left: 7px;
top: 3px;
transform: rotate(45deg);
width: 5px;
}
}
}
input[type='radio'] {
&:checked {
&::before {
border: 2px solid $color-ultramarine;
}
&::after {
background: $color-ultramarine;
top: 4px;
/* stylelint-disable-next-line liberty/use-logical-spec */
left: 4px;
width: 10px;
height: 10px;
border-radius: 5px;
}
}
}
}
}
}