import { IconButton as BaseIconButton, type IconButtonProps as BaseIconButtonProps, } from "@yaakapp-internal/ui"; import { forwardRef, useImperativeHandle, useRef } from "react"; import type { HotkeyAction } from "../../hooks/useHotKey"; import { useFormattedHotkey, useHotKey } from "../../hooks/useHotKey"; export type IconButtonProps = BaseIconButtonProps & { hotkeyAction?: HotkeyAction; hotkeyLabelOnly?: boolean; hotkeyPriority?: number; }; export const IconButton = forwardRef(function IconButton( { hotkeyAction, hotkeyPriority, hotkeyLabelOnly, title, ...props }: IconButtonProps, ref, ) { const hotkeyTrigger = useFormattedHotkey(hotkeyAction ?? null)?.join(""); const fullTitle = hotkeyTrigger ? `${title ?? ""} ${hotkeyTrigger}`.trim() : title; const buttonRef = useRef(null); useImperativeHandle( ref, () => buttonRef.current, ); useHotKey( hotkeyAction ?? null, () => { buttonRef.current?.click(); }, { priority: hotkeyPriority, enable: !hotkeyLabelOnly }, ); return ; });