summaryrefslogtreecommitdiffstats
path: root/src/components/atoms/icons/plus-minus.tsx
blob: 1a6f7b0e28d8061801e7fd0cd7c6accce2df689b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { FC } from 'react';
import styles from './plus-minus.module.scss';

type PlusMinusProps = {
  /**
   * Adds additional classes.
   */
  additionalClasses?: string;
  /**
   * An accessible name.
   */
  ariaLabel?: string;
  /**
   * Should be hidden for accessibility. Default: true.
   */
  ariaHidden?: boolean;
  /**
   * Which state should be displayed.
   */
  state: 'plus' | 'minus';
};

/**
 * PlusMinus component
 *
 * Render a plus or a minus icon.
 */
const PlusMinus: FC<PlusMinusProps> = ({
  additionalClasses,
  ariaHidden = true,
  ariaLabel,
  state,
}) => {
  const stateClass = `icon--${state}`;

  return (
    <div
      className={`${styles.icon} ${styles[stateClass]} ${additionalClasses}`}
      aria-label={ariaLabel}
      aria-hidden={ariaHidden}
    ></div>
  );
};

export default PlusMinus;