Source

Components/Menu.js

import React, { memo } from 'react';
import styled from 'styled-components';
import { List } from 'Styled/base';
import { HighlightOnHover } from 'Styled/styles';
import { borderSecondary } from 'Styled/colors';

const ItemMenu = styled.div`
  ${HighlightOnHover};
  padding: 0.25rem 1.5rem;
  cursor: pointer;
  font-weight: 400;
`;

const Divider = styled.div`
  border-color: ${borderSecondary};
  border-width: 1px;
  border-style: solid;
  margin: 0.4rem 0;
`;

/**
 * @component
 * @param {Object} children  menu component wraps menu item
 */
const Menu = memo(({ children }) => {
  return <List>{children}</List>;
});

/**
 *
 * @component
 * @param {Object}    Menu.Item  menu iteme component object
 * @param {Object}    children   content passed as children
 * @param {Function}  onClick    menu item onClick
 */
const MenuItem = memo(({ children, onClick }) => {
  return (
    <ItemMenu
      onClick={() => onClick(children.props.children)}
    >
      <span>{children}</span>
    </ItemMenu>
  );
});

Menu.Item = MenuItem;
Menu.Divider = Divider;
export default Menu;