aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/components/ButtonIcon.tsx
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:35 -0400
committerkj_sh6042026-03-15 16:19:35 -0400
commit6ec259a0e71174651bae95d4628138bf6fd68742 (patch)
tree5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/components/ButtonIcon.tsx
parent16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff)
refactor: packages/
Diffstat (limited to 'packages/excalidraw/components/ButtonIcon.tsx')
-rw-r--r--packages/excalidraw/components/ButtonIcon.tsx37
1 files changed, 37 insertions, 0 deletions
diff --git a/packages/excalidraw/components/ButtonIcon.tsx b/packages/excalidraw/components/ButtonIcon.tsx
new file mode 100644
index 0000000..cbbd73d
--- /dev/null
+++ b/packages/excalidraw/components/ButtonIcon.tsx
@@ -0,0 +1,37 @@
+import { forwardRef } from "react";
+import type { JSX } from "react";
+import clsx from "clsx";
+
+import "./ButtonIcon.scss";
+
+interface ButtonIconProps {
+ icon: JSX.Element;
+ title: string;
+ className?: string;
+ testId?: string;
+ /** if not supplied, defaults to value identity check */
+ active?: boolean;
+ /** include standalone style (could interfere with parent styles) */
+ standalone?: boolean;
+ onClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
+}
+
+export const ButtonIcon = forwardRef<HTMLButtonElement, ButtonIconProps>(
+ (props, ref) => {
+ const { title, className, testId, active, standalone, icon, onClick } =
+ props;
+ return (
+ <button
+ type="button"
+ ref={ref}
+ key={title}
+ title={title}
+ data-testid={testId}
+ className={clsx(className, { standalone, active })}
+ onClick={onClick}
+ >
+ {icon}
+ </button>
+ );
+ },
+);