UNPKG

@stacksjs/stx

Version:

A performant UI Framework. Powered by Bun.

84 lines 1.97 kB
/** * Create a reactive idle detector * * @example * ```ts * const idle = useIdle({ * timeout: 30000, // 30 seconds * onIdle: () => console.log('User is idle'), * onActive: () => console.log('User is active'), * }) * * // Subscribe to idle state changes * idle.subscribe((state) => { * console.log('Is idle:', state.isIdle) * console.log('Idle for:', state.idleTime, 'ms') * }) * * // Manually reset the idle timer * idle.reset() * ``` */ export declare function useIdle(options?: IdleOptions): IdleRef; /** * Simple boolean idle state * * @example * ```ts * const isIdle = useIdleState(30000) // 30 seconds * * isIdle.subscribe((idle) => { * console.log('User idle:', idle) * }) * ``` */ export declare function useIdleState(timeout?: any): void; /** * Track user's last active timestamp * * @example * ```ts * const lastActive = useLastActive() * * lastActive.subscribe((timestamp) => { * console.log('Last active:', new Date(timestamp)) * }) * ``` */ export declare function useLastActive(): void; /** * Auto-logout after idle timeout * * @example * ```ts * useAutoLogout(5 * 60 * 1000, () => { * // Logout user after 5 minutes of inactivity * window.location.href = '/logout' * }) * ``` */ export declare function useAutoLogout(timeout: number, onLogout: () => void, options?: { warningTime?: number, onWarning?: (remainingTime: number) => void }): void; /** * Idle Detection Composables * * Reactive utilities for detecting user idle state and activity. */ export declare interface IdleState { isIdle: boolean lastActive: number idleTime: number } export declare interface IdleOptions { timeout?: number events?: string[] listenTo?: EventTarget initialState?: boolean onIdle?: () => void onActive?: () => void } export declare interface IdleRef { get: () => IdleState subscribe: (fn: (state: IdleState) => void) => () => void reset: () => void isIdle: () => boolean }