Skip to content

useFocusToggle

@hua-labs/hua/motion

bash
npm install @hua-labs/hua
tsx
import { useFocusToggle } from "@hua-labs/hua/framework";

tsx
const { isActive, focusHandlers } = useFocusToggle();

return (
  <input
    {...focusHandlers}
    className={isActive ? 'ring-2 ring-primary' : ''}
    placeholder="Focus me"
  />
);

initialStatebooleanfalseInitial active state
toggleOnFocusbooleantrueToggle on focus event
toggleOnBlurbooleanfalseToggle on blur event
autoResetbooleanfalseAuto-deactivate after delay
resetDelaynumber3000Auto-reset delay in milliseconds
toggleOnFocusInbooleanfalseToggle on focusin event
toggleOnFocusOutbooleanfalseToggle on focusout event
preventDefaultbooleanfalsePrevent default event behavior
stopPropagationbooleanfalseStop event propagation
showOnMountbooleanfalseShow initial state on mount (SSR safety)

isActivebooleanCurrent toggle state
mountedbooleanHydration safety flag
refRefObject<HTMLElement | null>Ref to attach to target element
focusHandlers{ onFocus?, onBlur?, onFocusIn?, onFocusOut? }Event handlers to spread on element
toggle() => voidToggle state manually
activate() => voidActivate (set to true)
deactivate() => voidDeactivate (set to false)
reset() => voidReset to initial state