You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
4.4 KiB
159 lines
4.4 KiB
[data-slider] {
|
|
--_slider-track-size: var(--slider-track-size-md);
|
|
--_slider-thumb-size: var(--slider-thumb-size-md);
|
|
--_slider-hit-size: var(--slider-hit-size-md);
|
|
--_slider-tick-size: var(--slider-tick-size-md);
|
|
|
|
cursor: pointer;
|
|
}
|
|
|
|
[data-slider][data-size='xs'] {
|
|
--_slider-track-size: var(--slider-track-size-xs);
|
|
--_slider-thumb-size: var(--slider-thumb-size-xs);
|
|
--_slider-hit-size: var(--slider-hit-size-xs);
|
|
--_slider-tick-size: var(--slider-tick-size-xs);
|
|
}
|
|
|
|
[data-slider][data-size='sm'] {
|
|
--_slider-track-size: var(--slider-track-size-sm);
|
|
--_slider-thumb-size: var(--slider-thumb-size-sm);
|
|
--_slider-hit-size: var(--slider-hit-size-sm);
|
|
--_slider-tick-size: var(--slider-tick-size-sm);
|
|
}
|
|
|
|
[data-slider][data-size='lg'] {
|
|
--_slider-track-size: var(--slider-track-size-lg);
|
|
--_slider-thumb-size: var(--slider-thumb-size-lg);
|
|
--_slider-hit-size: var(--slider-hit-size-lg);
|
|
--_slider-tick-size: var(--slider-tick-size-lg);
|
|
}
|
|
|
|
[data-slider][data-size='xl'] {
|
|
--_slider-track-size: var(--slider-track-size-xl);
|
|
--_slider-thumb-size: var(--slider-thumb-size-xl);
|
|
--_slider-hit-size: var(--slider-hit-size-xl);
|
|
--_slider-tick-size: var(--slider-tick-size-xl);
|
|
}
|
|
|
|
[data-slider][data-disabled] {
|
|
cursor: not-allowed;
|
|
opacity: var(--slider-disabled-opacity);
|
|
}
|
|
|
|
[data-slider][data-orientation='horizontal'] {
|
|
inline-size: 100%;
|
|
block-size: var(--_slider-hit-size);
|
|
min-inline-size: var(--slider-min-inline-size);
|
|
}
|
|
|
|
[data-slider][data-orientation='vertical'] {
|
|
inline-size: var(--_slider-hit-size);
|
|
block-size: var(--slider-min-block-size);
|
|
min-block-size: var(--slider-min-block-size);
|
|
}
|
|
|
|
[data-slider]::before {
|
|
content: '';
|
|
position: absolute;
|
|
border-radius: var(--slider-track-radius);
|
|
background: var(--slider-track-bg);
|
|
}
|
|
|
|
[data-slider][data-orientation='horizontal']::before {
|
|
inset-inline: 0;
|
|
inset-block-start: 50%;
|
|
block-size: var(--_slider-track-size);
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
[data-slider][data-orientation='vertical']::before {
|
|
inset-block: 0;
|
|
inset-inline-start: 50%;
|
|
inline-size: var(--_slider-track-size);
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
[data-slider-range] {
|
|
border-radius: var(--slider-track-radius);
|
|
background: var(--slider-range-bg);
|
|
pointer-events: none;
|
|
}
|
|
|
|
[data-slider-range][data-orientation='horizontal'] {
|
|
inset-block-start: 50%;
|
|
block-size: var(--_slider-track-size);
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
[data-slider-range][data-orientation='vertical'] {
|
|
inset-inline-start: 50%;
|
|
inline-size: var(--_slider-track-size);
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
[data-slider-thumb] {
|
|
inline-size: var(--_slider-thumb-size);
|
|
block-size: var(--_slider-thumb-size);
|
|
border: var(--slider-thumb-border-width) solid var(--slider-thumb-border);
|
|
border-radius: var(--slider-thumb-radius);
|
|
background: var(--slider-thumb-bg);
|
|
box-shadow: var(--slider-thumb-shadow);
|
|
cursor: grab;
|
|
outline: none;
|
|
/* `scale` is its own property, independent of the `transform: translate()`
|
|
the soma uses to centre the thumb — they compose, so the lift scales the
|
|
thumb in place. */
|
|
transition:
|
|
background var(--slider-transition-duration) var(--slider-transition-ease),
|
|
border-color var(--slider-transition-duration) var(--slider-transition-ease),
|
|
scale var(--slider-transition-duration) var(--slider-transition-ease),
|
|
box-shadow var(--slider-transition-duration) var(--slider-transition-ease);
|
|
}
|
|
|
|
/* Pickup lift on grab: scale toward the viewer + a higher shadow. */
|
|
[data-slider-thumb]:active {
|
|
cursor: grabbing;
|
|
scale: var(--slider-thumb-scale-active);
|
|
box-shadow: var(--slider-thumb-shadow-active);
|
|
}
|
|
|
|
[data-slider-thumb]:focus-visible {
|
|
box-shadow: var(--slider-thumb-focus-shadow);
|
|
}
|
|
|
|
[data-slider-thumb][data-disabled] {
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
[data-slider-tick] {
|
|
inline-size: var(--_slider-tick-size);
|
|
block-size: var(--_slider-tick-size);
|
|
border-radius: var(--slider-tick-radius);
|
|
background: var(--slider-tick-bg);
|
|
pointer-events: none;
|
|
}
|
|
|
|
[data-slider-tick][data-orientation='horizontal'] {
|
|
inset-block-start: 50%;
|
|
margin-block-start: calc(var(--_slider-tick-size) / -2);
|
|
}
|
|
|
|
[data-slider-tick][data-orientation='vertical'] {
|
|
inset-inline-start: 50%;
|
|
margin-inline-start: calc(var(--_slider-tick-size) / -2);
|
|
}
|
|
|
|
[data-slider-tick][data-active] {
|
|
background: var(--slider-tick-bg-active);
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
[data-slider-thumb] {
|
|
transition: none;
|
|
}
|
|
/* No pickup zoom under reduced motion — the raised shadow still conveys grab. */
|
|
[data-slider-thumb]:active {
|
|
scale: 1;
|
|
}
|
|
}
|