@stacksjs/stx
Version:
A performant UI Framework. Powered by Bun.
84 lines • 1.97 kB
TypeScript
/**
* 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
}