import { Slider as SliderPrimitive } from '@base-ui/react/slider'; import { type KeyboardEvent, type ReactNode } from 'react'; import { type FieldProps } from '../_shared/index.js'; import { type SliderColor, type SliderDirection, type SliderSize } from '../../../ui/slider.js'; export type { SliderColor, SliderDirection, SliderSize }; export type SliderLabelMode = 'none' | 'bottom' | 'floating'; export type SliderMode = 'single' | 'range'; export type SliderVariant = 'default' | 'with-sub-label' | 'with-numbers' | 'radio' | 'with-percentages' | 'with-icon' | 'with-icon-and-number' | 'with-badge' | 'with-badge-range' | 'rounded-avatar' | 'square-avatar' | 'simple-line' | 'gradient' | 'emojis'; export interface SliderMark { /** Numeric position of the mark within the slider bounds. */ value: number; /** Visible label rendered at the mark position. */ label: string; } type SliderGetAriaValueText = (formattedValue: string, value: number, index: number) => string; interface SliderControlProps extends Omit { /** Direction for RTL support - auto-detected from DOM if not provided */ dir?: SliderDirection; /** Slider mode: "single" for one handle, "range" for two handles */ mode?: SliderMode; /** Figma-aligned visual/composition variant. */ variant?: SliderVariant; /** Size of the slider track: sm (6px), md (8px), lg (12px) */ size?: SliderSize; /** Color variant of the slider */ color?: SliderColor; /** Label text displayed above the slider (inline, without Field wrapping) */ label?: string; /** Label display mode: none, bottom (under thumb), or floating (tooltip above) */ labelMode?: SliderLabelMode; /** Custom formatter for value display */ valueFormat?: (value: number) => string; /** Custom accessible value text for each thumb. */ getAriaValueText?: SliderGetAriaValueText; /** Show min/max values at slider ends */ showMinMax?: boolean; /** Hint text displayed below the slider */ hint?: string; /** Positioned labels used by sub-label, number, and radio variants. */ marks?: readonly SliderMark[]; /** Content displayed before the slider track. */ startContent?: ReactNode; /** Content displayed after the slider track. */ endContent?: ReactNode; /** Custom content rendered inside avatar-style thumbs. */ thumbContent?: ReactNode; /** Called when value changes, with Base UI details for primitive interactions. */ onValueChange?: (value: number[], eventDetails?: SliderPrimitive.Root.ChangeEventDetails) => void; } export interface SliderProps extends Omit, FieldProps { } /** * Base slider component with support for single/range modes */ declare const SliderBase: import("react").ForwardRefExoticComponent, "onValueChange"> & { size?: SliderSize; color?: SliderColor; variant?: SliderVariant; thumbCount?: number; thumbContent?: ReactNode; getAriaValueText?: SliderGetAriaValueText; onThumbKeyDown?: (event: KeyboardEvent, thumbIndex: number) => void; onValueChange?: (value: number | readonly number[], eventDetails?: SliderPrimitive.Root.ChangeEventDetails) => void; }, "ref"> & import("react").RefAttributes>; declare const Slider: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; export { Slider, SliderBase };