button.tsx 891 B

123456789101112131415161718192021222324252627282930313233343536373839
  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. disabled?: boolean;
  13. }) {
  14. return (
  15. <button
  16. className={
  17. styles["icon-button"] +
  18. ` ${props.bordered && styles.border} ${props.shadow && styles.shadow} ${
  19. props.className ?? ""
  20. } clickable`
  21. }
  22. onClick={props.onClick}
  23. title={props.title}
  24. disabled={props.disabled}
  25. role="button"
  26. >
  27. <div
  28. className={styles["icon-button-icon"] + ` ${props.noDark && "no-dark"}`}
  29. >
  30. {props.icon}
  31. </div>
  32. {props.text && (
  33. <div className={styles["icon-button-text"]}>{props.text}</div>
  34. )}
  35. </button>
  36. );
  37. }