github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/ui/dashboard/src/components/forms/Button/index.tsx (about)

     1  import { classNames } from "../../../utils/styles";
     2  
     3  export type ButtonProps = {
     4    children: JSX.Element | JSX.Element[];
     5    className?: string;
     6    disabled?: boolean;
     7    onClick(): void | Promise<void>;
     8    size?: "sm" | "md" | "lg";
     9    title?: string;
    10    type?: "button" | "submit";
    11  };
    12  
    13  const Button = ({
    14    children,
    15    className,
    16    disabled,
    17    onClick = async () => {},
    18    size = "md",
    19    title,
    20    type = "button",
    21  }: ButtonProps) => {
    22    let sizeClass;
    23    switch (size) {
    24      case "sm":
    25        sizeClass = "py-1 px-2 font-sm";
    26        break;
    27      case "lg":
    28        sizeClass = "py-3 px-6 font-sm";
    29        break;
    30      default:
    31        sizeClass = "py-2 px-3";
    32    }
    33    return (
    34      <button
    35        className={classNames(
    36          sizeClass,
    37          className,
    38          "rounded-md shadow-sm whitespace-nowrap focus:outline-none disabled:opacity-50 disabled:cursor-default"
    39        )}
    40        disabled={disabled}
    41        onClick={onClick}
    42        title={title}
    43        type={type}
    44      >
    45        {children}
    46      </button>
    47    );
    48  };
    49  
    50  export default Button;