@gulibs/vgrove-ui
Version:
VGrove UI component library built with HeroUI and React
82 lines • 2.77 kB
TypeScript
import type { BreadcrumbItemProps, PageHandle, PageMeta } from "./types";
/**
* 存储配置选项
*/
export interface UseStorageOptions {
/** 存储类型 */
storage?: 'local' | 'session';
/** 过期时间(毫秒),0 表示永不过期 */
maxAge?: number;
/** 是否自动清理过期数据 */
autoCleanup?: boolean;
/** 清理间隔(毫秒),默认 5 分钟 */
cleanupInterval?: number;
}
/**
* 基于 react-storage 的 useStorage hook - 支持过期时间
*
* @param key 存储键
* @param defaultValue 默认值
* @param options 配置选项
* @returns [value, setValue, removeValue, setWithExpiry, isExpired, cleanup]
*/
export declare function useStorage<T>(key: string, defaultValue: T, options?: UseStorageOptions): [
T,
(value: T) => void,
() => void,
(value: T, maxAge?: number) => void,
() => boolean,
() => void
];
import type { AuthActions, AuthState, UseUserOptions, BaseUser } from './types';
/**
* 用户状态管理 Hook
*/
export declare function useUser<TUser extends BaseUser = BaseUser, TCredentials = unknown>(options?: UseUserOptions<TUser, TCredentials>): AuthState<TUser> & AuthActions<TUser, TCredentials>;
/**
* 只读的用户状态 Hook
*/
export declare function useUserState<TUser extends BaseUser = BaseUser>(storagePrefix?: string, useSessionStorage?: boolean): {
user: TUser | null;
token: string | null;
refreshToken: string | null;
isAuthenticated: boolean;
};
/**
* Token管理 Hook
*/
export declare function useAuthToken(storagePrefix?: string, useSessionStorage?: boolean): {
token: string | null;
refreshToken: string | null;
setToken: (newToken: string) => void;
setRefreshToken: (newRefreshToken: string) => void;
clearToken: () => void;
clearRefreshToken: () => void;
clearAllTokens: () => void;
hasToken: boolean;
hasRefreshToken: boolean;
};
/**
* 面包屑 Hook(支持国际化和路由匹配)
*/
export declare function useBreadcrumbs<Keys extends string = string>(handle?: PageHandle<Keys>, options?: {
enableI18n?: boolean;
includeMatches?: boolean;
}): BreadcrumbItemProps[];
/**
* 页面元数据 Hook(支持国际化)
*/
export declare function usePageMeta<Keys extends string = string>(handle?: PageHandle<Keys>, options?: {
enableI18n?: boolean;
}): PageMeta<Keys> | undefined;
/**
* 使用动态页面标题 Hook
*/
export declare function useDocumentTitle<Keys extends string = string>(handle?: PageHandle<Keys>, suffix?: string, options?: {
enableI18n?: boolean;
}): () => void;
/**
* 获取页面handle(支持继承)
*/
export declare function useHandle<Keys extends string = string>(): PageHandle<Keys>;
//# sourceMappingURL=hooks.d.ts.map