import { RangeSliderValue, SingleSliderValue } from '@mezzanine-ui/core/slider'; import { CssVarInterpolation } from '@mezzanine-ui/system/css'; import { RefObject } from 'react'; export interface UseSliderCommonProps { max: number; min: number; step: number; } export interface UseSingleSliderProps extends UseSliderCommonProps { onChange(value: RangeSliderValue): never; onChange(value: SingleSliderValue): void; value: SingleSliderValue; } export interface UseRangeSliderProps extends UseSliderCommonProps { onChange(value: RangeSliderValue): void; onChange(value: SingleSliderValue): never; value: RangeSliderValue; } export interface UseSliderProps extends UseSliderCommonProps { onChange?: UseRangeSliderProps['onChange'] | UseSingleSliderProps['onChange']; value: SingleSliderValue | RangeSliderValue; } export interface UseSliderResult { activeHandleIndex: number | undefined; cssVars: Record; handleClickTrackOrRail?: (e: any) => void; handlePress: (e: any, index?: number | undefined) => void; railRef: RefObject; } /** * 管理 Slider 拖曳互動與 CSS 變數計算的 Hook。 * * 支援單值(`SingleSliderValue`)與範圍值(`RangeSliderValue`)兩種模式, * 處理滑鼠/觸控拖曳事件並計算出對應的 CSS 自訂屬性供樣式使用。 * * @example * ```tsx * import { useSlider } from '@mezzanine-ui/react'; * * const { cssVars, handlePress, handleClickTrackOrRail, railRef } = useSlider({ * min: 0, * max: 100, * step: 1, * value: sliderValue, * onChange: (v) => setSliderValue(v), * }); * ``` * * @see {@link Slider} 搭配的元件 */ export declare function useSlider(props: UseRangeSliderProps): UseSliderResult; export declare function useSlider(props: UseSingleSliderProps): UseSliderResult;