@ozen-ui/kit
Version:
React component library
109 lines (89 loc) • 3 kB
CSS
.Toggle {
display: inline-flex;
position: relative;
}
.Toggle_size_s .Toggle-Input:checked + .Toggle-Switch::before, .Toggle_size_xs .Toggle-Input:checked + .Toggle-Switch::before, .Toggle_size_2xs .Toggle-Input:checked + .Toggle-Switch::before {
transform: translateX(14px);
}
.Toggle_size_s .Toggle-Switch, .Toggle_size_xs .Toggle-Switch, .Toggle_size_2xs .Toggle-Switch {
inline-size: 30px;
block-size: 16px;
border-radius: calc(30px / 2);
}
.Toggle_size_s .Toggle-Switch::before, .Toggle_size_xs .Toggle-Switch::before, .Toggle_size_2xs .Toggle-Switch::before {
block-size: 14px;
inline-size: 14px;
inset-inline-start: 1px;
inset-block-end: 1px;
}
.Toggle_size_m .Toggle-Input:checked + .Toggle-Switch::before, .Toggle_size_l .Toggle-Input:checked + .Toggle-Switch::before {
transform: translateX(20px);
}
.Toggle_size_m .Toggle-Switch, .Toggle_size_l .Toggle-Switch {
inline-size: 44px;
block-size: 24px;
border-radius: calc(44px / 2);
}
.Toggle_size_m .Toggle-Switch::before, .Toggle_size_l .Toggle-Switch::before {
block-size: 20px;
inline-size: 20px;
inset-inline-start: 2px;
inset-block-end: 2px;
}
.Toggle-Input {
position: absolute;
margin: 0;
opacity: 0;
inset-inline-start: 0;
inset-block-start: 0;
inline-size: 100%;
block-size: 100%;
cursor: pointer;
z-index: var(--z-index-absolute);
}
.Toggle-Input:hover:not(:disabled) + .Toggle-Switch {
background-color: var(--color-background-tertiary-hover);
}
.Toggle-Input:hover:checked + .Toggle-Switch {
background-color: var(--color-background-action-hover);
}
.Toggle-Input:active:not(:disabled) + .Toggle-Switch {
background-color: var(--color-background-tertiary-hover);
}
.Toggle-Input:active:checked + .Toggle-Switch {
background-color: var(--color-background-action-pressed);
}
.Toggle-Input:checked + .Toggle-Switch {
background-color: var(--color-background-action);
}
.Toggle-Input:focus + .Toggle-Switch {
box-shadow: var(--shadow-outline-focused);
}
.Toggle-Input:focus:not(:focus-visible) + .Toggle-Switch {
box-shadow: 0 1px 1px 0 rgb(0 0 0 / 16%) inset;
}
.Toggle-Switch {
position: relative;
cursor: pointer;
flex-shrink: 0;
background-color: var(--color-background-tertiary);
transition: var(--transition-default);
box-shadow: 0 1px 1px 0 rgb(0 0 0 / 16%) inset;
}
.Toggle-Switch::before {
position: absolute;
content: '';
background-color: var(--color-background-main);
box-shadow: 0 1px 1px 0 rgb(0 0 0 / 16%);
transition: var(--transition-default);
border-radius: 50%;
}
.Toggle_disabled {
pointer-events: none;
}
.Toggle_disabled .Toggle-Switch {
background-color: var(--color-background-disabled);
}
.Toggle_disabled .Toggle-Input:checked + .Toggle-Switch {
background-color: var(--color-background-action-active-disabled);
}