UNPKG

@qvant/qui-max

Version:

A Vue 3 Design system for Web.

71 lines 1.94 kB
.q-switch { --switch-main-color: var(--color-primary); --switch-handle-width: 24px; --switch-wrapper-translate-x: calc(-100% + var(--switch-handle-width)); position: relative; display: block; width: 40px; overflow: hidden; cursor: pointer; background: var(--color-tertiary-gray-ultra-light); border-radius: 12px; box-shadow: 4px 4px 8px rgba(174, 174, 192, 0.4), 1px 1px 3px rgba(174, 174, 192, 0.4); } .q-switch__checkbox { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; margin: 0; outline: none; opacity: 0; } .q-switch__wrapper { width: 100%; background-color: var(--switch-main-color); border-radius: 12px; transition: transform 0.2s ease-out; transform: translateX(var(--switch-wrapper-translate-x)); } .q-switch__handle { display: flex; align-items: center; justify-content: center; width: var(--switch-handle-width); height: 24px; margin-left: auto; background-color: var(--color-tertiary-gray-ultra-light); border: 2px solid var(--switch-main-color); border-radius: 12px; transition: width 0.2s ease-out; } .q-switch__handle .q-icon-reverse { font-size: 16px; color: var(--switch-main-color); animation: rotating 2s linear infinite; } .q-switch_disabled { --switch-main-color: var(--color-tertiary-gray-ultra-darker); cursor: not-allowed; box-shadow: var(--box-shadow-pressed); } .q-switch_active { --switch-wrapper-translate-x: 0; } .q-switch_active:active:not(.q-switch_disabled, .q-switch_loading) { --switch-handle-width: 28px; } .q-switch_loading { cursor: progress; } .q-switch.focus-visible { outline: none; } .q-switch:active:not(.q-switch_disabled, .q-switch_loading, .q-switch_active) { --switch-handle-width: 28px; } .q-switch:focus-visible:not(.q-switch_disabled, .q-switch_loading), .q-switch.focus-visible:not(.q-switch_disabled, .q-switch_loading) { --switch-main-color: var(--color-primary-darker); }