diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-04-04 11:53:44 +0200 | 
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-04-04 11:53:44 +0200 | 
| commit | e29e145b053a5b1f338cef8a0721e185e955cdc2 (patch) | |
| tree | 3391d241d53440caf910e67b105cab8c7496897e /src/components/atoms/loaders/spinner.tsx | |
| parent | 21eb67ef5e59d36b996392f60b5045f152a64604 (diff) | |
chore: add a Spinner component
Diffstat (limited to 'src/components/atoms/loaders/spinner.tsx')
| -rw-r--r-- | src/components/atoms/loaders/spinner.tsx | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/src/components/atoms/loaders/spinner.tsx b/src/components/atoms/loaders/spinner.tsx new file mode 100644 index 0000000..57b0a43 --- /dev/null +++ b/src/components/atoms/loaders/spinner.tsx @@ -0,0 +1,37 @@ +import { FC } from 'react'; +import { useIntl } from 'react-intl'; +import styles from './spinner.module.scss'; + +type SpinnerProps = { +  /** +   * The loading message. Default: "Loading...". +   */ +  message?: string; +}; + +/** + * Spinner component + * + * Render a loading message with animation. + */ +const Spinner: FC<SpinnerProps> = ({ message }) => { +  const intl = useIntl(); + +  return ( +    <div className={styles.wrapper}> +      <div className={styles.ball}></div> +      <div className={styles.ball}></div> +      <div className={styles.ball}></div> +      <div className={styles.text}> +        {message || +          intl.formatMessage({ +            defaultMessage: 'Loading...', +            description: 'Spinner: loading text', +            id: 'q9cJQe', +          })} +      </div> +    </div> +  ); +}; + +export default Spinner; | 
