export interface SliderProps {
modelValue?: number;
min?: number;
max?: number;
step?: number;
disabled?: boolean;
/** Suspend observers, global tracking and motion without changing the value or disabled state. */
active?: boolean;
/**
* Let the thumb be pulled past either end with growing resistance (a rubber
* band) and spring back on release. The value stays clamped; only the
* drawing moves. Off under reduced motion.
*
* @default false
*/
overdrag?: boolean;
/**
* Accessible label for the range input. The visual root is a wrapper `
`,
* so a fallthrough `aria-label` lands on the wrapper instead of the control —
* pass it here (or use `ariaLabelledby`) to name the slider itself.
*/
ariaLabel?: string;
/** ID(s) of visible element(s) that name the range input. */
ariaLabelledby?: string;
showValue?: boolean;
formatValue?: (value: number) => string;
/**
* The capsule thumb — the Radio button-group indicator borrowed whole: the same
* 28px capsule, the same fill / rim / highlight recipe, and the same jelly (a pop
* on grab, stretch with speed, a squash on a reversal, at the track ends and on a
* fast release). The native thumb becomes a bare hit area. Pass `false` for the
* flat native disc.
*/
thumbSurface?: boolean;
/**
* The capsule's body — the Radio button group's three `indicatorVariant`s. `solid` is
* the plain 88% overlay fill. `blur` (default) thins the fill to 22% and frosts the
* track and fill under it, at rest and while dragging. `glass` keeps the solid capsule
* at rest and swaps in the indicator's refractive `TxGlassSurface` while the thumb is held.
*/
thumbVariant?: 'solid' | 'blur' | 'glass';
showTooltip?: boolean;
tooltipTrigger?: 'drag' | 'hover' | 'always';
tooltipFormatter?: (value: number) => string;
tooltipPlacement?: 'top' | 'bottom';
tooltipTilt?: boolean;
tooltipTiltMaxDeg?: number;
tooltipOffsetMaxPx?: number;
tooltipAccelBoost?: number;
tooltipSpringStiffness?: number;
tooltipSpringDamping?: number;
tooltipMotion?: 'blur' | 'fade' | 'none';
tooltipMotionDuration?: number;
tooltipMotionBlurPx?: number;
tooltipDistortSkewDeg?: number;
tooltipJelly?: boolean;
tooltipJellyFrequency?: number;
tooltipJellyDecay?: number;
tooltipJellyRotateDeg?: number;
tooltipJellySkewDeg?: number;
tooltipJellySquash?: number;
tooltipJellyTriggerAccel?: number;
}
export interface SliderEmits {
(e: 'update:modelValue', value: number): void;
(e: 'change', value: number): void;
}