MenuItem.tsx 768 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import clsx from "clsx";
  2. import "./Menu.scss";
  3. interface MenuProps {
  4. icon: JSX.Element;
  5. onClick: () => void;
  6. label: string;
  7. dataTestId: string;
  8. shortcut?: string;
  9. isCollaborating?: boolean;
  10. }
  11. const MenuItem = ({
  12. icon,
  13. onClick,
  14. label,
  15. dataTestId,
  16. shortcut,
  17. isCollaborating,
  18. }: MenuProps) => {
  19. return (
  20. <button
  21. className={clsx("menu-item", { "active-collab": isCollaborating })}
  22. aria-label={label}
  23. onClick={onClick}
  24. data-testid={dataTestId}
  25. title={label}
  26. type="button"
  27. >
  28. <div className="menu-item__icon">{icon}</div>
  29. <div className="menu-item__text">{label}</div>
  30. {shortcut && <div className="menu-item__shortcut">{shortcut}</div>}
  31. </button>
  32. );
  33. };
  34. export default MenuItem;