index.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import React from 'react';
  2. import Icon from '../Icon';
  3. import Typography from '../Typography';
  4. import ColorSelector from '../ColorSelector';
  5. import SliderWithTitle from '../SliderWithTitle';
  6. import { Group, Item } from '../../global/toolStyled';
  7. import data from './data';
  8. type Props = {
  9. type: string;
  10. setType: (arg: string) => void;
  11. color: string;
  12. setColor: (arg: string) => void;
  13. opacity: number;
  14. handleOpacity: (arg: number) => void;
  15. };
  16. const HighlightOption = ({
  17. type,
  18. setType,
  19. color,
  20. setColor,
  21. opacity,
  22. handleOpacity,
  23. }: Props): React.ReactElement => (
  24. <>
  25. <Typography variant="subtitle" style={{ marginTop: '8px' }} align="left">Style</Typography>
  26. <Group>
  27. {data.lineType.map(ele => (
  28. <Item
  29. key={ele.key}
  30. selected={type === ele.key}
  31. onClick={(): void => { setType(ele.key); }}
  32. >
  33. <Icon glyph={ele.icon} />
  34. </Item>
  35. ))}
  36. </Group>
  37. <ColorSelector showTitle color={color} onClick={setColor} />
  38. <SliderWithTitle
  39. title="Opacity"
  40. value={opacity}
  41. tips={`${opacity}%`}
  42. onSlide={handleOpacity}
  43. />
  44. </>
  45. );
  46. export default HighlightOption;