import { Icon, BodyText, IconNameType, Tooltip, useFocusVisible, } from '@servicetitan/design-system'; import classnames from 'classnames'; import { ReactNode, FC, useRef } from 'react'; import * as Styles from './action-button.module.less'; export interface ActionButtonProps { children: ReactNode; iconName?: IconNameType; hover?: 'primary' | 'negative' | 'none'; disabled?: boolean; tooltip?: string; qaPrefix?: string; active?: boolean; onClick?(): void; } export const ActionButton: FC = ({ active, children, disabled, iconName, onClick, qaPrefix, tooltip, }) => { const buttonRef = useRef(null); const { blurFunction, focusFunction, isFocusVisible } = useFocusVisible(buttonRef); const handleClick = () => { if (disabled) { return; } if (onClick) { onClick(); } }; const getButton = () => { const classes = classnames(Styles.actionButton, qaPrefix, { [Styles.primary]: !disabled, [Styles.focusVisible]: isFocusVisible, }); return ( ); }; if (!tooltip) { return getButton(); } return ( {getButton()} ); };