diff options
Diffstat (limited to 'FrontEnd/src/components/button/IconButton.tsx')
-rw-r--r-- | FrontEnd/src/components/button/IconButton.tsx | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/FrontEnd/src/components/button/IconButton.tsx b/FrontEnd/src/components/button/IconButton.tsx new file mode 100644 index 00000000..95c58887 --- /dev/null +++ b/FrontEnd/src/components/button/IconButton.tsx @@ -0,0 +1,30 @@ +import { ComponentPropsWithoutRef } from "react"; +import classNames from "classnames"; + +import { ThemeColor } from "../common"; + +import "./IconButton.css"; + +interface IconButtonProps extends ComponentPropsWithoutRef<"i"> { + icon: string; + color?: ThemeColor | "grayscale"; + large?: boolean; + disabled?: boolean; // TODO: Not implemented +} + +export default function IconButton(props: IconButtonProps) { + const { icon, color, className, large, ...otherProps } = props; + + return ( + <button + className={classNames( + "cru-icon-button", + `cru-clickable-${color ?? "grayscale"}`, + large && "large", + "bi-" + icon, + className, + )} + {...otherProps} + /> + ); +} |