vuestic-ui
Version:
Vue 3 UI Framework
264 lines • 9.31 kB
CSS
:root,
:host {
/* Track */
--va-slider-track-border-radius: 0.25rem;
--va-slider-track-transition: 0.5s ease-out;
--va-slider-track-opacity: 1;
/* Pin */
--va-slider-pin-transition: background-color 0.3s ease-out 0.1s;
/* Handler */
--va-slider-handler-width: 1.25rem;
--va-slider-handler-height: 1.25rem;
--va-slider-handler-background: var(--va-background-primary);
--va-slider-handler-border: 0.375rem solid;
--va-slider-handler-border-radius: 50%;
--va-slider-handler-outline: none ;
--va-slider-handler-left: -0.375rem;
--va-slider-handler-transition: 0s;
/* Dot */
--va-slider-dot-transform: translate(-0.625rem, -0.625rem);
--va-slider-dot-display: block;
--va-slider-dot-width: 1.75rem;
--va-slider-dot-height: 1.75rem;
--va-slider-dot-border-radius: 50%;
--va-slider-dot-opacity: 0.2;
--va-slider-dot-pointer-events: none;
/* Dot Value */
--va-slider-dot-value-transform: translate(-50%, -100%);
--va-slider-dot-value-user-select: none;
--va-slider-dot-value-font-size: 0.625rem;
--va-slider-dot-value-letter-spacing: 0.6px;
--va-slider-dot-value-line-height: 1.2;
--va-slider-dot-value-font-weight: 700;
--va-slider-dot-value-text-transform: none;
--va-slider-dot-value-white-space: nowrap;
/* Input Label */
--va-slider-input-label-user-select: none;
--va-slider-input-label-font-size: 0.625rem;
--va-slider-input-label-letter-spacing: 0.6px;
--va-slider-input-label-line-height: 1.2;
--va-slider-input-label-font-weight: 700;
--va-slider-input-label-text-transform: uppercase;
--va-slider-input-label-inverse-user-select: none;
--va-slider-input-label-inverse-font-size: 0.625rem;
--va-slider-input-label-inverse-letter-spacing: 0.6px;
--va-slider-input-label-inverse-line-height: 1.2;
--va-slider-input-label-inverse-font-weight: 700;
--va-slider-input-label-inverse-text-transform: uppercase;
/* Horizontal */
--va-slider-horizontal-input-wrapper-margin-right: 1rem;
/* Horizontal Track */
--va-slider-horizontal-track-height: 0.5rem;
--va-slider-horizontal-track-width: 100%;
/* Horizontal Track */
--va-slider-horizontal-handler-transform: translateX(-50%);
/* Horizontal Dot */
--va-slider-horizontal-dot-value-top: -8px;
--va-slider-horizontal-dot-value-left: 50%;
/* Vertical */
--va-slider-vertical-height: 100%;
--va-slider-vertical-padding: 12px 0 12px 0;
--va-slider-vertical-flex-direction: column;
--va-slider-vertical-align-items: center;
/* Vertical Label */
--va-slider-vertical-label-margin-bottom: 0.625rem;
--va-slider-vertical-label-inverse-left: -0.375rem;
--va-slider-vertical-label-inverse-margin-top: 0.625rem;
/* Vertical Input Wrapper */
--va-slider-vertical-input-wrapper-max-width: 1rem;
--va-slider-vertical-input-wrapper-min-width: 2.5rem;
/* Vertical Track */
--va-slider-vertical-track-height: 100%;
--va-slider-vertical-track-width: 0.5rem;
--va-slider-vertical-track-bottom: 0;
/* Vertical Handler */
--va-slider-vertical-handler-transform: translateY(50%);
/* Vertical Dot Value */
--va-slider-vertical-dot-value-top: 0.625rem;
--va-slider-vertical-dot-value-left: 1.25rem;
}
.va-slider {
display: flex;
align-items: center;
font-family: var(--va-font-family);
}
.va-slider__input-wrapper {
position: relative;
display: flex;
}
.va-slider__container {
position: relative;
display: flex;
align-items: center;
cursor: grab;
}
.va-slider__track {
position: absolute;
border-radius: var(--va-slider-track-border-radius);
transition: var(--va-slider-track-transition);
opacity: var(--va-slider-track-opacity);
}
.va-slider__track--active {
transition: 0s;
}
.va-slider__track--selected {
opacity: 1;
}
.va-slider__handler {
position: absolute;
width: var(--va-slider-handler-width);
height: var(--va-slider-handler-height);
background: var(--va-slider-handler-background);
border: var(--va-slider-handler-border);
border-radius: var(--va-slider-handler-border-radius);
outline: var(--va-slider-handler-outline);
left: var(--va-slider-handler-left);
transition: var(--va-slider-handler-transition);
box-sizing: border-box;
}
.va-slider__handler__dot--focus {
transform: var(--va-slider-dot-transform);
display: block;
width: var(--va-slider-dot-width);
height: var(--va-slider-dot-height);
position: absolute;
border-radius: var(--va-slider-dot-border-radius);
opacity: var(--va-slider-dot-opacity);
pointer-events: var(--va-slider-dot-pointer-events);
}
.va-slider__handler__dot--value {
transform: var(--va-slider-dot-value-transform);
-webkit-user-select: var(--va-slider-dot-value-user-select);
-moz-user-select: var(--va-slider-dot-value-user-select);
user-select: var(--va-slider-dot-value-user-select);
font-size: var(--va-slider-dot-value-font-size);
letter-spacing: var(--va-slider-dot-value-letter-spacing);
line-height: var(--va-slider-dot-value-line-height);
font-weight: var(--va-slider-dot-value-font-weight);
text-transform: var(--va-slider-dot-value-text-transform);
white-space: var(--va-slider-dot-value-white-space);
}
.va-slider .va-input__label {
-webkit-user-select: var(--va-slider-input-label-user-select);
-moz-user-select: var(--va-slider-input-label-user-select);
user-select: var(--va-slider-input-label-user-select);
font-size: var(--va-slider-input-label-font-size);
letter-spacing: var(--va-slider-input-label-letter-spacing);
line-height: var(--va-slider-input-label-line-height);
font-weight: var(--va-slider-input-label-font-weight);
text-transform: var(--va-slider-input-label-text-transform);
}
.va-slider .va-input__label--inverse {
-webkit-user-select: var(--va-slider-input-label-inverse-user-select);
-moz-user-select: var(--va-slider-input-label-inverse-user-select);
user-select: var(--va-slider-input-label-inverse-user-select);
font-size: var(--va-slider-input-label-inverse-font-size);
letter-spacing: var(--va-slider-input-label-inverse-letter-spacing);
line-height: var(--va-slider-input-label-inverse-line-height);
font-weight: var(--va-slider-input-label-inverse-font-weight);
text-transform: var(--va-slider-input-label-inverse-text-transform);
}
.va-slider--grabbing .va-slider__container {
cursor: grabbing;
}
.va-slider--disabled {
cursor: default;
opacity: 0.4;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.va-slider--disabled .va-slider__container {
cursor: default;
}
.va-slider--readonly .va-slider__container {
cursor: default;
}
.va-slider--horizontal .va-slider__input-wrapper {
flex-basis: fit-content;
flex-grow: 0;
margin-right: var(--va-slider-horizontal-input-wrapper-margin-right);
}
.va-slider--horizontal .va-slider__input-wrapper:last-of-type {
margin-left: 1rem;
}
.va-slider--horizontal .va-slider__container {
width: 100%;
height: 1.5rem;
}
.va-slider--horizontal .va-slider__track {
height: var(--va-slider-horizontal-track-height);
width: var(--va-slider-horizontal-track-width);
}
.va-slider--horizontal .va-slider__mark {
position: absolute;
width: 0.125rem;
height: 0.75rem;
}
.va-slider--horizontal .va-slider__handler {
transform: var(--va-slider-horizontal-handler-transform);
}
.va-slider--horizontal .va-slider__handler--inactive {
transition: left 0.5s ease-out;
}
.va-slider--horizontal .va-slider__handler__dot--value {
position: absolute;
top: var(--va-slider-horizontal-dot-value-top);
left: var(--va-slider-horizontal-dot-value-left);
}
.va-slider--horizontal .va-input__label {
margin-right: 1rem;
}
.va-slider--horizontal .va-input__label--inverse {
margin-left: 1rem;
}
.va-slider--vertical {
height: var(--va-slider-vertical-height);
padding: var(--va-slider-vertical-padding);
flex-direction: var(--va-slider-vertical-flex-direction);
align-items: var(--va-slider-vertical-align-items);
}
.va-slider--vertical .va-input__label {
margin-bottom: var(--va-slider-vertical-label-margin-bottom);
}
.va-slider--vertical .va-input__label--inverse {
left: var(--va-slider-vertical-label-inverse-left);
margin-top: var(--va-slider-vertical-label-inverse-margin-top);
}
.va-slider--vertical .va-slider__input-wrapper {
flex-basis: fit-content;
flex-grow: 0;
max-width: var(--va-slider-vertical-input-wrapper-max-width);
min-width: var(--va-slider-vertical-input-wrapper-min-width);
position: relative;
display: flex;
}
.va-slider--vertical .va-slider__input-wrapper:last-of-type {
margin-top: 1rem;
}
.va-slider--vertical .va-slider__container {
height: 100%;
width: 0.5rem;
}
.va-slider--vertical .va-slider__track {
height: var(--va-slider-vertical-track-height);
width: var(--va-slider-vertical-track-width);
bottom: var(--va-slider-vertical-track-bottom);
}
.va-slider--vertical .va-slider__mark {
position: absolute;
width: 0.75rem;
height: 0.125rem;
left: -2px;
}
.va-slider--vertical .va-slider__handler {
transform: var(--va-slider-vertical-handler-transform);
}
.va-slider--vertical .va-slider__handler--inactive {
transition: bottom 0.5s ease-out;
}
.va-slider--vertical .va-slider__handler__dot--value {
position: relative;
top: var(--va-slider-vertical-dot-value-top);
left: var(--va-slider-vertical-dot-value-left);
}