index.tsx 886 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import React from 'react';
  2. import {
  3. IconWrapper,
  4. ClickZone,
  5. } from './styled';
  6. import data from './data';
  7. type Props = {
  8. id?: string;
  9. glyph: string;
  10. onClick?: (e: any) => void;
  11. onBlur?: () => void;
  12. style?: {};
  13. isActive? : boolean;
  14. tabIndex?: number;
  15. };
  16. const Icon: React.FunctionComponent<Props> = ({
  17. glyph,
  18. id = '',
  19. onClick,
  20. onBlur,
  21. style,
  22. isActive = false,
  23. tabIndex,
  24. }: Props) => {
  25. const {
  26. Normal,
  27. Hover,
  28. } = data[glyph];
  29. return (
  30. <IconWrapper
  31. isHover={!!Hover}
  32. style={style}
  33. >
  34. {Normal && <Normal data-status="normal" />}
  35. {Hover && <Hover data-status="hover" />}
  36. {isActive && Hover ? <Hover data-status="active" /> : null}
  37. <ClickZone
  38. id={id}
  39. tabIndex={tabIndex}
  40. onMouseDown={onClick}
  41. onBlur={onBlur}
  42. />
  43. </IconWrapper>
  44. );
  45. };
  46. export default Icon;