vuestic-ui
Version:
Vue 3 UI Framework
224 lines • 6.72 kB
CSS
:root,
:host {
--va-switch-display: inline-block;
/* Checker */
--va-switch-checker-margin: auto;
--va-switch-checker-transform: translateX(0.3rem);
--va-switch-checker-height: 1.5rem;
--va-switch-checker-width: 1.5rem;
--va-switch-checker-active-background-color: #ffffff;
--va-switch-checker-background-color: var(--va-secondary);
--va-switch-checker-border-radius: 50%;
--va-switch-checker-box-shadow: 0 0 0 var(--va-background-border);
--va-switch-checker-transition: all 0.2s ease;
/* Checker Wrapper */
--va-switch-checker-wrapper-transform: translateX(0);
--va-switch-checker-wrapper-top: 0;
--va-switch-checker-wrapper-left: 0;
--va-switch-checker-wrapper-bottom: 0;
--va-switch-checker-wrapper-right: 0;
--va-switch-checker-wrapper-width: 100%;
--va-switch-checker-wrapper-height: 100%;
--va-switch-checker-wrapper-transition: all 0.2s ease;
--va-switch-checker-wrapper-pointer-events: none;
/* Label */
--va-switch-label-left-padding: 0.3rem;
--va-switch-label-right-padding: 0.3rem;
/* Track */
--va-switch-track-border-radius: 1rem;
--va-switch-track-height: 100%;
--va-switch-track-width: 100%;
--va-switch-track-background: var(--va-background-element);
--va-switch-track-box-shadow: inset 0 0 0 var(--va-shadow);
--va-switch-track-transition: background-color 0.2s ease;
/* Inner */
--va-switch-inner-cursor: pointer;
--va-switch-inner-height: 2rem;
--va-switch-inner-width: auto;
--va-switch-inner-min-width: 4rem;
--va-switch-inner-border-radius: 1rem;
/* Small */
--va-switch-sm-inner-height: 1.5rem;
--va-switch-sm-inner-width: auto;
--va-switch-sm-inner-min-width: 3rem;
/* Large */
--va-switch-lg-inner-height: 2.5rem;
--va-switch-lg-inner-width: auto;
--va-switch-lg-inner-min-width: 5rem;
}
.va-switch {
line-height: 0;
display: var(--va-switch-display);
}
.va-switch__container {
display: inline-flex;
align-items: center;
width: 100%;
}
.va-switch:focus {
outline: none;
}
.va-switch__inner {
cursor: var(--va-switch-inner-cursor);
display: inline-block;
position: relative;
height: var(--va-switch-inner-height);
width: var(--va-switch-inner-width);
min-width: var(--va-switch-inner-min-width);
border-radius: var(--va-switch-inner-border-radius);
}
.va-switch__inner:focus {
outline: 0;
box-shadow: 0 0 0 0.3rem rgba(52, 144, 220, 0.5);
}
.va-switch--small .va-switch__inner {
height: var(--va-switch-sm-inner-height);
width: var(--va-switch-sm-inner-width);
min-width: var(--va-switch-sm-inner-min-width);
}
.va-switch--small .va-switch__checker-circle {
height: 1.1rem;
width: 1.1rem;
}
.va-switch--large .va-switch__inner {
height: var(--va-switch-lg-inner-height);
width: var(--va-switch-lg-inner-width);
min-width: var(--va-switch-lg-inner-min-width);
}
.va-switch--large .va-switch__checker-circle {
height: 1.8rem;
width: 1.8rem;
}
.va-switch--disabled {
cursor: default;
opacity: 0.4;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.va-switch--readonly {
cursor: default;
pointer-events: none;
}
.va-switch--readonly .va-switch__label {
cursor: initial;
pointer-events: auto;
}
.va-switch--left-label .va-switch__container {
flex-direction: row-reverse;
justify-content: start;
}
.va-switch--left-label .va-switch__label {
padding: 0 var(--va-switch-label-left-padding) 0 0;
}
.va-switch--indeterminate .va-switch__checker {
margin: auto 0;
transform: translateX(-50%);
}
.va-switch--indeterminate .va-switch__checker-wrapper {
transform: translateX(50%);
}
.va-switch--checked .va-switch__checker {
transform: translateX(calc(-100% - 0.3rem));
}
.va-switch--checked .va-switch__checker-circle {
background-color: var(--va-switch-checker-active-background-color);
}
.va-switch--checked .va-switch__checker-wrapper {
transform: translateX(100%);
}
.va-switch--error .va-switch__track {
border: 0.1rem solid;
}
.va-switch__label {
cursor: pointer;
text-align: left;
padding: 0 0 0 var(--va-switch-label-right-padding);
}
.va-switch .va-switch__track {
display: flex;
overflow: hidden;
border-radius: var(--va-switch-track-border-radius);
height: var(--va-switch-track-height);
width: var(--va-switch-track-width);
background: var(--va-switch-track-background);
box-shadow: var(--va-switch-track-box-shadow);
transition: var(--va-switch-track-transition);
}
.va-switch--keyboard-focus.va-switch .va-switch__track {
outline: 2px solid var(--va-focus) ;
border-radius: "inherit";
}
.va-switch--small.va-switch .va-switch__track {
border-radius: 0.75rem;
}
.va-switch--large.va-switch .va-switch__track {
border-radius: 1.25rem;
}
.va-switch .va-switch__track-label {
color: #ffffff;
margin: auto 0.5rem auto 2rem;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
width: 100%;
}
.va-switch--checked.va-switch .va-switch__track-label {
margin: auto 2rem auto 0.5rem;
}
.va-switch--small.va-switch .va-switch__track-label {
margin: auto 0.5rem auto 1.55rem;
}
.va-switch--checked.va-switch--small.va-switch .va-switch__track-label {
margin: auto 1.55rem auto 0.5rem;
}
.va-switch--large.va-switch .va-switch__track-label {
margin: auto 0.5rem auto 2.3rem;
}
.va-switch--checked.va-switch--large.va-switch .va-switch__track-label {
margin: auto 2.3rem auto 0.5rem;
}
.va-switch__checker {
position: absolute;
top: 0;
bottom: 0;
margin: var(--va-switch-checker-margin);
transform: var(--va-switch-checker-transform);
box-shadow: var(--va-switch-checker-box-shadow);
transition: var(--va-switch-checker-transition);
display: flex;
justify-content: center;
align-items: center;
}
.va-switch__checker-circle {
display: flex;
align-items: center;
justify-content: center;
height: var(--va-switch-checker-height);
width: var(--va-switch-checker-width);
background-color: var(--va-switch-checker-background-color);
border-radius: var(--va-switch-checker-border-radius);
}
.va-switch__checker-wrapper {
position: absolute;
margin: auto;
transform: var(--va-switch-checker-wrapper-transform);
top: var(--va-switch-checker-wrapper-top);
left: var(--va-switch-checker-wrapper-left);
bottom: var(--va-switch-checker-wrapper-bottom);
right: var(--va-switch-checker-wrapper-right);
width: var(--va-switch-checker-wrapper-width);
height: var(--va-switch-checker-wrapper-height);
transition: var(--va-switch-checker-wrapper-transition);
pointer-events: var(--va-switch-checker-wrapper-pointer-events);
}
.va-switch__input {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin: 0;
opacity: 0;
cursor: inherit;
}