import { HTMLAttributes, RefObject, useEffect } from 'react' import { focusElement } from '../../libs/dom-utils' import type { FocusableDOMProps } from '../../shared/types' export interface UseFocusableProps extends FocusableDOMProps { disabled?: boolean } export interface UseFocusableResult { focusableProps: HTMLAttributes } export function useFocusable( props: UseFocusableProps, ref: RefObject, ): UseFocusableResult { const { autoFocus, disabled, tabIndex } = props useEffect(() => { if (autoFocus) { focusElement(ref.current) } }, [autoFocus, ref]) return { focusableProps: { tabIndex: disabled ? -1 : tabIndex, }, } }