diff options
Diffstat (limited to 'packages/excalidraw/components/ButtonIcon.tsx')
| -rw-r--r-- | packages/excalidraw/components/ButtonIcon.tsx | 37 |
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> + ); + }, +); |
