Spaces:
Runtime error
Runtime error
| import classNames from "classnames"; | |
| import { MouseEvent } from "react"; | |
| interface Props { | |
| children: React.ReactNode; | |
| disabled?: boolean; | |
| theme?: "primary" | "secondary" | "white" | "danger" | "success"; | |
| onClick?: (e: MouseEvent<HTMLButtonElement>) => void; | |
| } | |
| export const Button: React.FC<Props> = ({ | |
| children, | |
| disabled, | |
| theme = "primary", | |
| onClick, | |
| ...props | |
| }) => { | |
| return ( | |
| <button | |
| className={classNames( | |
| "rounded-full px-4 py-1.5 lg:px-6 lg:py-2.5 text-sm lg:text-base font-semibold flex items-center justify-center gap-2.5 border-[2px] transition-all duration-200 max-w-max", | |
| { | |
| "bg-primary text-white border-primary": theme === "primary", | |
| "bg-white text-gray-900 border-white": theme === "white", | |
| "bg-red-500 text-white border-red-500": theme === "danger", | |
| "bg-green-500 text-white border-green-500": theme === "success", | |
| "!bg-gray-400 !text-gray-600 !cursor-not-allowed !border-gray-400": | |
| disabled, | |
| } | |
| )} | |
| {...props} | |
| onClick={ | |
| onClick | |
| ? (e) => { | |
| e.stopPropagation(); | |
| e.preventDefault(); | |
| onClick(e); | |
| } | |
| : undefined | |
| } | |
| > | |
| {children} | |
| </button> | |
| ); | |
| }; | |