button.tsx 831 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import * as React from "react";
  2. import styles from "./button.module.scss";
  3. export function IconButton(props: {
  4. onClick?: () => void;
  5. icon: JSX.Element;
  6. text?: string;
  7. bordered?: boolean;
  8. shadow?: boolean;
  9. noDark?: boolean;
  10. className?: string;
  11. title?: string;
  12. }) {
  13. return (
  14. <div
  15. className={
  16. styles["icon-button"] +
  17. ` ${props.bordered && styles.border} ${props.shadow && styles.shadow} ${
  18. props.className ?? ""
  19. } clickable`
  20. }
  21. onClick={props.onClick}
  22. title={props.title}
  23. role="button"
  24. >
  25. <div
  26. className={styles["icon-button-icon"] + ` ${props.noDark && "no-dark"}`}
  27. >
  28. {props.icon}
  29. </div>
  30. {props.text && (
  31. <div className={styles["icon-button-text"]}>{props.text}</div>
  32. )}
  33. </div>
  34. );
  35. }