index.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import React from 'react';
  2. import { useTranslation } from '../../i18n';
  3. import Icon from '../Icon';
  4. import Typography from '../Typography';
  5. import ColorSelector from '../ColorSelector';
  6. import SliderWithTitle from '../SliderWithTitle';
  7. import { OptionPropsType } from '../../constants/type';
  8. import { Group, Item, Wrapper } from '../../global/toolStyled';
  9. import data from './data';
  10. const HighlightOption: React.SFC<OptionPropsType> = ({
  11. type,
  12. color,
  13. opacity,
  14. setDataState = (): void => {
  15. // do nothing
  16. },
  17. }: OptionPropsType) => {
  18. const { t } = useTranslation('sidebar');
  19. return (
  20. <>
  21. <Wrapper>
  22. <Typography variant="subtitle" style={{ marginTop: '8px' }} align="left">
  23. {t('style')}
  24. </Typography>
  25. <Group>
  26. {data.lineType.map(ele => (
  27. <Item
  28. key={ele.key}
  29. selected={type === ele.key}
  30. onClick={(): void => { setDataState({ type: ele.key }); }}
  31. >
  32. <Icon glyph={ele.icon} />
  33. </Item>
  34. ))}
  35. </Group>
  36. </Wrapper>
  37. <Wrapper>
  38. <ColorSelector
  39. title={t('color')}
  40. selectedColor={color}
  41. onClick={(selected: string): void => { setDataState({ color: selected }); }}
  42. />
  43. </Wrapper>
  44. <Wrapper>
  45. <SliderWithTitle
  46. title={t('opacity')}
  47. value={opacity}
  48. tips={`${opacity}%`}
  49. onSlide={(val: number): void => { setDataState({ opacity: val }); }}
  50. />
  51. </Wrapper>
  52. </>
  53. );
  54. };
  55. export default HighlightOption;