amotify
Version:
UI Component for React,NextJS,esbuild
61 lines (60 loc) • 2.07 kB
TypeScript
/// <reference types="react" />
import { ReactElement, Themecolor } from '../../@declares';
import { InputTypes } from '.';
declare namespace Slider {
type Size = 'small' | 'medium' | 'large';
namespace Input {
type Base = React.DOMAttributes<HTMLInputElement> & {
tabIndex?: number;
id?: string;
discreteScale?: boolean;
size?: Size;
disabled?: boolean;
value?: number | [number, number];
color?: Color;
/**
* default min
*/
trackMin?: number;
min: number;
max: number;
step: number;
legends?: boolean;
onLegendRender?: LegendsCallback;
};
type Single = Base & InputTypes.CoreInput<number> & {
ranged?: false;
};
type Range = Base & InputTypes.CoreInput<number[]> & {
ranged: true;
};
}
type Input = Input.Single | Input.Range;
type Color = Themecolor | 'theme' | 'posi' | 'nega' | 'warn';
type LegendsCallback = {
(value: number): ReactElement;
};
type NormalizedData = {
value: number;
offsetLeft: number;
};
namespace Methods {
type Component = {
(p: Slider.Input): React.JSX.Element;
};
type FNs = {
Small(props: Slider.Input): React.JSX.Element;
Medium(props: Slider.Input): React.JSX.Element;
Large(props: Slider.Input): React.JSX.Element;
Range: {
(props: Omit<Slider.Input.Range, 'ranged'>): React.JSX.Element;
Small(props: Omit<Slider.Input.Range, 'ranged'>): React.JSX.Element;
Medium(props: Omit<Slider.Input.Range, 'ranged'>): React.JSX.Element;
Large(props: Omit<Slider.Input.Range, 'ranged'>): React.JSX.Element;
};
};
}
type Methods = Methods.Component & Methods.FNs;
}
declare const Slider: Slider.Methods;
export { Slider, Slider as default };