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;