index.tsx 1014 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import ReactSlider from 'react-slider'
  2. import cn from '@/utils/classnames'
  3. import './style.css'
  4. type ISliderProps = {
  5. className?: string
  6. thumbClassName?: string
  7. trackClassName?: string
  8. value: number
  9. max?: number
  10. min?: number
  11. step?: number
  12. disabled?: boolean
  13. onChange: (value: number) => void
  14. }
  15. const Slider: React.FC<ISliderProps> = ({
  16. className,
  17. thumbClassName,
  18. trackClassName,
  19. max,
  20. min,
  21. step,
  22. value,
  23. disabled,
  24. onChange,
  25. }) => {
  26. return <ReactSlider
  27. disabled={disabled}
  28. value={isNaN(value) ? 0 : value}
  29. min={min || 0}
  30. max={max || 100}
  31. step={step || 1}
  32. className={cn('relative slider', className)}
  33. thumbClassName={cn('absolute top-[-9px] w-2 h-5 border-[0.5px] border-components-slider-knob-border rounded-[3px] bg-components-slider-knob shadow-sm focus:outline-none', !disabled && 'cursor-pointer', thumbClassName)}
  34. trackClassName={cn('h-0.5 rounded-full slider-track', trackClassName)}
  35. onChange={onChange}
  36. />
  37. }
  38. export default Slider