button.tsx 959 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. {props.icon && (
  28. <div
  29. className={
  30. styles["icon-button-icon"] + ` ${props.noDark && "no-dark"}`
  31. }
  32. >
  33. {props.icon}
  34. </div>
  35. )}
  36. {props.text && (
  37. <div className={styles["icon-button-text"]}>{props.text}</div>
  38. )}
  39. </button>
  40. );
  41. }