| 1 |
import classNames from 'classnames'; |
| 2 |
import styles from './style.module.scss'; |
| 3 |
|
| 4 |
/** |
| 5 |
* @since 4.4.0 |
| 6 |
*/ |
| 7 |
type SpinnerSize = 'tiny' | 'small' | 'medium' | 'large'; |
| 8 |
|
| 9 |
/** |
| 10 |
* @since 4.4.0 |
| 11 |
*/ |
| 12 |
type SpinnerProps = React.HTMLAttributes<HTMLDivElement> & { |
| 13 |
size?: SpinnerSize; |
| 14 |
}; |
| 15 |
|
| 16 |
/** |
| 17 |
* @since 4.4.0 |
| 18 |
*/ |
| 19 |
const Spinner = ({size = 'small', ...rest}: SpinnerProps) => { |
| 20 |
const spinnerClasses = classNames({ |
| 21 |
[styles.spinner]: true, |
| 22 |
[styles.large]: size === 'large', |
| 23 |
[styles.medium]: size === 'medium', |
| 24 |
[styles.small]: size === 'small', |
| 25 |
[styles.tiny]: size === 'tiny', |
| 26 |
}); |
| 27 |
|
| 28 |
return ( |
| 29 |
<div className={spinnerClasses} {...rest}> |
| 30 |
{' '} |
| 31 |
</div> |
| 32 |
); |
| 33 |
}; |
| 34 |
|
| 35 |
export default Spinner; |
| 36 |
|