import { type FC, type ReactNode, type Ref } from 'react'; import { Slider as ArkSlider } from '@ark-ui/react/slider'; import { type TestableProps } from '../../utils/testId'; /** Ark/Zag machine-config props forwarded to the headless `Slider.Root`. */ type SliderRootConfig = Pick; export interface SliderProps extends SliderRootConfig, TestableProps { /** Error state → maps to Ark `invalid` (repaints the handle; the message is the Field's job). */ error?: boolean; className?: string; children?: ReactNode; /** Fires live during drag with the current value array (`[n]` single, `[low, high]` range). */ onValueChange?: (value: number[]) => void; /** Fires once on drag release with the committed value array. */ onValueChangeEnd?: (value: number[]) => void; /** Ref to the Ark Slider root element. */ ref?: Ref; } /** * Slider — pick an approximate, bounded value (or range) by dragging a handle along * a track. Built on `@ark-ui/react/slider`. * * Compose the parts: `SliderControl` (renders the track + range) holds one * `SliderThumb` per thumb (the real `role="slider"` node — consumer `data-*` / * analytics / `ref` land there) and an optional `SliderMarks`. `SliderInput` and * `SliderValue` are optional readouts. Single vs range is driven by the length of * `value` / `defaultValue` — render one `SliderThumb` per entry. Thumbs never cross * (`thumbCollisionBehavior` defaults to `'none'`); set `minStepsBetweenThumbs` for a gap. * * It reads `Field` context like `Input`/`Textarea`, so wrapping it in `` wires * label / invalid / disabled. When an exact figure matters, pair with `NumberInput`; * for 2–7 fixed options use `SegmentedControl`. See `docs/slider-design-spec.md`. */ export declare const Slider: FC; export {};