ui-auth/dist/useAuthModal.js
autocommit 55daa6ed6a chore: initial package split from monorepo
Package: @lilith/ui-auth
Split from: lilith/ui.git or lilith/build.git
Publish workflow: calls lilith/workflows/.forgejo/workflows/publish-npm.yml@main
2026-04-20 01:10:50 -07:00

55 lines
No EOL
1.6 KiB
JavaScript

/**
* useAuthModal Hook
*
* Convenience hook for managing AuthModal state.
* Handles open/close, mode switching, and auth callbacks.
*
* Supports two integration modes via options:
* 1. Direct SSO: Provide ssoUrl option
* 2. Provider-based: Provide authHandler option
*/
import { useState, useCallback } from 'react';
export function useAuthModal(options = {}) {
const { ssoUrl, authHandler, initialMode = 'login', defaultRole: initialDefaultRole, onSuccess, onError, } = options;
const [isOpen, setIsOpen] = useState(false);
const [mode, setMode] = useState(initialMode);
const [defaultRole, setDefaultRole] = useState(initialDefaultRole);
const openLogin = useCallback(() => {
setMode('login');
setIsOpen(true);
}, []);
const openRegister = useCallback((role) => {
setMode('register');
if (role) {
setDefaultRole(role);
}
setIsOpen(true);
}, []);
const close = useCallback(() => {
setIsOpen(false);
}, []);
const toggle = useCallback(() => {
setIsOpen(prev => !prev);
}, []);
const handleSuccess = useCallback((user, sessionId) => {
setIsOpen(false);
onSuccess?.(user, sessionId);
}, [onSuccess]);
const handleError = useCallback((error) => {
onError?.(error);
}, [onError]);
return {
isOpen,
mode,
defaultRole,
ssoUrl,
authHandler,
openLogin,
openRegister,
close,
toggle,
handleSuccess,
handleError,
};
}
//# sourceMappingURL=useAuthModal.js.map