Sherlock / config / theme / Slider.ts
Slider.ts
Raw
import { createStyle } from '@gluestack-style/react';

export const Slider = createStyle({
  justifyContent: 'center',
  alignItems: 'center',
  variants: {
    orientation: {
      horizontal: {
        w: '$full',
        _track: {
          width: '$full',
        },
        _filledTrack: {
          height: '$full',
        },
      },
      vertical: {
        h: '$full',
        _track: {
          height: '$full',
        },
        _filledTrack: {
          width: '$full',
        },
      },
    },
    isReversed: {
      true: {},
      false: {},
    },
    size: {
      sm: {
        _thumb: {
          h: '$4',
          w: '$4',
        },
      },
      md: {
        _thumb: {
          h: '$5',
          w: '$5',
        },
      },
      lg: {
        _thumb: {
          h: '$6',
          w: '$6',
        },
      },
    },
  },
  compoundVariants: [
    {
      orientation: 'horizontal',
      size: 'sm',
      value: {
        _track: {
          height: '$1',
          flexDirection: 'row',
        },
      },
    },
    {
      orientation: 'horizontal',
      size: 'sm',
      isReversed: true,
      value: {
        _track: {
          height: '$1',
          flexDirection: 'row-reverse',
        },
      },
    },
    {
      orientation: 'horizontal',
      size: 'md',
      value: {
        _track: {
          height: 5,
          flexDirection: 'row',
        },
      },
    },
    {
      orientation: 'horizontal',
      size: 'md',
      isReversed: true,
      value: {
        _track: {
          height: 5,
          flexDirection: 'row-reverse',
        },
      },
    },
    {
      orientation: 'horizontal',
      size: 'lg',
      value: {
        _track: {
          height: '$1.5',
          flexDirection: 'row',
        },
      },
    },
    {
      orientation: 'horizontal',
      size: 'lg',
      isReversed: true,
      value: {
        _track: {
          height: '$1.5',
          flexDirection: 'row-reverse',
        },
      },
    },
    {
      orientation: 'vertical',
      size: 'sm',
      value: {
        _track: {
          w: '$1',
          flexDirection: 'column-reverse',
        },
      },
    },
    {
      orientation: 'vertical',
      size: 'sm',
      isReversed: true,
      value: {
        _track: {
          width: '$1',
          flexDirection: 'column',
        },
      },
    },
    {
      orientation: 'vertical',
      size: 'md',
      value: {
        _track: {
          width: 5,
          flexDirection: 'column-reverse',
        },
      },
    },
    {
      orientation: 'vertical',
      size: 'md',
      isReversed: true,
      value: {
        _track: {
          width: 5,
          flexDirection: 'column',
        },
      },
    },
    {
      orientation: 'vertical',
      size: 'lg',
      value: {
        _track: {
          width: '$1.5',
          flexDirection: 'column-reverse',
        },
      },
    },
    {
      orientation: 'vertical',
      size: 'lg',
      isReversed: true,
      value: {
        _track: {
          width: '$1.5',
          flexDirection: 'column',
        },
      },
    },
  ],
  _web: {
    ':disabled': {
      // @ts-ignore
      pointerEvents: 'all !important',
      cursor: 'not-allowed',
      opacity: 0.4,
    },
  },
  defaultProps: {
    size: 'md',
    orientation: 'horizontal',
  },
});