@rtdui/tailwind-plugin
Version:
tailwind plugin for Rtdui components
186 lines (163 loc) • 4.63 kB
CSS
.slider {
--slider-size-xs: 4px;
--slider-size-sm: 6px;
--slider-size-md: 8px;
--slider-size-lg: 10px;
--slider-size-xl: 12px;
--slider-size: var(--slider-size-md);
--slider-radius: 999rem;
--slider-color: var(--color-neutral);
--slider-thumb-size: calc(var(--slider-size) * 2);
--slider-track-bg: var(--color-base-300);
--slider-bar-disabled-bg: darkgray;
-webkit-tap-highlight-color: transparent;
outline: none;
width: 95%;
height: calc(var(--slider-size) * 2);
padding-left: var(--slider-size);
padding-right: var(--slider-size);
display: flex;
flex-direction: column;
align-items: center;
touch-action: none;
position: relative;
*:focus-visible {
outline: none;
}
.trackContainer {
display: flex;
align-items: center;
width: 100%;
height: calc(var(--slider-size) * 2);
cursor: var(--_track-cursor, pointer);
fieldset:disabled &,
&[data-disabled] {
--_track-cursor: not-allowed;
}
.track {
position: relative;
z-index: 0;
width: 100%;
height: var(--slider-size);
&[data-inverted]:not([data-disabled]) {
--_track-bg: var(--slider-color);
}
fieldset:disabled &[data-inverted],
&[data-inverted][data-disabled] {
--_track-bg: var(--slider-track-bg);
}
&::before {
content: "";
position: absolute;
top: 0;
bottom: 0;
right: calc(var(--slider-size) * -1);
left: calc(var(--slider-size) * -1);
border-radius: var(--slider-radius);
background-color: var(--_track-bg, var(--slider-track-bg));
z-index: -1;
}
}
.bar {
position: absolute;
z-index: 1;
top: 0;
bottom: 0;
background-color: var(--_bar-bg, var(--slider-color));
border-radius: var(--slider-radius);
width: var(--slider-bar-width);
left: var(--slider-bar-offset);
&[data-inverted] {
--_bar-bg: var(--slider-track-bg);
}
fieldset:disabled &:not([data-inverted]),
&[data-disabled]:not([data-inverted]) {
--_bar-bg: var(--slider-bar-disabled-bg);
}
}
.thumb {
--_thumb-bd: var(--slider-color);
--_thumb-bg: var(--color-base-100);
position: absolute;
display: var(--_thumb-display, flex);
height: var(--slider-thumb-size);
width: var(--slider-thumb-size);
background-color: var(--_thumb-bg);
border: 4px solid var(--_thumb-bd);
color: var(--_thumb-bd);
transform: var(--_thumb-transform, translate(-50%, -50%));
top: 50%;
cursor: pointer;
border-radius: var(--slider-radius);
align-items: center;
justify-content: center;
transition:
box-shadow 100ms ease,
transform 100ms ease;
z-index: 3;
user-select: none;
touch-action: none;
box-shadow: var(--_thumb-box-shadow, none);
outline-offset: 2px;
left: var(--slider-thumb-offset);
fieldset:disabled &,
&[data-disabled] {
--_thumb-display: none;
}
&[data-dragging] {
--_thumb-transform: translate(-50%, -50%) scale(1.05);
--_thumb-box-shadow: 2px;
}
&:focus-visible {
outline: 1px solid var(--slider-color);
outline-offset: 2px;
}
.label {
position: absolute;
transform: translateY(-100%);
background-color: var(--color-neutral);
font-size: 0.875rem;
color: var(--color-neutral-content);
padding: 2px 4px;
border-radius: 4px;
white-space: nowrap;
pointer-events: none;
user-select: none;
touch-action: none;
}
}
}
.markWrapper {
position: absolute;
left: calc(var(--mark-offset) - var(--slider-size) / 2);
top: 0;
z-index: 2;
height: 0;
pointer-events: none;
}
.mark {
--_mark-bd: var(--slider-track-bg);
border: 2px solid var(--_mark-bd);
height: var(--slider-size);
width: var(--slider-size);
border-radius: 1000px;
transform: translateX((calc(var(--slider-size) / -2)));
background-color: var(--_mark-bg, white);
pointer-events: none;
&[data-filled] {
--_mark-bd: var(--slider-color);
&[data-disabled] {
--_mark-bd: var(--slider-bar-disabled-bg);
}
}
}
.markLabel {
--_mark-label-color: var(--color-base-content);
transform: translate(calc(-50% + var(--slider-size) / 2), 4);
font-size: 14px;
color: var(--_mark-label-color);
white-space: nowrap;
cursor: pointer;
user-select: none;
}
}