import { HTMLAttributes, ReactNode, ComponentProps } from 'react';
import { GestureOptions } from '../../utils';
import { ColorPropsValue, DivProps } from '../../types';
import { TooltipProps } from '../tooltip';
export interface MarkItem extends DivProps {
label?: ReactNode;
/**
* label的位置
* {@link SliderBaseProps.orientation}为`horizontal`时,默认为`bottom`
* {@link SliderBaseProps.orientation}为`vertical`时,默认为`right`
*/
labelPlacement?: 'top' | 'bottom' | 'left' | 'right';
value: number;
}
interface SliderBaseProps extends Omit {
color?: ColorPropsValue;
orientation?: 'horizontal' | 'vertical';
/** variant只改变滑块的样式 */
variant?: 'filled' | 'outlined';
/** inset为true时,滑块整体会嵌入轨道,两侧都无法滑出轨道;否则会以滑块中心点为参考,两侧可能会超出轨道。默认为`false` */
inset?: boolean;
/** 轨道 */
railSize?: number;
railProps?: DivProps;
renderRail?(value: number, railProps: HTMLAttributes): ReactNode;
renderRail?(value: [number, number], railProps: HTMLAttributes): ReactNode;
/** 滑块 */
handleSize?: number;
handleProps?: ComponentProps<'button'>;
/** 禁用默认的滑块外边框 */
disableHandleOutline?: boolean;
/** 渲染滑块,range模式时,改方法会触发两次 */
renderHandle?(value: number, handleProps: HTMLAttributes): ReactNode;
tooltipProps?: TooltipProps;
min?: number;
max?: number;
/** 滑块拖动每格的值,为null时必须配合marks使用,滑块只能在marks上 */
step?: number | null;
marks?: MarkItem[];
/** mark中的标签与滑动轨道的距离,默认为`6` */
markLabelOffset?: number;
disableTrack?: boolean;
gestureOptions?: GestureOptions;
}
export interface SliderSingleProps extends SliderBaseProps {
defaultValue?: number;
value?: number;
onChange?(value: number): void;
prefix?: ReactNode | ((value: number) => ReactNode);
suffix?: ReactNode | ((value: number) => ReactNode);
}
export interface SliderRangeProps extends SliderBaseProps {
defaultValue?: [number, number];
value?: [number, number];
onChange?(value: [number, number]): void;
prefix?: ReactNode | ((value: [number, number]) => ReactNode);
suffix?: ReactNode | ((value: [number, number]) => ReactNode);
}
export type SliderProps = SliderSingleProps | SliderRangeProps;
export declare const Slider: import("react").MemoExoticComponent<({ color, orientation, variant, inset, railSize, railProps, renderRail, handleSize, handleProps, disableHandleOutline, renderHandle, tooltipProps, min, max, step, marks, markLabelOffset, prefix, suffix, disableTrack, gestureOptions, defaultValue, value, onChange, ...props }: SliderProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
export {};