47 lines
1.3 KiB
CSS
47 lines
1.3 KiB
CSS
@layer components {
|
|
.switch {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 1em;
|
|
cursor: pointer;
|
|
&[aria-disabled] {
|
|
cursor: not-allowed;
|
|
}
|
|
}
|
|
.switch_handle {
|
|
position: relative;
|
|
width: calc(var(--spacing) * 9);
|
|
height: calc(var(--spacing) * 5);
|
|
border: 1px solid var(--color-primary);
|
|
border-radius: calc(var(--border-radius) * 2);
|
|
background-color: var(--color-surface-container-high);
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
transform: translate(1px, 2px);
|
|
width: calc(var(--spacing) * 3);
|
|
height: calc(var(--spacing) * 3);
|
|
border-radius: calc(var(--border-radius) * 2);
|
|
background-color: var(--color-primary);
|
|
transition: transform 0.2s ease-in-out;
|
|
}
|
|
&.checked {
|
|
background-color: var(--color-primary);
|
|
&::before {
|
|
transform: translate(calc(var(--spacing) * 5 - 1px), 2px);
|
|
}
|
|
[aria-disabled] & {
|
|
--disabled-color: color-mix(in oklch, var(--color-on-surface) 38%, transparent);
|
|
background-color: var(--disabled-color);
|
|
border-color: var(--disabled-color);
|
|
&.checked {
|
|
background-color: var(--disabled-color);
|
|
}
|
|
&::before {
|
|
background-color: color-mix(in oklch, var(--color-on-surface) 45%, transparent);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|