import { Observable } from '@legendapp/state'; import { DeepMaybeObservable } from '@usels/core'; import { ConfigurableWindow } from '../../shared/configurable.mjs'; import { MaybeEventTarget } from '../../types.mjs'; interface UseFocusOptions extends ConfigurableWindow { /** Auto-focus the element on mount. Default: false */ initialValue?: boolean; /** Replicate :focus-visible behavior. Default: false */ focusVisible?: boolean; /** Prevent scroll when focusing. Default: false */ preventScroll?: boolean; } interface UseFocusReturn { /** Current focus state (read/write) — set(true)→focus(), set(false)→blur() */ focused$: Observable; } /** * Framework-agnostic reactive focus tracking for a target element with * optional two-way binding. * * Exposes `focused$` as a read/write Observable: * - Setting `focused$.set(true)` calls `el.focus()` * - Setting `focused$.set(false)` calls `el.blur()` * - DOM focus/blur events update `focused$` automatically. */ declare function createFocus(target: MaybeEventTarget, options?: DeepMaybeObservable): UseFocusReturn; export { type UseFocusOptions, type UseFocusReturn, createFocus };