import React, { ReactEventHandler, useMemo } from 'react'; export const isEnter = (event: KeyboardEvent | React.KeyboardEvent): boolean => event.key === 'Enter'; type Options = { stopPropagation?: boolean; }; export function useCTA( onActivate: () => void, options?: Options, ): { onClick: ReactEventHandler; onKeyDown: ReactEventHandler; } { const stopPropagation = !!options?.stopPropagation; const events = useMemo( () => ({ onKeyDown: (event: React.KeyboardEvent): void => { if (isEnter(event)) { onActivate(); } }, onClick: (event: React.MouseEvent): void => { if (stopPropagation) { event.stopPropagation(); } onActivate(); }, }), [onActivate, stopPropagation], ); return events; }