@ozen-ui/kit
Version:
React component library
133 lines (112 loc) • 4.3 kB
CSS
.ToggleNext {
--toggle-ball-translate-x: var(--toggle-switch-ball-padding);
}
.ToggleNext_size_s,
.ToggleNext_size_xs,
.ToggleNext_size_2xs {
--toggle-switch-inline-size: 30px;
--toggle-switch-block-size: 16px;
--toggle-switch-border-radius: 30px;
--toggle-switch-ball-size: 14px;
--toggle-switch-ball-padding: 1px;
}
.ToggleNext_size_m,
.ToggleNext_size_l {
--toggle-switch-inline-size: 44px;
--toggle-switch-block-size: 24px;
--toggle-switch-border-radius: 44px;
--toggle-switch-ball-size: 20px;
--toggle-switch-ball-padding: 2px;
}
.ToggleNext_size_m {
--form-control-carcass-control-block-margin: 0;
}
.ToggleNext_size_l {
--form-control-carcass-control-block-margin: var(--spacing-4xs);
}
.ToggleNext_variant_default {
--toggle-background-color: var(--color-background-tertiary);
--toggle-background-color-checked: var(--color-background-action);
--toggle-background-color-hover: var(--color-background-tertiary-hover);
--toggle-background-color-hover-checked: var(--color-background-action-hover);
--toggle-background-color-active: var(--color-background-tertiary-pressed);
--toggle-background-color-active-checked: var(--color-background-action-pressed);
}
.ToggleNext_variant_error {
--toggle-background-color: var(--color-background-error-light);
--toggle-background-color-checked: var(--color-background-error);
--toggle-background-color-hover: var(--color-background-error-light);
--toggle-background-color-hover-checked: var(--color-background-error);
--toggle-background-color-active: var(--color-background-error-light);
--toggle-background-color-active-checked: var(--color-background-error);
}
.ToggleNext_disabled {
pointer-events: none;
}
.ToggleNext_disabled .ToggleNext-Switch {
background-color: var(--color-background-disabled);
}
.ToggleNext_disabled .ToggleNext-Input:checked + .ToggleNext-Switch {
background-color: var(--color-background-action-active-disabled);
}
.ToggleNext-Box {
display: inline-flex;
position: relative;
}
.ToggleNext-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);
}
.ToggleNext-Input:hover:not(:disabled) + .ToggleNext-Switch {
background-color: var(--toggle-background-color-hover);
}
.ToggleNext-Input:hover:checked + .ToggleNext-Switch {
background-color: var(--toggle-background-color-hover-checked);
}
.ToggleNext-Input:active:not(:disabled) + .ToggleNext-Switch {
background-color: var(--toggle-background-color-active);
}
.ToggleNext-Input:active:checked + .ToggleNext-Switch {
background-color: var(--toggle-background-color-active-checked);
}
.ToggleNext-Input:checked + .ToggleNext-Switch {
--toggle-ball-translate-x: calc(var(--toggle-switch-inline-size) - var(--toggle-switch-ball-size) - var(--toggle-switch-ball-padding));
background-color: var(--toggle-background-color-checked);
}
.ToggleNext-Input:focus + .ToggleNext-Switch {
box-shadow: var(--shadow-outline-focused);
}
.ToggleNext-Input:focus:not(:focus-visible) + .ToggleNext-Switch {
box-shadow: 0 1px 1px 0 rgb(0 0 0 / 16%) inset;
}
.ToggleNext-Switch {
position: relative;
box-sizing: border-box;
cursor: pointer;
flex-shrink: 0;
inline-size: var(--toggle-switch-inline-size);
block-size: var(--toggle-switch-block-size);
border-radius: calc(var(--toggle-switch-border-radius) / 2);
background-color: var(--toggle-background-color);
transition: var(--transition-default);
box-shadow: 0 1px 1px 0 rgb(0 0 0 / 16%) inset;
}
.ToggleNext-Switch::before {
position: absolute;
content: '';
background-color: var(--color-background-main);
block-size: var(--toggle-switch-ball-size);
inline-size: var(--toggle-switch-ball-size);
box-shadow: 0 1px 1px 0 rgb(0 0 0 / 16%);
transition: var(--transition-default);
border-radius: 50%;
inset-block-start: 50%;
transform: translate(var(--toggle-ball-translate-x), -50%);
}