UNPKG

@ozen-ui/kit

Version:

React component library

109 lines (89 loc) 3 kB
.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); }