its-just-ui
Version:
ITS Just UI - The easiest and best React UI component library. Modern, accessible, and customizable components built with TypeScript and Tailwind CSS. Simple to use, production-ready components for building beautiful user interfaces with ease.
123 lines (121 loc) • 4.8 kB
TypeScript
import { default as React } from 'react';
export interface SliderValue {
value: number;
percentage: number;
}
export interface SliderRange {
min: number;
max: number;
step: number;
}
export interface SliderMark {
value: number;
label?: React.ReactNode;
icon?: React.ReactNode;
onClick?: () => void;
}
export interface SliderContextValue {
values: SliderValue[];
range: SliderRange;
isRange: boolean;
disabled: boolean;
readOnly: boolean;
focused: boolean;
dragging: boolean;
hovered: boolean;
onChange: (values: number[]) => void;
onFocus: () => void;
onBlur: () => void;
onDragStart: () => void;
onDragEnd: () => void;
getValueFromPercentage: (percentage: number) => number;
getPercentageFromValue: (value: number) => number;
snapToStep: (value: number) => number;
formatValue: (value: number) => string;
variant: 'default' | 'minimal' | 'filled' | 'track-only' | 'thumbless' | 'removed-track' | 'inverted-track';
size: 'sm' | 'md' | 'lg';
status: 'default' | 'success' | 'warning' | 'error' | 'info';
}
export interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'value' | 'defaultValue'> {
value?: number | number[];
defaultValue?: number | number[];
min?: number;
max?: number;
step?: number;
disabled?: boolean;
readOnly?: boolean;
required?: boolean;
name?: string;
range?: boolean;
variant?: 'default' | 'minimal' | 'filled' | 'track-only' | 'thumbless' | 'removed-track' | 'inverted-track';
size?: 'sm' | 'md' | 'lg';
status?: 'default' | 'success' | 'warning' | 'error' | 'info';
label?: React.ReactNode;
labelIcon?: React.ReactNode;
showTooltip?: boolean;
tooltipPosition?: 'top' | 'bottom' | 'left' | 'right';
formatTooltip?: (value: number) => string;
valueLabelDisplay?: 'auto' | 'on' | 'off';
marks?: SliderMark[];
showMarks?: boolean;
markStep?: number;
markIcons?: boolean;
onChange?: (values: number[]) => void;
onChangeEnd?: (values: number[]) => void;
onFocus?: () => void;
onBlur?: () => void;
onDragStart?: () => void;
onDragEnd?: () => void;
onKeyDown?: (event: React.KeyboardEvent) => void;
transition?: 'none' | 'smooth' | 'bounce';
transitionDuration?: number;
renderThumb?: (value: SliderValue, index: number) => React.ReactNode;
renderMark?: (mark: SliderMark) => React.ReactNode;
children?: React.ReactNode;
}
export declare const useSlider: () => SliderContextValue;
export interface SliderTrackProps extends React.HTMLAttributes<HTMLDivElement> {
children?: React.ReactNode;
}
declare const SliderTrack: React.ForwardRefExoticComponent<SliderTrackProps & React.RefAttributes<HTMLDivElement>>;
export interface SliderRangeProps extends React.HTMLAttributes<HTMLDivElement> {
children?: React.ReactNode;
}
declare const SliderRange: React.ForwardRefExoticComponent<SliderRangeProps & React.RefAttributes<HTMLDivElement>>;
export interface SliderThumbProps extends React.HTMLAttributes<HTMLDivElement> {
value: SliderValue;
index: number;
renderThumb?: (value: SliderValue, index: number) => React.ReactNode;
showTooltip?: boolean;
tooltipPosition?: 'top' | 'bottom' | 'left' | 'right';
onValueChange?: (value: number) => void;
onDragStart?: () => void;
onDragEnd?: () => void;
onTooltipVisibilityChange?: (visible: boolean) => void;
}
declare const SliderThumb: React.ForwardRefExoticComponent<SliderThumbProps & React.RefAttributes<HTMLDivElement>>;
export interface SliderLabelProps extends React.HTMLAttributes<HTMLLabelElement> {
children: React.ReactNode;
}
declare const SliderLabel: React.ForwardRefExoticComponent<SliderLabelProps & React.RefAttributes<HTMLLabelElement>>;
export interface SliderInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
index?: number;
}
declare const SliderInput: React.ForwardRefExoticComponent<SliderInputProps & React.RefAttributes<HTMLInputElement>>;
export interface SliderMarksProps extends React.HTMLAttributes<HTMLDivElement> {
marks?: SliderMark[];
markStep?: number;
markIcons?: boolean;
renderMark?: (mark: SliderMark) => React.ReactNode;
}
declare const SliderMarks: React.ForwardRefExoticComponent<SliderMarksProps & React.RefAttributes<HTMLDivElement>>;
interface SliderComponent extends React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLDivElement>> {
Track: typeof SliderTrack;
Range: typeof SliderRange;
Thumb: typeof SliderThumb;
Label: typeof SliderLabel;
Input: typeof SliderInput;
Marks: typeof SliderMarks;
}
declare const SliderComponent: SliderComponent;
export { SliderComponent as Slider };