Passed
Push — task/user-api-endpoint ( 2803dd...45ddf1 )
by Chris
05:38
created

resources/assets/js/components/Icon.tsx   A

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 48
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 35
mnd 1
bc 1
fnc 0
dl 0
loc 48
rs 10
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
1
import * as React from "react";
2
import { useIntl, defineMessages } from "react-intl";
3
4
interface IconProps {
5
  icon: string;
6
  messageId: string;
7
  accessibleText: string;
8
  sematicIcon: boolean;
9
}
10
11
const Icon: React.FunctionComponent<IconProps> = ({
12
  icon,
13
  messageId,
14
  accessibleText,
15
  sematicIcon,
16
}) => {
17
  const intl = useIntl();
18
19
  const iconMessages = defineMessages({
20
    accessibleText: {
21
      id: `icon.${messageId}`,
22
      defaultMessage: `${accessibleText}`,
23
      description: "Accessible text for icon.",
24
    },
25
  });
26
27
  return (
28
    <>
29
      {sematicIcon ? (
30
        <>
31
          <i
32
            aria-hidden="true"
33
            className={icon}
34
            title={intl.formatMessage(iconMessages.accessibleText)}
35
          />
36
          <span data-c-visibility="invisible">
37
            {intl.formatMessage(iconMessages.accessibleText)}
38
          </span>
39
        </>
40
      ) : (
41
        <i className={icon} />
42
      )}
43
    </>
44
  );
45
};
46
47
export default Icon;
48